对时功能电子钟设计报告

上传人:1666****666 文档编号:39438473 上传时间:2021-11-10 格式:DOC 页数:15 大小:256KB
收藏 版权申诉 举报 下载
对时功能电子钟设计报告_第1页
第1页 / 共15页
对时功能电子钟设计报告_第2页
第2页 / 共15页
对时功能电子钟设计报告_第3页
第3页 / 共15页
资源描述:

《对时功能电子钟设计报告》由会员分享,可在线阅读,更多相关《对时功能电子钟设计报告(15页珍藏版)》请在装配图网上搜索。

1、设计报告题 目完成人:张欣,杜枫一、 系统概述使用AT89C51单片机结合段码LED显示器,键盘设计一个具有对时功能的电子钟。1、设计要求:l 采用8个LED数码管,显示格式为“时时-分分-秒秒”,采用24小时制。l “时/分/秒”相应LED闪动,表示相应的部分处于对时状态。l 用5个功能键操作来设置当前时间:功能键K1K5功能如下。l K1进入时间设置状态,且“时时-分分-秒秒”LED闪动。l K2设置小时。l K3设置分钟。l K4设置秒钟。l K5确认完成设置,“时时-分分-秒秒”LED停止闪动,继续计时。l 未进入计时状态时,K2-K5键的操作被忽略。程序执行后LED显示“00:00:

2、00”,然后开始计时。2、用汇编语言编写相应软件;3、系统软、硬件联调。二、 方案设计本次设计是基于AT89C51单片机电子钟的设计,对时、分、秒的显示的控制,时、分、秒用六位数码管显示LED数码管时钟电路采用24小时计时方式。该电路采用AT89C51单片机,使用5V电池供电,只使用一个按键进行复位状态的控制以及正常显示等状态。LED显示采用静态扫描方式实现,采用6M晶振。该电子钟使用单片机模块控制,用单片机原理实现时、分、秒计时的装置。本次设计通过用单片机为主控制,通过电路仿真而实现。首先使用Proteus Professional软件进行绘制硬件电路图,用keil软件进行编程与调试,最终生

3、成hex文件,传入单片机内部,从而实现仿真效果。三、 硬件设计根据AT89C51单片机灌电流能力强,拉电流能力弱的特点,我们选用共阳数码管。将AT89C51的P3.0P3.1分别与74LS164的数据输入口和时钟信号输入口相连,74LS164是8位串入并出移位寄存器,负责将P3.0输出的串行数据转换成并行信号。显然,这种方式显示同样的位数使用单片机的口线大大减少,即可以让LED当前时间数值,数码管显示器有二种工作方式,即静态显示方式和动态扫描显示方式。为节省端口,本系统采用静态扫描显示方式。系统的时分显示部件由6只7段共阳LED数码管构成,前两只用于时的显示,中间两只用于分的显示,最后两只用于

4、秒的显示。每个LED数码管由相对应的74LS164驱动,数码管的a,b,c,d,e,f,g,h,分别分别74LS164的QA,QB,QC,QD,QE,QF,QH相连。3.1 AT89C51引脚及其功能引脚功能:Vcc(40):电源电压 GND(20):接地P3.0 RXD(串行输入口) P3.1 TXD(串行输出口)RST(9):复位信号输入端。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平

5、时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1(18):振荡器反相放大器的及内部时钟发生器的输入端。XTAL2(19):振荡器反相放大器的输出端。通过XTAL1、XTAL2外接晶振后,即可构成自激振荡器,驱动内部时钟发生器向主机提供时钟信号。3.2 时钟电路单片机必须在时钟的驱动下才能进行工作。MCS-51系列单片机内部有一时钟振荡电路,只需外接振荡电源,就能产生一定频率的时钟信号到单片机内部的各个单元,决定单片机的工作速度。电路如下图:3.3驱动部件74LS245是我们常用的芯片,用来驱动led或者其他的设备,它是8路同相三态双向总线收发器

6、,可双向传输数据。当8051单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动器。图3(a)为74LS245的管脚图。图3(a)74LS245管脚图3.4显示部分由8个共阴极的数码管组成时、分、秒和分隔符的显示P0口的8条数据线P0.0至P0.7分别与74LS245的A口对应相接,增大AT89C51的带负载能力;P3口对应接八个数码管的公共端,通过程序控制数码管的亮与灭,这样通过P0口送出一个存储单元的高位、低位BCD显示代码,通过P3口送出 扫描选通代码轮流点亮LED1至LED8,就会将要显示的数据在数码管中显示出来,从P0口输出的代码是BCD码,从P3口输

7、出的就是位选码。这是扫描显示原理。LED显示段码字型共阳极段码共阴极段码字型共阳极段码共阴极段码0C0H3FH990H6FH1F9H06HA88H77H2A4H5BHB83H7CH3BOH4FHCC6H39H499H66HDA1H5EH592H6DHE86H79H682H7DHF84H71H7F8H07H空白FFH00H880H7FHP8CH73H注:(1)本表所列各字符的显示段码均为小数点不亮的情况。 (2)“空白”字符即没有任何显示。四、 软件设计本次设计的软件部分由主程序,静态显示子程序,中断服务程序,时、分、秒加1子程序,时、分、秒单元清零子程序组成。4.1 电子钟的主程序本设计中,计

