数字钟毕业设计.doc

上传人:laozhun 文档编号:3944263 上传时间:2023-03-28 格式:DOC 页数:22 大小:450KB
返回 下载 相关 举报
数字钟毕业设计.doc_第1页
第1页 / 共22页
数字钟毕业设计.doc_第2页
第2页 / 共22页
数字钟毕业设计.doc_第3页
第3页 / 共22页
数字钟毕业设计.doc_第4页
第4页 / 共22页
数字钟毕业设计.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《数字钟毕业设计.doc》由会员分享,可在线阅读,更多相关《数字钟毕业设计.doc(22页珍藏版)》请在三一办公上搜索。

1、 目 录 摘要.1一、设计要求.2二、系统硬件设计.22.1 设计思路.32.2 系统框图.32.3 电路原理图.42.4 电路PCB图.42.5 各个部分原理.5 2.5.1 显示原理.5 2.5.2 键盘及读数原理.5 2.5.3连接功能实现原理.52.6 8051单片机引脚简介.62.7数码管的基本概念.7 2.7.1段码.7 2.7.2位码.8 2.7.3拉电流与灌电流.8 2.7.4 多位数码管的动态显示.9三、系统的软件设计.103.1 软件内数据与代码转换.103.2 软件主程序.103.3 显示子程序.103.4 定时器/计时器T0中断服务程序.103.5调时功能程序.113.

2、6 主程序框图.133.7 数字钟源程序代码.143.8 Protues软件仿真.163.9 调试步骤及仿真图像.17四、 设计体会.18参考文献.19致谢.20摘 要 本设计基于单片机技术原理,通过硬件电路的制作以及软件程序的编制,设计制作出一个数字时钟系统。单片机扩展的LCD显示器用来显示秒、分、时计数单元中的值。整个设计包括两大部分: 硬件部分和软件部分,以单片机为核心, 配以一定的外围电路和软件。硬件是整个系统的基础, 软件部分则要合理、充分地支持和使用系统的硬件, 从而完成系统所要完成的任务。 该时钟系统主要由时钟模块、LED、键盘控制模块等组成。能够准确显示时间(显示格式为时时:分

3、分:秒秒,24小时制),可随时进行时间调整,还具有闹钟时间设置、闹钟开/关、止闹功能。设计以硬件软件化为指导思想,充分发挥单片机功能,大部分功能通过软件编程来实现,电路简单明了,系统稳定性高。关键词:单片机 LED数码管 数字钟 Abstract This design based on the single chip microcomputer principle, through the making and hardware circuit and software programming designed and produced a digital clock system. SCM

4、 extended LCD display used to display seconds, points, when the value is counting unit. The whole design includes two parts, hardware and software of, based on singlechip, match with certain peripheral circuit and software. Hardware is based in the whole system, the software part then be reasonable

5、and fully support and use the system hardware, thus completing system to complete the task. This clock system mainly by the clock module, alarm module and leds, keyboard control module. To accurately display the time (display format for always: component: seconds seconds, 24-hour system), available

6、for time to adjust, with alarm time setting, alarm clock on/off, stop joking function. Design with hardware and software into guiding ideology, give full play to the SCM functions, most functions through software programming realize, circuit straightforward, stability of the system is high.Keywords:

7、SCM LED digital tube digital clock一、设计要求1. 显示时、分、秒。2. 可以24小时制或12小时制。3. 具有校时功能,可以对小时和分单独校时,对分校时的时候,停止分向小时进位。校时时钟源可以手动输入或借用电路中的时钟。4. 为了保证计时准确、稳定,由晶体振荡器提供标准时间的基准信号。系统由8051、LED数码管、按键、发光二极管等部分构成,能实现时间的调整和时间输出等功能。系统的时间调整和复位功能由sp1,sp2,sp3完成。其中sp3为时间复位,sp1为小时调整键,sp2为分钟调整键。单片机的P2口实现数码管的动态选择,二极管发亮表示电源接通。上电后,系

