收藏 分销(赏)

片单机电子钟设计课程设计报告.doc

上传人:精**** 文档编号:2522802 上传时间:2024-05-31 格式:DOC 页数:17 大小:343.42KB 下载积分:8 金币
下载 相关 举报
片单机电子钟设计课程设计报告.doc_第1页
第1页 / 共17页
片单机电子钟设计课程设计报告.doc_第2页
第2页 / 共17页


点击查看更多>>
资源描述
单片机课程 电子时钟设计报告 2016.04.27 一. 设计的任务及要求: 利用实验平台上4个LED数码管,设计带有闹铃功能的数字时钟。 任务: 通过电子时钟综合设计,学会利用 8051 定时器时间计时处理功能,了解按键扫描及控制LED数码管显示原理,掌握单片机和按键以及LED数码管硬件电路设计及控制程序的设计方法。思考按键消除抖动、LED 动态显示与静态显示的特点,从而提高解决实际问题的能力。 要求: 1.在 4 位数码管上显示当前时间。显示格式“时时分分”。 2.由 LED 闪动做秒显示。 3.利用按键可对时间及闹玲进行设置,并可显示闹玲时间。当闹玲时间到蜂鸣器发出声响,按停止键使可使闹玲声停止。 二. 工作原理: LED数码管: 蜂鸣器: 按键: 三. 软件设计流程及描述: 总设计框图: 显示部分: 显示部分分为时钟显示、闹钟显示和秒显示三部分,主要由时钟显示子程序和闹钟显示子程序构成,秒显示较为简单。闹钟显示与时钟显示编程流程大致相同。 流程图如下: 按键扫描及处理框图: 闹铃部分: 设计思路及原理:音节由不同频率的方波产生,音节与频率的关系如下表所示。要产生音频方波,设计利用延时来建立音符表NOTE,表格中的数存R3*20us,其倒数1/(R3*2*10us)对应相应音符的频率。 另外,音乐的节拍是由延时实现的,如果1拍为0.4秒,1/4拍是0.1秒。只要设定延时时间,就可求得节拍的时间。延时作为基本延时时间,节拍值只能是它的整数倍。设计利用T1中断产生10ms延时,取1/4拍为10H*10ms,相应产生所需延时。 音符(低) .1 .2 .3 .4 .5 .6 .7 频率(HZ) 262 294 330 349 392 440 494 音符(中) 1 2 3 4 5 6 7 频率(HZ) 523 587 659 698 784 880 988 音符(高) ^1 ^2 ^3 ^4 ^5 ^6 ^7 频率(HZ) 1046 1175 1318 1397 1568 1760 1967 程序中的音乐乐谱如下: NOTE: DB 60H,60H,7FH,98H,7FH,60H,60H,7FH,60H DB 98H,7FH,60H,7FH,98H,60H,7FH,98H,50H METRE: DB 20H,20H,20H,20H,20H,20H,20H,20H,20H DB 20H,20H,20H,20H,20H,20H,20H,20H,20H 四. 源程序及代码: ;程序主要包括MAIN函数,T0/T1中断程序,时间、闹钟显示程序 ,按键扫描、处理程序 ;/主函数/预置T0\T1工作方式,置初值,预置时钟、闹钟,置位数码管 ORG 0000H AJMP MAIN ;跳转到主程序MAIN执行 ORG 000BH AJMP INTT0 ;跳到INTT0执行 ORG 001BH LJMP INTT1 ;跳到INTT1执行 ORG 02B0H MAIN:MOV SP,#80H MOV TMOD,#11H ;设置定时器T0、T1工作于方式1 MOV TH0,#0ECH ;装入时钟定时初值(5ms) MOV TL0,#78H MOV TH1,#0D8H ;装入闹铃定时初值(10ms) MOV TL1,#0F0H MOV R1,#00H ;确保首次默认闹铃工作 MOV 22H,#00H ;预置时钟分钟 MOV 23H,#00H ;预置时钟小时 MOV 30H,#03H ;预置闹铃分钟 MOV 31H,#00H ;预置闹铃小时 SETB P1.7 ;LED7显示秒;置位P1.7,发光二极管LED8灭 SETB EA ;开放总中断 SETB ET0 ;允许T0中断 SETB TR0 ;开启定时器T0 LOOP:LCALL DISPT ;调用时间显示子程序 LCALL RING ;调用闹铃处理子程序 LCALL KEY ;调用按键扫描子程序 JZ LOOP ;无键按下则循环 LCALL CASE ;有键按下则转按键处理子程序执行 SJMP LOOP ;返回循环 ;/ T0一秒定时中断程序INTT0/正常时钟计时 INTT0:PUSH PSW ;状态字入栈保护 PUSH ACC ;累加器入栈保护 MOV TH0,#0ECH ;装入计数初值,12MHZ晶振,形成1S中断 MOV TL0,#78H INC 20H MOV A,20H CJNE A,#200,RETURN CPL P1.67 ;一秒到LED8亮,用于显示秒 MOV 20H,#00 ;一秒到清20H MOV A,21H ADD A,#01H DA A MOV 21H,A CJNE A,#60H,RETURN MOV 21H,#00 ;一分到,21H单元清零 MOV A,22H ADD A,#01H DA A MOV 22H,A CJNE A,#60H,RETURN MOV 22H,#00 ;一小时到,22H单元清零 MOV A,23H ADD A,#01H DA A MOV 23H,A CJNE A,#24H,RETURN MOV 23H,#00H ;满24,23H单元清零 RETURN: POP ACC POP PSW RETI ;/时间显示子程序/ DISPT: MOV A,22H ANL A,#0FH MOV 2AH,A ;时钟分的低位 MOV A,22H ANL A,#0F0H SWAP A MOV 2BH,A ;时钟分的高位 MOV A,23H ANL A,#0FH MOV 2CH,A ;时钟时的低位 MOV A,23H ANL A,#0F0H SWAP A MOV 2DH,A ;时钟时的高位 LED1: SETB P2.3 MOV A,2DH MOV DPTR,#TAB MOVC A,@A+DPTR CLR P2.0 ;选通数码管1 MOV P0,A ;显示时钟时的十位部分 LCALL DELAY LED2: SETB P2.0 MOV A,2CH MOV DPTR,#TAB MOVC A,@A+DPTR CLR P2.1 ;选通数码管2 MOV P0,A ;显示时钟时的个位部分 LCALL DELAY LED3: SETB P2.1 MOV A,2BH MOV DPTR,#TAB MOVC A,@A+DPTR CLR P2.2 ;选通数码管3 MOV P0,A ;显示时钟分的十位部分 LCALL DELAY LED4: SETB P2.2 MOV A,2AH JB P1.6,TA TA: MOV DPTR,#TAB MOVC A,@A+DPTR CLR P2.3 ;选通数码管4 MOV P0,A ;显示时钟分的个位部分 LCALL DELAY RET TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;共阳数码管的时间显示码 ;/按键扫描程序/ 开关接P3口,判断按键情况 KEY: MOV P3,#0FFH MOV A,P3 CPL A ANL A,#2CH JZ RETK ;无键按下则返回 LCALL DELAY ;延时消抖 MOV A,P3 CPL A ANL A,#2CH JZ RETK ;键盘去抖动 MOV R6,A ;将键值存入R6 LOOP1: LCALL DISPT; MOV A,P3 CPL A ANL A,#2CH JNZ LOOP1 ;等待键释放 MOV A,R6 RETK: RET ;/按键处理子程序/根据按键情况进行处理 CASE: MOV A,R6 CLR P1.0 ;发光二极管LED1亮 JB ACC.2,SETH ;转调整时 JB ACC.3,SETM ;转调整分 JB ACC.5,SETR ;转闹铃设置 WAITCASE:LCALL DISPT ;无键按下时等待 LCALL KEY JZ WAITCASE ;/时间调整程序/ 按键调整时间 SETT: LCALL DISPT LCALL KEY JZ SETT MOV A,R6 JB ACC.2,SETH JB ACC.3,SETM JB ACC.5,KEYGO ;第二次按为确认离开 KEYGO: SETB P1.0 ;发光二极管LED1、LED2灭 SETB P1.1 RET SETH: MOV A,23H ;调整时钟时,时加1 ADD A,#01H DA A ;十进制调整 MOV 23H,A CJNE A,#24H,HD ;判断是否到24,不到继续 MOV 23H,#00H ;到24时清零 HD: LJMP SETT SETM: MOV A,22H ;分加1 ADD A,#01H DA A ;十进制调整 MOV 22H,A CJNE A,#60H,MD ;判断是否到1小时,不到继续 MOV 22H,#00H ;到1小时则清零 MD: LJMP SETT ;/闹铃时间调整按键扫描及处理子程序/ KEYR: MOV P3,#0FFH MOV A,P3 CPL A ANL A,#2CH JZ RETK ;无键按下则返回 LCALL DISPR ;延时消抖 MOV A,P3 CPL A ANL A,#2CH JZ RETK ;键盘去抖动 MOV R6,A ;将键值存入R6 LJMP LOOPR LOOPR: LCALL DISPR MOV A,P3 CPL A ANL A,#2CH JNZ LOOPR ;等待键释放 MOV A,R6 AJMP RETK ;/设置闹铃时间/ SETR: SETB P1.0 ;发光二极管LED1灭 CLR P1.1 ;发光二极管LED2亮,改显示状态 LCALL DISPR MOV R1,#00H ;设置闹钟时重设R1,用于检测闹铃播放与否 MOV 53H,#03H ;重设闹铃次数 LCALL KEYR ;闹铃时间调整按键检测 JZ SETR MOV A,R6 JB ACC.2,SETRH JB ACC.3,SETRM JB ACC.5,KEYGO ;第二次按为确认离开 SETRH: MOV A,31H ;闹钟时加1 ADD A,#01H DA A ;十进制调整 MOV 31H,A CJNE A,#24H,RHD ;判断是否到24,不到继续 MOV 31H,#00H ;到24时则清零 RHD: LJMP SETR SETRM: MOV A,30H ;闹钟分加1 ADD A,#01H DA A ;十进制调整 MOV 30H,A CJNE A,#60H,RMD ;判断是否到1小时,不到继续 MOV 30H,#00H ;到1小时则清零 RMD: LJMP SETR ;/闹钟设置显示子程序/ DISPR: MOV A,30H ANL A,#0FH ;屏蔽高四位 MOV 3AH,A ;保留低位送3AH MOV A,30H ANL A,#0F0H ;屏蔽低四位 SWAP A ;高四位与第四位交换 MOV 3BH,A ;将保留的高4位送3BH MOV A,31H ANL A,#0FH MOV 3CH,A ;低位 MOV A,31H ANL A,#0F0H SWAP A MOV 3DH,A ;高位 LEDR1: SETB P2.3 MOV A,3DH MOV DPTR,#TAB MOVC A,@A+DPTR CLR P2.0 MOV P0,A LCALL DELAY LEDR2: SETB P2.0 MOV A,3CH MOV DPTR,#TAB MOVC A,@A+DPTR CLR P2.1 MOV P0,A LCALL DELAY LEDR3: SETB P2.1 MOV A,3BH MOV DPTR,#TAB MOVC A,@A+DPTR CLR P2.2 MOV P0,A LCALL DELAY LEDR4: SETB P2.2 MOV A,3AH MOV DPTR,#TAB MOVC A,@A+DPTR CLR P2.3 MOV P0,A LCALL DELAY RET ;/延时子程序/ DELAY: MOV R5,#2 D1: MOV R4,#250 D2: DJNZ R4,D2 DJNZ R5,D1 RET ;/闹铃检测程序/ RING: MOV A,23H ;比较时 CJNE A,31H,RETR MOV A,22H ;比较分 CJNE A,30H,RETR LCALL SING RETR: RET ;/定时器T1中断子程序/ INTT1: PUSH PSW ;状态字入栈保护 PUSH ACC ;累加器入栈保护 INC 50H ;中断服务程序,中断计数器加1 MOV TH1,#0D8H ;装入计数初值,12M晶振,形成10MS中断 MOV TL1,#0F0H POP ACC POP PSW RETI ;/响铃子程序/ SING: CJNE R1,#01H,SING1 ;判断是否已经闹铃过一次 LJMP RETS SING1: SETB ET1 MOV 50H,#00H ;中断计数器清0 MOV 51H,#00H ;音符指针 MOV 52H,#00H ;节拍码指针 MOV 53H,#03H ;设置闹钟不退出响铃次数 GETNOT: MOV A,51H MOV DPTR,#NOTE ;表头地址送DPTR MOVC A,@A+DPTR ;查表取音符码 JZ ENDP ;是00H,则结束 MOV R6,A ;存R6 INC 51H CJNE A,#0FFH,GETMET ;不为0FFH,转取节拍码 LJMP PAUSE ;转休止播放 LJMP GETNOT ;取音符码 GETMET: MOV A,52H MOV DPTR,#METRE ;取节拍码首地址 MOVC A,@A+DPTR ;取节拍代码送R7 MOV R7,A INC 52H PLAY: SETB TR1 ;启动计数 CPL P2.4 LCALL KEY JNZ RETS MOV A,R6 MOV R3,A ;音符码存R3 LCALL DELAY1 MOV A,R7 ;取节拍码放A与中断计数比较 CJNE A,50H,PLAY ;中断计数器(50H)=R7否,不等继续循环 MOV 50H,#00H ;等于,则取下一代码 LCALL DISPT CLR TR1 LJMP GETNOT RETS: SETB P2.4 ;置位蜂鸣器,否则可能产生啸叫 MOV R1,#01H ;表明播放过一次 CLR A ;清除A,防止进入按键处理子程序 LJMP RETR PAUSE: CLR TR1 ;休止100毫秒 MOV R2,#0DH DELAY2: MOV R3,#0FFH LCALL DELAY1 DJNZ R2,DELAY2 RET ENDP: SETB P2.4 MOV R2,#0C7H ;歌曲结束,延时1秒后继续 END1M: MOV R3,#00H LCALL DELAY1 DJNZ R2,END1M DJNZ 53H,SING RET DELAY1: NOP ;R3为01H时,DELAY延时为20uS DELAY3: MOV R4,#02H DELAY4: DJNZ R4,DELAY4 DJNZ R3,DELAY3 RET NOTE: DB 60H,60H,7FH,98H,7FH,60H,60H,7FH,60H DB 98H,7FH,60H,7FH,98H,60H,7FH,98H,50H METRE: DB 20H,20H,20H,20H,20H,20H,20H,20H,20H DB 20H,20H,20H,20H, 20H,20H,20H,20H,20H END 六. 总结与体会   本次课程设计对知识的要求较为综合,我们用到了单片机、数字电路、模拟电路、protel/proteuse、keil-c51等知识,而且在后来要求必须用汇编语言来编写程序。所以,才开始时,我们不知道从何下手。不过后来在老师的帮助下,以及自己不断的查找资料,和同学商量,终于开始有点头目了,慢慢的便进入了状态。   在将编写好的源程序输入电脑,编译后出现很多错误,这些错误有许多是平时的实验遇到过的,例如:输入的分号格式不正确, CJNE写成了CJNZ等等。通过这次课程设计,发现自己的很多不足,自己知识的很多漏洞,看到了自己的实践经验还是比较缺乏,理论联系实际的能力还急需提高。   单片机理论的学习是为课程的设计作准备的,但有时学习的理论也解决不了实践中的问题。实践中获得的知识能让我对单片机的知识有更好的认识和理解。虽然这次的课程设计我参考了一些文献资料,在对程序的读写过程中我明白了许多。这次课程设计的最大收获是,只有把理论用到实践中我们才能真正掌握好所学知识。 七. Proteus仿真 目 录 第一章 总 论 1 1.1项目概况 1 1.2研究依据及范围 3 1.3主要技术经济指标 4 1.4研究结论及建议 4 第二章 项目建设的背景和必要性 6 2.1项目建设的背景 6 2.2项目建设的必要性 8 第三章 项目服务需求分析 11 第四章 项目选址与建设条件 13 4.1选址原则 13 4.2项目选址 13 4.3建设条件 14 4.4项目建设优势条件分析 15 第五章 建设方案 18 5.1建设规模与内容 18 5.2总体规划设计 19 5.3建筑方案 24 5.4结构方案 26 5.5给水工程 27 5.6排水工程 29 5.7电气设计 31 5.8暖通设计 34 5.9项目实施进度 35 第六章 节能措施 37 6.1 设计依据 37 6.2节能措施 37 第七章 环境影响分析 39 7.1 环境影响分析 39 7.2 环境保护措施及治理效果 40 第八章 消防与安全卫生 42 8.1 消防 42 8.2  劳动安全 43 8.3  卫生防护 44 第九章 组织机构与运作方式 45 9.1  组织机构 45 9.2组织管理 46 9.3劳动定员 46 第十章 投资估算 47 10.1编制依据 47 10.2  投资估算 47 10.3资金筹措 48 第十一章  经济效益评价 49 11.1 成本核算 49 11.2 利润估算 51 11.3经济风险分析 52 11.4财务评价结论 54 第十二章 结 论 55
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服