单片机数字时钟课程设计报告.docx_第1页
单片机数字时钟课程设计报告.docx_第2页
单片机数字时钟课程设计报告.docx_第3页
单片机数字时钟课程设计报告.docx_第4页
单片机数字时钟课程设计报告.docx_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

单 片 机 应 用 综 合 设 计 报 告设 计 题 目: 学 院 名 称: 专 业: 班 级: 姓 名: 指 导 教 师: 日 期: 2015.12.282015.12.31一、任务书1. 用80C51设计一个数字时钟。2. 可显示时、分、秒。3. 按键实现时、分、秒人工校准。 4. 具有闹钟功能。5. 实现秒表/时钟转换,秒表要求精确到10ms。二、总体方案用80C51设计一个数字时钟。该数字钟能显示时、分、秒,并具有闹钟、秒表功能。由四个按键控制,功能分别为启动、调时,调闹、止闹、退出调时,切换秒表时钟,加一,减一、暂停。另外两个按键为电源控制键,复位键。该电子钟上电或按键复位后能自动显示系统提示符“P.”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行,进入时钟运行状态;再次按电子钟启动/调整键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整键再次进入时钟运行状态。用两个四位一体共阴数码管作时间显示:能显示时、分、秒。用一个+5V有源蜂鸣器做闹钟声报警功能,并用四个按键做时间和闹钟调整的数字钟。利用定时/计数器、中断系统来实现时钟计数。用定时器1实现时钟计时,定时器0实现秒表计时。把定时器0和定时器1都设为工作方式1,定时时间为1.25ms和125ms,则计数溢出8次即得时钟、秒表计时最小单位(10毫秒/秒)。晶振频率f=6MHz。X1=216-125*103/2=0BDCH。X2=216-1.25*103/2=0FEFFH。采用中断方式进行溢出次数累计,计满8次。从秒到分和从分到时的计时是通过累加和数值比较实现。三、硬件设计(1) 单片机最小系统单片机最小系统由单片机,时钟电路,复位电路组成。其中由6MHz晶振构成的振荡电路,并通过使复位端经电阻与Vcc电源接通而实现的按键电平复位电路。(2) 电源系统 以+5V直流稳压电源作为电源供应系统。(3) 输入系统由四个调整键组成独立式键盘,分别具有为启动、调时、退出调闹,调闹、止闹、退出调时,秒表切换,加一,减一、暂停功能。(4) 输出系统由两个四位一体的共阴数码管,并以74LS244做驱动电路构成显示输出,由NPN三极管以及一个蜂鸣器构成闹铃。四、软件设计4.1 单片机资源使用情况 (1) 时钟与秒表的时分秒在片内RAM存储地址如表3.1所示。表3.1 时钟存储地址名称时分秒十 位7AH 78H 76H个 位79H 77H 75H 表3.4 秒表存储地址名称时分秒十 位66H 64H 62H个 位65H 63H 61H (2) 电子钟的时钟时间在八位数码管上进行显示,因此,在片内RAM中设置显示缓冲区共8个单元。 LED7 LED6 LED5 LED4 LED3 LED2 LED1 LED0 74H 73H 72H 71H 70H 6FH 6EH 6DH显示缓冲区从左至右依次存时、-、分、-、秒的数值。(3) 闹钟的时分秒在片内RAM存储地址如表3.2所示。表3.2 闹钟标志位存储地址表名称时分秒十 位6CH 6AH68H个 位6BH 69H 67H(4) P0口作为数据显示输出、P1.4作为闹铃输出,P1.0-P1.3接按键输入,20H.0-20H.3作为P1.0-P1.3的位标志存储地址。(5) 运用了定时器1作为1秒计时所用,定时器0作为10ms计时所用。4.2 软件系统程序流程框图主程序流程框图如图3.1所示。图3.1 主程序流程框图(2) 1秒计时子程序流程框图如图3.2所示。 图3.2 1秒计时流程框图图3.3 键监控程序流程框图 (3) 键监控子程序流程框图如图3.3所示,它还包含了键扫描和P1口处理子程序,它们的程序流程框图分别为图3.4和3.5。图3.5 P1口处理子程序流程框图图3.4 键扫描子程序流程框图4.3 源程序清单LJMPMAINORG 000BHLJMP INTT0ORG001BHLJMPINTT1;-;-主程序-;-MAIN:LCALLBEGIN ;上电显示“PP” MOVSP,#30HMOVR0,#7AH ;清7AH-67H单元MOVR1,#14HLCALLCLR0MOV20H,#00HMOV6CH,#01HMOV6BH,#02HMOV7BH,#0CH;熄灭符MOVTMOD,#11H;定时器0、1的工作方式为1MOVTH1,#0BH;125msMOVTL1,#0DCHMOV TH0, #0FEHMOV TL0, #0FFH;1.25msMOVR7,#08H;125ms*8=1s,1.25ms*8=10msSETBEASETBET1SETBTR1LOOP:LCALLDIR;调显示子程序LCALLCLOCK;查闹钟LCALLKEYCJB20H.0,KEYAA ;若A键按下跳转,调时JB20H.1,KEYCC ;若B键按下跳转,调闹JB 20H.2, KEYEE ;若C键按下跳转,切换秒表JB20H.3,KEYDD ;若D键按下跳转,暂停LJMPLOOP;-秒表显示程序-KEYEE: CLR ET1 CLR TR1SETB ET0SETB TR0MBLOOP: LCALL DIRS LCALL DIRSLCALL KEYCSJB 20H.2, OUTSETSJB 20H.3, MBZ LJMP MBLOOPOUTSETS:CLR ET0 CLR TR0SETB ET1SETB TR1LJMP LOOPMBZ: CLR ET0 CLR TR0MBZLOOP:LCALL KEYCS JB 20H.3, OUTMBZJB 20H.2, OUTSETSLJMP MBZLOOPOUTMBZ: SETB ET0 SETB TR0LJMP MBLOOP;-;-闹钟调整程序-;-KEYCC:CLRET1LCALLSETCHSETBET1LJMPLOOP;-;-暂停-;-KEYDD:CLRET1CLRTR1LOOPSP:LCALLKEYC ;键扫描JB20H.3,OUTSP ;D键按下,暂停取消,继续走LJMPLOOPSPOUTSP:SETBTR1SETBET1LJMPLOOP;-;-时钟调整程序-;-KEYAA:CLRTR1CLRET1LJMPSETHHOUTSET:SETBET1SETBTR1LJMPLOOP;-时位调整-;-SETHH:MOVR5,#0FFHLOOPH0:MOVR0,#79HMOVR1,#7AHLCALLRDIRH ;输出LCALLDIR ;显示LCALLDIRLCALLKEYC ;键扫描JNB20H.0,H1LJMPSETMM ;A键按下,调分H1:JNB20H.1,H2 LJMPOUTSET ;B键按下,退出调时H2:JNB20H.2,H3LJMPADDH1 ;C键按下,加 1H3:JNB20H.3,H4LJMPSUBH1 ;D键按下,减1H4:DJNZR5,LOOPH0 ;无键按下,循环,返回LJMPOUTSET;-时加减一-ADDH1:MOVR0,#79H;加一LCALLADD1LJMPSETHSUBH1:MOVR0,#79H;减一LCALLSUBBH1LJMPSETHSETH:MOVR0,#79HMOVR1,#7AHLCALLRDIRHCJNER3,#24H,SETHHMOV79H,#00HMOV7AH,#00HLJMPSETHH;=分位调整=SETMM:MOVR5,#0FFHLOOPM0:MOVR0,#77HMOVR1,#78HLCALLRDIRMLCALLDIRLCALLDIRLCALLKEYCJNB20H.0,M1LJMPSETSS ;A键按下,调秒M1:JNB20H.1,M2LJMPOUTSETM2:JNB20H.2,M3LJMPADDM1M3:JNB20H.3,M4LJMPSUBBMM4:DJNZR5,LOOPM0LJMPOUTSET;-分加减一-ADDM1:MOVR0,#77H;加一 LCALLADD1LJMPSETMSUBBM:MOVR0,#77H;减一LCALLSUBBMSLJMPSETMSETM:MOVR0,#77HMOVR1,#78HLCALLRDIRMCJNER3,#60H,SETMMMOV77H,#00HMOV78H,#00HLJMPSETMM;=秒位调整=SETSS:MOVR5,#0FFHLOOPS0:MOVR0,#75HMOVR1,#76HLCALLRDIRSLCALLDIRLCALLDIRLCALLKEYCJNB20H.0,S1LJMPSETHHS1:JNB20H.1,S2LJMPOUTSETS2:JNB20H.2,S3LJMPADDS1S3:JNB20H.3,S4LJMPSUBBSS4:DJNZR5,LOOPS0LJMPOUTSET;-秒加减一-ADDS1:MOVR0,#75H;加一LCALLADD1LJMPSETSSUBBS:MOVR0,#75H;减一LCALLSUBBMSLJMPSETSSETS:MOVR0,#75HMOVR1,#76HLCALLRDIRSCJNER3,#60H,SETSSMOV75H,#00HMOV76H,#00HLJMPSETSS;-;=闹钟调整子程序=;-;=时位调整=SETCHH:MOVR5,#0FFHLOOPCH0:MOVR0,#6BHMOVR1,#6CHLCALLRDIRHLCALLDIRLCALLKEYCJNB20H.0,CH0LJMPOUTSC ;结束子程序CH0:JNB20H.1,CH1LJMPSETCM ;B键按下,调分CH1:JNB20H.2,CH2LJMPADDCH1CH2:JNB20H.3,CH3LJMPSUBCH1CH3:DJNZR5,LOOPCH0LJMPOUTSC;-时加减一-ADDCH1:MOVR0,#6BH;加一LCALLADD1LJMPSETCHSUBCH1:MOVR0,#6BH;减一LCALLSUBBH1LJMPSETCHSETCH:MOVR0,#6BHMOVR1,#6CHLCALLRDIRHCJNER3,#24H,SETCHHMOV6CH,#00HMOV6BH,#00HMOVR0,#6BHMOVR1,#6CHLCALLRDIRHLJMPSETCHH;=分位调整=SETCMM:MOVR5,#0FFHLOOPCM0:MOVR0,#69HMOVR1,#6AHLCALLRDIRMLCALLDIRLCALLKEYCJNB20H.0,CM0LJMPOUTSCCM0:JNB20H.1,CM1LJMPSETCHCM1:JNB20H.2,CM2LJMPADDCM1CM2:JNB20H.3,CM3LJMPSUBCM1CM3:DJNZR5,LOOPCM0LJMPOUTSC;-分加减一-ADDCM1:MOVR0,#69H;加一 LCALLADD1LJMPSETCMSUBCM1:MOVR0,#69H;减一LCALLSUBBMSLJMPSETCMSETCM:MOVR0,#69HMOVR1,#6AHLCALLRDIRMCJNER3,#60H,SETCMMMOV6AH,#00HMOV69H,#00HMOVR0,#69HMOVR1,#6AHLCALLRDIRMLJMPSETCMMOUTSC:RET;-;=调整显示装载子程序=;-RDIRH:MOV6DH,7BHMOV6EH,7BHMOV6FH,7BHMOV70H,7BHMOV71H,7BHMOV72H,7BHMOV73H,R0MOV74H,R1RETRDIRM:MOV6DH,7BHMOV6EH,7BHMOV6FH,7BHMOV70H,R0MOV71H,R1MOV72H,7BHMOV73H,7BHMOV74H,7BHRETRDIRS:MOV6DH,R0MOV6EH,R1MOV6FH,7BHMOV70H,7BHMOV71H,7BHMOV72H,7BHMOV73H,7BHMOV74H,7BHRET;-;=键扫描子程序=;-KEYC:LCALLKEYDEAL;键扫描子程序LCALLDIRLCALLDIRLCALLKEYDEAL ;再次确认键有无按下,去抖动JZEXITMOVB,20HKEYSF:LCALLKEYDEALJZKEY1LCALLDIRLJMPKEYSF ;当键按下弹起后保存键值,返回KEY1:MOV20H,BEXIT:RET;-秒表键扫描子程序-KEYCS:LCALLKEYDEAL;键扫描子程序LCALLDIRSLCALLDIRSLCALLKEYDEALJZEXITSMOVB,20HKEYSFS:LCALLKEYDEALJZKEY1SLCALLDIRSLJMPKEYSFSKEY1S:MOV20H,BEXITS:RET;-P1口处理子程序-KEYDEAL:PUSHPSW;P1口处理子程序MOVA,P1CPLAANLA,#0FHMOV20H,APOPPSWRET;-;=1S计时程序=;-INTT1:PUSHPSWPUSHACCCLRET1CLRTR1MOVTH1,#0BHMOVTL1,#0DCHSETBTR1DJNZR7,OUTT0ADDSS:MOVR7,#08HMOVR0,#75HLCALLADD1CLRCCJNER3,#60H,ADDMMADDMM:JCOUTT1MOV75H,#00HMOV76H,#00HMOVR0,#77HLCALLADD1CLRCCJNER3,#60H,ADDHHADDHH:JCOUTT0MOV77H,#00HMOV78H,#00HMOVR0,#79HLCALLADD1CLRCCJNER3,#24H,HOURHOUR:JCOUTT0MOVR0,#75HMOVR1,#06HLCALLCLR0OUTT0:MOV6FH,#0CH;熄灭符MOV72H,#0CHLJMPOUTT2OUTT1:MOV6FH,#0BH;-MOV72H,#0BH;-OUTT2:MOV6DH,75H;秒个位MOV6EH,76H;十位MOV70H,77H;分个位MOV71H,78H;十位MOV73H,79H;时个位MOV74H,7AH;十位SETBET1POPACCPOPPSWRETI;-10ms计时程序-INTT0:PUSHPSWPUSHACCCLRET0CLRTR0MOVTH0,#0FEHMOVTL0,#0FFHSETBTR0DJNZR7,OUTTT0ADDSSS:MOVR7,#08HMOVR0,#61HLCALLADD1CLRCCJNER3,#99H,ADDMMSADDMMS:JCOUTTT1MOV61H,#00HMOV62H,#00HMOVR0,#63HLCALLADD1CLRCCJNER3,#60H,ADDHHSADDHHS:JCOUTTT0MOV63H,#00HMOV64H,#00HMOVR0,#65HLCALLADD1CLRCCJNER3,#60H,HOURSHOURS:JCOUTTT0MOVR0,#61HMOVR1,#06HLCALLCLR0OUTTT0:MOV6FH,#0CH;熄灭符MOV72H,#0CHLJMPOUTTT2OUTTT1:MOV6FH,#0BH;-MOV72H,#0BH;-OUTTT2:MOV6DH,61H;秒个位MOV6EH,62H;十位MOV70H,63H;分个位MOV71H,64H;十位MOV73H,65H;时个位MOV74H,66H;十位SETBET0POPACCPOPPSWRETI;-;=加1子程序 入口R0,出口R0,R3=;-ADD1:MOVA,R0INCR0SWAPAORLA,R0SWAPAADDA,#01HDAAMOVR3,AANLA,#0F0HSWAPAMOVR0,ADECR0MOVA,R3ANLA,#0FHMOVR0,ARET;-;=时减一子程序 入口R0,出口R0,R3=;-SUBBH1:MOV A,R0 INC R0 SWAP A ORL A,R0SWAPA JZ OUTS0 DEC AMOVR3,AANLA,#0FHCLRCSUBBA,#0AHJCSBCLSGDECR0MOVR0,#09HMOVA,R3ANLA,#0F0HSWAPAINCR0MOVR0,ARETSBCLSG:MOVA,R3ANLA,#0F0HSWAPAMOVR0,AMOVA,R3ANLA,#0FHDECR0MOVR0,ARET OUTS0: MOVR0,#02HDECR0MOVR0,#03HMOVR3,#23HRET;-;=分秒减一子程序 入口R0,出口R0,R3=;-SUBBMS:MOV A,R0 INC R0 SWAP A ORL A,R0SWAPA JZ OUTS1 DEC AMOVR3,AANLA,#0FHCLRCSUBBA,#0AHJCSBCLGDECR0MOVR0,#09HMOVA,R3ANLA,#0F0HSWAPAINCR0MOVR0,ARETSBCLG:MOVA,R3ANLA,#0F0HSWAPAMOVR0,AMOVA,R3ANLA,#0FHDECR0MOVR0,ARET OUTS1: MOVR0,#05HDECR0MOVR0,#09HMOVR3,#59HRET;-;=清零子程序 入口R0,R1 =;-CLR0: MOVR0,#00HDECR0DJNZR1,CLR0RET;-;=闹铃子程序=;-CLOCK:PUSHACCPUSHPSWMOVA,6CHCJNEA,7AH,OUTCLK ;查时十位MOVA,6BHCJNEA,79H,OUTCLKMOVA,6AHCJNEA,78H,OUTCLKMOVA,69HCJNEA,77H,OUTCLKMOVA,68HCJNEA,76H,OUTCLKMOVA,67HCJNEA,75H,OUTCLKCLRP1.4LCALLDL60SOUTCLK:SETBP1.4POPPSWPOPACCRET;-;=显示子程序=;-DIR:PUSHPSWPUSHACCMOVDPTR,#TABLE;7476D时到秒、十到个MOVR0,74HCJNER0,#00H,MIELMOV74H,#0CHMIEL:MOVR0,#74HMOVR1,#01HLOOPR:MOVA,R1CPLAMOVP2,A ;送扫描字MOVA,R0MOVCA,A+DPTR ;查表MOVP0,ALCALLDL1MSMOVA,R1JBACC.7,OUTDRLAMOVR1,ADECR0

温馨提示

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

评论

0/150

提交评论