8、统自动进入计时状态,起始于12:00:00。二、系统的硬件设计2.1 设计思路本设计是纯粹的应用性设计,主要以实现计时、显示等功能为最终目的。设计以Atmel公司的8051为核心,在最小系统的基础上利用单片机的实时功能和外部中断口P3.2和P3.3以及LCD显示模块,硬件设计简单节约,其功能的实现主要靠软件设计,所以软件在本设计中是最为重要的。 本设计包括硬件设计和软件设计两部分。主要硬件有:8051单片机,LED显示模块2.2 系统框图图2-1 电路总体框架2.3 电路原理图 2.4 电路PCB图2.5 各个部分原理2.5.1 显示原理 数码管显示模块由8个共阴极的数码管组成时、分、秒的显示

9、。P0口的8条数据线P0.0至P0.7分别与两个CD4511译码的ABCD口相接,P2口的P2.0至P2.2分别通过电阻R10至R13与VT1至VT3的基极相连接1。这样通过P0口送出一个存储单元的高位、低位BCD显示代码,通过P2口送出扫描选通代码轮流点亮LED1至LED6,就会将要显示的数据在数码管中显示出来。从P0口输出的代码是BCD码,从P2口输出的就是位选码。这是扫描显示原理。2.5.2 键盘及读数原理 键盘是人与微机打交道的主要设备,按键的读取容易引起误动作。可采用软件去抖动的方法处理,软件的触点在闭合和断开的时候会产生抖动,这时触点的逻辑电平是不稳定的,如不采取妥善处理的话,将引

10、起按键命令错误或重复执行,在这里采用软件延时的方法来避开抖动,延时时间20ms3。2.5.3 连击功能的实现 按下某键时,对应的功能键解释程序得到执行,如操作者没有释放按键,则对应的功能会反复执行,好象连续执行,在这里我采用软件延时250ms,当按键没释放则执行下一条对应程序。利用连击功能,能实现快速调时操作。2.6 8051单片机简介8051是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中

11、央处理器和Flash存储单元,功能强大的8051单片机可为您提供许多较复杂系统控制应用场合4。8051芯片的引脚图见图2-2:图2-2 8051芯片8051有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,8051可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本5。8051有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。P3口特殊功能见表2-1:P3口引脚特殊功能P3.0RXD(串

12、行输入口)P3.1TXD(串行输出口)P3.2(外部中断0)P3.3(外部中断1)P3.4T0(定时器0外部输入)P3.5T1(定时器1外部输入)表2-1 P3口特殊功能主要功能特性: 兼容MCS51指令系统 8k可反复擦写(1000次)Flash ROM 32个双向I/O口 256x8bit内部RAM 3个16位可编程定时/计数器中断 时钟频率0-24MHz 2个串行中断 可编程UART串行通道 2个外部中断源 共6个中断源 2个读写中断口线 3级加密位 低功耗空闲和掉电模式 软件设置睡眠和唤醒功能2.7数码管的基本概念2.7.1 段码数码管中的每一段相当于一个发光二极管,8段数码管则具有8

13、个发光二极管。本次实验使用的是共阴数码管,公共端是1、6,公共端置0,则某段选线置1相应的段就亮。公共端1控制左面的数码管;公共端6控制右面的数码管。正面看数码管的引脚、段选线和数据线的对应关系为,数码管封装图和数据线与数码管管脚连接关系分别如图2-4和图2-5: 图2-4 数码管封装图 图2-5 数据线与数码管管脚连接关系段码是指在数码管显示某一数字或字符时,在数码管各段所对应的引脚上所加的高低电平按顺序排列所组成的一个数字,它与数码管的类型(共阴、共阳)和与数据线的连接顺序有关2。8段LED的段码表见表2-2:对应数据线D7D6D5D4D3D2D1D0对应显示段efDPgcdba显示数字段

