基于单片机的多功能数字钟设计内容摘要:

不进行十进制调整,则加到 9后再加则会显示 A到 F。 且在判断时分秒是否计满时,用到的比较数值是24H、 60H、 60H,而不是 2 60、 60。 在拆字子程序中,将显示缓冲区的首地址存入 R1,但在指向下一个个位单元时,须自增 1 两次,因为时与分、分与秒之间有个横杆。 音乐播放单独可正常运行,但整合到整个程序中,无法实现。 反复排查,发现原因在于, T1 未 进行中断初始化,且在音乐播放子程序中未开启中断未启动 T1。 对应解决后,可正常实现该功能。 经过十天的不屑努力,终于圆满完成包括选题、编程测试、写报告的实训任务。 其中所作数字钟的显示效果基本符合设计要求并包含个人创新成果。 八、实习心得 在这次实习过程中,发现自己对单片机接口技术的相关知识还不是很了解,存在很多问题还不能独立解决。 一方面是由于没有充分掌握课本上的相关专业知识,另一方面是没有了解课本以外的有关知识。 从而实践起来有点困难。 虽然在自己的努力和同学的帮助下,最终顺利达到预期目标,但在报告中的论述 可能存在一部分的错误或不足,还望老师指点。 同时这也提醒了我以后要更加中主专业知识的学习。 不仅要学好课本知识,还要自学课外相关的知识。 融会贯通,灵活应用。 学好基础知识。 一个人要屹立在人群之上,当然也离不开有力的基础。 只有现在好好学习知识,基础牢固了,自身的发展才能得到保障。 在工作中,也需要用理论基础来指导实际操作。 所以目前我们的任务就是好好学习,为将来打下结实的基础。 不断学习新知识、新技术。 所谓学海无涯,活到老学到老,学习也要与时俱进。 我们要不断学习新的知识、新的技术来武装自己,虚心向他人请教。 只有不断的充实头脑,面对工作才会有更多的选择空间,和更好的发展机会,使自己能够脱颖而出。 广泛阅读资料,并学会灵活运用,把别人的东西消化,成为自己的知识储备。 遇到问题先独立思考,实在解决不了在寻求资料或者同学老师的帮助。 感谢学校为我们安排了这个学习和实践的机会。 感谢老师的细心指导。 九、附录 源 程序代码 : ORG 0000H LJMP MAIN ORG 000BH LJMP ITP ORG 001BH LJMP TIME1 ORG 0030H /****************************************************************************************** 定时、中断、 8255 初始化 ******************************************************************************************/ MAIN: MOV SP,70H LCALL DELAY1S MOV P1,00100100B。 P1 口 LED灯亮 1秒 LCALL DELAY1S。 延时 1S MOV P1,0FFH。 熄 L07灯 MOV A,89H。 数码管显示与矩阵键盘接口 8255 初始化 MOV DPTR,0FE03H MOVX @DPTR,A MOV A,8BH。 LED显示、开关、按键接口 8255初始化 MOV DPTR,0FD03H MOVX @DPTR,A MOV DPTR,0FE01H MOV A,00H MOVX @DPTR,A。 关显示 MOV 38H,00H。 38H39H为定时中断秒计时所用 MOV 39H,00H MOV 3AH,50H。 秒初始值为 50 MOV 3BH,59H。 分初始值为 59 MOV 3CH,23H。 时初始值为 23 MOV 40H,0。 闹钟初始 秒 单元为 0 MOV 41H,02。 闹钟初始 分 单元为 2 MOV 42H,01。 闹钟初始 时 单元为 1 MOV TMOD,12H。 计数器 T0, T1 初始化 MOV TL0,48H MOV TH0,48H MOV TL1,00H MOV TH1,00H SETB EA SETB ET0。 开中断 SETB TR0。 启动 T0 定时工作 LM: MOV 32H,10H MOV 35H,10H /****************************************************************************************** 功能键扫描 ******************************************************************************************/ LOOP: MOV DPTR,0FD01H MOVX A, @DPTR JB ,CHK_7。 PB6键是否按下。 LCALL DELAY12MS。 消除抖动 CHK_00: MOVX A, @DPTR JNB ,CHK_00。 按下则执行功能 2(调整日期、音乐播放) LJMP FUN_2 CHK_7: JB ,F1。 PB7 键按下则执行功能 3(显示生日) LJMP FUN_3 F1: LJMP FUN_1。 两键都未按下则执行功能 1。 (调整时间、整点报时、闹铃报警) /****************************************************************************************** 功能模块程序 ******************************************************************************************/ /********************功能 1实现数字钟显示 ****************/ FUN_1: LCALL SKEY。 调用按键扫描调整时间子程序 CALL CZ。 调用拆字子程序 LCALL DISP。 调用显示子程序 LCALL CLOCKPS。 调用闹钟报警子程序 LCALL BAOSHI。 调用整点报时程序 SJMP LOOP。 反复循环主流程 /*****************功能 2显示日期并音乐播放 *****************/ FUN_2: LCALL XH2。 调用显示缓冲区 2(年月日初始值) FUN_22: LCALL DISP。 调用显示子程序 LCALL SKEY1。 调用日期按键扫描程序 LCALL BIR。 调用音乐播放判断程序 MOV DPTR,0FD02H。 8255PC口 MOVX A,@DPTR JB ,F2。 判断 PC0键是否按下。 LJMP LM。 按下则返回显示数字钟 F2: SJMP FUN_22。 未按则循环实现功能 2(调整日期音乐播放) /********************功能 3显示生日 ***********************/ FUN_3: LCALL XH3。 调用显示缓冲区 3(生日日期) LCALL DISP。 调用显示子程序 MOV DPTR,0FD01H MOVX A,@DPTR JB ,F3。 PB0是否按下。 LJMP LM F3: SJMP FUN_3。 未按下则执行功能 3(显示生日) /****************************************************************************************** 显示子程序 ******************************************************************************************/ DISP: MOV R0,30H。 显示缓冲单元首地址 MOV R3,01H。 字位码初值(从最右位起) MOV A,R3 DISP1: MOV DPTR,0FE01H。 8255B口(字位码输出口) MOVX @DPTR,A。 输出字位码 MOV A,@R0。 取显示数据码 MOV DPTR,TAB MOVC A,@A+DPTR。 查表得相应字段码 NEXTPC: MOV DPTR,0FE00H MOVX @DPTR,A。 输出字段码 LCALL D1MS。 保 持显示 1毫秒 INC R0。 指向下一显示缓冲单元 MOV A,R3。 取出字位码 JB ,DISP2。 判已显示到最左位否 RL A。 未完 ,字位码左移 1位 MOV R3,A。 回存新字位码 LJMP DISP1。 转下一位显 示 DISP2: RET TAB: DB 0C0H,0F9H,0A4H,0B0H,99H。 0~9 显示字段码表 DB 92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H DB 8EH,0BFH,00H。 AF,,全亮, D1MS: MOV R7,250。 延时 1毫秒子程序 D1MS1: NOP NOP NOP NOP DJNZ R7,D1MS1 RET /****************************************************************************************** 显示缓冲区 1(拆字) ******************************************************************************************/ CZ: MOV R0,3AH。 秒、分、时单元首地址 MOV R1,30H。 显示缓冲单元首地址 CZ1: MOV A,@R0。 取当前 BCD 码 ANL A,0FH。 保留低 4位(个位) MOV @R1,A。 送显缓当前个位单元 INC R1。 指向显缓十位单元 MOV A,@R0。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。