单片机课程设计-电子时钟2968502658_第1页
单片机课程设计-电子时钟2968502658_第2页
单片机课程设计-电子时钟2968502658_第3页
单片机课程设计-电子时钟2968502658_第4页
单片机课程设计-电子时钟2968502658_第5页
免费预览已结束,剩余22页可下载查看

下载本文档

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

文档简介

1、单片机实训单片机课程设计定时闹铃系别: 电子通信工程系专业:应用电子技术班级:嵌入式091 班姓名:黄文钦学号:2009080202338实训地点:实训时间: 2011 年 1 月 10 日至 1 月 14 日1 .概述1.1 系统的作用本系统是利用STC89C52I片机结合6个七段显示器以24时制”时时分分 秒秒”格式显示时间的电子定时闹铃,系统可以设置2组定时闹铃;当定时闹铃时,该电子时钟通过蜂口$器发出嘀嘀嘀嘀响声;本系统还具有整点报时功能,当现在时间为整点报时。还有秒表功能,由于该电子定时闹铃有强大功能可以 在多种场合下使用,利用七段显示器发光也可以在夜晚和黑暗场合下使用。1.2 系统

2、的功能要求(1)使用6位七段显示器显示24时制时间。(2)时间显示格式为“时时分分秒秒”。(3)定时闹铃功能。(4)整点报时功能:当现在时间为整点时响铃。(5)定时闹铃和现在时间模式可以互相切换而不影响各自功能。(6)具有4个按键来进行功能设置, 可以设置当前时间、闹铃的时间设置 和秒表开关设置。(7)具有秒表计时功能(8)调时区域闪烁(9)通过复位按键可以重启系统。1.1 统的硬件设计1.2 系统的电路原理(1)系统以STC89C52I片机为本电路的核心元件,通过单片机的P0.0P0.7引脚和A102J排阻加上拉电压来驱动七段显示器段显示数字。(2)通过单片机的P2.2P2.7引脚连接A10

3、3J排阻拉升电压信号,控制 共阴极七段显示器连通接地来循环点亮6位七段显示器。(3)在七段显示器供电的同时由P0脚驱动显示不同数字。根据人眼的视觉暂留特点,调整延迟时间使所观察到时间数字是稳定的数字。(4)系统使用了 YXDZft鸣器,通过单片机P3.0引脚连接8550PNP三极管 推动发声。(5)电路通过4个按键连接单片机P1.0P1.3引脚低电平控制系统功能 设置。(6)单片机的复位电路,采用传统上电复位,通过Reset按键控制(7)系统通过一个发光二极管指示电路供电是或正常。1.3 电原理图ZLa£2£x'gikLT江LK -;常皿器上 J J I LM;FI

4、 + T55 量E1i宜。*q fcL-ML KjCl恒 芦diF 加上曲 匕叫_ 配或ML *丁疝-?' i'V 411M WxlO V!A!4 £U! 7 曰 i il tII/ v InFHn*11n3-jccm o xd工讣工1KIWI,1X12HKUX pi i-Mja H t wt h,m H向吃Q. manr玷工E人加Fl 和 1:PsHTniAiEX心Fl:HJFl3Fl /由LHMiPITP3;'ttTElP3*.'WP2g产E l.'jfi?P3 JUI.PUkl:PS 'KDVPKMJJF”, JUtRW*叵 JC

5、EB mT 叵 Wfi 市 庐+5图1控制电路1.4 各控制按钮控制功能说明系统接通电源后指示灯LED亮,程序执行后工作,蜂鸣器发出两声响声, 七段显示器显示“ 00 00 00”,表示程序开始执行,然后显示现在时间,按下操 作键K1K4动作如下:(1)按操作键K1,进入“设置现在时间”模式后,操作键功能如下:? 操作键K1:当前区域加1。? 操作键K2:当前区域减1。? 操作键K3:分、时区域切换。? 操作键K4:设置完成,退出。(2)按操作键K2,进入“显示、设置闹铃时间”模式后,操作键功能如下:? 操作键K1:当前闹铃区域加1。? 操作键K2:当前闹车区域减1。? 操作键K3:分、时区域