8、时采用定时器T0中断完成,其余状态循环调用显示子程序,当端口开关按下时,转入相应功能程序。其主程序执行流程见下图。开始设堆栈指针秒分时计数单元清零设定时器工作方式设定时器初值设中断方式中断初始化调显示子程序TMOD=01为工作方式14.2定时器中断服务程序定时器TO用于时间计时,定时溢出中断周期设为100ms,中断进入后,判断是否到1秒钟,到了,则调用加法子程序对秒进行加1处理,处理完后返回断点地址,同时判断秒是否到了60秒,到了则对秒单元清零,同时对分进行加1操作,同样对分进行判断,到60分则对分单元清零,同时对时加1,同样也对时进行判断,到24小时,则对时单元清零,最后中断返回。 T0中断

9、服务程序执行流程见下图:保护现场 赋初值10数是否到?NY秒值加1是否到60秒?N Y秒清0分加1是否到60分?NY分清0小时加1是否到24小时?NY小时清0恢复现场返回中断4.3电子钟的显示子程序4.4延时子程序附:程序片段如下:S_SETBITP1.0M_SETBITP1.1H_SETBITP1.2SECONDEQU30HMINUTEEQU31H;定义MINUTE为31H单元标号,分计数单元HOUREQU32H;定义HOUR为32H单元标号,时计数单元TCNTEQU34H;定义TCNT为34H单元标号定时器TO计数ORG00H;程序开始地址SJMPSTART ;跳转到START执行ORG0

10、BH;定时器TO中断入口地址LJMP INT_T0;跳转到INT-TO执行START:MOV DPTR,#TABLE;指针指向TABLE首地址MOVHOUR,#0;初始化秒计数单元MOVMINUTE, #0;初始化分计数单元MOVSECOND,#0;初始化时计数单元MOVTCNT,#0;初始化T0计数单元MOVTMOD,#01H;工作方式1MOVTH0,#(65536-50000)/256;定时 50 毫秒MOVTL0,#(65536-50000)MOD 256MOVIE,#82H;允许定时器TO中断SETBTR0;启动定时器T0;判断是否有控制键按下,是哪一个键按下A1:LCALLDISPL

11、AY;跳转到DISPLAY执行JNBS_SET,S1;检查 P1.0 口 电平JNBM_SET,S2;检查 Pl.l 口电平JNBH_SET,S3;检查 P1.2 口 电平LJMPA1;返回S1:LCALLDELAY;去抖动JBS_SET,A1;确认 P1.0 口电平INCSECOND;秒值加1MOVA,SECOND;秒数值送入A比较CJNE A,#60,J0;判断是否加到60秒MOVSECOND,#0;SECOND 单元清零LJMPK1;转到K1执行S2:LCALLDELAY;长调用DELAY指令 JBM_SET,A1;确认Pl.l 口电平K1:INCMINUTE;分钟值加1MOVA,MIN

12、UTE;分数值送入A比较CJNEA,#60,J1;判断是否加到60分MOVMINUTE,#0;秒单元清零LJMPK2;调用K2指令S3:LCALLDELAY;调用延时子程序JBH_SET,A1;确认?1.2 口电平K2:INCHOUR;小时值加1MOVA,HOUR;时数值送入A比较CJNEA,#24,J2;判断是否加到24小时MOVHOUR, #0;时单元清零MOVMINUTE, #0;分单元清零MOVSECOND,#0;秒单元清零LJMPA1;跳转到程序A1;等待按键抬起J0: JBS_SET,A1;调用A1指令LCALLDISPLAY;调用显示子程序SJMPJ0;返回J0指令J1: JBM

13、_SET,A1;数值比较LCALLDISPLAY;调用显示子程序SJMPJ1;返回J1指令J2: JBH_SET,A1;数值比较LCALLDISPLAY;调用显示子程序SJMPJ2;返回J2指令;定时器TO中断服务子程序,对秒,分钟和小时的计数INT_T0:MOVTH0,# (65536-50000)/256;定时 50msMOVTL0,# (65536-50000) MOD 256INCTCNT;定时器TO计数单元中的数值加1MOVA, TCNT;定时器T0计数单元中的数值送入A比较CJNEA,#20,RETUNE ;计时 1 秒,INCSECOND;秒计数单元中的数值加1MOVTCNT,#

14、0;定时器TO计数单元归零MOVA,SECOND;秒计数单元中的数值送入A比较CJNEA, #60,RETUNE;记时 1 分,INCMINUTE;分计数单元中的数值加1MOVSECOND, #0;秒计数单元归零MOVA, MINUTE;分计数单元中的数值送入A比较CJNEA,#60,RETUNE;记时 1 时,INCHOUR;时计数单元中的数值加1MOVMINUTE, #0;分计数单元归零MOVA,HOUR;时计数单元中的数值送入A比较CJNEA, #24,RETUNE;记时 1 天,MOVHOUR,#0;时计数单元归零MOVMINUTE, #0;分计数单元归零MOVSECOND, #0;秒

