单片机课程设计打铃 - 图文

更新时间:2023-11-11 18:37:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

湖南工业大学电气与信息工程学院

单片机课程设计 之自动打铃系统

院系: 电气与信息工程系

专业: 应用电子 班级: 电子092班 指导教师 : 曾红兵

设计小组人员姓名: jaw920 设计时间: 2011.10.19-2011.11.05

2010年 11月 05 日

单片机课程设计—自动打铃系统

湖南工业大学电气与信息工程学院

摘 要

本次设计中的LED数码管电子时钟电路采用24小时制记时方式,本次设计采用AT89S52单片机的扩展芯片和6个PNP三极管做驱动,由三块LED数码管构成的显示系统,与传统的基于8/16位普通单片机的LED显示系统相比较,本系统在不显著地增加系统成本的情况下,可支持更多的LED数码管稳定显示。设计采用AT89S52单片机,使用5V电源供电,并且在按键的作用下可以进行调时,调分,复位功能。计时数据的更新在计算机C语言的驱动下每秒自动进行一次,但不需程序干预其输出状态。

关键词:AT89S52; 数码管 ; LED

目 录

引 言???????????????????????????????????????????????????1 第一章 设计简介及方案论述????????????????????????????????1 1.1 作息时间控制钟系统概述??????????????????????????????1

1.2 本设计任务和主要内容????????????????????????????????1

第二章 系统硬件电路设计??????????????????????????????????2 2.1单片机总体设计思路??????????????????????????????????2

2.2 各功能模块程序实现原理分析???????????????????????????2 2.21 七段式数码管驱动模块?????????????????????????????????2 2.22 蜂鸣器驱动模块??????????????????????????????????????2

2.23 按钮控制模块???????????????????????????????????????3

2.3系统主要硬件电路?????????????????????????????????????5 2.31 七段式数码管驱动模块的硬件设计?????????????????????????6

单片机课程设计—自动打铃系统

单片机课程设计

2.32 蜂鸣器驱动模块的硬件设计??????????????????????????????7

第三章 系统软件设计??????????????????????????????????????8

3.1 系统软件设计的主要内容??????????????????????????????83.2

系统软件设计的流程图????????????????????????????????8 第四章 系统调试与测试结果分析?????????????????????????????10

4.1 系统调试???????????????????????????????????????????10

4.11 软件调试??????????????????????????????????????????10 4.12 硬件调试??????????????????????????????????????????10

第五章 附录及参考文献????????????????????????????????????12 5.1 汇编程序清单????????????????????????????????????????12 5.2 器材仪表????????????????????????????????????????????34 5.3

???34

参考资

料?????????????????????????????????????????

第六章 设计总结

1

单片机课程设计

引 言

本设计是根据我们所学习的单片机课程,按照大纲要求对我们进行的一次课程检验,是进行单片机课程训练的必要任务,也对我们掌握单片机应用有很大的帮助。掌握单片机技术是一门不可或缺的技术,对我们将来的工作以及生活和学习都有很密切的联系。近年来,随着电子技术和微机计算机的迅速发展,单片机的档次不断提高,其应用领域也在不断的扩大,已在工业控制、尖端科学、智能仪器仪表、日用家电、汽车电子系统、办公自动化设备、个人信息终端及通信产品中得到了广泛的应用,成为现代电子系统中最重要的智能化的核心部件。

当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未有的速度被单片机智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。学习单片机的最有效的方法就是理论与实践并重,本文用AT89S52单片机设计的一个自动打铃系统。

第一章 设计简介及方案论述

1.1作息时间控制钟系统概述:

本设计是一个具有报时功能的作息时间控制钟。它利用AT89S52单片机的2Hz时基计时,进行年历计算,并用的蜂鸣器驱动模块将它报出来;在进行时间计算,分每加一时,都与规定的作息时间比较,如果相等则进行相应的控制或动作。由七段显示驱动模块、蜂鸣器驱动模块和按钮控制模块三部分组成,四个按键用于报时及校正时间。现代机关企业,特别是学校要求对时间加以控制,要按时打铃及播放广播,以保证学习与工作的正常运行。本设计实现了这些功能,给学校及其他机关企业带来方便,整体性好,人性化强、可靠性高,实现了对时间控制的智能化。

1.2本设计任务和主要内容:

(1)设计任务

2

单片机课程设计

用可编程器件为主体,设计并制作一台自动打铃系统。要求完成的作品必须固化软件,测试检查时上电即可工作,不允再用计算机下载。实现能够显示当前的时间,同时能够在规定的时间点控制打铃装置打出预期的铃声。另外增设四个按钮,通过分配以实现对时间的调整,包括对时钟、分钟的增加和减少,秒钟的清零;以及强制打铃和关闭打铃。 (2)主要内容

