欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

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

    • 资源ID:4147566       资源大小:173KB        全文页数:24页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    单片机课程设计 -定时闹铃 系别: 电子通信工程系 专业: 应用电子技术 班级: 嵌入式091班 姓名:黄 学号: 2009080202338 实训地点: 实训时间:2011年1月10日至1月14日1.概述1.1 系统的作用本系统是利用STC89C52单片机结合6个七段显示器以24时制“时时分分秒秒”格式显示时间的电子定时闹铃,系统可以设置2组定时闹铃;当定时闹铃时,该电子时钟通过蜂鸣器发出嘀嘀嘀嘀响声;本系统还具有整点报时功能,当现在时间为整点报时。还有秒表功能,由于该电子定时闹铃有强大功能可以在多种场合下使用,利用七段显示器发光也可以在夜晚和黑暗场合下使用。1.2 系统的功能要求(1)使用6位七段显示器显示24时制时间。(2)时间显示格式为“时时分分秒秒”。(3)定时闹铃功能。(4)整点报时功能:当现在时间为整点时响铃。(5)定时闹铃和现在时间模式可以互相切换而不影响各自功能。(6)具有4个按键来进行功能设置,可以设置当前时间、闹铃的时间设置和秒表开关设置。(7)具有秒表计时功能(8)调时区域闪烁(9)通过复位按键可以重启系统。2.系统的硬件设计2.1系统的电路原理(1)系统以STC89C52单片机为本电路的核心元件,通过单片机的P0.0P0.7引脚和A102J排阻加上拉电压来驱动七段显示器段显示数字。(2)通过单片机的P2.2P2.7引脚连接A103J排阻拉升电压信号,控制共阴极七段显示器连通接地来循环点亮6位七段显示器。(3)在七段显示器供电的同时由P0脚驱动显示不同数字。根据人眼的视觉暂留特点,调整延迟时间使所观察到时间数字是稳定的数字。(4)系统使用了YXDZ蜂鸣器,通过单片机P3.0引脚连接8550PNP三极管推动发声。(5)电路通过4个按键连接单片机P1.0P1.3引脚低电平控制系统功能设置。(6)单片机的复位电路,采用传统上电复位,通过Reset按键控制。(7)系统通过一个发光二极管指示电路供电是或正常。2.2 电原理图图1 控制电路2.3 各控制按钮控制功能说明系统接通电源后指示灯LED亮,程序执行后工作,蜂鸣器发出两声响声,七段显示器显示“00 00 00”,表示程序开始执行,然后显示现在时间,按下操作键K1K4动作如下:(1)按操作键K1,进入“设置现在时间”模式后,操作键功能如下:Ø 操作键K1:当前区域加1。Ø 操作键K2:当前区域减1。Ø 操作键K3:分、时区域切换。Ø 操作键K4:设置完成,退出。(2)按操作键K2,进入“显示、设置闹铃时间”模式后,操作键功能如下:Ø 操作键K1:当前闹铃区域加1。Ø 操作键K2:当前闹铃区域减1。Ø 操作键K3:分、时区域切换Ø 操作键K4:第一次进入第二组,第二次为退出。(3)按操作键K3:进入“秒表”模式后,操作键功能如下:Ø 操作键K1:启动秒表。Ø 操作键K2:停止秒表。Ø 操作键K3:清零。Ø 操作键K4:退出。(4)按操作键K4:在响铃时关闭闹钟自动退出,不是响铃则进入“设置闹铃的开关”模式后,操作键功能如下:Ø 操作键K1:启动当前闹铃。Ø 操作键K2:停止当前闹铃。Ø 操作键K3:切换闹铃组。Ø 操作键K4:设置完成,退出。(5)按操作键Reset:复位键,系统重启。3.软件设计3.1 资源分配表和程序流程图表一 程序内存资源分配表内存地址变量名称作用说明20H存放50毫秒计时21H存放0.5秒计时22HSECON存放1秒计时23HMIN存放1分计时24HHOUR存放1小时计时25H用于中断1(#6H)26H用于显示中的闪烁27H.0闹钟标志位27H.1允许响铃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第二组闹钟的时分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控制时间秒钟的十位七段显示器亮灭P2.7控制时间秒钟的个位七段显示器亮灭P3.0BELL蜂鸣器P3.1LED半秒闪烁P3.2LED显示第一组闹钟是否开启P3.3LED显示第二组闹钟是否开启表三 寄存器资源分配表组寄存器作用说明第0组R0存放秒显示地址R1显示首址R2#06HR3#0FEHR4#3HR6、R7延时初始值第1组R0用于keyB、CR5用于中断图2主程序控制流程图初始化定时器NYY进入“设置闹铃的开关”模式进入“秒表”模式Y进入“显示、设置闹铃时间”模式进入“设置现在时间”模式NN是否按K4键?是否按K3键?是否按K2键?NY是否按K1键?扫描显示器更新时间,启动定时器T0初始化变量开始NNNYYYY退出调时区切换当前区减1当前区加1KEY3KEY2KEY4KEY1更新时间显示设置现在时间N切换二组闹铃第一次更新显示NNYYYY退出时分切换当前区减1当前区加1KEY3KEY2KEY4KEY1转换闹铃模式显示设置闹铃时间 NNNYYYY退出清零关闭启动KEY3KEY2KEY4KEY1秒表显示秒表显示KEY1NNYYYY退出闹铃组切换关当前闹铃开当前闹铃KEY3KEY2KEY4闹钟正在响关闭响铃秒表N中断程序T0置标志位N检测闹铃时变量变0YY整点报时时变量=24分=0时加1分变量=60秒=0分加1NYYY清标志位21H=2 次数到检查闹铃开、关响铃NNYYYY1YN0N秒变量加1秒变量=60标志位21H加1半秒指示灯闪累加器入栈重新载入计数初值、定时器计数10次计时中断程序开始计时中断程序结束将累加器出栈中断程序T1111000分=60秒=60中断返回分变量=0秒变量=0分变量加1毫秒变量=0秒变量加110毫秒单元加1毫秒=1000重装初始值中断返回106次取反闪烁标志01重装初始值中断程序1开始用以闪烁、秒表标志位3.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:设置秒表 ; ->K1:秒表启动; ->K2:秒表暂停; ->K2:秒表清零; ->K4:OK;->K4:设置闹铃开关(当真正闹铃时停掉闹钟并退出); ->K1:当前闹铃组开; ->K2:当前闹铃组关; ->K3:切换闹组; ->K4:OK;-KEY1 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 0000H LJMP START ORG 000BH LJMP T0_INTORG 001BHLJMP T1_INT ORG 0100HSTART: MOV 20H,#00HMOV 21H,#00H ;0.5秒计时 MOV 22H,#00H ;1秒计时 MOV 23H,#00H ;1分计时 MOV 24H,#00H ;1h计时MOV 38H,#01H ;闹钟分MOV 39H,#00H ;闹钟时MOV 37H,#101 ;第一组闹钟的首字节显示"-1"MOV 53H,#102 ;第二组闹铃的首字节显示”-2“MOV 25H,#6H ;中断1,50ms*6=0.3s闪烁一次 MOV TMOD,#11HMOV TL1,#0B0HMOV TH1,#3CH MOV TL0,#0B0H MOV TH0,#3CH SETB ET0SETB ET1 SETB EA SETB TR0MOV SP,#40H;*主程序*MAIN:MOV DISP,#SECONLCALL DISPLAYLCALL KEYALCALL KEYBLCALL KEYCLCALL KEYDSJMP MAIN/*数码管显示*/DISPLAY:PUSH PSWMOV PSW,#08H;用第二组寄存器MOV R0,DISPMOV R1,#30HMOV R4,#03H;秒分时LOOP0:MOV A,R0MOV B,#10DIV ABMOV R1,BINC R1MOV R1,AINC R0INC R1DJNZ R4,LOOP0DISKEY:MOV R1,#30H ;显示缓冲区首址 MOV R2,#06H MOV R3,#0FEHCLR 27H.5MOV 29H,28HPLAY: MOV A,R1 MOV DPTR,#TABLE MOVC 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,AMOV P2,R3 INC R1 LCALL DELAY MOV A,R3 RL AMOV R3,ADJNZ R2,PLAYPOP PSWRETDELAY: MOV R6,#4D1: MOV R7,#250D0: DJNZ R7,D0 DJNZ R6,D1 RETTABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H/*中断T0处理*/T0_INT: MOV TL0,#0B0H MOV TH0,#3CHPUSH ACC INC 20H MOV A,20H CJNE A,#10,EXITJNB 27H.3,LQQ1SJMP LQQ2LQQ1:JNB 2AH.2,LP0LQQ2:JNB 27H.1,LP0;闹铃检查1响CPL BELLDJNZ R5,LP0;响铃次数SETB BELLCLR 27H.1LP0: MOV 20H,#00H CPL P3.1;半秒led闪烁 INC 21HMOV A,21HCJNE A,#2,EXITSETB BELL;关闭整点报时 MOV 21H,#00HINC SECON MOV A,SECONCJNE A,#60,EXITSETB 27H.0;闹钟检查标志MOV SECON,#00H INC MIN MOV A,MINCJNE A,#60,EXITCPL BELL;整点报时启动 MOV MIN,#00H INC HOUR MOV A,HOURCJNE A,#24,EXIT MOV 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 ACCRETI;*;*KEY1*KEYA:JB KEY1,LOOP1LCALL DISPLAYLCALL DISPLAYJB KEY1,LOOP1JNB KEY1,$CLR TR0MOV 28H,#32H;从分闪烁SETB TR1MOV SECON,#0HSETB 27H.2MOV R0,#MIN;*LCP0:LCALL DISPLAYJB KEY3,LCP1LCALL DISPLAYLCALL DISPLAYJNB KEY3,$CPL 27H.2JB 27H.2,LP1MOV R0,#HOURMOV 28H,#34HSJMP LCP1LP1:MOV R0,#MINMOV 28H,#32HLCP1:JB KEY1,LCP2LCALL DISPLAYLCALL DISPLAYJB KEY1,LCP2JNB KEY1,$LCALL ADD1LCP2:JB KEY2,LCP5LCALL DISPLAYLCALL DISPLAYJB KEY2,LCP5JNB KEY2,$LCALL DEC1LCP5:JB KEY4,LCP0LCALL DISPLAYJB KEY4,LCP0JNB KEY4,$LCALL DISPLAYJNB KEY4,$SETB TR0CLR TR1;退出闪烁CLR 27H.4;闪烁的标志还原LOOP1:RET;*KEY2*KEYB:JB KEY2,LOOP1LCALL 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 DISPLAYJNB KEY3,$CPL 27H.2JB 27H.2,LQ1MOV R0,57HMOV 28H,#34HSJMP QQ2LQ1:MOV R0,56HMOV 28H,#32H;*加1QQ2:JB KEY1,QQ3LCALL DISPLAYLCALL DISPLAYJB KEY1,QQ3JNB KEY1,$LCALL ADD1;*减1QQ3:JB KEY2,QQ4LCALL DISPLAYLCALL DISPLAYJB KEY2,QQ4JNB KEY2,$LCALL DEC1QQ4:JB KEY4,QQ1LCALL DISPLAYJB KEY4,QQ1JNB KEY4,$LCALL DISPLAYJNB KEY4,$MOV DISP,#53HMOV 56H,#54HMOV 57H,#55HMOV R0,56HCPL 2AH.0JB 2AH.0,QQ1MOV DISP,#SECONCLR 27H.4;退出闪烁CLR TR1LPP1:RET;*KEY3*秒表KEYC:JB KEY3,QINLCALL DISPLAYLCALL DISPLAYJB KEY3,QINMOV DISP,#50HSETB 27H.6QIN4:LCALL DISPLAYJB KEY1,QIN1LCALL DISPLAYJB KEY1,QIN1JNB KEY1,$SETB TR1QIN1:JB KEY2,QIN2LCALL DISPLAYJB KEY2,QIN2JNB KEY2,$CLR TR1QIN2:JB KEY3,QIN3LCALL DISPLAYJB KEY3,QIN3JNB KEY3,$MOV 50H,#00HMOV 51H,#00HMOV 52H,#00HQIN3:JB KEY4,QIN4LCALL DISPLAYJB KEY4,QIN4JNB KEY4,$CLR 27H.6QIN:RET;*KEY4*KEYD:JB KEY4,WW1LCALL DISPLAYLCALL DISPLAYJB KEY4,WW1JNB 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,WW3JNB KEY1,$JB 2AH.1,WQQ1SETB 27H.3CLR P3.2SJMP WW3WQQ1:SETB 2AH.2CLR P3.3WW3:JB KEY2,WW4JNB KEY2,$JB 2AH.1,WQQ2CLR 27H.3SETB P3.2SJMP WW4WQQ2:CLR 2AH.2SETB P3.3WW4:JB KEY3,WW5LCALL DISPLAYJNB KEY3,$CPL 2AH.1JB 2AH.1,XXX1MOV DISP,#37HSJMP WW5XXX1:MOV DISP,#53HWW5:JB KEY4,WW2LCALL DISPLAYJB KEY4,WW2JNB KEY4,$LCALL DISPLAYJNB KEY4,$WW1:RET;*加减子程序*;*加1子程序*ADD1:JB 27H.2,MINU1CJNE R0,#23,LCP4MOV R0,#0HSJMP EXIT2MINU1:CJNE R0,#59,LCP4MOV R0,#0HSJMP EXIT2LCP4:INC R0EXIT2:RET/*减1子程序*/DEC1:CJNE R0,#00,LCP3JB 27H.2,MINU2MOV R0,#23SJMP EXIT3MINU2:MOV R0,#60LCP3:DEC R0EXIT3:RET;*T1_INT: JB 27H.6,SECOND;为1时为秒表MOV TL1,#0B0HMOV TH1,#3CHDJNZ 25H,EEEMOV 25H,#6HCPL 27H.4 EEE:RETI;秒表程序SECOND:PUSH ACC;在显示时怕中断时影响显示MOV TL1,#0F7H ;本应该是#0F0H考虑到精度问题MOV TH1,#0D8H INC 50H MOV A,50HCJNE A,#100,XINMOV 50H,#00HINC 51HMOV A,51HCJNE A,#60,XINMOV 51H,#00HINC 52HMOV A,52HCJNE A,#60,XINMOV 52H,#00HXIN:POP ACCRETIEND

    注意事项

    本文(单片机课程设计电子时钟 .doc)为本站会员(仙人指路1688)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开