15、计数单元归零MOVTCNT,#0;定时器T0计数单元清零RETUNE: RETI;中断返回 ;显示控制子程序DISPLAY: MOVA,SECOND;显示秒MOVB, #10;B寄存器赋值为10DIVAB;(A)/(B),商存入A,余数存入B,分别处理A与B中数CLRP3.6;数码管7开始工作MOVCA,A+DPTR;数据指针指向数值地址并送入A输出显示MOVP0,A;在数码管7输出显示秒单元的十位数值LCALLDELAY;调用延时子程序SETBP3.6;数码管7停止工作MOVA, B;将B寄存器中的数送入A处理显示CLRP3.7;数码管8开始工作MOVCA,A+DPTR;数据指针指向数值地址

16、并送入A输出显示MOVP0,A;在数码管8输出显示秒单元的个位数值LCALLDELAY;调用延时子程序SETBP3.7;数码管8停止工作CLRP3.5;数码管6开始工作MOVP0,#40H;显示分隔符LCALLDELAY;调用延时子程序SETBP3.5;数码管6停止工作MOVA,MINUTE;显示分钟MOVB, #10;B寄存器赋值为10DIVABCLRP3.3;数码管4开始工作MOVCA,A+DPTR;数据指针指向数值地址并送入A输出显示MOVP0,A;在数码管4输出显示分单元的十位数值LCALLDELAY;调用延时子程序SETBP3.3;数码管4停止工作MOVA,B;将B寄存器中的数送入A

17、处理显示CLRP3.4;数码管5开始工作MOVCA,A+DPTR;数据指针指向数值地址并送入A输出显示MOVP0,A;在数码管5输出显示分单元的个位数值LCALLDELAY;调用延时子程序SETBP3.4;数码管5停止工作CLRP3.2;数码管3开始工作MOVP0,#40H;显示分隔符LCALLDELAY;调用延时子程序SETBP3.2;数码管3停止工作MOVA,HOUR;显示小时MOVB,#10;B寄存器赋值为10DIVAB;商存入A,余数存入B,分别处理A与B中数CLRP3.0;数码管1开始工作MOVCA,A+DPTR;数据指针指向数值地址并送入A输出显示MOVP0,A;在数码管1输出显示

18、时单元的十位数值LCALL DELAY;调用延时子程序 SETBP3.0;数码管1停止工作SETB P3.0;数码管1停止工作MOVA,B;将B寄存器中的数送入A处理显示CLRP3.1;数码管2开始工作 MOVCA,A+DPTR;数据指针指向数值地址并送入A输出显示MOVP0,A;在数码管2输出显示时单元的个位数值LCALLDELAY;调用延时子程序SETBP3.1;数码管2停止工作RET;子程序返回TABLE:DB 3FH,06H,5BH,4FH,66H;*W 极 LED 显示器段选码 0,1,2,3,4 DB6DH,7DH,07H,7FH,6FH;共阴极 LED 显示器段选码 5,6,7,

19、 ;延时子程序DELAY: MOVR6,#10;R6 赋值为 10Dl: MOVR7,#250;R7 赋值为 250DJNZR7,$;原地踏步DJNZR6, Dl;返回D1循环RET;子程序返回 END;结束程序五、仿真实验结果5.1软件调试打开程序调试软件keil uVision4,在里面新建一个工程,命名为:数字时 钟“2345”。接着新建文件,编写相应程序。编写好的各个程序进行编译与连接。在调试过程中,程序有错误,我们根据相应的提示进行了多次修改,直到该程序能够正确编译。之后,我们在点击相关栏目,让它生成我们在硬件仿真时所需要的“.HEX”文件。到此,我们的软件调试就完成了。下面是我们软

20、件调试的部分贴图。程序运行成功,并生成HEX文件,如图1。 图 1将生成的HEX文件,加载到单片机中。如图2。图2 生成HEX文件5.2硬件调试打开Proteus 7 Professional软件,按照方案所选的电路元件来设计整体电路,先把个芯片按一定的位置放好,然后对相应的接口进行连接。做好之后把编程所生成的HEX文件加载到AT89C51中,运行仿真软件,查看运行效果。仿真结果未达到设计要求,目前我们仍在查找原因。下图5(a)-图5(e)是未连驱动电路时的硬件仿真结果部分贴图;图5(f)-图5(g)是连了驱动电路后的硬件调试部分贴图。图 5(a)图 5(b)图 5(c)图 5(d)图 5(e)图 5(f)图 5(g) 六、参考文献单片机程序设计实例 清华大学出版社单片机原理及接口技术 高等教育出版社单片机课程设计实例指导 北京航空航天大学出版社

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!