基于单片AT89C51控制的电子时钟课程设计报告.docVIP

基于单片AT89C51控制的电子时钟课程设计报告.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于单片AT89C51控制的电子时钟课程设计报告

单片机电子时钟设计报告 实现功能:显示时、分、秒,刚打开电源时,显示的数据为12:00:00,然后电路会自动开始计时。电路中有时、分、秒各自单独的调整按钮,时间调整按钮每按一次,相应的显示时间加1。 所需材料:89C51单片机,多位数码管,数码管显示译码器74LS48,3线8线译码器74LS138,3个按钮, 100Ω、22KΩ电阻若干,12MHZ晶振一个,30pf无极电容2个,10uf有极电容一个,敷铜板。 电路设计:用P1端口的P1.0~P1.3来作为数码管显示数据的输出引脚,用P1.4~P1.6引脚作为3线8线译码器的控制输入引脚,用P0端口的P0.0~P0.2来分别作为时、分、秒的时间调整按钮。当按下按钮时,相应的输入引脚上就会有低电平输入单片机。3线8线译码器的控制端,Y0、Y1、Y2、Y3、Y4、Y5分别控制了数码管的显示控制线。电路如下图1-1 图1-1 流程图: 程序设计: ORG 00H 主程序起始地址 JMP START 主程序START ORG 0BH 定时器T0中断起始地址 JMP TIM0 定时器T0中断子程序TIM0 START: MOV SP,#70H 设置堆栈指针 MOV 28H,#00 设置显示位数扫描指针初值为0 MOV 2AH,#12H 设置时钟显示寄存器初值为12H MOV 2BH,#00 设置分钟显示寄存器初值为00H MOV 2CH,#00 设置秒钟显示寄存器初值为00H MOV TMOD,#01H 设置定时器T0工作在方式1 MOV TH0,#0F0H 定时4ms的初值,即0F060H MOV TL0,#60H 初值的低位 MOV IE,#82H 定时器T0中断允许 MOV R4,#250 保证后面实现中断250次,即1秒的延时 SETB TR0 启动定时器T0 LOOP: JB P0.0,N2 若没有按键,就转去下一步检查分 CALL DELAY 延时5ms,消除抖动 MOV A,2CH 将秒寄存器的值载入累加器A ADD A,#01H A的内容加1 DA A 十进制调整 MOV 2CH,A A的 值存入秒寄存器 CJNE A,#60H,N1 看是否已经是60秒,若不是就继续检查 MOV 2CH,#00 已经是60秒,就清空秒寄存器的值 N1: JNB P0.0,$ 秒按键还没有放开就循环等待 CALL DELAY 延时5ms,消除抖动 N2: JB P0.1,N4 若分没有按键,就转去下一步检查分 CALL DELAY 延时5ms,消除抖动 MOV A,2BH 将分寄存器的值载入累加器A ADD A,#01H A的内容加1 DA A 十进制调整 MOV 2BH,A A的值存入寄存器 CJNE A,#60H,N3 看是否已经是60分,若不是就继续检查 MOV 2BH,#00H 已经是60分,就清空寄存器的值 N3: JNB P0.1,$ 分按键还没有放开就循环等待 CALL DELAY 延时5ms,消除抖动 N4: JB P0.2,LOOP 若时没有按键,就转回去继续检查看是否有按键 CALL DELAY 延时5ms,消除抖动 MOV A,2AH 将时寄存器的值载入累加器A ADD A,#01H A的内容加1 DA A 十进制调整 MOV 2AH,A A的值存入时寄存器 CJNE A,#24H,N5 看是否已经是24时,若不是就继续检查 MOV 2AH,#00H 已经是24时,就清空是寄存器的值 N5: JNB P0.2,$ 时钟按键还没有放开就循环等待 CALL DELAY 延时5ms,消除抖动 JMP LOOP 返回重新检查看是否有按键 ******定时器T0中断子程序******* TIM0: MOV TH0,#0F0H 定时初值重设 MOV TL0,#60H PUSH ACC 将累加器A的值暂存于堆栈 PUSH PSW 将PSW的值暂存于堆栈 DJNZ R4,X2 计时中断不满1s就退出继续中断 MOV R4,#250 计时1s CALL CLOCK 调用计时器子程序CLOCK CALL DISP 调用显示子程序DISP X2: CALL SCAN 调用扫描子程序SCAN POP PSW 到堆栈取回PSW的值 POP ACC 到堆栈取回累加器ACC的值 RETI 返回主程序 ******扫描子程序******* SCAN: MOV R0,#28H IN

文档评论(0)

16588ww + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档