《基于单片机89C51的数码管显示时钟设计说明.doc》由会员分享,可在线阅读,更多相关《基于单片机89C51的数码管显示时钟设计说明.doc(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 . 基于单片机的数字时钟摘 要单片机在多功能数字钟中的应用已是非常普遍的,人们对数字钟的功能与工作顺序都非常熟悉。但是却很少知道它的部结构以与工作原理。由单片机作为数字钟的核心控制器,可以通过它的时钟信号进展实现计时功能,将其时间数据经单片机输出,利用显示器显示出来。通过键盘可以进展校时、定时等功能。输出设备显示器可以用液晶显示技术和数码管来显示技术。 本系统利用单片机实现具有计时、校时等功能的数字时钟,是以单片机AT89C51为核心元件同时采用LED数码管显示器动态显示“时,“分,“秒的现代计时装置。与传统机械表相比,它具有走时准确,显示直观等特点。另外具有校时功能,秒表功能,和定时器功能
2、,利用单片机实现的数字时钟具有编程灵活,便于功能的扩大等优点。关键词:数字钟系统; 单片机;数码管显示Digital clock system Abstract SCM in multi-function digital clock in the application is already very common, people on the digital clock function and are very familiar with the work order. But very few know that its internal structure and working pr
3、inciples. SCM as a digital clock from the core controller, it can achieve the clock signal timing, its time data by theMCU output, use of monitors displayed. Keyboard can be carried out at the school, timing, and other functions. Output devices can be used liquid crystal display monitors and digital
4、 technology to display the technology. The system uses MCU with time, the school features such as the digital clock, SCM AT89C51 is also used as the core components of the LED digital display dynamic display when and points and seconds of the modern time device . Compared with the traditional mechan
5、ical watches, it has a precise path that intuitive, and other characteristics. In addition a school function, stopwatch function, and the timer function to achieve MCU use of the digital clock with programming flexibility to facilitate the expansion of functional advantages. Key words: digital clock
6、 system; SCM; LED Monitor目录设计任务书.I摘要.IIIABSTRACT.IV1. 系统方案.I系统概述设计任务书.I摘要.IIIABSTRACT.IV1. 系统方案.11.1 系统概述.11.2 方案论证.11.3 扩展功能.22. 设计过程.22.1 设计原理22.2 所需元器件.23. 电路与程序.23.1 电路设计23.2 程序设计3.3.7 参考文献64. 总结体会.161、系统方案1.1 系统概述本系统可模拟电子时钟,实现时钟,秒表,倒计时定时器功能,主从CPU数据处理、键盘控制与数据显示。主控系统能响应按键,并对其进展相应的处理,再把其对应的结果数据在数码
7、管LED上显示。具体设计根本任务是:1用LED数码管显示时间,且能显示时、分、秒的24小时制的数字钟。2具有校时功能,具体方法:设置三个按钮,其中两个按钮分别对“时、“分进展校时,另一个按钮那么实现对“秒位清零系统结构框图如图1.1所示:CPU主机键盘控制数码管显示数码管显示开关控制数码管显示形式图1.1数字钟系统结构框图1.2 方案论证方案一1计数局部采用异步2-5-10进制计数器7490,显示局部参考实验七。1计时用的“秒脉冲信号可用实验板中提供的800Hz分频产生。800Hz信号同时作为动态扫描显示电路的时钟信号。2时、分校时控制,当校时按钮按下时,可对时、分计数器CP端输入秒脉冲来加速
8、计数速度来到达校时目的。方案二 1.用单片机定时器中断原理实现数码管动态10ms循环扫描,同时完成计数功能,并经过屡次中断产生“秒信号。 2.可控制按键实现时,分,秒加一,减一功能。 考虑到设计硬件简单原那么,利用单片机实现的数字时钟具有编程灵活,便于功能的扩大等优点,故本设计采用方案二。1.3扩展功能1.实现秒表功能。 2.可以用于倒计时定时。 3.可以时分秒清零。2.设计过程1原理本设计主要应用了单片机原理,利用单片机的I/O口,由键盘控制I/O口,进展单片机相应的程序处理,再用I/O口控制数码管的显示。利用开关来控制开启,暂停计时,并切换时钟,秒表,倒计时定时器功能。2所需元器件 六位一
9、体数码管,89C51单片机,7407芯片,12M晶振,按键假设干,开关假设干,电阻假设干,电容假设干,导线3电路与程序设计3.1 电路设计:图3.1总体电路图本系统的设计电路如图3.1所示,左边按键控制时分秒加一减一操作,右边开关切换数码管显示时钟,秒表,倒计时定时器等功能。单片机下方按键有复位功能:当在时钟方式时,此按键有清零作用;当在倒计时定时器方式时,此按键按下,时分秒均付为最大值。右上角是六位一体的数码管LED,用于显示。数码管左边的上拉电阻具有自动拉高P0I/O口的功能。数码管下方的7407芯片有限流作用,用于防止数码管电流过大而烧毁。3.2 程序设计 图3-2-1为主程序流程图,图
10、3-2-2为定时器0程序流程图,图3-2-3为定时器1程序流程图。是否有按键拆分,即吧两位数放到数码管上跳到按键子程序While死循环初始化程序图3-2-1主程序流程图此为主程序流程图,初始化后,就一直在while里循环,并把秒,分,时分别拆成各位和十位两个数,放到相应的数码管上显示,并检测是否有按键按下,和定时器T0,T1溢出,来执行相应的键盘子程序和定时器0,1的中断程序。重新初始化T0t+,t0+秒分时计算,ss=60,那么ss=0,mm+。分,时同理计算t0是否为2t0=0数码管循环显示一位显示相应数码管的数值第三个开关是否按下j=10j=610t是否为jt=0开关2是否按下秒加一开关
11、一是否按下开定时器1,关定时器0开定时器0,关定时器1进入主程序图3-2-2定时器0程序流程图此为定时器0流程图,在主程序检测到T0溢出时执行该子程序,该中断主要执行数码管循环显示数字,并检测到一秒后秒加一的功能。重新初始化T1t+,t0+秒分时计算,ss= -1,那么ss=59,mm减一。分,时同理计算t0是否为2t0=0数码管循环显示一位显示相应数码管的数值t是否为jt=0开关2是否按下秒减一开关一是否按下开定时器1,关定时器0开定时器0,关定时器1进入主程序j=610,图3-2-3定时器1程序流程图此为定时器1流程图,在主程序检测到T1溢出时执行该子程序,该中断程序主要执行数码管循环显示
12、数字,并检测到一秒后秒减一的功能。参考文献1 康华光,邹寿彬,臻. 电子技术根底数字局部. 高等教育,2006. 12 毅刚,喜元,董继成. 单片机原理与应用. 高等教育,2003.123 鲲,春亮,黄焱. 单片机C语言入门. 人民邮电,2008年4月第1版.1. 开场函数的定义:#include#define uchar unsigned char /宏定义#define uint unsigned int /宏定义#include /循环左移函数库void jian_pan(); /键盘子函数char code duan_ma=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0
13、x7d,0x07,0x7f,0x6f,0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef; /时钟显示数组int ss,mm,hh,s_shi,s_ge,m_shi,m_ge,h_shi,h_ge,t,t0,zy,j,ds; /zy 为左移的意思sbit p32=P32;sbit p31=P31;sbit p30=P30;sbit p37=P37;2.主程序:void main() ds=1; /定时器初始化 P2=0xfe; /数码管位初始化 P0=0x3f; /如果时时钟,断码初始置0 P1=0xff; /键盘初始 t=0; /1S时,t=7
14、00 t0=0; /数码管动态显示一次,t0=2,10ms左右 TH0=(65536-10001)/256;TL0=(65536-10001)%256; TH1=(65536-10001)/256;TL1=(65536-10001)%256; EA=1; ET1=0; /开定时器0 TR1=0; /定时器开场工作 ET0=1; TR0=1; while(1) if (P1!=0xff) /判断是否有键,有键就执行jian_pan子程序 jian_pan(); s_shi=ss/10; /拆分 s_ge=ss%10; m_shi=mm/10; m_ge=mm%10;h_shi=hh/10; h_
15、ge=hh%10;3.定时器0中断程序:void timer0() interrupt 1 if(p32=1) j=610; else j=10;TH0=(65536-10001)/256; /重新初始化T0 TL0=(65536-10001)%256;t+; t0+; if(P2=0xdf) /如果数码管显示到第6个下一个显示第1个数码管 1101 1111 - 0111 1111 - 1111 1110 P2=0x7f;/秒分时计算 if(ss=60) /假设ss为60,ss=0,同时mm+1 ss=00; mm+; if(mm=60) /假设mm为60,mm=0,同时hh+1 mm=00
16、; hh+; if(hh=24) /假设hh为24,hh=0 hh=00;/数码管动态显示,t=02时左移一位,并显示那一位相应的值 if(t0=2) t0=0; /P2循环左移一位 zy=P2; zy=_crol_(zy,1); P2=zy; /相应数码管显示相应的数值 if(P2=0xfe) P0=duan_mas_ge; if(P2=0xfd) P0=duan_mas_shi; if(P2=0xfb) P0=duan_mam_ge+10; if(P2=0xf7) P0=duan_mam_shi; if(P2=0xef) P0=duan_mah_ge+10; if(P2=0xdf) P0=
17、duan_mah_shi; if (t=j) t=0; if (p31=1) ss+; if(t611) t=0; if(p30=0) /转到timer1上去 ET0=0; TR0=0; ET1=1; TR1=1; t=0; 4.定时器1中断程序:void timer1() interrupt 3 j=610; if(ds=1) mm=59; if(ds=0) ds=0; else ds-; TH1=(65536-10001)/256; /重新初始化T1 TL1=(65536-10001)%256;t+; t0+; if(P2=0xdf) /如果数码管显示到第6个下一个显示第1个数码管 110
18、1 1111 - 0111 1111 - 1111 1110 P2=0x7f;/秒分时计算 if(ss=-1) /假设ss为60,ss=0,同时mm+1 ss=59; mm-; if(mm=-1) /假设mm为60,mm=0,同时hh+1 mm=59; hh-; /数码管动态显示,t=02时左移一位,并显示那一位相应的值 if(t0=2) t0=0; /P2循环左移一位 zy=P2; zy=_crol_(zy,1); P2=zy; /相应数码管显示相应的数值 if(P2=0xfe) P0=duan_mas_ge; if(P2=0xfd) P0=duan_mas_shi; if(P2=0xfb)
19、 P0=duan_mam_ge+10; if(P2=0xf7) P0=duan_mam_shi; if(P2=0xef) P0=duan_mah_ge+10; if(P2=0xdf) P0=duan_mah_shi; if (t=j) t=0; if (p31=1) if(ss|hh|mm)!=0) ss-; if(t611) t=0; if(p30=1) /转到timer1上去 ET1=0; TR1=0; ET0=1; TR0=1; t=0; 5.键盘子程序:void jian_pan() uint temp; temp=P1; switch(temp) case 0xfe: /秒个位加1
20、while(P1!=0xff) if(ss=59) ss=00; else ss+; break; case 0xfd: /秒个位减1 while(P1!=0xff) if(ss=00) ss=59; else ss-; break; case 0xfb: /分个位加1 while(P1!=0xff) if(mm=59) mm=00; else mm+; break; case 0xf7: /分个位减1 while(P1!=0xff) if(mm=00) mm=59; else mm-; break; case 0xef: /时个位加1 while(P1!=0xff) if(hh=23) hh
21、=00; else hh+; break; case 0xdf: /时个位减1 while(P1!=0xff) if(hh=00) hh=23; else hh-; break; case 0xbf: ss=0; break; case 0x7f: while(P1!=0xff) if(p30=1) hh=0;mm=0;ss=0; else hh=23;mm=59;ss=59; break; 4.总结体会课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术开展的日新日异,单片机已经成为当今计算机应用中
22、空前活泼的领域, 在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。本系统是以单片机AT89C52芯片为核心部件,实现了时钟、倒计时、秒表的功能。此次在软件上是花费时间最多的,我们上网找资料,上图书馆,尽可能的了解有关于单片机这方面的知识。通过这次课程设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。使我初步了解了单片机的原理,学会了使用仿真软件进展仿真,以与在常用编程设计思路技巧特别是C语言的掌握方面都能向前迈了一大步。通过本次电子技术课程设计,我们充分认识到了课程设计的理要性和必要性,本次设计使们对已学过的根底知识有了更深入的理解。26 / 26