您好,欢迎来到纷纭教育。
搜索
您的当前位置:首页51单片机秒表程序设计

51单片机秒表程序设计

来源:纷纭教育


20121

湖北民族学院—信息工程学院—单片机综合实验报告

51单片机课程设计

题 目 秒表程序设计 专 业 能源工程及其自动化班 级 2012能源01 学 号 1204180126 姓 名 颜 亮 指 导 教 师 苏 文 静 学 院 名 称 电气信息学院

年 6 月 8 日

湖北民族学院—信息工程学院—单片机综合实验报告

2

湖北民族学院—信息工程学院—单片机综合实验报告

一、课题任务要求 用ATC

51设计一个2位LED数码显示“秒表”,显示时间为00~99秒,每秒自动加一。即数码显示管在原先的计数上快速加一。

二、设计思路

1、使用单片机,设计秒表,能显示分分秒秒;

2、使用三个按键停止,开始,复位,其中“开始”按键当开关由上向下拨时开始计时,此时若再拨“开始”按键则数码管暂停;“清零”按键当开关由上向下拨时数码管清零,此时若再拨“开始”按键则又可重新开始计时; 3、使用液晶或数码管显示; 4、使用定时器中断。

三、硬件设计

3.1、单片机介绍

单片机:ATC51是一种带4K字节闪存可编程可擦除只读存储器的低电压、高性能CMOS 8位微处理器。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

ATC51主要特性: ·与MCS-51 兼容 ·低功耗的闲置和掉电模式 ·4K字节可编程闪烁存储器

·全静态工作:0Hz-24MHz ·寿命:1000写/擦循环 ·数据保留时间:10年 ·三级程序存储器锁定 ·128×8位内部RAM

3

湖北民族学院—信息工程学院—单片机综合实验报告

·片内振荡器和时钟电路 ·32可编程I/O线 ·两个16位定时器/计数器 ·5个中断源 ·可编程串行通道 3.2管脚说明: VCC:供电电压。 GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为ATC51的一些特殊功能口。

4

湖北民族学院—信息工程学院—单片机综合实验报告

3.3仿真原理图

C122pX1U1XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617A0A1A2A3A4A5A6A7B0B1B2B3B4B5B6B7A0A1A2A3A4A5A6B0B1B2B3B4B5B612MHz19C21822pXTAL2C3910uRSTR110k293031PSENALEEA12345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7ATC51

四、程序清单

#include #define uchar unsigned char #define uint unsigned int sbit kai=P3^0; sbit juxu=P3^2; sbit fuwei=P3^4; uchar a,i;

uchar code shuzi[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; void delay(uint k) {

unsigned char i,j; for(;k>0;k--) for(i=142;i>0;i--) for(j=2;j>0;j--); }

void main() {

a= 0; i= 0;

TMOD = 0x01;

5

湖北民族学院—信息工程学院—单片机综合实验报告

TH0 = (65536 - 50000) / 256; TL0 = (65536 - 50000) % 256; TR0 = 0; ET0 = 1; EA = 1;

P0 = shuzi[0]; P2 = shuzi[0];

while(1) { delay(10); if(!kai) TR0=1; delay(10); if(!juxu) TR0 = 0; delay(10); if(!fuwei) {

P0 =shuzi[0]; P2 =shuzi[0]; i= 0; a= 0; TR0=0; } } }

void timer0() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; i++;

if(i==20) {

i=0; a++;

if(a==99) a=0;

P0=shuzi[a/10]; P2=shuzi[a%10]; } }

6

湖北民族学院—信息工程学院—单片机综合实验报告

五、程序流程图

六、软件仿真

在享受我们成果之时,不得不感慨单片机的重要性与高难度性,所以为期一周的单片机课程设计没有浪费,我们从中学到了很多知识.,也让我们对单片机有了更深一步的了解.虽然最后结果是出来了,可这与老师的精心指导是分不开的。

7

湖北民族学院—信息工程学院—单片机综合实验报告

七、设计体会

这次实训虽然其中会有些错误和失败,但总的来说是受益匪浅,在运用中发现问题,解决问题,就是最大的收获。专心做自己的事,是一种乐趣;互相交流,是大家一起进步的必要过程;上网查阅资料,是获得所需信息的有效途径。我想,这些练习和经验都将是我以后最宝贵的财富!

总之:1.虽然以前用过keil和proteus,但这次实验,更加加深了对这两个软件熟悉程度,以及调试程序的能力。万事开头难,要勇敢的迈出第一步。开始时候是有点难度,但不要为自己找借口,只有肯动手行动起来,以后的路就会慢慢地顺起来了。知识点用到才学,不用的暂时放在一边。这个世界,如果每样东西都学,自己就会太累,但这并不是说有些东西可以不学,常用软件的基本操作,例如keil,proteus,protel等;

2.刚开始学习单片机编程时,先要学会看懂别人的程序,适当修改后,实现自己需要的功能,这就是所谓“站在巨人的肩膀上”,但是程序不要光看别人的,而不自己动手写,一定要自己看了别人怎么写后自己再写一遍,最好这时什么都不要参考,凭自己的印象去写,遇到错误时再好好看下,可以收到事半功倍效果; 3.必须学会掌握调试程序(Debug)的方法,自己的程序遇到错误时一定要自己慢慢的把它调出来,这样才能真正提高分析问题,解决问题的能力。因为找到解决问题的思路比找到代码更重要,世界上的事情千变万化,就像不可能找到两片相同的叶子一样,世界上也找不到使用同一个代码的项目,所以要学会自己分析问题,找出解决问题的方案。即相同的功能,可以用不同的代码实现。

8

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- fenyunshixun.cn 版权所有 湘ICP备2023022495号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务