1、基本计时和显示功能(用12小时制显示)。包括上下午标志,时、分的数字显示,秒信号指示。

2、能设置当前时间(含上、下午,时,分) 3、能实现基本打铃功能,规定:

上午6:00起床铃:打铃5秒、停2秒、再打铃5秒。 下午10:30熄灯铃:打铃5秒、停2秒、再打铃5秒。 铃声可用小喇叭播放,凡是用到铃声功能的均按此处理。

第二章 系统主要硬件电路设计

2.1单片机总体设计思路

(1)设计能正常工作的一个单片机最小硬件系统,外围电路包括设置键盘,LCD或LED的显示屏;

(2)进行软件设计,利用单片机系统时钟先设计一个高精度的内部时钟系统,最小精确时间为期1秒;

(3)在秒计数器的基础上设计一个24小时时钟,并设计若干定时功能; (4)设计打铃执行机构,完成自动打铃功能。

2.2各功能模块程序实现原理分析

3

单片机课程设计

SETB 47H ;使用一个bit位用于产生脉冲用于调时快进时基 CLR CLR

45H ;关闭响铃方式1标志 44H ;关闭响铃方式2标志

MOV R1,#0 ;调整选择键功能标志:0正常走时、1调时、2调分、3调秒 MOV 20H,#00H ;用于控制秒基准时钟源的产生 MOV 21H,#00H ;清零秒寄存器 MOV 22H,#00H ;清零分寄存器 MOV 23H,#00H ;清零时寄存器

MOV 24H,#00H ;用于控制调时闪烁的基准时钟的产生 MOV R2,#00H ;强制打铃标志 MOV R3,#00H ;强制打铃时长标志

MOV IP,#02H ;IP,IE初始化 MOV IE,#82H

MOV TMOD,#01H ;设定定时器0工作方式1 MOV TH0,#3CH

MOV TL0,#0B0H ;赋定时初值,定时50ms SETB TR0 ;启动定时器0 MOV SP,#40H ;重设堆栈指针 ;/*****主程序*****/

MAIN:

CJNE R1,#00H,MAIN1 ;是否为正常走时状态 LCALL BIJIAO1 ;调用起床、熄灯打铃比较子程序 LCALL BIJIAO2 ;调用上、下课打铃比较子程序 LCALL DALING1 ;调用响铃方式1执行子程序 LCALL DALING2 ;调用响铃方式2执行子程序 LCALL DALING3

MAIN1:

LCALL DISPLAY ;调用显示子程序 LCALL KEY_SCAN ;调用按键检测子程序

14

单片机课程设计

JZ MAIN ;无键按下则返回重新循环 LCALL SET_KEY ;调用选择键处理子程序

JB 46H,MAIN ;如果已进行长按调整(调时快进),则不再执行下面的单步调整 LCALL ADD_KEY ;调用增加键处理子程序 LCALL DEC_KEY ;调用减少键处理子程序

LCALL DALING_KEY ;处理强制打铃/强制关闭铃声键 LJMP MAIN ;重新循环

;/*****定时中断服务程序*****/

TIMER_0:

PUSH ACC PUSH PSW ;保护现场 MOV TH0,#3CH

MOV TL0,#0B0H ;重新赋定时初值 CPL 47H ;产生脉冲用于调时快进时基 INC 24H

MOV A,24H

CJNE A,#10,ADD_TIME ;产生0.5秒基准时钟,用于调时闪烁 CPL 48H

;取反调时闪烁标志位

MOV 24H,#00H

ADD_TIME:

INC 20H MOV A,20H

CJNE A,#20,RETI1 ;产生1秒基准时钟 MOV 20H,#00H

;一秒钟时间到,清零20H

CJNE R2,#01H,ADD_M INC R3

ADD_M:

MOV A,21H ADD A,#01H DA A

;作十进制调整

15

单片机课程设计

MOV 21H,A

CJNE A,#60H,RETI1 MOV 21H,#00H MOV A,22H ADD A,#01H DA A MOV 22H,A

CJNE A,#60H,RETI1 MOV 22H,#00H MOV A,23H

;一分钟到

;一小时到

ADD A,#01H DA A MOV 23H,A CJNE A,#24H,RETI1

MOV 23H,#00H ;到24点,清零小时

RETI1:

POP PSW POP ACC ;恢复现场

RETI

;中断返回

;/*****显示处理*****/

DISPLAY:

MOV A,21H ;秒

ANL A,#0FH

