基于单片机的数字秒表的设计

基于单片机的数字秒表的设计

ID:12056133

大小:2.03 MB

页数:9页

时间:2018-07-15

基于单片机的数字秒表的设计_第1页
基于单片机的数字秒表的设计_第2页
基于单片机的数字秒表的设计_第3页
基于单片机的数字秒表的设计_第4页
基于单片机的数字秒表的设计_第5页
资源描述:

《基于单片机的数字秒表的设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、单片机系统课程设计报告学院(部):电气与信息工程学院专业:电气工程及其自动化学生姓名:指导老师:班级: 1103学号114017007132013年11月8一、系统设计要求1.最大计数值为:99时59分59秒9/10秒,约100小时。2.系统采用2个按键控制输入,其中一个按键用作系统清0,另一个按键用作秒表的启动/停止。3.系统采用7个共阴LED数码管实现计时显示。4.电路原理图:使用protel或visio或proteus绘制。5.编程思路,用visio画程序设计流程图,且用文字描述。6.详细的程序清单(KeilC51工程文件夹)。7.pro

2、teus仿真过程及结果(截图,视频)等。8.制作单片机应用系统开发板二、系统设计原理系统总体电路如下图所示AT89S52单片机为主电路的核心部分,各个电路均与单片机相连,由单片机统筹协调各个电路的运行工作。计时器采用T0中断实现,定时溢出中断周期为50ms,当溢出中断后向CPU发出溢出中断请求,每发出2次中断请求就对ms位加一,达到20次就对s位加一,以此类推,直到99时59分59秒9/10秒为止。再看按键的处理启动/停止键用SW1控制,置零用SW2控制,分别连到单片机的P1.0和P1.1引脚上。显示电路由七位数码管组成,采用动态显示方式,因此

3、有8位段控制和7位位控制,8位段接控制接P0口,P0.0~P0.7分别控制数码管的段选,7位控制接在P2口,P2.0~P2.7分别控制数码管位选。8程序设计流程图8三、源程序#include#defineucharunsignedchar#defineuintunsignedint#defineclear(TR0=0,TH0=02,TL0=0,h=0,min=0,s=0,ms=0)#definestart(TR0=1)//定时器开关开#definestop(TR0=0)//定时器开关关sbitSW1=P1^0;sbitSW2=

4、P1^1;voidInit_Timer0(void);//定时器0中断初始化子程序函数voiddisplay();//数码管显示函数voidkeyscan();//按键检测函数voiddelay(uintt);//延时函数ucharh,min,s,ms=0;//定义变量时、分、秒、毫秒ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};voidmain()//主函数{Init_Timer0();while(1){display();//数码管显示keyscan

5、();//按键检测}}voidInit_Timer0(void)//定时器0中断初始化子程序{TMOD=0x01;//使用方式1,16位定时器TH0=0x3C;TL0=0x0B0;EA=1;//开总中断ET0=1;//定时器中断开//TR0=1;//定时器开关开}8voidT0_time(void)interrupt1using1{staticunsignedchari=0;//静态变量自动赋初值0TH0=0x3C;TL0=0x0B0;//50msif(i==2){i=0;ms++;if(ms==10){ms=0;s++;if(s==60){s

6、=0;min++;if(min==60){min=0;h++;}}}if(h==99&&min==59&&s==59&&ms==9){stop;}}elsei++;}voiddisplay(void)//数码管显示{P2=0xfd;P0=table[ms];delay(2);P2=0xfb;P0=table[s%10]

7、0x80;delay(2);P2=0xf7;P0=table[s/10];delay(2);P2=0xef;P0=table[min%10]

8、0x80;8delay(2);P2=0xdf;P0=table[min/10];del

9、ay(2);P2=0xbf;P0=table[h%10]

10、0x80;delay(2);P2=0x7f;P0=table[h/10];delay(2);}voidkeyscan()//按键检测{SW1=1;SW2=1;if(SW1==0)//检测sw1是否按下{delay(5);display();//按下键时使数码管有显示if(SW1==0){if(TR0==0)start;elsestop;}while(SW1==0)display();}if(SW2==0)//判断sw2是否按下{delay(5);display();//按下键时使数码管有

11、显示if(SW2==0){clear;//清零并停止}while(SW2==0)display();}}8voiddelay(uintt)//延时ms

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。