6、切换? 操作键K4:第一次进入第二组,第二次为退出。(3)按操作键K3:进入“秒表”模式后,操作键功能如下:? 操作键K1:启动秒表。? 操作键K2:停止秒表。? 操作键K3:清零。? 操作键K4:退出。(4)按操作键K4:在响铃时关闭闹钟自动退出,不是响铃则进入“ 设置 闹铃的开关”模式后,操作键功能如下:? 操作键K1:启动当前闹铃。? 操作键K2:停止当前闹铃。? 操作键K3:切换闹铃组。? 操作键K4:设置完成,退出。(5)按操作键Reset:复位键,系统重启。3.软件设计3.1资源分配表和程序流程图表一程序内存资源分配表内存地址变量名称作用说明20H存放50毫秒计时21H存放0.5秒

7、计时22HSECON存放1秒计时23HMIN存放1分计时24HHOUR存放1小时计时25H用于中断1 (#6H)26H用于显示中的闪烁27H.0闹钟标志位27H.i允许响铃27H.2用于标志分、秒(1为秒),闹钟功能时也一样27H.3闹钟总开关(1为开)27H.4用于闪烁标志表一程序内存资源分配表内存地址变量名称作用说明27H.5用于闪烁27H.6秒表标志27H.7两组闹钟的标志位,默认值为 028H-29H用于保存闪烁时的调时区地址30H-35H存放调时区地址36HDISP用于存放要显示的首字(例如秒)37H-39H第一组闹钟的时分40HSP栈底50H-52H秒表53H-55H第二组闹钟的时

8、分56H存放闹钟调分地址57H存放闹钟调时地址2AH.0闹钟组的切换标志(默认值为 0)2AH.1切换(默认值为0)2AH.2闹钟第二组开关(默认值为 0)表二 芯片端口资源分配表芯片端口变量名称作用说明P1.0K1操作键K1P1.1K2操作键K2P1.2K3操作键K3P1.3K4操作键K4P1.7SPK压电喇叭控制仔号P0七段显示器数数字形状控制表二 芯片端口资源分配表芯片端口变量名称作用说明P2.2控制时间小时的十位七段显示器亮火P2.3控制时间小时的个位七段显示器亮火P2.4控制时间分钟的十位七段显示器亮火P2.5控制时间分钟的个位七段显示器亮火P2.6控制时间秒钟的十位七段显示器亮火P

9、2.7控制时间秒钟的个位七段显示器亮火P3.0BELL蜂鸣器P3.1LED半秒闪烁P3.2LED显示第一组闹钟是否开启P3.3LED显示第二组闹钟是否开启表三寄存器资源分配表组寄存器作用说明第0组R0存放秒显不地址R1显示首址R2#06HR3#0FEHR4#3HR6、R7延时初始值弟1组R0用于keyB、CR5用于中断27图2主程序控制流程图Y是否按K1键?时间”模式 &y进入“设置闹铃的开关”模式V进入"设置现N在时间”模式匚二否按K2键匚二否按 K3 键?二Y进入“秒表N”模式否按K4键匚二计时中断程序开始累加器入栈重新载入计数初值、定时器计数10次21H加1半秒指示灯闪

10、中断程序T0中断程序T13.2源程序清单本系统程序清单如下:;8052 CLOCK WITH SEGX6 CLOCK + 2ALARM + TIMER + SW;时钟+2闹钟+响铃十秒表;89C52 ASM USE:Keil; 程序功能说明-;->K1:设置现在时间;->K1: 当前单元加1;->K2:当前单元减1;->K3: 切换单元区;->K4:OK;->K2:显示和设置闹铃时间,2个闹铃;->K1: 当前单元加1;->K2:当前单元减1;->K3: 切换单元区;->K4:切换闹铃组,第二次为 OK;->K3:设置秒表;-&

11、gt;K1: 秒表启动;->K2:秒表暂停;->K2: 秒表清零;->K4:OK;->K4:设置闹铃开关(当真正闹铃时停掉闹钟并退出);->K1:当前闹铃组开;->K2:当前闹铃组关;->K3: 切换闹组;->K4:OKKEY1 EQU P1.0 ;调时间调分再调时KEY2 EQU P1.1KEY3 EQU P1.2KEY4 EQU P1.3SECON EQU 22H时钟的秒MIN EQU 23HHOUR EQU 24HDISP EQU 36H ;显示的首地址存放BELL BIT P3.0ORG 0000HLJMP STARTORG 000BHL

12、JMP T0_INTORG 001BHLJMP T1_INTORG 0100HSTART: MOV 20H,#00HMOV 21H,#00HMOV 22H,#00HMOV 23H,#00HMOV 24H,#00HMOV 38H,#01HMOV 39H,#00HMOV 37H,#101MOV 53H,#102MOV 25H,#6H;0.5 秒计时;1秒计时;1分计时;1h计时闹钟分闹钟时第一组闹钟的首字节显示"-1"第二组闹铃的首字节显示"-2中断1,50ms*6=0.3s闪烁一次MOV TMOD,#11HMOV TL1,#0B0HMOV TH1,#3CHMOV T

13、L0,#0B0HMOV TH0,#3CHSETB ET0SETB ET1SETB EASETB TR0MOV SP,#40H.*主程序*MAIN: MOV DISP,#SECONLCALL DISPLAYLCALL KEYA LCALL KEYB LCALL KEYC LCALL KEYD SJMP MAIN/*数码管显示*/DISPLAYPUSH PSWMOV PSW,#08H;用第二组寄存器MOV R0,DISPMOV R1,#30HMOV R4,#03H;秒分时LOOP0: MOV A,R0MOV B,#10DIV ABMOV R1,BINC R1MOV R1,AINC R0INC R1

14、DJNZ R4,LOOP0DISKEY: MOV R1,#30H ;显示缓冲区首址MOV R2,#06HMOV R3,#0FEHCLR 27H.5MOV 29H,28HPLAY: MOV A,R1MOV DPTR,#TABLEMOVC A,A+DPTR.*闪烁用JNB 27H.4,WEN ;在调时时用作熄灭,1为开MOV 26H,AMOV A,R1CJNE A,29H,WEN1JB 27H.5,LPPC1INC 29HSETB 27H.5LPPC1: CLR ASJMP WENWEN1: MOV A,26H.*WEN: MOV P0,A MOV P2,R3INC R1 LCALL DELAY

15、MOV A,R3 RL A MOV R3,A DJNZ R2,PLAY POP PSWRETDELAY: MOV R6,#4D1: MOV R7,#250D0: DJNZ R7,D0DJNZ R6,D1RETTABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H/*中断T0处理*/T0_INT: MOV TL0,#0B0HMOV TH0,#3CHPUSH ACCINC 20HMOV A,20HCJNE A,#10,EXITJNB 27H.3,LQQ1SJMP LQQ2LQQ1: JNB 2AH.2,LP0LQQ2: JNB 27H.1,LP0

16、;闹铃检查 1 响CPL BELLDJNZ R5,LP0 ;响铃次数SETB BELLCLR 27H.1LP0: MOV 20H,#00HCPL P3.1;半秒led闪烁INC 21HMOV A,21HCJNE A,#2,EXITSETB BELL ;关闭整点报时MOV 21H,#00HINC SECONMOV A,SECONCJNE A,#60,EXITSETB 27H.0;闹钟检查标志MOV SECON,#00HINC MINMOV A,MINCJNE A,#60,EXITCPL BELL ;整点报时启动MOV MIN,#00HINC HOURMOV A,HOURCJNE A,#24,EX

17、ITMOV HOUR,#00HEXIT: JNB 27H.3,EXITQ;闹铃 1 组开关 1 为开JNB 27H.0,EXITQ;闹钟检查MOV A,MINCJNE A,38H,EXITQMOV A,HOURCJNE A,39H,EXITQSETB 27H.1MOV R5,#120EXITQ: JNB 2AH.2,EXIT1JNB 27H.0,EXIT1CLR 27H.0MOV A,MINCJNE A,54H,EXIT1MOV A,HOURCJNE A,55H,EXIT1SETB 27H.1MOV R5,#120EXIT1: POP ACC RETI.*;*KEY1*KEYA: JB KEY

18、1,LOOP1 LCALL DISPLAYLCALL DISPLAYJB KEY1,LOOP1JNB KEY1,$CLR TR0MOV 28H,#32H;从分闪烁SETB TR1MOV SECON,#0HSETB 27H.2MOV R0,#MIN.*LCP0: LCALL DISPLAY JB KEY3,LCP1 LCALL DISPLAY LCALL DISPLAY JNB KEY3,$ CPL 27H.2 JB 27H.2,LP1 MOV R0,#HOUR MOV 28H,#34H SJMP LCP1LP1: MOV R0,#MINMOV 28H,#32HLCP1: JB KEY1,LCP

19、2LCALL DISPLAYLCALL DISPLAYJB KEY1,LCP2 JNB KEY1,$ LCALL ADD1 LCP2: JB KEY2,LCP5LCALL DISPLAYLCALL DISPLAY JB KEY2,LCP5 JNB KEY2,$ LCALL DEC1LCP5: JB KEY4,LCP0 LCALL DISPLAYJB KEY4,LCP0JNB KEY4,$ LCALL DISPLAY JNB KEY4,$ SETB TR0CLR TR1 ;退出闪烁CLR 27H.4 ;闪烁的标志还原 LOOP1: RET.*KEY2*KEYB: JB KEY2,LOOP1LCA

20、LL DISPLAYLCALL DISPLAYJB KEY2,LOOP1JNB KEY2,$LCALL DISPLAYJNB KEY2,$SETB TR1CLR 2AH.0 ;闹钟组的切换MOV 28H,#32H ;闪烁单元默认为份CLR 27H.7 ;闹钟组0为1组MOV DISP,#37H ;默认显示第一组闹铃时间SETB 27H.2;为1时调分MOV 56H,#38HMOV 57H,#39HMOV R0,#38H.*QQ1: LCALL DISPLAY ;闹钟的主要显示JB KEY3,QQ2LCALL DISPLAYLCALL DISPLAY JNB KEY3,$ CPL 27H.2 J

21、B 27H.2,LQ1 MOV R0,57H MOV 28H,#34H SJMP QQ2LQ1: MOV R0,56H MOV 28H,#32H.*QQ2: JB KEY1,QQ3 LCALL DISPLAY LCALL DISPLAY JB KEY1,QQ3 JNB KEY1,$ LCALL ADD1.*QQ3: JB KEY2,QQ4 LCALL DISPLAY LCALL DISPLAY JB KEY2,QQ4 JNB KEY2,$ LCALL DEC1QQ4: JB KEY4,QQ1 LCALL DISPLAY JB KEY4,QQ1 JNB KEY4,$ LCALL DISPLAY

22、JNB KEY4,$ MOV DISP,#53H MOV 56H,#54H MOV 57H,#55H MOV R0,56H CPL 2AH.0 JB 2AH.0,QQ1 MOV DISP,#SECON CLR 27H.4 ;退出闪烁 CLR TR1秒表LPP1: RET ;*正丫3* KEYC: JB KEY3,QIN LCALL DISPLAY LCALL DISPLAY JB KEY3,QINMOV DISP,#50H SETB 27H.6QIN4: LCALL DISPLAY JB KEY1,QIN1 LCALL DISPLAY JB KEY1,QIN1 JNB KEY1,$ SETB

23、TR1QIN1: JB KEY2,QIN2 LCALL DISPLAY JB KEY2,QIN2 JNB KEY2,$ CLR TR1QIN2: JB KEY3,QIN3 LCALL DISPLAY JB KEY3,QIN3 JNB KEY3,$ MOV 50H,#00H MOV 51H,#00H MOV 52H,#00HQIN3: JB KEY4,QIN4 LCALL DISPLAY JB KEY4,QIN4 JNB KEY4,$ CLR 27H.6QIN: RET ;* KEY4* *KEYD: JB KEY4,WW1LCALL DISPLAYLCALL DISPLAYJB KEY4,WW

24、1JNB KEY4,$JNB 27H.3,WW6CLR 27H.3SETB P3.2SJMP WW1WW6: JNB 2AH.2,WW7CLR 2AH.2SETB P3.3SJMP WW1WW7: CLR 2AH.1MOV DISP,#37H默认显示第一组闹铃时间WW2: LCALL DISPLAYJB KEY1,WW3 JNB KEY1,$ JB 2AH.1,WQQ1 SETB 27H.3 CLR P3.2 SJMP WW3WQQ1: SETB 2AH.2 CLR P3.3WW3: JB KEY2,WW4 JNB KEY2,$ JB 2AH.1,WQQ2 CLR 27H.3 SETB P3.

温馨提示

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

评论

0/150

提交评论