电子钟课程设计样本_第1页
电子钟课程设计样本_第2页
电子钟课程设计样本_第3页
电子钟课程设计样本_第4页
电子钟课程设计样本_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业设计任务书一题目电子钟二基本规定运用单片机内部定期器设计一种电子时钟,在LED上显示时、分、秒毕业设计报告写作规定一、封面二、内容提纲三、目录四、正文1、概述所作题目意义、本人所做工作及系统重要功能2、硬件电路设计及描述;3、软件设计流程及描述;4、源程序代码。五设计体会六、参照文献《单片微型计算机应用技术》徐仁贵机械工业出版社《单片机控制技术及应用》韩全立电子工业出版社自动打铃器械摘要文章简介了一种以8051单片机为核心片带有数码LED显示时.分.秒和以批示灯做标志按键校时自动打铃器。核心词单片机存储器数码管按键电铃一、绪论用单片机控制自动打铃器,充分发挥单片机体积小,价格便宜,功耗低可靠性好等特点。可用于学校作息,以便了广大师生。同步也可作为电子手表设计方案,两者在原理及实现功能上是同样效果,也可作为各种时钟控制电路报警装置使用,具备用途范畴广,原理简朴便于操作和维护长处总体上单片机设计方案在现实中应用非常广泛并且在现实生活中也比较容易实现设计实行二、总体设计方案1.设计思路运用单片机及定期器设计一种时钟,在每次秒加1计时过程中,都与规定期间作比较,如果相等就进行开关电铃,不等则返回。同步时时时间显示功能为咱们提供了以便2总体电路方框图三、设计原理分析1.校时模式按下K1(模式选取键),将模式选取为校时模式(模式批示灯黄灯亮),K2,K3,K4分别为时钟加1键,分钟加1键,秒钟加1键,K5无用。2.定期模式按下K1(模式选取键),将模式选取为定期模式(模式批示灯绿灯亮),K2为定期器组选取(本装置有24组定期器)键,K3,K4分别为定期器时钟加1键和定期器分钟加1键,K5为定期器状态选取键,每按K5一次,此组定期器状态变化一次,并将此组数据存入片内数据存储器中按下K1(模式选取键),将模式选取为工作模式(模式批示灯红灯亮),K2,K3,K4,K5无用。此模式为正常工作模式3自动打零器电路图四、程序某些1.程序分为五某些1.初始化程序,2.键值解决程序,3.中断程序,4.显示程序,5显示驱动程序2.某些寄存器及按键阐明28H:扫描指针寄存器20H--25H:显示缓存寄存器R6:时钟寄存器R5:分钟寄存器R4:秒钟寄存器K1:模式选取键K2:时加1(定期器组加1)键K3:分加1(定期器时加1)键K4:秒加1(定期器分加1)键K5:定期器状态变化既存储键3.程序流程图4总体软件流程图解释总体流程图定期器一方面设定一种时间,执行程序时及进入计时程序。通过加一比较程序与设定计时程序进行比较,如果不到计时时间执行中断返回指令。在此时如果校时键启动时可进行校时作用。而LED显示屏也通过8051控制程序实时传来数据进行显示工作。LED也是动态显示方式。5校时程序流程图一方面进入校时显示模式,此时K1如果有按下,校时程序即可执行。此时如果K2手工操作下被按下则计时加一,达到与想要成果一致即可停止K2操作,如果计时成果在当前时间之前则可始终按下直到到达24小时一种循环时候,然后再次按下达到想要计时成果。而24时也是校时循环终点。此时批示灯也有所变化。可以作为执行程序效果参照。而校分流程图也对整体软件流程产生影响,最后达届时间精准。小时和分钟实时显示是定期基本。6校分及显示流程图解释一方面进入校分模式时看K1与否按下,如果按键则K3与否有按键,如果有则分钟加一,如此便起到修改分钟作用,如果分钟修改到达60分钟则分钟所有清零,分钟计时重新开始。如果K1键没有按下,则小时和分钟数据进入显示缓存器,然后进入显示屏显示,此时看K1键与否还在断开状态,如果没有按下则时间还是显示而不做变化如果K1键按下则此时进入定期器进入工作状态,因而K1键是程序运营核心所在,在K1键进入工作状态同步修改小时和分钟及定期器工作程序才干进行7程序清单1.初始化程序:READEQU0;读RAMWRITEEQU2;写入RAMEWENEQU4;RAM写入使能EWDSEQU6;RAM写入禁止ADR46EQU21H;RAM地址显示显示启动定期器进入工作状态时分值送显示缓存区K1有按键吗?清分单元显示分值加1置校分标志K3有按键吗?K1有按键吗?是60分吗?THIGHEQU0F8HTLOWEQU5FHTIMENEQU30;打铃持续时间(30秒)CSBITP3.7;RAMCSCLKBITP3.6;RAMCLKDIBITP3.5;RAMDIDOBITP3.4;RAMDOORG0000H;主程序起始地址AJMPSTART;跳至主程序ORG000BH;TIMER0中断起始地址AJMPTIM0;跳至TIMER0中断子程序START:MOVSP,#60H;设立堆栈在60HMOV28H,#00;显示寄存器初值为00MOVR6,#12H;“时”寄存器值为12HMOVR5,#00H;“分”寄存器值为00HMOVR4,#00H;“秒”寄存器值为00H2.键值解决程序:LOOP:SETBP0.5;工作模式CLRP0.6CLRP0.7JBP0.0,N1;K1(模式选取键)按了?不是则跳至N1ACALLDELAY;消除抖动JNBP0.0,$;K1(模式选取键)放开了?ACALLDELAY;消除抖动AJMPSET;转到定期模式SETN1:MOV2FH,R6;将时钟数据载入2FH中MOV2EH,R5;将分钟数据载入2EH中MOVRAM,#00;把93C46地址置0SETBRS0;将工作寄存器组选取1区LOOP1:MOVA,#READ;读RAMACALLRAMMOVA,R3;取出定期器状态ANLA,#01HCJNEA,#01H,N2;定期器为关闭,则跳转至N2MOVA,R4;取出定期器分钟数据CJNEA,2FH,N2;定期器分钟数据与时钟分钟不同则转至N2MOVA,R5;取出定期器时钟数据CJNEA,2EH,N2;定期器时钟数据与时钟时钟不同则转至N2MOVTMOD,#01H;MOVTH0,#THIGH;MOVTL0,#TLOWH;SETBTR0SETBP2.1;定期器时间到,打铃MOVR7,#9678H;中断查询7500次让时间达到30秒SJMP$TISE:DJNER7CPLP2.1终结打铃MOVA,RAM;将RAM地址载入A中N2:CJNEA,#1EH,N3;到定期器数据表表尾?没到转至N3MOVADR46,#00;到表尾,置RAM地址为表头AJMPLOOP1;转至LOOP1N3:INCRAM;RAM地址加2INCRAMAJMPLOOP1;转至LOOP1SET:CLRP0.5;校时模式SETBp0.6高电平CLRP0.7低电平LOOPS:JBP0.0,N11;K1(模式选取键)按了?不是则跳至N11ACALLDELAY;消除抖动JNBP0.0,$;K1(模式选取键)放开了?ACALLDELAY;消除抖动AJMPSETTIME;转至SETTIMEN11:JBP0.1,N13;K2(时钟加1键)按了?不是则跳至N13ACALLDELAY;消除抖动MOVA,R6;将时寄存器值载入AADDA,#01H;A内容加1DAA;做十进制调节MOVR6,A;将A值存入时寄存器CJNEA,#24H,N12;与否超过24时?不是则跳至N12MOVR6,#00H;是则清除时寄存器值为00N12:JNBP0.1,$;K2(时钟加1键)放开了?ACALLDELAY;消除抖动N13:JBP0.2,N15;K3(分钟加1键)按了?不是则跳至N15ACALLDELAY;消除抖动MOVA,R5;将分寄存器值载入AADDA,#01;A内容加1DAA;做十进制调节MOVR5,A;将A值存入分寄存器CJNEA,#60H,N14;与否超过60分?不是则跳至N14MOVR5,#00H;是则清除分寄存器值为00N14:JNBP0.2,$;K3(分钟加1键)放开了?ACALLDELAY;消除抖动N15:JBP0.3,N17;K4(秒钟加1键)按了?不是则跳至N17ACALLDELAY;消除抖动MOVA,R4;将秒寄存器值载入AADDA,#01;A内容加1DAA;做十进制调节MOVR4,A;将A值存入秒寄存器CJNEA,#60H,N16;与否超过60秒?不是则跳至N16MOVR4,#00;是则清除分寄存器值为00N16:JNBP0.3,$;K4(秒钟加1键)放开了?ACALLDELAY;消除抖动N17:AJMPLOOPS;转至LOOPSSETTIME:CLRP0.5;定期模式CLRP0.6SETBP0.7MOVRAM,#00HMOVA,#READ;将数据存储器地址为RAM中数据ACALLTORAMLOOPB:ACALLDISP;调用DISPJBP0.0,N21;K1(模式选取键)按了?不是则跳至N21ACALLDELAY;消除抖动JNBP0.0,$;K1(模式选取键)放开了?ACALLDELAY;消除抖动AJMPLOOP;转至LOOPN21:JBP0.1,N22;K2(定期器组加1键)按了?不是则跳至N22ACALLDELAY;消除抖动MOVA,RAM;将地址载入ACLRC;清除进位位RRCA;A右移1位ADDA,#01H;地址加1MOVR6,A;将A存入R6CLRC;清除进位位RLCA;A左移1位MOVRAM,A;将A中地址存入RAMMOVA,#READ;读RAM地址为ADR46中数据ACALLTORAMJNBP0.1,$;K2(定期器组加1键)放开了?ACALLDELAY;消除抖动N22:JBP0.2,N24;K3(定期器分钟加1键)按了?不是则跳至N24ACALLDELAY;消除抖动MOVA,R4;将定期器分寄存器值载入AADDA,#01;A内容加1DAA;做十进制调节MOVR4,A;将A值存入定期器分寄存器CJNEA,#60H,N23;与否超过60分?不是则跳至N16MOVR4,#00H;是则清除分寄存器值为00N23:JNBP0.2,$;K3(定期器分钟加1键)放开了?ACALLDELAY;消除抖动N24:JBP0.3,N26;K4(定期器时钟加1键)按了?不是则跳至N26ACALLDELAY;消除抖动MOVA,R5;将定期器时寄存器值载入AADDA,#01H;A内容加1DAA;做十进制调节MOVR5,A;将A值存入定期器时寄存器CJNEA,#24H,N25;与否超过24时?不是则跳至N25MOVR5,#00;是则清除分寄存器值为00N25:JNBP0.3,$;K4(定期器时钟加1键)放开了?ACALLDELAY;消除抖动N26:JBP0.4,N27;K5(变化定期器状态存储键)按了?不是则跳至N27ACALLDELAY;消除抖动INCR3;变化R3最低位值(表达定期器状态,1表达开,0表达关)MOVA,#WRITE;将A值写入RAM地址为ADR46中ACALLTORAMJNBP0.4,$;K5(变化定期器状态存储键)放开了?ACALLDELAY;消除抖动N27:AJMPLOOPB;转至LOOPB3.中断程序:TIM0:MOVTH0,#THIGH;重设计时4000微秒MOVTL0,#TLOWPUSHACC;将A值存入堆栈PUSHPSW;将PSW值存入堆栈CLRRS0;设立工作寄存器为0区DJNZR2,X2;计时1秒MOVR2,#250ACALLCLOCK;调用计时子程序CLOCKACALLDISP;调用显示子程序X2:ACALLSCAN;调用扫描子程序POPPSWPOPACCRETI4.显示屏驱动程序:SCAN:MOVR0,#28H;(28H)为扫描指针INC@R0;扫描指针加1CJNE@R0,#6,X3;扫描完6个显示屏?不是跳至X3MOV@R0,#00;是则扫描指针为0X3:MOVA,@R0;扫描指针载入AADDA,#20;A加常数20H(显示寄存器地址)=各时间显示区地址;存入R1=各时间显示地址MOVR1,A;扫描指针存入AMOVA,@R0;将A高低4位互换(P1高4位为扫描值,SWAPA;低4位为显示数据值)ORLA,@R1;扫描值+显示值MOVR1,A;输出至P1RET计时程序:CLOCK:MOVA,R4;R4为秒寄存器ADDA,#01;加1DAA;做十进制调节MOVR4,A;存入秒寄存器CJNEA,#TIMEN,X4;与否超过打零持续时间?不是则跳至X4CLRP2.0;关铃X4:CJNEA,#60H,X5;与否超过60秒?不是则跳至X5MOVR4,#00;是则清除为0MOVA,R5;R5为分寄存器ADDA,#01;加1DAA;做十进制调节MOVR5,A;存入分寄存器CJNEA,#60H,X5;与否超过60分?不是则跳至X5MOVR5,#00;是则清除为0MOVA,R6;R6为时寄存器ADDA,#01;加1DAA;做十进制调节MOVR6,A;存入时寄存器CJNEA,#60H,X5;与否超过24时?不是则跳至X5MOVR6,#00;是则清除为0X5:RET5.显示程序:DISP:MOVR1,#20;(20H)为显示寄存器,R1=20HMOVA,R6;将时寄存器内容存入AMOVB,#01H;设B累加器值为10HDIVAB;A/B,商(十位数)存入A,余数(个位数)存入BMOV@R1,B;将B内容存入(20H)INCR1;R1=21HMOV@R1,A;将A内容存入(21H)INCR1;R1=22HMOVA,R5;将分寄存器内容存入AMOVB,#01H;设B累加器值为10HDIVAB;A/B,商(十位数)存入A,余数(个位数)存入BMOV@R1,B;将B内容存入(22H)INCR1;R1=23HMOV@R1,A;将A内容存入(23H)INCR1;R1=24HMOVA,R4;将秒寄存器内容存入AMOVB,#01H;设B累加器值为10HDIVAB;A/B,商(十位数)存入A,余数(个位数)存入BMOV@R1,B;将B内容存入(24H)INCR1;R1=25HMOV@R1,A;将A内容存入(25H)RETEND五、总结阐明与体会通过近一种月努力,在教师和同窗协助下,我基本上完毕了设计任务.通过这次毕业设计,我充分结识到了自学重要性,以及学以致用道理.我在图书馆查阅了大量资料,同步也结识到了图书馆重要作用.通过两个星期设计我又一次回顾了我在大学所有知识同步也让我结识到自身局限性,同步通过单片机毕业设计我结识到现实中产品开发中思路同步也加强了自己自学能力,无论是单片机程序还是电路图还是排版编辑都对自己综合能力提高有所协助。同步也深刻结识到单片机在现实生活中巨大作用,同步也提示自己要在现实生活中具备创新意识,能从落后事物中运用自己所学专业知识以创新精神和团队合伙意识开发新产品,这个我觉得才是毕业设计给咱们最大收获。同步在这次设计中由于本人水平有限,开发程序及整体电路都过于繁琐,同步也也许浮现许多错误,敬请教师能给出指正意见。最后感谢教师同窗给我莫大协助,也感谢我母校三年来对我辛勤栽培,谢谢!参照文献[1]李朝青.单片机原理及接口技术(修订版).北京:北京航空航天大学出版社,1998[2]李广弟.单片机基本.北京:北京航空航天大学出版社,1992[3]何立民.单片机应用技术大全.北京:北京航空航天大学出版社,1994[4]张毅刚.单片机原理及接口技术.哈尔滨:哈尔滨工业大学出版社,1990[5]谭浩强.单片机课程设计.北京:清华大学出版社,1989|6|韩全立,赵德申,微机控制技术及应用、北京:机械工业出版社,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论