基于51单片机的数字钟的设计_第1页
基于51单片机的数字钟的设计_第2页
基于51单片机的数字钟的设计_第3页
基于51单片机的数字钟的设计_第4页
基于51单片机的数字钟的设计_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机技术课程设计报告题 目: 数字钟设计 班 级: 学 号: 姓 名: 同组人员: 指导教师: 2014年7月5日目 录1.课程设计目的22.课程设计题目描述和要求23.1总体设计方案23.2模块化设计34.设计原理分析34.1主控制系统34.2时钟电路64.3复位及复位电路64.4按键电路74.5数码管显示电路75.软件设计95.1软件流程图95.2时钟中断95.3 C51中断格式126.总结12参考书目:12附录113附录218附录3231.课程设计目的在单片机技术日趋成熟的今天,其灵活的硬件电路的设计和软件的设计,让单片机得到了广泛的应用,几乎是从小的电子产品,到大的工业控制,单片机都

2、起到了举足轻重的作用。单片机系统结构几乎是一个计算机的缩影,可谓是麻雀虽小,五脏俱全,简单的单片机数字钟设计为单片机的应用与开发的学习建立了良好的开端。2.课程设计题目描述和要求 利用单片机的定时器和数码管,设计一个电子时钟,显示格式为“:”,由左向右分别是时、分、秒。开机时,显示00:00:00的时间开始计时;当时间不准时,可校时,P0.0控制“秒”的调整,每按一次加1s;P0.1控制“分”的调整,每按一次加1min;P0.2控制“时”的调整,每按一次加1h。计时满23:59:59时,返回00:00:00重新计时。3.总体设计方案3.1设计思路利用单片机来设计数字钟是单片机初学者的入门设计,

3、而51系列单片机易学、易懂,应用广泛。分析题可知:当LED的显示位数较多时,I/O口较少时,为了简化电路,降低成本,由I/O口控制共阴极点或共阳极数码管显示。如果各位同时导通,LED只能显示相同的字符。要想每位显示不同的字符并且使用最少的I/O口,必须采用扫描显示方式动态显示。 3.2模块化设计本次设计时钟电路,使用了ATC89C51单片机芯片控制电路,单片机控制电路简单且去了很多复杂的线路,使得电路简明易懂,使用键盘键上的按键来调整时钟的时、分、秒。 图3.2 时钟模块化设计4.设计原理分析4.1主控制系统单片机中央处理系统的方案设计,选用STC89C52单片机作为微处理器,如图4.1所示。

4、该单片机除了拥有MCS-51系列单片机的所有优点外,内部还具有8K的在系统可编程FLASH存储器,低功耗的空闲和掉电模式,极大的降低了电路的功耗,还包含了定时器、程序存储器、数据存储器等硬件,其硬件能符合整个控制系统的要求,不需要外接其他存储器芯片和定时器件,方便地构成一个最小系统。整个系统结构紧凑,抗干扰能力强,性价比高。图4.1 STC89C52PDIP40封装主要的引脚功能:VCC:电源电压GND:接地P0口:P0口是一组8位双向I0口。P0口即可作地址数据总线使用,又可以作为通用的I/O口使用。当CPU访问片外存储器时,P0口分时先作低8位地址总线,后作双向数据总线,此时,P0口就不能

5、再作I/O口使用了。在访问期间激活要使用上拉电阻。P1口:Pl 是一个带内部上拉电阻的8准位双向IO口,P1作为通用的I/O口使用。P2 口:P2 是一个带有内部上拉电阻的8 位准双向IO 口,P2即可作为通用的I/O口使用,也可以作为片外存储器的高8位地址总线,与P0口配合,组成16位片外存储器单元地址。P3 口:P3 口是一组带有内部上拉电阻的8 位准双向I0 口。P3 口除了作为通用的I/O口使用之外,每个引脚还具有第二功能,具体分配如表4-1表4-1 具有第二功能的P3口引脚端口引脚第二功能:P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外中断0)P3.3

6、/ INT1(外中断1)P3.4T0(定时计数器0外部输入)P3.5T1(定时计数器1外部输入)P3.6/ WR(外部数据存储器写选通)P3.7/ RD外部数据存储器读选通)RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。WDT 溢出将使该引脚输出高电平,设置SFR AUXR的DISRT0 位(地址8EH)可打开或关闭该功能。DISRT0位缺省为RESET输出高电平打开状态。ALE:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE 仍以时钟振荡频率的16 输出固定的正脉冲信号,因此它可

7、对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对F1ash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH 单元的D0 位置位,可禁止ALE 操作。该位置位后,只有一条M0VX和M0VC指令ALE才会被激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。程序储存允许()输出是外部程序存储器的读选通信号,当AT89S51 由外部程序存储器取指令(或数据)时,每个机器周期两次有效,即输出两个脉冲。当访问外部数据存储器,没有两次有效的信号。VPP:外部访问允许。欲使CPU仅访问外部

