收藏 分销(赏)

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

上传人:精**** 文档编号:2522802 上传时间:2024-05-31 格式:DOC 页数:17 大小:343.42KB
下载 相关 举报
片单机电子钟设计课程设计报告.doc_第1页
第1页 / 共17页
片单机电子钟设计课程设计报告.doc_第2页
第2页 / 共17页
片单机电子钟设计课程设计报告.doc_第3页
第3页 / 共17页
片单机电子钟设计课程设计报告.doc_第4页
第4页 / 共17页
片单机电子钟设计课程设计报告.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

1、单片机课程电子时钟设计报告2016.04.27一 设计的任务及要求:利用实验平台上4个LED数码管,设计带有闹铃功能的数字时钟。任务:通过电子时钟综合设计,学会利用 8051 定时器时间计时处理功能,了解按键扫描及控制LED数码管显示原理,掌握单片机和按键以及LED数码管硬件电路设计及控制程序的设计方法。思考按键消除抖动、LED 动态显示与静态显示的特点,从而提高解决实际问题的能力。要求:1在 4 位数码管上显示当前时间。显示格式“时时分分”。2由 LED 闪动做秒显示。3利用按键可对时间及闹玲进行设置,并可显示闹玲时间。当闹玲时间到蜂鸣器发出声响,按停止键使可使闹玲声停止。二 工作原理:LE

2、D数码管:蜂鸣器:按键:三 软件设计流程及描述:总设计框图:显示部分:显示部分分为时钟显示、闹钟显示和秒显示三部分,主要由时钟显示子程序和闹钟显示子程序构成,秒显示较为简单。闹钟显示与时钟显示编程流程大致相同。流程图如下:按键扫描及处理框图:闹铃部分:设计思路及原理:音节由不同频率的方波产生,音节与频率的关系如下表所示。要产生音频方波,设计利用延时来建立音符表NOTE,表格中的数存R3*20us,其倒数1/(R3*2*10us)对应相应音符的频率。另外,音乐的节拍是由延时实现的,如果1拍为0.4秒,1/4拍是0.1秒。只要设定延时时间,就可求得节拍的时间。延时作为基本延时时间,节拍值只能是它的

3、整数倍。设计利用T1中断产生10ms延时,取1/4拍为10H*10ms,相应产生所需延时。音符(低).1.2.3.4.5.6.7频率(HZ)262294330349392440494音符(中)1234567频率(HZ)523587659698784880988音符(高)1234567频率(HZ)1046117513181397156817601967程序中的音乐乐谱如下:NOTE:DB 60H,60H,7FH,98H,7FH,60H,60H,7FH,60HDB 98H,7FH,60H,7FH,98H,60H,7FH,98H,50HMETRE:DB 20H,20H,20H,20H,20H,20H

4、,20H,20H,20HDB 20H,20H,20H,20H,20H,20H,20H,20H,20H四 源程序及代码:;程序主要包括MAIN函数,T0/T1中断程序,时间、闹钟显示程序 ,按键扫描、处理程序;/主函数/预置T0T1工作方式,置初值,预置时钟、闹钟,置位数码管 ORG 0000HAJMP MAIN;跳转到主程序MAIN执行ORG 000BHAJMP INTT0;跳到INTT0执行ORG 001BHLJMP INTT1;跳到INTT1执行ORG 02B0HMAIN:MOV SP,#80HMOV TMOD,#11H;设置定时器T0、T1工作于方式1MOV TH0,#0ECH;装入时钟

5、定时初值(5ms)MOV TL0,#78HMOV 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;开启定时器T0LOOP:LCALL DISPT;调用时间显示子程序LCALL RING;调用闹铃处理子程序LCALL KEY;调用按

6、键扫描子程序JZ LOOP;无键按下则循环LCALL CASE;有键按下则转按键处理子程序执行SJMP LOOP;返回循环;/ T0一秒定时中断程序INTT0/正常时钟计时INTT0:PUSH PSW;状态字入栈保护 PUSH ACC;累加器入栈保护MOV TH0,#0ECH;装入计数初值,12MHZ晶振,形成1S中断MOV TL0,#78HINC 20HMOV A,20HCJNE A,#200,RETURNCPL P1.67;一秒到LED8亮,用于显示秒MOV 20H,#00;一秒到清20H MOV A,21HADD A,#01HDA AMOV 21H,ACJNE A,#60H,RETURN

7、MOV 21H,#00;一分到,21H单元清零MOV A,22HADD A,#01HDA AMOV 22H,ACJNE A,#60H,RETURNMOV 22H,#00;一小时到,22H单元清零MOV A,23HADD A,#01HDA AMOV 23H,ACJNE A,#24H,RETURNMOV 23H,#00H;满24,23H单元清零RETURN:POP ACCPOP PSWRETI;/时间显示子程序/DISPT:MOV A,22HANL A,#0FHMOV 2AH,A;时钟分的低位MOV A,22HANL A,#0F0HSWAP AMOV 2BH,A;时钟分的高位MOV A,23HAN