14、码00CFH11001111103H0000001125DH0101110135BH01011011493H1001001150DAH1101101060DEH11011110743H0100001180DFH1101111190DBH11011011表2-2 8段LED的段码表2.7.2 位码 位码也叫位选,用于选中某一位数码管6。在实验图中要使第一个数码管显示数据,应在公共端1上加低电平,即使P2.7口为0,而公共端6上加高电平,即使P2.6口为1。位码与段码一样和硬件连接有关。2.7.3拉电流与灌电流 单片机的I/O 口与其他电路连接时,I/O 电流的流向有两种情况:一种是当该I/O 口

15、为高电平时,电流从单片机往外流,称作拉电流;另一种是该I/O 口为低电平时,电流往单片机内流,称为灌电流 7。一般I/O 的灌电流负载能力远大于拉电流负载能力,对于一般的51 单片机而言,拉电流最大4mA,灌电流为20mA。一般在数码管显示电路中采用灌电流方式(用共阳数码管),可以得到更高的亮度。本实验电路中采用拉电流方式(用共阴数码管)2。2.7.4多位数码管的动态显示 在多位8段数码管显示时,为了简化硬件电路,通常将所有位的段选线相应地并联在一起,由一个单片机的8位I/O口控制,形成段选线的多路复用【8】。而各位数码管的共阳极或共阴极分别由单片机独立的I/O口线控制,顺序循环地点亮每位数码

16、管,这样的数码管驱动方式就称为“动态扫描”2。在这种方式中,虽然每一时刻只选通一位数码管,但由于人眼具有一定的“视觉残留”,只要延时时间设置恰当,便会感觉到多位数码管同时被点亮了。多位8段LED动态显示器电路,其中段选线占用一个8位I/O口,位选线占用一个8位I/O口,由于各位的段选线并联,段线码的输出对各位来说都是相同的。因此,同一时刻,如果各位位选线都处于选通状态的话,8位LED将显示相同的字符。若要各位LED能够显示出与本位相应的显示字符,就必须采用扫描显示方式,即在某一位的位选线处于选通状态时,其它各位的位选线处于关闭状态,这样,8位LED中只有选通的那一位显示出字符,而其它位则是熄灭

17、的。同样,在下一时刻,只让下一位的位选线处于选通状态,而其他的位选线处于关闭状态。如此循环下去,就可以使各位“同时”显示出将要显示的字符。由于人眼有视觉暂留现象,只要每位显示间隔足够短,则可造成多位同时亮的假象,达到显示的目的【8】。三 系统的软件设计 3.1数据与代码转换由前述可知,从P2口输出位选码,从P0口输出段选码,LED就会显示出数字来。但P0口的输出的数据是要BCD码,各存储单元存储的是二进制数,也就是和要显示出的字符表达的含义是不一致的。可见,将要显示的存储单元的数据直接送到P0口去驱动LED数码管显示是不能正确表达的,必须在系统内部将要显示的数据经过BCD码行转换后,将各个单元

18、数据的段选代码送入P0口,给CD4511译码后去驱动数码管显示。具体转换过程如下:我先将要显示的数据装入累加器A中,再将A中的数据转换成高低两位的BCD码,再放回A中,然后将A中的值输出。如:有一个单元存储了45这样一位数,则需转换成四位的BCD码:(0100)(0101)然后放入A中。A中BCD码,译码后就在两个LED中显示出来。3.2 主程序本设计中,计时采用定时器T0中断完成,在主程序中通过设置计数器初值为0X06,使P0口输出周期为0.25毫秒的方波,即每0.25毫秒实时时钟产生一次中断,从而使系统转向相应的中断服务程序。3.3 显示子程序 数码管显示的数据存放在内存单元70H75H中

19、。其中70H-71H存放秒数据,72H-73H存放分数据,74H-75H存放时数据,每一地址单元内均为十进制BCD码。由于采用软件动态扫描实现数据显示功能,显示用十进制BCD码数据的对应段码存放在ROM表中。显示时,先取出70H-75H某一地址中的数据,然后查得对应的显示用段码,并从P0口输出,P2口将对应的数码管选中供电,就能显示该地址单元的数据值。3.4计时器T0中断服务程序 定时器TO用于时间计时,计时时溢出中断周期设为0.25ms,由于采用12MHz频率的晶体,计数速率为1MHz,机器周期为1us,通过计算得到T0的计数初值应该置为0X06,当到达计数值后产生下降沿中断,系统转入中断服

