版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机课程电子时钟设计报告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)262294330349392440494音符(中)1234567频率(HZ)523587659698784880988音符(高)^1^2^3^4^5^6^7频率(HZ)1046117513181397156817601967程序中的音乐乐谱如下:NOTE: DB60H,60H,7FH,98H,7FH,60H,60H,7FH,60HDB98H,7FH,60H,7FH,98H,60H,7FH,98H,50HMETRE: DB20H,20H,20H,20H,20H,20H,20H,20H,20HDB20H,20H,20H,20H,20H,20H,20H,20H,20H源程序及代码:;程序主要包括MAIN函数,T0/T1中断程序,时间、闹钟显示程序,按键扫描、处理程序;/主函数/预置T0\T1工作方式,置初值,预置时钟、闹钟,置位数码管 ORG0000H AJMPMAIN ;跳转到主程序MAIN执行 ORG000BH AJMPINTT0 ;跳到INTT0执行 ORG001BH LJMPINTT1 ;跳到INTT1执行 ORG02B0HMAIN:MOVSP,#80H MOVTMOD,#11H ;设置定时器T0、T1工作于方式1 MOVTH0,#0ECH ;装入时钟定时初值(5ms) MOVTL0,#78H MOVTH1,#0D8H ;装入闹铃定时初值(10ms) MOVTL1,#0F0H MOVR1,#00H ;确保首次默认闹铃工作 MOV22H,#00H ;预置时钟分钟 MOV23H,#00H ;预置时钟小时MOV30H,#03H ;预置闹铃分钟 MOV31H,#00H ;预置闹铃小时 SETBP1.7 ;LED7显示秒;置位P1.7,发光二极管LED8灭 SETBEA ;开放总中断 SETBET0 ;允许T0中断 SETBTR0 ;开启定时器T0LOOP:LCALLDISPT ;调用时间显示子程序 LCALLRING ;调用闹铃处理子程序 LCALLKEY ;调用按键扫描子程序 JZLOOP ;无键按下则循环 LCALLCASE ;有键按下则转按键处理子程序执行 SJMPLOOP ;返回循环;/T0一秒定时中断程序INTT0/正常时钟计时INTT0:PUSHPSW ;状态字入栈保护 PUSHACC ;累加器入栈保护MOVTH0,#0ECH ;装入计数初值,12MHZ晶振,形成1S中断MOVTL0,#78H INC20H MOVA,20H CJNEA,#200,RETURN CPLP1.67 ;一秒到LED8亮,用于显示秒 MOV20H,#00 ;一秒到清20HMOVA,21H ADDA,#01H DAA MOV21H,A CJNEA,#60H,RETURN MOV21H,#00 ;一分到,21H单元清零 MOVA,22H ADDA,#01H DAA MOV22H,A CJNEA,#60H,RETURN MOV22H,#00 ;一小时到,22H单元清零 MOVA,23H ADDA,#01H DAA MOV23H,A CJNEA,#24H,RETURN MOV23H,#00H ;满24,23H单元清零RETURN:POPACC POPPSW RETI;/时间显示子程序/DISPT: MOVA,22H ANLA,#0FH MOV2AH,A ;时钟分的低位 MOVA,22HANLA,#0F0H SWAPA MOV2BH,A ;时钟分的高位 MOVA,23H ANLA,#0FH MOV2CH,A ;时钟时的低位 MOVA,23H ANLA,#0F0H SWAPA MOV2DH,A ;时钟时的高位LED1: SETBP2.3 MOVA,2DHMOVDPTR,#TABMOVCA,@A+DPTR CLRP2.0 ;选通数码管1 MOVP0,A ;显示时钟时的十位部分 LCALLDELAYLED2: SETBP2.0MOVA,2CHMOVDPTR,#TABMOVCA,@A+DPTR CLRP2.1 ;选通数码管2 MOVP0,A ;显示时钟时的个位部分 LCALLDELAYLED3: SETBP2.1MOVA,2BHMOVDPTR,#TABMOVCA,@A+DPTR CLRP2.2 ;选通数码管3 MOVP0,A ;显示时钟分的十位部分 LCALLDELAYLED4: SETBP2.2MOVA,2AHJBP1.6,TATA:MOVDPTR,#TABMOVCA,@A+DPTR CLRP2.3 ;选通数码管4 MOVP0,A ;显示时钟分的个位部分 LCALLDELAY RETTAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;共阳数码管的时间显示码;/按键扫描程序/ 开关接P3口,判断按键情况KEY:MOVP3,#0FFH MOVA,P3 CPLA ANLA,#2CH JZRETK ;无键按下则返回 LCALLDELAY ;延时消抖 MOVA,P3 CPLA ANLA,#2CH JZRETK ;键盘去抖动 MOVR6,A ;将键值存入R6LOOP1: LCALLDISPT; MOVA,P3 CPLA ANLA,#2CH JNZLOOP1 ;等待键释放 MOVA,R6RETK: RET;/按键处理子程序/根据按键情况进行处理CASE: MOVA,R6 CLRP1.0 ;发光二极管LED1亮 JBACC.2,SETH ;转调整时 JBACC.3,SETM ;转调整分 JBACC.5,SETR ;转闹铃设置WAITCASE:LCALLDISPT ;无键按下时等待 LCALLKEY JZWAITCASE;/时间调整程序/ 按键调整时间SETT: LCALLDISPT LCALLKEY JZSETT MOVA,R6 JBACC.2,SETH JBACC.3,SETM JBACC.5,KEYGO ;第二次按为确认离开KEYGO:SETBP1.0 ;发光二极管LED1、LED2灭 SETBP1.1 RETSETH: MOVA,23H ;调整时钟时,时加1 ADDA,#01H DAA ;十进制调整 MOV23H,A CJNEA,#24H,HD ;判断是否到24,不到继续 MOV23H,#00H ;到24时清零HD: LJMPSETTSETM: MOVA,22H ;分加1 ADDA,#01H DAA ;十进制调整 MOV22H,A CJNEA,#60H,MD ;判断是否到1小时,不到继续 MOV22H,#00H ;到1小时则清零MD: LJMPSETT;/闹铃时间调整按键扫描及处理子程序/KEYR: MOVP3,#0FFH MOVA,P3 CPLA ANLA,#2CH JZRETK ;无键按下则返回 LCALLDISPR ;延时消抖 MOVA,P3 CPLA ANLA,#2CH JZRETK ;键盘去抖动 MOVR6,A ;将键值存入R6 LJMPLOOPRLOOPR: LCALLDISPR MOVA,P3 CPLA ANLA,#2CH JNZLOOPR ;等待键释放 MOVA,R6 AJMPRETK;/设置闹铃时间/SETR: SETBP1.0 ;发光二极管LED1灭 CLRP1.1 ;发光二极管LED2亮,改显示状态 LCALLDISPR MOVR1,#00H ;设置闹钟时重设R1,用于检测闹铃播放与否 MOV53H,#03H ;重设闹铃次数 LCALLKEYR ;闹铃时间调整按键检测 JZSETR MOVA,R6 JBACC.2,SETRH JBACC.3,SETRM JBACC.5,KEYGO ;第二次按为确认离开SETRH: MOVA,31H ;闹钟时加1 ADDA,#01H DAA ;十进制调整 MOV31H,A CJNEA,#24H,RHD ;判断是否到24,不到继续 MOV31H,#00H ;到24时则清零RHD: LJMPSETR SETRM: MOVA,30H ;闹钟分加1 ADDA,#01H DAA ;十进制调整 MOV30H,A CJNEA,#60H,RMD ;判断是否到1小时,不到继续 MOV30H,#00H ;到1小时则清零RMD: LJMPSETR;/闹钟设置显示子程序/DISPR: MOVA,30H ANLA,#0FH ;屏蔽高四位 MOV3AH,A ;保留低位送3AH MOVA,30H ANLA,#0F0H ;屏蔽低四位 SWAPA ;高四位与第四位交换 MOV3BH,A ;将保留的高4位送3BH MOVA,31H ANLA,#0FHMOV3CH,A ;低位 MOVA,31H ANLA,#0F0H SWAPA MOV3DH,A ;高位LEDR1: SETBP2.3 MOVA,3DHMOVDPTR,#TABMOVCA,@A+DPTR CLRP2.0 MOVP0,A LCALLDELAYLEDR2: SETBP2.0MOVA,3CHMOVDPTR,#TABMOVCA,@A+DPTR CLRP2.1 MOVP0,A LCALLDELAYLEDR3: SETBP2.1MOVA,3BHMOVDPTR,#TABMOVCA,@A+DPTR CLRP2.2 MOVP0,A LCALLDELAYLEDR4: SETBP2.2MOVA,3AHMOVDPTR,#TABMOVCA,@A+DPTR CLRP2.3 MOVP0,A LCALLDELAY RET;/延时子程序/DELAY: MOVR5,#2D1: MOVR4,#250D2: DJNZR4,D2 DJNZR5,D1 RET;/闹铃检测程序/RING: MOVA,23H ;比较时 CJNEA,31H,RETR MOVA,22H ;比较分 CJNEA,30H,RETR LCALLSINGRETR: RET;/定时器T1中断子程序/INTT1: PUSHPSW ;状态字入栈保护 PUSHACC ;累加器入栈保护 INC50H ;中断服务程序,中断计数器加1 MOVTH1,#0D8H ;装入计数初值,12M晶振,形成10MS中断 MOVTL1,#0F0H POPACC POPPSW RETI;/响铃子程序/SING: CJNER1,#01H,SING1 ;判断是否已经闹铃过一次 LJMPRETSSING1: SETBET1 MOV50H,#00H ;中断计数器清0 MOV51H,#00H ;音符指针 MOV52H,#00H ;节拍码指针 MOV53H,#03H ;设置闹钟不退出响铃次数GETNOT: MOVA,51H MOVDPTR,#NOTE ;表头地址送DPTR MOVCA,@A+DPTR ;查表取音符码 JZENDP ;是00H,则结束 MOVR6,A ;存R6 INC51H CJNEA,#0FFH,GETMET ;不为0FFH,转取节拍码 LJMPPAUSE ;转休止播放 LJMPGETNOT ;取音符码GETMET: MOVA,52H MOVDPTR,#METRE ;取节拍码首地址 MOVCA,@A+DPTR ;取节拍代码送R7 MOVR7,A INC52HPLAY: SETBTR1 ;启动计数 CPLP2.4 LCALLKEY JNZRETS MOVA,R6 MOVR3,A ;音符码存R3 LCALLDELAY1 MOVA,R7 ;取节拍码放A与中断计数比较CJNEA,50H,PLAY ;中断计数器(50H)=R7否,不等继续循环MOV50H,#00H ;等于,则取下一代码 LCALLDISPT CLRTR1 LJMPGETNOTRETS: SETBP2.4 ;置位蜂鸣器,否则可能产生啸叫 MOVR1,#01H ;表明播放过一次 CLRA ;清除A,防止进入按键处理子程序 LJMPRETR PAUSE: CLRTR1 ;休止100毫秒 MOVR2,#0DHDELAY2:MOVR3,#0FFH LCALLDELAY1 DJNZR2,DELAY2 RETENDP: SETBP2.4 MOVR2,#0C7H ;歌曲结束,延时1秒后继续END1M:MOVR3,#00H LCALLDELAY1 DJNZR2,END1M DJN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026广东深圳南山二外(集团)学府中学招聘初中教师备考题库及完整答案详解1套
- 2026浙江台州海关综合技术服务中心招聘编制外工作人员1人备考题库附答案详解(研优卷)
- 2026安徽黄山市黄山区招引急需紧缺教育储备人才12人备考题库含答案详解(培优a卷)
- 2026湖北黄石市人事考试院招聘1人备考题库含答案详解(考试直接用)
- 2026福建省省属艺术院团招聘工作人员21人备考题库及1套完整答案详解
- 2026北京纳米能源与系统研究所曹霞课题组招聘2人备考题库及答案详解(考点梳理)
- 2026陕西铜川市招聘国家公费师范毕业生及优师计划毕业生36人备考题库附答案详解(突破训练)
- 2026江苏无锡市惠山区教育局招聘教师41人备考题库附答案详解(考试直接用)
- 2026广东江门市中心医院博士后研究人员招聘备考题库含答案详解(黄金题型)
- 2026内蒙古呼和浩特市剑桥中学小学部教师招聘备考题库附答案详解(典型题)
- 北京市平谷区滨河街道网格员招聘32人笔试参考题库及答案解析
- 《食品安全监督管理》课件-实训四 食品安全事故调查处理
- 3.3+服务业的区位选择++第1课时课件2025-2026学年湘教版高中地理必修第二册
- 诊所医保制度管理制度
- 常用个人简历表格模板(10款)
- 集团公司财务管理制度(全套)
- GB/T 23549-2021丙环唑乳油
- GB/T 19530-2004油淬火-回火弹簧钢丝用热轧盘条
- 各类应急预案应急预案各种应急预案
- 政治学原理课件
- 主体工程施工小结
评论
0/150
提交评论