8、L A,#0FHMOV 2CH,A;时钟时的低位MOV A,23HANL A,#0F0HSWAP AMOV 2DH,A;时钟时的高位LED1:SETB P2.3 MOV A,2DH MOV DPTR,#TAB MOVC A,A+DPTR CLR P2.0;选通数码管1 MOV P0,A;显示时钟时的十位部分 LCALL DELAYLED2: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

9、,#TAB MOVC A,A+DPTR CLR P2.2;选通数码管3 MOV P0,A;显示时钟分的十位部分 LCALL DELAYLED4:SETB P2.2 MOV A,2AH JB P1.6,TATA: MOV DPTR,#TAB MOVC A,A+DPTR CLR P2.3;选通数码管4 MOV P0,A;显示时钟分的个位部分 LCALL DELAY RETTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;共阳数码管的时间显示码;/按键扫描程序/开关接P3口,判断按键情况KEY: MOV P3,#0FFH MOV A,P3CPL

10、 AANL A,#2CHJZ RETK;无键按下则返回LCALL DELAY;延时消抖MOV A,P3CPL AANL A,#2CHJZ RETK;键盘去抖动MOV R6,A;将键值存入R6LOOP1:LCALL DISPT;MOV A,P3CPL AANL A,#2CHJNZ LOOP1;等待键释放MOV A,R6RETK:RET;/按键处理子程序/根据按键情况进行处理CASE:MOV A,R6CLR P1.0;发光二极管LED1亮JB ACC.2,SETH;转调整时JB ACC.3,SETM ;转调整分JB ACC.5,SETR;转闹铃设置WAITCASE:LCALL DISPT;无键按下

11、时等待LCALL KEYJZ WAITCASE;/时间调整程序/按键调整时间SETT:LCALL DISPTLCALL KEYJZ SETTMOV A,R6JB ACC.2,SETHJB ACC.3,SETMJB ACC.5,KEYGO;第二次按为确认离开KEYGO: SETB P1.0;发光二极管LED1、LED2灭SETB P1.1RETSETH:MOV A,23H;调整时钟时,时加1ADD A,#01HDA A;十进制调整MOV 23H,ACJNE A,#24H,HD;判断是否到24,不到继续MOV 23H,#00H;到24时清零HD:LJMP SETTSETM:MOV A,22H;分加

12、1ADD A,#01HDA A;十进制调整 MOV 22H,ACJNE A,#60H,MD;判断是否到1小时,不到继续MOV 22H,#00H;到1小时则清零MD:LJMP SETT;/闹铃时间调整按键扫描及处理子程序/KEYR: MOV P3,#0FFH MOV A,P3CPL AANL A,#2CHJZ RETK;无键按下则返回LCALL DISPR;延时消抖MOV A,P3CPL AANL A,#2CHJZ RETK;键盘去抖动MOV R6,A;将键值存入R6LJMP LOOPRLOOPR:LCALL DISPRMOV A,P3CPL AANL A,#2CHJNZ LOOPR;等待键释放

13、MOV A,R6AJMP RETK;/设置闹铃时间/SETR:SETB P1.0;发光二极管LED1灭CLR P1.1;发光二极管LED2亮,改显示状态LCALL DISPRMOV R1,#00H;设置闹钟时重设R1,用于检测闹铃播放与否MOV 53H,#03H;重设闹铃次数LCALL KEYR;闹铃时间调整按键检测JZ SETRMOV A,R6JB ACC.2,SETRHJB ACC.3,SETRMJB ACC.5,KEYGO;第二次按为确认离开SETRH:MOV A,31H;闹钟时加1ADD A,#01HDA A;十进制调整MOV 31H,ACJNE A,#24H,RHD;判断是否到24,

14、不到继续MOV 31H,#00H;到24时则清零RHD:LJMP SETRSETRM:MOV A,30H;闹钟分加1ADD A,#01HDA A;十进制调整MOV 30H,ACJNE A,#60H,RMD;判断是否到1小时,不到继续MOV 30H,#00H;到1小时则清零RMD:LJMP SETR;/闹钟设置显示子程序/DISPR:MOV A,30HANL A,#0FH;屏蔽高四位MOV 3AH,A;保留低位送3AHMOV A,30HANL A,#0F0H;屏蔽低四位 SWAP A;高四位与第四位交换MOV 3BH,A;将保留的高4位送3BHMOV A,31HANL A,#0FH MOV 3C