20、务程序,在中断服务程序里实现数码管的动态显示和时间的变化以及存储。数码管每20ms显示下一个,循环一次后在重复上述过程,秒每4000个中断周期加1,当加到60时秒置0,分加1,当分加到60是小时加1,分置0,当小时加到24时置0。每次执行该中断服务程序时都对当前对当前时间进行动态存储。T0中断服务程序流程图如图N24小时到?分单元清零,时单元加1NNNYY时单元清零时间显示中断返回开始一秒时间到?60秒时间到?60分钟到?秒单元加1秒单元清零,分单元加1YY 3.5 调时功能程序调时功能程序的设计方法时:按下sp3键时触发P3.2口外部中断,系统进入小时调整中断服务程序,每按一下按键小时加1,

21、加到24小时后自动置0。按下sp2键时触发P3.3口外部中断,系统进入分钟调整中断服务程序,每按一下按键分加1,加到60小时后自动置0。NYNYNY时加1显示时间结束开始秒按键按下?秒加1分按键按下?分加1时按键按下? 开始3.6 主程序框计数单元清零TH0,TL0装入初值开中断,并允许T0中断秒按键识别成功否?SECOND加1SECOND=60吗?SECOND=0显示数据处理分按键识别成功否?MINITE加1MINITE=60吗?MINITE=0显示数据处理时按键识别成功否?HOUR加1HOUR=24吗?HOUR=0显示数据处理 3.7 数字钟源程序代码#include unsigned c

22、har code dispcode=0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71,0x00; unsigned char dispbitcode=0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f; unsigned char dispbuf8=0,0,16,0,0,16,2,1; /初始化使显示时间的位全为12:00:00,其他都不点亮;当将dispbitcode2 和dispbitcode3对应的16改为X(1015中的一个),并将其指向di

23、spcode16即0x00改为dispcodeX即0x40。时分秒的间隔就为“”。unsigned char dispbitcnt; unsigned char second; unsigned char minite; unsigned char hour; unsigned int tcnt; unsigned char mstcnt; unsigned char i,j; void main(void) TMOD=0x02; TH0=0x06; TL0=0x06; TR0=1; ET0=1; EA=1; hour=12; while(1) if(P0_0=0) for(i=5;i0;i-

24、) for(j=248;j0;j-); if(P0_0=0) second+; if(second=60) second=0; dispbuf0=second%10; dispbuf1=second/10; while(P0_0=0); if(P0_1=0) for(i=5;i0;i-) for(j=248;j0;j-); if(P0_1=0) minite+; if(minite=60) minite=0; dispbuf3=minite%10; dispbuf4=minite/10; while(P0_1=0); if(P0_2=0) for(i=5;i0;i-) for(j=248;j0

25、;j-); if(P0_2=0) hour+; if(hour=24) hour=0; dispbuf6=hour%10; dispbuf7=hour/10; while(P0_2=0); void t0(void) interrupt 1 using 0 mstcnt+; if(mstcnt=8) mstcnt=0; P3=0xff; /关闭所有显示 P1=dispcodedispbufdispbitcnt; P3=dispbitcodedispbitcnt; dispbitcnt+; if(dispbitcnt=8) dispbitcnt=0; tcnt+; if(tcnt=4000) t

26、cnt=0; second+; if(second=60) second=0; minite+; if(minite=60) minite=0; hour+; if(hour=24) hour=0; dispbuf0=second%10; dispbuf1=second/10; dispbuf3=minite%10; dispbuf4=minite/10; dispbuf6=hour%10; dispbuf7=hour/10; 3.8 Proteus软件仿真在PROTUES绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTUES的原理图中看到模拟的实物运行状态和过程。它的元

