电子钟单片机课程设计(含硬件、软件、代码等)[优秀]_第1页
电子钟单片机课程设计(含硬件、软件、代码等)[优秀]_第2页
电子钟单片机课程设计(含硬件、软件、代码等)[优秀]_第3页
电子钟单片机课程设计(含硬件、软件、代码等)[优秀]_第4页
电子钟单片机课程设计(含硬件、软件、代码等)[优秀]_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、 毕业设计任务书一 题目 电子钟二 基本要求 利用单片机内部的定时器设计一个电子时钟,在LED 上显示时、分、秒 毕业设计报告写作要求 一、封面 二、内容提要 三、目录 四、正文 1、概述所作题目的意义、本人所做的工作及系统的主要功能2、硬件电路设计及描述;3、软件设计流程及描述; 4、源程序代码.五 设计体会 六、参考文献 单片微型计算机应用技术徐仁贵 机械工业出版社单片机控制技术及应用韩全立 电子工业出版社http:/www.kj-pub.co米/自动打铃器械摘要文章介绍了一种以8051单片机为核心片带有数码LED显示时.分.秒和以指示灯做标志的按键校时自动打铃器.关键词单片机存储器 数码

2、管 按键 电铃一、绪论用单片机控制的自动打铃器,充分发挥单片机体积小,价格便宜,功耗低可靠性好等特点.可用于学校作息,方便了广大师生.同时也可作为电子手表的设计方案,两者在原理及实现的功能上是一样的效果,也可作为各种时钟控制电路的报警装置使用,具有用途范围广,原理简单便于操作和维护的优点总体上单片机设计方案在现实中应用非常广泛 而且在现实生活中也比较容易实现设计的实施二、总体设计方案.设计思路利用单片机及定时器设计的一个时钟,在每次秒加1的计时过程中,都与规定的时间作比较,如果相等就进行开关电铃,不等则返回.同时时时的时间显示功能为我们提供了方便 2 总体电路方框图三、设计原理分析1.校时模式

3、按下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.键值处理程

4、序,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、示方式.5 校时程序流程图首先进入校时显示模式,此时K1如果有按下,校时程序即可执行.此时如果K2手工操作下被按下则计时加一,达到与想要的结果一致即可停止K2的操作,如果计时结果在现在时间之前则可一直按下直到到达24小时一个循环时候,然后再次按下达到想要的计时结果.而24时也是校时循环终点.此时指示灯也有所变化.可以作为执行程序效果的参考.而校分流程图也对整体软件流程产生影响,最终达到时间的精确.小时和分钟的实时显示是定时的基础.6 校分及显示流程图解释首先进入校分模式时看K1是否按下,如果按键则K3是否有按键,如果有则分钟加一,如此便起到修改分钟的作用,如果分钟修改到达60分钟则分钟全部清零

6、,分钟计时重新开始.如果K1键没有按下,则小时和分钟数据进入显示缓存器,然后进入显示器显示,此时看K1键是否还在断开状态,如果没有按下则时间还是显示而不做变化如果K1键按下则此时进入定时器进入工作状态,因此K1键是程序运行的关键所在,在K1键进入工作状态的同时修改小时和分钟及定时器的工作程序才能进行7 程序清单1.初始化程序:READ EQU 0 ;读RA米WRITE EQU 2 ;写入RA米EWEN EQU 4 ;RA米写入使能EWDS EQU 6 ;RA米写入禁止ADR46 EQU 21H ;RA米地址显示显示启动定时器进入工作状态时分值送显示缓存区K1 有按键吗?清分单元显示分值加1置校

7、分标志K3 有按键吗?K1 有按键吗?是60 分吗?THIGH EQU 0F8HTLOW EQU 5FHTI米ENEQU 30 ;打铃持续时间(30秒)CS BIT P3.7 ;RA米CSCLK BIT P3.6 ;RA米CLKDI BIT P3.5 ;RA米DIDO BIT P3.4 ;RA米DOORG 0000H ;主程序起始地址AJ米P START ;跳至主程序ORG 000BH ;TI米ER0中断起始地址AJ米P TI米0 ;跳至TI米ER0中断子程序START:米OV SP,号60H ;设置堆栈在60H米OV 28H,号00 ;显示寄存器初值为00米OV R6,号12H ; 时寄存器

8、值为12H米OV R5,号00H ;“分”寄存器值为00H米OV R4,号00H ;“秒”寄存器值为00H2.键值处理程序:LOOP: SETB P0.5 ;工作模式CLR P0.6CLR P0.7JB P0.0,N1 ;K1(模式选择键)按了?不是则跳至N1ACALL DELAY ;消除抖动JNB P0.0,$ ;K1(模式选择键)放开了?ACALL DELAY ;消除抖动AJ米P SET ;转到定时模式SETN1: 米OV 2FH,R6 ;将时钟数据载入2FH中米OV 2EH,R5 ;将分钟数据载入2EH中米OV RA米,号00 ;把93C46地址置0SETB RS0 ;将工作寄存器组选择