15、H,A;低位MOV A,31HANL A,#0F0HSWAP AMOV 3DH,A;高位LEDR1:SETB P2.3MOV A,3DH MOV DPTR,#TAB MOVC A,A+DPTR CLR P2.0MOV P0,ALCALL DELAYLEDR2:SETB P2.0 MOV A,3CH MOV DPTR,#TAB MOVC A,A+DPTR CLR P2.1MOV P0,ALCALL DELAYLEDR3:SETB P2.1 MOV A,3BH MOV DPTR,#TAB MOVC A,A+DPTR CLR P2.2MOV P0,ALCALL DELAYLEDR4:SETB P2.

16、2 MOV A,3AH MOV DPTR,#TAB MOVC A,A+DPTR CLR P2.3MOV P0,ALCALL DELAYRET;/延时子程序/DELAY:MOV R5,#2 D1:MOV R4,#250D2:DJNZ R4,D2DJNZ R5,D1RET;/闹铃检测程序/RING:MOV A,23H;比较时CJNE A,31H,RETRMOV A,22H;比较分CJNE A,30H,RETR LCALL SINGRETR:RET;/定时器T1中断子程序/INTT1:PUSH PSW;状态字入栈保护 PUSH ACC;累加器入栈保护 INC 50H;中断服务程序,中断计数器加1MO

17、V TH1,#0D8H;装入计数初值,12M晶振,形成10MS中断 MOV TL1,#0F0H POP ACC POP PSWRETI ;/响铃子程序/ 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,则结束

18、 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;中断计数器(5

19、0H)=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,DELAY2RET ENDP:SETB P2.4 MOV R2,#0C7H;歌曲结束,延时1秒后继续END1M: MOV R3,#00H LCALL D

20、ELAY1 DJNZ R2,END1M DJNZ 53H,SING RETDELAY1:NOP;R3为01H时,DELAY延时为20uSDELAY3: MOV R4,#02H DELAY4: DJNZ R4,DELAY4 DJNZ R3,DELAY3 RETNOTE:DB 60H,60H,7FH,98H,7FH,60H,60H,7FH,60HDB 98H,7FH,60H,7FH,98H,60H,7FH,98H,50HMETRE:DB 20H,20H,20H,20H,20H,20H,20H,20H,20HDB 20H,20H,20H,20H, 20H,20H,20H,20H,20HEND六. 总

21、结与体会本次课程设计对知识的要求较为综合,我们用到了单片机、数字电路、模拟电路、protel/proteuse、keil-c51等知识,而且在后来要求必须用汇编语言来编写程序。所以,才开始时,我们不知道从何下手。不过后来在老师的帮助下,以及自己不断的查找资料,和同学商量,终于开始有点头目了,慢慢的便进入了状态。在将编写好的源程序输入电脑,编译后出现很多错误,这些错误有许多是平时的实验遇到过的,例如:输入的分号格式不正确, CJNE写成了CJNZ等等。通过这次课程设计,发现自己的很多不足,自己知识的很多漏洞,看到了自己的实践经验还是比较缺乏,理论联系实际的能力还急需提高。单片机理论的学习是为课程

22、的设计作准备的,但有时学习的理论也解决不了实践中的问题。实践中获得的知识能让我对单片机的知识有更好的认识和理解。虽然这次的课程设计我参考了一些文献资料,在对程序的读写过程中我明白了许多。这次课程设计的最大收获是,只有把理论用到实践中我们才能真正掌握好所学知识。七. Proteus仿真目 录第一章 总 论 11.1项目概况 11.2研究依据及范围 31.3主要技术经济指标 41.4研究结论及建议 4第二章 项目建设的背景和必要性 62.1项目建设的背景 62.2项目建设的必要性 8第三章 项目服务需求分析 11第四章 项目选址与建设条件 134.1选址原则 134.2项目选址 134.3建设条件

23、 144.4项目建设优势条件分析 15第五章 建设方案 185.1建设规模与内容 185.2总体规划设计 195.3建筑方案 245.4结构方案 265.5给水工程 275.6排水工程 295.7电气设计 315.8暖通设计 345.9项目实施进度 35第六章 节能措施 376.1设计依据 376.2节能措施 37第七章 环境影响分析 397.1 环境影响分析 397.2 环境保护措施及治理效果 40第八章 消防与安全卫生 428.1 消防 428.2 劳动安全 438.3 卫生防护 44第九章 组织机构与运作方式 459.1 组织机构 459.2组织管理 469.3劳动定员 46第十章 投资估算 4710.1编制依据 4710.2 投资估算 4710.3资金筹措 48第十一章 经济效益评价 4911.1 成本核算 4911.2 利润估算 5111.3经济风险分析 5211.4财务评价结论 54第十二章 结 论 55

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

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

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

关于我们      便捷服务       自信AI       AI导航        获赠5币

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

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

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

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服