数字时钟课程设计论文

数字时钟课程设计论文

ID:6327215

大小:236.50 KB

页数:12页

时间:2018-01-10

数字时钟课程设计论文_第1页
数字时钟课程设计论文_第2页
数字时钟课程设计论文_第3页
数字时钟课程设计论文_第4页
数字时钟课程设计论文_第5页
资源描述:

《数字时钟课程设计论文》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、一、数字时钟的基本原理数字时钟是用数字集成电路组成,用数码管显示的一种现代化计数器。数字时钟实际上是一个对标准频率(1Hz)进行计数的计数电路。振荡器产生的时钟信号经过分频器形成秒脉冲信号,秒脉冲信号输入计数器进行计数,并把累计结果“时”、“分”、“秒”的数字显示出来。秒计数器电路计满60后触发分计数器电路,分计数器电路计满60后触发时计数器电路,当计满24小时后又开始下一轮的循环计数。由于计数的起始时间不可能与标准时间(如北京时间)一致,故需在电路上加一个校时电路可以对分和时进行校时。二、数字时钟的硬件设计1、数

2、字时钟的电路原理图2、原器件清单序号器件名称参数数量1USB座无12USB线无13双排针(2)无14跳帽无35电容0.1uF76LED灯无17电阻2K1840针座无19STC89C51无110晶振12MHZ111电容20pF212复位键无113电阻10K114蜂鸣器无115三极管9015无916电阻33091716针座无118MAX232无119单排针(5)无120按键无421单排针(3)无1224位LED无223电阻4.7K8三、数字时钟的软件设计1、程序流程图开始清显示缓冲区初始化定时计数器赋时钟初值开定时器调

3、整时间数码管显示当前时钟值2、源程序#include//定义按键端口sbitkey_1=P3^0;//用于小时增加sbitkey_2=P3^1;//用于分钟增加sbitkey_3=P3^2;//用于分钟减少sbitkey_4=P3^3;//用于秒钟增加//定义所需变量unsignedcharshi=12,fen=00,miao=00;//定义十分秒并初始化为12:00:00codeunsignedchartab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,

4、0x80,0x90};//定义共阳极数码管编码表unsignedcharsbuff[8];//定义数据缓冲数组voidinit()//定义初始化函数对定时器0和定时器1进行初始化{TMOD=0x11;//定时器0和1均为模式1ET0=1;//开定时器0中断ET1=1;//开定时器1中断TH0=0xd8;TL0=0xf0;//定时10msTH1=0xfc;TL1=0x18;//定时0.1msTR1=1;//T1开始计时TR0=1;//T0开始计时EA=1;//开总中断}//显示数值写入缓冲区函数voiddisplay

5、set(){sbuff[7]=tab[(shi/10)];//显示小时的十位sbuff[6]=tab[(shi%10)];//显示小时的个位sbuff[5]=0xbf;//显示'-'号sbuff[4]=tab[(fen/10)];//显示分钟十位sbuff[3]=tab[(fen%10)];//显示分钟个位sbuff[2]=0xbf;//显示'-'号sbuff[1]=tab[(miao/10)];//显示秒钟十位sbuff[0]=tab[(miao%10)];//显示秒钟个位}//延时子函数voiddelay(un

6、signedcharz){while(z--){unsignedcharj;for(j=0;j<123;j++);}}voidkey_scan(){if(!key_1)//按键1去抖以及动作{delay(100);if(!key_1){shi++;if(shi==24)shi=0;//正常时间小时加1displayset();}}if(!key_2)//按键2去抖以及动作{delay(100);if(!key_2){fen++;if(fen==60)fen=0;//分增加1displayset();}}if(!ke

7、y_3)//按键去抖以及动作{delay(100);if(!key_3){fen--;if(fen==255)fen=59;//分减1displayset();}}if(!key_4)//按键去抖以及动作{delay(100);if(!key_4){miao++;if(miao==60)miao=0;//秒增加1displayset();}}}//主函数voidmain(){init();//调用初始化定时器函数displayset();//调用显示设置函数while(1)//主循环用于不断检测按键是否被按下{ke

8、y_scan();//调用按键检测函数}}//以下是中断程序/////T0中断用于计时voidtimer(void)interrupt1using0{staticunsignedcharcounter;//用于计进中断次数,即走过了多少个10毫秒TH0=0xd8;TL0=0xf0;//重新装入初值counter++;switch(counter){case0

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

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

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