8、程序存储器(地址为0000HFFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。F1ash存储器编程时,该引脚加上+12V的编程电压Vcc。XTAL1:振荡器反相放大器及内部时钟发生器的输入端。4.2时钟电路STC89C52内部有一个用于构成振荡器的高增益反相放大器,引脚RXD和TXD分别是此放大器的输入端和输出端。时钟可以由内部方式产生或外部方式产生。内部方式的时钟电路如图4-1所示,在RXD和TXD引脚上外接定时元件,内部振荡器就产生自激振荡。定时元件通常采用石英晶体

9、和电容组成的并联谐振回路。晶体振荡频率可以在1.212MHz之间选择,电容值在530pF之间选择,电容值的大小可对频率起微调的作用。外部方式的时钟电路RXD接地,TXD接外部振荡器。对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于12MHz的方波信号。片内时钟发生器把振荡频率两分频,产生一个两相时钟P1和P2,供单片机使用。 图4-1 单片机内部时钟电路4.3复位及复位电路 复位是单片机的初始化操作。其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重

10、新启动。按键电平复位电路图如图4-2所示。RST引脚是复位信号的输入端。复位信号是高电平有效,其有效时间应持续24个振荡周期(即二个机器周期)以上。若使用颇率为12MHz的晶振,则复位信号持续时间应超过2us才能完成复位操作。图4-2 按键电平复位4.4按键电路 一般的按键电路是不需要接上拉电阻的,因为像P1、P2和P3口都有内置的上拉电阻,当IO口被外部拉低时,当外部的地电平撤销时,这些IO口会被内置的上拉电阻拉高。而如果内部没有上拉电阻的话,当外部电平撤销时,由于没有上拉所以依然为低电平,这样就会出现只要按一次键后IO口就会保持低电平,这样控制器就会认为一直有按键按下。这个设计要求用P0口

11、而P0口没有内置上拉电阻所以需要外部接。按键电路如图4-3所示:图4-3数字钟按键电路4.5数码管显示电路数码管显示时数字钟最关键的部分,它是课程设计的重点。在电路上由两个四位一体数码管组成和两个74HC573锁存器组成。两个锁存器都与P2口相互连接,P3.5为位选,P3.6为断选。一个74HC573的Q0Q7与两个数码管的七段相接,一个74HC573的Q0Q7与数码管的位选相连,锁存器的作用是避免因时隙而产生的乱码情况,以及驱动数码管。在某一瞬间,只让某一位的字位线处于选通状态,即共阴极的为低电平,共阳极为高电平,同时字段线上输出相应位要显示字符的字段码。而其他各位的字位线处于悬空状态,不显

12、示,这样,在每一瞬时,每位LED只有选通的那一位LED显示出字符,而其他位是熄灭的,同样在下一瞬时,只显示下一位LED,如此循环每位LED。虽然这些字符是在不同的瞬时轮流显示出来的,但由于人眼的视觉残留效应,看到的是每位同时显示字符。动态显示驱动。通过单片机对数码管位选通COM端电路的控制,只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。动态显示可以大幅度地降低硬件成本和电源的功耗,因为某一时刻只有一个数码管工作,也就是所谓的分时显示,故显示所需要的硬件电路可分时复用。动态显示

13、方式设计上如果处理不当,易造成亮度低,闪烁问题。因此合理的设计既应保证驱动电路易实现,又要保证显示后的数据稳定,无闪烁。动态显示采用多路复用技术的动态扫描显示方式,复用的程度不是无限增加的,因为利用动态扫描显示使我们看到一幅稳定画面的实质是利用了人眼的暂留效应和发光二极管发光时间的长短,发光的亮度等因素.我们通过实验发现,当扫描刷新频率(发光二极管的停闪频率)为50Hz,发光二极管导通时间1ms时,显示亮度较好,无闪烁感。数码管电路如图4-4和4-5图4-4 74HC573电路图图4-5数码管与573连接的电路图5.软件设计5.1软件流程图 开始中段初始数码管显示是否有按键按下是否按键程序图5

14、-1 主函数流程图5.2时钟中断在89C52中,与定时器/计数器应用有关的控制寄存器共有3个,分别是定时控制寄存器、工作方式控制寄存器和中断允许控制寄存器。本次课程设计将会涉及这三个控制寄存器,现对它们说明如下。(1) 定时器控制寄存器(TCON)TCON寄存器地址为88H,位地址为8FH88H。该寄存器位定义及位地址表示如表5-1所示。表5-1 TCON寄存器表示位地址8FH8EH8DH8CH8BH8AH89H88H位符号TF1TR1TF0TR0IE1IT1IE0IT0定时器控制寄存器中,与定时器/计数器有关的控制位共4位,即TF1、TR1、TF0和TR0,它们的作用分别为:TR0和TR1运

15、行控制位。TR0(TR1)=0,停止定时器/计数器工作;TR0(TR1)=1,启动定时器/计数器工作。控制计数启停只需用软件方法使其置1或清0即可。TF0和TF1计数溢出标志位。当计数器产生计数溢出时,相应溢出标志位由硬件置1。计数溢出标志用于表示定时/计数是否完成,因此,它是供查询的状态位。当采用查询方法是,溢出标志位被查询,并在后续处理程序中应以软件方法及时将其清0。而当采用中断方法是,溢出标志位不但能自动产生中断请求,而且连清0操作也能在转向中断服务程序时由硬件自动进行。(2) 定时器方式选择寄存器(TMOD)TMOD寄存器用于设定定时器/计数器的工作方式。寄存器地址为89H,但它没有位

16、地址,不能进行位寻址,只能用字节传送指令设置其内容。该寄存器的位定义如表5-2所示。表5-2 TMOD寄存器表示B7HB6HB5HB4HB3HB2HB1HB0HGATEM1M0GATEM1M0定时器/计数器1定时器/计数器0它的低半字节对应定时器/计数器0,高半字节对应定时器/计数器1,前后半字节的位格式完全对应。位定义如下:GATE门控位。GATE=0,以运行控制位TR启动定时器;GATE=1,以外中断请求信号(或)启动定时器,这可以用于外部脉冲宽度测量。定时方式或计数方式选择为。=0,定时工作方式; =1,计数工作方式。M1M0工作方式选择位。M1M0=00,工作方式0;M1M0=01,工

17、作方式1;M1M0=10,工作方式2;M1M0=11,工作方式3。(3)中断允许控制寄存器(IE)该寄存器地址为A8H,位地址为AFHA8H。寄存器位定义及位地址如表3-3所示。表5-3 IE寄存器表示位地址AFHAEHADHACHABHAAHA9HA8H位符号EAESET1EX1ET0EX0其中与定时器/计数器有关的是定时器/计数器中断允许控制位ET0和ET1。ET0(ET1)=0,禁止定时器中断;ET0(ET1)=1,允许定时器中断。表5-4 52单片机中断中断源默认中断源序号(C语言用)入口地址(汇编语言用)INT0最高00003HT0第二1000BHINT1第三20013HT1第四30

18、01BHT1/R1第五40023HT2第六5002B16Void 函数名() interrupt 中断号 using 工作组 中断服务内容6.总结 回顾起此次单片机课程设计,我仍感慨颇多,的确,从选题到定稿,从理论到实践,在接近二星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以

19、说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对单片机汇编语言掌握得不好通过这次课程设计之后,一定把以前所学过的知识重新温故。参考书目:1 肖看,李群芳,张士军.单片微型计算机与接口技术,电子工业出版社,2012.12 郭天祥.51单片机C语言教程-入门,提高,开发,拓展全攻略, 电子工业出版社.2012.23孔超,张玮.化繁为简51单片机应该这样学.中国铁道出版社.2013.54程国钢.案例解说单片机C语言开发基于8051+Proteus仿真.电子工业出版

20、.2012.95李方园,范海绍.零起点学PROTEUS单片机仿真技术.机械工业出版社,2012.2附录1:汇编源代码S_SET BIT P0.0 ;数字钟秒控制位 M_SET BIT P0.1 ;分钟控制位 H_SET BIT P2.0 ;小时控制位 SECOND EQU 30H MINUTE EQU 31H HOUR EQU 32H TCNT EQU 34H ORG 00H SJMP START ORG 0BH LJMP INT_T0 START: MOV DPTR,#TABLE MOV HOUR,#0 ;初始化 MOV MINUTE,#0 MOV SECOND,#0 MOV TCNT,#0

21、 SETB P0.0 SETB P0.1 SETB P2.0 ;定时50毫秒 MOV IE,#82H SETB TR0 ;*;判断是否有控制键按下,是哪一个键按下 A1: LCALL DISPLAY JNB S_SET,S1 JNB M_SET,S2 JNB H_SET,S3 LJMP A1 S1: LCALL DELAY ;去抖动 JB S_SET,A1 INC SECOND ;秒值加1 MOV A,SECOND CJNE A,#60,J0 ;判断是否加到60秒 MOV SECOND,#0 LJMP K1 S2: LCALL DELAY JB M_SET,A1 K1: INC MINUTE

22、;分钟值加1 MOV A,MINUTE CJNE A,#60,J1 ;判断是否加到60分 MOV MINUTE,#0 LJMP K2 S3: LCALL DELAY JB H_SET,A1 K2: INC HOUR ;小时值加1 ;判断是否加到24小时 LJMP A1 ;*;等待按键抬起 J0: JB S_SET,A1 LCALL DISPLAY SJMP J0J1: SJMP J1 J2: JB H_SET,A1 LCALL DISPLAY SJMP J2 ;* ;定时器中断服务程序,对秒,分钟和小时的计数 INT_T0: MOV TH0,#3CH MOV TL0,#0B0H INC TCN

23、T MOV A,TCNT CJNE A,#20,RETUNE;计时1秒 INC SECOND MOV TCNT,#0 MOV A,SECOND CJNE A,#60,RETUNE INC MINUTE MOV SECOND,#0 MOV A,MINUTE CJNE A,#60,RETUNE INC HOUR MOV MINUTE,#0MOV A,HOUR CJNE A,#24,RETUNE MOV HOUR,#0 MOV MINUTE,#0 MOV SECOND,#0 MOV TCNT,#0 RETUNE: RETI ;*;显示控制子程序 DISPLAY:MOV A,SECOND ;显示秒 MOV B,#10 DIV AB SE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论