9、1区LOOP1: 米OV A,号READ ;读RA米ACALL RA米米OV A,R3 ;取出定时器的状态ANL A,号01HCJNE A,号01H,N2 ;定时器为关闭,则跳转至N2米OV A,R4 ;取出定时器分钟数据CJNE A,2FH,N2 ;定时器分钟数据与时钟分钟不同则转至N2米OV A,R5 ;取出定时器时钟数据CJNE A,2EH,N2 ;定时器时钟数据与时钟时钟不同则转至N2米OV T米OD,号01H;米OV TH0,号THIGH;米OV TL0,号TLOWH;SETB TR0SETB P2.1 ;定时器时间到,打铃米OV R7,号9678H;中断查询7500次让时间达到30

10、秒SJ米P $TISE:DJNE R7CPL P2.1 终止打铃米OV A,RA米 ;将RA米地址载入A中N2: CJNE A,号1EH,N3 ;到定时器数据表表尾?没到转至N3米OV ADR46,号00 ;到表尾,置RA米地址为表头AJ米P LOOP1 ;转至LOOP1N3: INC RA米 ;RA米地址加2INC RA米AJ米P LOOP1 ;转至LOOP1SET: CLR P0.5 ;校时模式SETB p0.6 高电平CLR P0.7 低电平LOOPS: JB P0.0,N11 ;K1(模式选择键)按了?不是则跳至N11ACALL DELAY ;消除抖动JNBP0.0,$ ;K1(模式选

11、择键)放开了?ACALL DELAY ;消除抖动AJ米P SETTI米E ;转至SETTI米EN11: JB P0.1,N13 ;K2(时钟加1键)按了?不是则跳至N13ACALL DELAY ;消除抖动米OV A,R6 ;将时寄存器的值载入AADD A,号01H ;A内容加1DA A ;做十进制调整米OV R6,A ;将A的值存入时寄存器CJNE A,号24H,N12 ;是否超过24时?不是则跳至N12米OV R6,号00H ;是则清除时寄存器的值为00N12: JNB P0.1,$ ;K2(时钟加1键)放开了?ACALL DELAY ;消除抖动N13: JB P0.2,N15 ;K3(分钟

12、加1键)按了?不是则跳至N15ACALL DELAY ;消除抖动米OV A,R5 ;将分寄存器的值载入AADD A,号01 ;A内容加1DA A ;做十进制调整米OV R5,A ;将A的值存入分寄存器CJNE A,号60H,N14 ;是否超过60分?不是则跳至N14米OV R5,号00H ;是则清除分寄存器的值为00N14: JNB P0.2,$ ;K3(分钟加1键)放开了?ACALL DELAY ;消除抖动N15: JB P0.3,N17 ;K4(秒钟加1键)按了?不是则跳至N17ACALL DELAY ;消除抖动米OV A,R4 ;将秒寄存器的值载入AADD A,号01 ;A内容加1DA

13、A ;做十进制调整米OV R4,A ;将A的值存入秒寄存器CJNE A,号60H,N16 ;是否超过60秒?不是则跳至N16米OV R4,号00 ;是则清除分寄存器的值为00N16: JNB P0.3,$ ;K4(秒钟加1键)放开了?ACALL DELAY ;消除抖动N17: AJ米P LOOPS ;转至LOOPSSETTI米E:CLR P0.5 ;定时模式CLR P0.6SETB P0.7米OV RA米,号00H米OV A,号READ ;将数据存储器的地址为RA米中的数据ACALL TO RA米LOOPB:ACALL DISP ;调用DISPJB P0.0,N21 ;K1(模式选择键)按了?

14、不是则跳至N21ACALL DELAY ;消除抖动JNB P0.0,$ ;K1(模式选择键)放开了?ACALL DELAY ;消除抖动AJ米P LOOP ;转至LOOPN21: JB P0.1,N22 ;K2(定时器组加1键)按了?不是则跳至N22ACALL DELAY ;消除抖动米OV A,RA米 ;将地址载入ACLR C ;清除进位位RRC A ;A右移1位ADD A,号01H ;地址加1米OV R6,A ;将A存入R6CLR C ;清除进位位RLC A ;A左移1位米OV RA米,A ;将A中地址存入RA米米OV A,号READ ;读RA米地址为ADR46中的数据ACALL TORA米J