MOV 2FH,A ;转换出秒个位,存入2FH

MOV A,21H

ANL A,#0F0H SWAP A

MOV 2EH,A ;转换出秒十位,存入2EH

JB 46H,MIN

;如果长按按键(调时快进),则跳过闪烁处理

;如果R1为3,闪烁秒位待调整

16

CJNE R1,#3,MIN

单片机课程设计

JB 48H,MIN

MOV 2FH,#0AH ;使该位为10,查表得到使该位不显示的输出

MOV 2EH,#0AH

MIN:

MOV A,22H ;分

ANL A,#0FH

MOV 2DH,A ;转换出分个位,存入2DH

MOV A,22H

ANL A,#0F0H SWAP A

MOV 2CH,A ;转换出分十位,存入2CH

JB 46H,HOUR

;如果长按按键(调时快进),则跳过闪烁处理

;如果R1为2,闪烁分位待调整

CJNE R1,#2,HOUR JB 48H,HOUR

MOV 2DH,#0AH ;使该位为10,查表得到使该位不显示的输出

MOV 2CH,#0AH

HOUR:

MOV A,23H ;时

ANL A,#0FH

MOV 2BH,A ;转换出时个位,存入2BH

MOV A,23H

ANL A,#0F0H SWAP A

MOV 2AH,A ;转换出时十位,存入2AH

JB 46H,DISP

;如果长按按键(调时快进),则跳过闪烁处理

;如果R1为1,闪烁时位待调整

CJNE R1,#1,DISP

JB 48H,DISP

MOV 2BH,#0AH ;使该位为10,查表得到使该位不显示的输出

MOV 2AH,#0AH ;/*****数码管动态扫描显示*****/

DISP:

17

单片机课程设计

MOV DPTR,#TABLE MOV A,2FH MOVC A,@A+DPTR MOV P0,A CLR P2.7 LCALL DELAY SETB P2.7 ;显示秒个位

MOV A,2EH

MOVC A,@A+DPTR MOV P0,A CLR P2.6 LCALL DELAY SETB P2.6 ;显示秒十位

MOV A,#40H

MOV P0,A CLR P2.5 LCALL DELAY SETB P2.5 ;显示“-”

MOV A,2DH

MOVC A,@A+DPTR MOV P0,A CLR P2.4 LCALL DELAY SETB P2.4 ;显示分个位

MOV A,2CH

MOVC A,@A+DPTR MOV P0,A CLR P2.3 LCALL DELAY SETB P2.3 ;显示分十位

MOV A,#40H

18

单片机课程设计

第六章 设计总结

完成自动打铃系统设计的设计我能综合运用电子技术课程中的所学到的理论知识来完成自动打铃机的设计和分析电路,学会了在虚拟的环境下创建电路,计算和调整参数,我能灵活的应用protel99se ,Keil uVision2软件画图,并且掌握了一定的单片片机知识,通过这门课的设计我还有以下几点收获:

1、有利于基础知识的掌握

通过这次设计我亲手做,自己思考,将理论知识上升到实践的高度,对以前学过的知识有了更深的了解,从而进一步打破了单片机的神秘面纱。

2、有利于逻辑思维的锻炼。

在实验前必须明白实验的目的,并要对使用的个原件的功能进行了解,例如:PNP\\NPN三极管的极性e、c、b,(NPN: VC>VB>VE)(PNP: VE>VB>VC)进行分析,在实验中是分析问题解决问题的能力的方法之一。即使见到陌生的程序,从任务分析,确定算法界面布局,缩写代码到调试运行,都能顺利完成。

整个过程需要我们有条理的构思,这之间有猜测设计,判断思维的抽象思维训练,又有分析问题解决问题,预测日标等能力的培养。

致谢

在本文的撰写过程中,导师曾红兵老师给予了悉心的指导和关心,使我克服了众多困难终于完成了设计的撰写工作。导师渊博的知识、严谨求实的治学态度及敬业精神,给我留下了深刻的印象,并将在我今后的人生道路上产生深远的影响,在此论文完成之际,谨向导师致以崇高的敬意和衷心的感谢! 再一次感谢所有关心我、帮助我的人

29

单片机课程设计

MOV P0,A CLR P2.2 LCALL DELAY SETB P2.2 ;显示“-”

MOV A,2BH

MOVC A,@A+DPTR MOV P0,A CLR P2.1 LCALL DELAY SETB P2.1 ;显示时个位

MOV DPTR,#TABLE1 ;该位使用TABLE1以消除前置0

MOV A,2AH

MOVC A,@A+DPTR MOV P0,A CLR P2.0 LCALL DELAY SETB P2.0 ;显示时十位

