版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 单片机课程设计报告 题 目:自动打铃器 班 级:031341014 姓 名:王 卫 一、绪论用单片机控制的自动打铃器,充分发挥单片机体积小,价格便宜,功耗低可靠性好等特点。可用于学校作息,方便了广大师生。同时也可作为电子手表的设计方案,两者在原理及实现的功能上是一样的效果,也可作为各种时钟控制电路的报警装置使用,具有用途范围广,原理简单便于操作和维护的优点总体上单片机设计方案在现实中应用非常广泛 而且在现实生活中也比较容易实现设计的实施二、总体设计方案设计思路利用单片机及定时器设计的一个时钟,在每次秒加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 自动打零器电路图四、程序部
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控
4、制程序实时传来的数据进行显示工作。LED也是动态的显示方式。5 校时程序流程图 首先进入校时显示模式,此时K1如果有按下,校时程序即可执行。此时如果K2手工操作下被按下则计时加一,达到与想要的结果一致即可停止K2的操作,如果计时结果在现在时间之前则可一直按下直到到达24小时一个循环时候,然后再次按下达到想要的计时结果。而24时也是校时循环终点。此时指示灯也有所变化。可以作为执行程序效果的参考。而校分流程图也对整体软件流程产生影响,最终达到时间的精确。小时和分钟的实时显示是定时的基础。6 校分及显示流程图解释首先进入校分模式时看K1是否按下,如果按键则K3是否有按键,如果有则分钟加一,如此便起到
5、修改分钟的作用,如果分钟修改到达60分钟则分钟全部清零,分钟计时重新开始。如果K1键没有按下,则小时和分钟数据进入显示缓存器,然后进入显示器显示,此时看K1键是否还在断开状态,如果没有按下则时间还是显示而不做变化如果K1键按下则此时进入定时器进入工作状态,因此K1键是程序运行的关键所在,在K1键进入工作状态的同时修改小时和分钟及定时器的工作程序才能进行7 程序清单1.初始化程序:READ EQU 0 ;读RAMWRITE EQU 2 ;写入RAMEWEN EQU 4 ;RAM写入使能EWDS EQU 6 ;RAM写入禁止ADR46 EQU 21H ;RAM地址显示显示启动定时器进入工作状态时分
6、值送显示缓存区K1 有按键吗?清分单元显示分值加1置校分标志K3 有按键吗?K1 有按键吗?是60 分吗?THIGH EQU 0F8HTLOW EQU 5FHTIMENEQU 30 ;打铃持续时间(30秒)CS BIT P3.7 ;RAMCSCLK BIT P3.6 ;RAMCLKDI BIT P3.5 ;RAMDIDO BIT P3.4 ;RAMDOORG 0000H ;主程序起始地址AJMP START ;跳至主程序ORG 000BH ;TIMER0中断起始地址AJMP TIM0 ;跳至TIMER0中断子程序START:MOV SP,#60H ;设置堆栈在60HMOV 28H,#00 ;显
7、示寄存器初值为00MOV R6,#12H ; 时寄存器值为12HMOV R5,#00H ;“分”寄存器值为00HMOV R4,#00H ;“秒”寄存器值为00H2.键值处理程序:LOOP: SETB P0.5 ;工作模式CLR P0.6CLR P0.7JB P0.0,N1 ;K1(模式选择键)按了?不是则跳至N1ACALL DELAY ;消除抖动JNB P0.0,$ ;K1(模式选择键)放开了?ACALL DELAY ;消除抖动AJMP SET ;转到定时模式SETN1: MOV 2FH,R6 ;将时钟数据载入2FH中MOV 2EH,R5 ;将分钟数据载入2EH中MOV RAM,#00 ;把9
8、3C46地址置0SETB RS0 ;将工作寄存器组选择1区LOOP1: MOV A,#READ ;读RAMACALL RAMMOV A,R3 ;取出定时器的状态ANL A,#01HCJNE A,#01H,N2 ;定时器为关闭,则跳转至N2MOV A,R4 ;取出定时器分钟数据CJNE A,2FH,N2 ;定时器分钟数据与时钟分钟不同则转至N2MOV A,R5 ;取出定时器时钟数据CJNE A,2EH,N2 ;定时器时钟数据与时钟时钟不同则转至N2MOV TMOD,#01H;MOV TH0,#THIGH;MOV TL0,#TLOWH;SETB TR0SETB P2.1 ;定时器时间到,打铃MOV
9、 R7,#9678H;中断查询7500次让时间达到30秒SJMP $TISE:DJNE R7CPL P2.1 终止打铃MOV A,RAM ;将RAM地址载入A中N2: CJNE A,#1EH,N3 ;到定时器数据表表尾?没到转至N3MOV ADR46,#00 ;到表尾,置RAM地址为表头AJMP LOOP1 ;转至LOOP1N3: INC RAM ;RAM地址加2INC RAMAJMP LOOP1 ;转至LOOP1SET: CLR P0.5 ;校时模式SETB p0.6 高电平CLR P0.7 低电平LOOPS: JB P0.0,N11 ;K1(模式选择键)按了?不是则跳至N11ACALL D
10、ELAY ;消除抖动JNBP0.0,$ ;K1(模式选择键)放开了?ACALL DELAY ;消除抖动AJMP SETTIME ;转至SETTIMEN11: JB P0.1,N13 ;K2(时钟加1键)按了?不是则跳至N13ACALL DELAY ;消除抖动MOV A,R6 ;将时寄存器的值载入AADD A,#01H ;A内容加1DA A ;做十进制调整MOV R6,A ;将A的值存入时寄存器CJNE A,#24H,N12 ;是否超过24时?不是则跳至N12MOV R6,#00H ;是则清除时寄存器的值为00N12: JNB P0.1,$ ;K2(时钟加1键)放开了?ACALL DELAY ;
11、消除抖动N13: JB P0.2,N15 ;K3(分钟加1键)按了?不是则跳至N15ACALL DELAY ;消除抖动MOV A,R5 ;将分寄存器的值载入AADD A,#01 ;A内容加1DA A ;做十进制调整MOV R5,A ;将A的值存入分寄存器CJNE A,#60H,N14 ;是否超过60分?不是则跳至N14MOV R5,#00H ;是则清除分寄存器的值为00N14: JNB P0.2,$ ;K3(分钟加1键)放开了?ACALL DELAY ;消除抖动N15: JB P0.3,N17 ;K4(秒钟加1键)按了?不是则跳至N17ACALL DELAY ;消除抖动MOV A,R4 ;将秒
12、寄存器的值载入AADD A,#01 ;A内容加1DA A ;做十进制调整MOV R4,A ;将A的值存入秒寄存器CJNE A,#60H,N16 ;是否超过60秒?不是则跳至N16MOV R4,#00 ;是则清除分寄存器的值为00N16: JNB P0.3,$ ;K4(秒钟加1键)放开了?ACALL DELAY ;消除抖动N17: AJMP LOOPS ;转至LOOPSSETTIME:CLR P0.5 ;定时模式CLR P0.6SETB P0.7MOV RAM,#00HMOV A,#READ ;将数据存储器的地址为RAM中的数据ACALL TO RAMLOOPB:ACALL DISP ;调用DI
13、SPJB P0.0,N21 ;K1(模式选择键)按了?不是则跳至N21ACALL DELAY ;消除抖动JNB P0.0,$ ;K1(模式选择键)放开了?ACALL DELAY ;消除抖动AJMP LOOP ;转至LOOPN21: JB P0.1,N22 ;K2(定时器组加1键)按了?不是则跳至N22ACALL DELAY ;消除抖动MOV A,RAM ;将地址载入ACLR C ;清除进位位RRC A ;A右移1位ADD A,#01H ;地址加1MOV R6,A ;将A存入R6CLR C ;清除进位位RLC A ;A左移1位MOV RAM,A ;将A中地址存入RAMMOV A,#READ ;读
14、RAM地址为ADR46中的数据ACALL TORAMJNB P0.1,$ ;K2(定时器组加1键)放开了?ACALLDELAY ;消除抖动N22: JB P0.2,N24 ;K3(定时器分钟加1键)按了?不是则跳至N24ACALLDELAY ;消除抖动MOV A,R4 ;将定时器分寄存器的值载入AADD A,#01 ;A内容加1DA A ;做十进制调整MOV R4,A ;将A的值存入定时器分寄存器CJNE A,#60H,N23 ;是否超过60分?不是则跳至N16MOV R4,#00H ;是则清除分寄存器的值为00N23: JNB P0.2,$ ;K3(定时器分钟加1键)放开了?ACALL DE
15、LAY ;消除抖动N24: JB P0.3,N26 ;K4(定时器时钟加1键)按了?不是则跳至N26ACALL DELAY ;消除抖动MOV A,R5 ;将定时器时寄存器的值载入AADD A,#01H ;A内容加1DA A ;做十进制调整MOV R5,A ;将A的值存入定时器时寄存器CJNE A,#24H,N25 ;是否超过24时?不是则跳至N25MOV R5,#00 ;是则清除分寄存器的值为00N25:JNB P0.3,$ ;K4(定时器时钟加1键)放开了?ACALL DELAY ;消除抖动N26:JB P0.4,N27 ;K5(改变定时器状态存储键)按了?不是则跳至N27ACALL DEL
16、AY ;消除抖动INC R3 ;改变R3最低位的值(表示定时器的状态,1表示开,0表示关)MOV A,#WRITE ;将A的值写入RAM地址为ADR46中ACALL TORAMJNB P0.4,$ ;K5(改变定时器状态存储键)放开了?ACALL DELAY ;消除抖动N27:AJMP LOOPB ;转至LOOPB3.中断程序:TIM0:MOV TH0,#THIGH ;重设计时4000微秒MOV TL0,#TLOWPUSH ACC ;将A的值存入堆栈PUSH PSW ;将PSW的值存入堆栈CLR RS0 ;设置工作寄存器为0区DJNZ R2,X2 ;计时1秒MOV R2,#250ACALL C
17、LOCK ;调用计时子程序CLOCKACALL DISP ;调用显示子程序X2:ACALL SCAN ;调用扫描子程序POP PSWPOP ACCRETI4.显示器驱动程序:SCAN:MOV R0,#28H ;(28H)为扫描指针INC R0 ;扫描指针加1CJNE R0,#6,X3 ;扫描完6个显示器?不是跳至X3MOV R0,#00 ;是则扫描指针为0X3:MOV A,R0 ;扫描指针载入AADD A,#20 ;A加常数20H(显示寄存器地址)=各时间显示区地址;存入R1=各时间显示地址MOV R1,A ;扫描指针存入AMOV A,R0 ;将A高低4位交换(P1高4位为扫描值,SWAP A
18、 ;低4位为显示数据值)ORL A,R1 ;扫描值+显示值MOV R1,A ;输出至P1RET计时程序:CLOCK:MOV A,R4 ;R4为秒寄存器ADD A,#01 ;加1DA A ;做十进制调整MOV R4,A ;存入秒寄存器CJNE A,#TIMEN,X4 ;是否超过打零连续时间?不是则跳至X4CLR P2.0 ;关铃X4:CJNE A,#60H,X5 ;是否超过60秒?不是则跳至X5MOV R4,#00 ;是则清除为0MOV A,R5 ;R5为分寄存器ADD A,#01 ;加1DA A ;做十进制调整MOV R5,A ;存入分寄存器CJNE A,#60H,X5 ;是否超过60分?不是
19、则跳至X5MOV R5,#00 ;是则清除为0MOV A,R6 ;R6为时寄存器ADD A,#01 ;加1DA A ;做十进制调整MOV R6,A ;存入时寄存器CJNEA,#60H,X5 ;是否超过24时?不是则跳至X5MOV R6,#00 ;是则清除为0X5:RET5.显示程序:DISP:MOVR1,#20 ;(20H)为显示寄存器,R1=20HMOV A,R6 ;将时寄存器的内容存入AMOV B,#01H ;设B累加器的值为10HDIV AB ;A/B,商(十位数)存入A,余数(个位数)存入BMOV R1,B ;将B的内容存入(20H)INC R1 ;R1=21HMOV R1,A ;将A的内容存入(21H)INC R1 ;R1=22HMOV A,R5 ;将分寄存器的内容存入AMOV B,#01H ;设B累加器的值为10HDIV AB ;A/B,商(十位数)存入A,余数(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广州医科大学《财政与金融》2023-2024学年第一学期期末试卷
- 2025吉林省安全员-B证考试题库附答案
- 2025广东建筑安全员-A证考试题库及答案
- 《STP汽车战略分析》课件
- 《康复护理新思维》课件
- 单位人力资源管理制度品读大全十篇
- 单位人力资源管理制度集粹合集十篇
- 内蒙古呼伦贝尔市阿荣旗2024-2025学年七年级上学期1月期末道德与法治试卷(含答案)
- 《ho中国案例分析》课件
- 单位管理制度展示选集【职员管理篇】十篇
- 上海中考考纲词汇默写每天50个(无答案)
- 热工基础课后答案超详细版(张学学)
- 十八项医疗核心制度培训课件
- 食品工艺学(鲁东大学)智慧树知到期末考试答案2024年
- 工地食堂经营方案及计划书
- 2024年汽车驾驶员高级证考试题库及答案
- 正畸计划书模板
- 空中交通管制基础
- 供应商竞价比价表
- 转运呼吸机培训课件
- 国内外天然植物染料的应用及发展现状
评论
0/150
提交评论