27、器件、连接线路等却和传统的单片机实验硬件高度对应。这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。 3.9调试步骤及仿真图像(1)打开protues软件,按上面的设计图选取元件并连线完成电路图。(2)通过菜单“SourceAdd/Remove Source Files”,新建源程序文件:Bianyi.ASM。(3)通过菜单“SourceBianyi.ASM”,打开protues软件提供的文本编辑器SRCEDIT,在其中编辑数字钟的源程序,程序编辑好后,单击保存按钮存入文件Bianyi.ASM中。(4)通过菜单“SourceBu

28、ild All”编译源程序,生成目标代码文件Bianyi.HEX。如编译失败,对程序修改调试直至编译成功。另外,目标代码文件也可以通过其他的软件(如keil软件等单片机软件)编译获得。(5)加载目标代码文件:先右击,再左击AT89C51单片机,即打开单片机属性窗口,在“Program File”栏中添加上面编译好的目标代码文件Bianyi.HEX;在“Clock Frequency”栏中输入晶振频率12MHz。(6)单击左下方的按钮,启动仿真。按时按钮按键,进入调时状态,每按一次数字钟的小时数加一。仿真图如下: 按分按钮按键,进入调分状态,每按一次数字钟的分钟数加一。仿真图如下: 四、 设计体

29、会通过本次课程设计的制作,总结如下:设计一个电路,首先要深刻理解其原理,并根据其原理进行电路的设计。用理论指导实践可以达到事倍功半的效果,有坚实的理论做基础将会使设计变得得心应手。在设计电流的过程中应注意充分利用并扩展所学过的基础知识,设计的过程就是学习的过程,在设计过程中验证理论的正确性,弥补知识的漏洞。正确对待设计过程中遇到的错误,遇到错误与问题要敢于面对并设法找到解决的办法。通过对该电路的设计过程,我实现了从一个没学过Proteus的人到掌握基本的操作的转化,而且我还查阅了不少相关资料,更深刻地认识和巩固了平时所学的知识,使理论与实践有机结合,提高了我对所学专业的兴趣并积累了一些相关经验

30、。我认为这就是一种很好的提高自身能力的方法。这个设计的大部分内容都是在网上找的内容,自己做了一点点小小的改动,在上网找资料的同时也学到了许多东西,找到了很多学习单片机的网站,里面的内容都比较适合我初学者去学,有些网站还专门介绍这种单片机的类型、用法、功能等等。通过这个课程设计,使我发现,原来小小的一片单片机有这么强大的功能,能应用于各种领域。都是觉得很神奇,人类都的聪明啊。我应该在自己以后的学习中,不仅要有刻苦努力,要有钻研精神,还要有创新,对自己感兴趣的一定要用心去学。 虽然自己尽了很大的努力,但是还有很多不尽人意的地方,我想大概是由于开展独立开发经验不足的缘故吧,作为一个学电子信息工程的学

31、生,我想我有必要通过这次课设更多的了解自己的不足,从而在以后的学习工作中不断增强自己的动手能力,争取在电路设计方面取得更大的进步。该电路还有很多缺陷。今后我要加强学习,去认识更深层的科学知识,使我设计出来的东西更加完美。要严格要求自己,就像严格要求设计的每一个细节一样。一种端正的态度是一个系统设计成功的保障。参考文献1 江力单片机原理与应用技术清华大学出版社 20062 谢自美 电子线路 设计.实验.测试 华中科技大学出版社,2002.3 张靖武,周灵斌. 单片机系统的PROTEUS设计与仿真 电子工业出版社,2004.4 李刚51系列单片机系统设计与应用技巧 北京航空航天大学出版社 2004.5 于永51单片机C语言常用模块与综合系统设计实例精讲 电子工业出版社 2004.6 王福瑞单片微机测控系统设计大全 北京航空航天大学出版社2003.7 王幸之单片机应用系统抗干扰技术 北京航天航空大学出版社 2000.8 周坚单片机典型模块设计实例导航人民邮电出版社 2004.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号