RET

;/*****按键检测子程序*****/

KEY_SCAN:

CLR 46H ;关闭长按调整(调时快进)标志

MOV P1,#0FFH MOV A,P1

;将P1口设置成输入状态

CPL A

ANL A,#0FH ;P1口低4位连接4个按键,只判断该4位

JZ EXIT_KEY

;无键按下则返回 ;延时去抖动

LCALL DELAY

MOV A,P1 ;重新判断

CPL A

ANL A,#0FH

19

单片机课程设计

JZ EXIT_KEY ;键盘去抖动

MOV R5,A

;临时将键值存入R5

;用于控制调时快进速度

MOV R4,#00H

;设置为00H是为了在进入长按处理前加长延时区分用户的长按与短按,防止误快进

LOOP: ;进入长按处理

LCALL DISPLAY ;使长按时显示正常

MOV A,P1

CPL A ANL A,#0FH JB 47H,LOOP1

INC R4 ;调时快进间隔时间基准加1 LOOP1:

CJNE R1,#03H,LOOP2 ;如果调秒时长按,则不处理

LJMP LOOP3

LOOP2:

CJNE R4,#99H,LOOP3

MOV R4,#70H SETB 46H

;确认用户长按后,重新设定起始值,加快调时快进速度

;长按调整(调时快进)标志

LCALL ADD_KEY

LCALL DEC_KEY LOOP3:

JNZ LOOP ;等待键释放

MOV A,R5 RET

;输出键值

EXIT_KEY: RET

;/*****延时子程序*****/

DELAY: MOV R7,#150 DJNZ R7,$

20

单片机课程设计

RET

;/*****选择键处理子程序*****/

SET_KEY:

CJNE R5,#01H,EXIT ;选择键键值

INC R1

;调整选择功能标志加一

SETB BEEP

CJNE R1,#4,EXIT MOV R1,#0

MOV 24H,#00H ;调时闪烁基准清零

RET

;/*****增加键处理子程序*****/

ADD_KEY:

CJNE R5,#02H,EXIT ;增加键键值

CJNE R1,#01H,NEXT1 ;选择键功能标志为1,调时,否则跳出 MOV A,23H

ADD A,#01H

DA A

MOV 23H,A CJNE A,#24H,EXIT MOV 23H,#00H NEXT1:

CJNE R1,#02H,NEXT2 ;选择键功能标志为2,调分,否则跳出

MOV A,22H

ADD A,#01H DA A MOV 22H,A CJNE A,#60H,EXIT MOV 22H,#00H NEXT2:

CJNE R1,#03H,EXIT ;选择键功能标志为3,调秒,否则跳出

21

单片机课程设计

MOV 21H,#00H RET

;如增加键按下直接清零秒

;/*****减少键处理子程序*****/

DEC_KEY:

CJNE R5,#04H,EXIT ;减少键键值

CJNE R1,#01H,NEXT3 ;选择键功能标志为1,调时,否则跳出 MOV A,23H

ADD A,#99H DA A MOV 23H,A CJNE A,#99H,EXIT MOV 23H,#23H NEXT3:

CJNE R1,#02H,NEXT4 ;选择键功能标志为2,调分,否则跳出

MOV A,22H

ADD A,#99H

DA A

MOV 22H,A CJNE A,#99H,EXIT MOV 22H,#59H NEXT4:

CJNE R1,#03H,EXIT ;选择键功能标志为3,调秒,否则跳出

MOV 21H,#00H

;如较少键按下直接清零秒

RET

;/*****强制响铃键处理子程序*****/

DALING_KEY:

CJNE R5,#08H,EXIT ;选择键键值

JNB 45H,LP1 CLR 45H

;判断是否正在响铃

RET

22

单片机课程设计

LP1:

JNB 44H,LP2 CLR 44H RET LP2:

MOV R2,#01H RET

;/*****万用返回程序*****/

EXIT: RET

;/*****数码管字形编码表*****/

TABLE:

DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H ;字形显示编码 TABLE1:

DB 00H,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H ;小时位的十位数编

码,该位如果为0则不显示

;/*****打铃时间对比程序(起床、熄灯)*****/

BIJIAO1: MOV A,23H CJNE A,#00H,B0 MOV A,22H

CJNE A,#01H,B0 ;6:00到

SETB 45H RET

;开启响铃方式1

B0: MOV A,23H CJNE A,#22H,EXIT_1 MOV A,22H

CJNE A,#30H,EXIT_1 ;22:30到

SETB 45H RET

;开启响铃方式1

23

本文来源:https://www.bwwdw.com/article/kdkv.html

Top