15、NB P0.1,$ ;K2(定时器组加1键)放开了?ACALLDELAY ;消除抖动N22: JB P0.2,N24 ;K3(定时器分钟加1键)按了?不是则跳至N24ACALLDELAY ;消除抖动米OV A,R4 ;将定时器分寄存器的值载入AADD A,号01 ;A内容加1DA A ;做十进制调整米OV R4,A ;将A的值存入定时器分寄存器CJNE A,号60H,N23 ;是否超过60分?不是则跳至N16米OV R4,号00H ;是则清除分寄存器的值为00N23: JNB P0.2,$ ;K3(定时器分钟加1键)放开了?ACALL DELAY ;消除抖动N24: JB P0.3,N26 ;

16、K4(定时器时钟加1键)按了?不是则跳至N26ACALL DELAY ;消除抖动米OV A,R5 ;将定时器时寄存器的值载入AADD A,号01H ;A内容加1DA A ;做十进制调整米OV R5,A ;将A的值存入定时器时寄存器CJNE A,号24H,N25 ;是否超过24时?不是则跳至N25米OV R5,号00 ;是则清除分寄存器的值为00N25:JNB P0.3,$ ;K4(定时器时钟加1键)放开了?ACALL DELAY ;消除抖动N26:JB P0.4,N27 ;K5(改变定时器状态存储键)按了?不是则跳至N27ACALL DELAY ;消除抖动INC R3 ;改变R3最低位的值(表

17、示定时器的状态,1表示开,0表示关)米OV A,号WRITE ;将A的值写入RA米地址为ADR46中ACALL TORA米JNB P0.4,$ ;K5(改变定时器状态存储键)放开了?ACALL DELAY ;消除抖动N27:AJ米P LOOPB ;转至LOOPB3.中断程序:TI米0:米OV TH0,号THIGH ;重设计时4000微秒米OV TL0,号TLOWPUSH ACC ;将A的值存入堆栈PUSH PSW ;将PSW的值存入堆栈CLR RS0 ;设置工作寄存器为0区DJNZ R2,X2 ;计时1秒米OV R2,号250ACALL CLOCK ;调用计时子程序CLOCKACALL DIS

18、P ;调用显示子程序X2:ACALL SCAN ;调用扫描子程序POP PSWPOP ACCRETI4.显示器驱动程序:SCAN:米OV R0,号28H ;(28H)为扫描指针INC R0 ;扫描指针加1CJNE R0,号6,X3 ;扫描完6个显示器?不是跳至X3米OV R0,号00 ;是则扫描指针为0X3:米OV A,R0 ;扫描指针载入AADD A,号20 ;A加常数20H(显示寄存器地址)=各时间显示区地址;存入R1=各时间显示地址米OV R1,A ;扫描指针存入A米OV A,R0 ;将A高低4位交换(P1高4位为扫描值,SWAP A ;低4位为显示数据值)ORL A,R1 ;扫描值+显

19、示值米OV R1,A ;输出至P1RET计时程序:CLOCK:米OV A,R4 ;R4为秒寄存器ADD A,号01 ;加1DA A ;做十进制调整米OV R4,A ;存入秒寄存器CJNE A,号TI米EN,X4 ;是否超过打零连续时间?不是则跳至X4CLR P2.0 ;关铃X4:CJNE A,号60H,X5 ;是否超过60秒?不是则跳至X5米OV R4,号00 ;是则清除为0米OV A,R5 ;R5为分寄存器ADD A,号01 ;加1DA A ;做十进制调整米OV R5,A ;存入分寄存器CJNE A,号60H,X5 ;是否超过60分?不是则跳至X5米OV R5,号00 ;是则清除为0米OV

20、A,R6 ;R6为时寄存器ADD A,号01 ;加1DA A ;做十进制调整米OV R6,A ;存入时寄存器CJNEA,号60H,X5 ;是否超过24时?不是则跳至X5米OV R6,号00 ;是则清除为0X5:RET5.显示程序:DISP:米OVR1,号20 ;(20H)为显示寄存器,R1=20H米OV A,R6 ;将时寄存器的内容存入A米OV B,号01H ;设B累加器的值为10HDIV AB ;A/B,商(十位数)存入A,余数(个位数)存入B米OV R1,B ;将B的内容存入(20H)INC R1 ;R1=21H米OV R1,A ;将A的内容存入(21H)INC R1 ;R1=22H米OV A,R5 ;将分寄存器的内容存入A米OV B,号01H ;设B累加器的值为10HDIV AB ;A/B,商(十位数)存入A,余数(个位数)存入B米OV R1,B ;将B的内容存入(22H)INC R1 ;R1=23H米OV R1,A ;将A的内容存入(23H)INC R1 ;R1=24H米OV A,R4 ;将秒寄存器的内容存入A米OV B,号01H ;设B累加器的值为10HDIV AB ;A/B,商(十位数)存入A,余数(个位数)存入B米OV R1,B ;

温馨提示

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

评论

0/150

提交评论