基于单片机控制的电铃控制器.docx
- 文档编号:14090369
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:25
- 大小:76.59KB
基于单片机控制的电铃控制器.docx
《基于单片机控制的电铃控制器.docx》由会员分享,可在线阅读,更多相关《基于单片机控制的电铃控制器.docx(25页珍藏版)》请在冰点文库上搜索。
基于单片机控制的电铃控制器
基于单片机控制的电铃控制器
一.设计要求
(一)基本功能
1.显示:
可以显示星期、时、分和秒
2.打铃:
每天可设置20次,打铃持续时间每次1-90秒可调,每次打铃的间隔时间1-99分钟可调.
3.铃声:
内置蜂鸣器可以发出监控声音
(二)性能:
时间日误差<1.5秒
(三)扩展功能:
1.可设定单/双休息日不打铃
2.随季节变化,每天自动调整开与关的时间
1引言……………………………………………………………………………………1
2总体设计方案…………………………………………………………………………1
2.1设计思路…………………………………………………………………………1
2.2总体设计框图……………………………………………………………………1
2.3设计方案…………………………………………………………………………1
3设计原理分析…………………………………………………………………………2
3.1按键功能…………………………………………………………………………2
3.2状态指示…………………………………………………………………………2
3.3打铃控制…………………………………………………………………………2
3.4电路原理图………………………………………………………………………2
4程序流程框图…………………………………………………………………………3
4.1总体程序流程图…………………………………………………………………3
4.2主程序流程图……………………………………………………………………3
4.3校时程序流程图…………………………………………………………………4
4.4时钟打铃程序流程图……………………………………………………………4
5心得与体会……………………………………………………………………………5参考文献…………………………………………………………………………………5
附录………………………………………………………………………………………6
基于单片机控制的电铃控制器
摘要:
该设计介绍了一种以AT89c51单片机为核心,以七段数码管显示星期、时、分和秒,发光二极管作为指示灯标志及按键较时、定时的自动打铃器。
关键词:
单片机电铃自动数码管
1引言
基于目前传统电铃噪音大,声音刺耳,不符合人们追求绿色环保的要求,我们采用89c51单片机设计了一套自动打铃系统。
单片机(Single-ChipMicrocomputerSCM)技术的应用,不但降低了生产成本,同时也方便了消费者,使操作简洁、安全。
单片机的应用使许多复杂的事情,都能够简单、方便的实现了。
用单片机控制的自动打铃器,充分发挥单片机体积小,价格便宜,功耗低,可靠性好等特点,充分发挥了单片机的控制优势。
本打铃器可用于作息时间控制,方便了广大师生。
2总体设计方案:
2.1设计思路
利用单片机及其定时器设计的一个时钟,在每次毫秒加1的计时过程中,都与设定的打铃时间作比较,如果相等就输出打铃信号,不等则返回。
如此反复运行。
2.2总体设计框图
图1总体设计框图
2.3设计方案
根据设计任务的基本要求,设计了由单片机(AT89S51)作为主控器件,七段数码管作为显示电路,七个按键组成的按键操作电路,七个发光二极管组成的状态指示电路,以及三极管、蜂鸣器组成的报警提示电路和继电器组成的打铃信号输出电路构成的自动打铃器。
除了以上的硬件电路外,还充分利用软件、硬件相结合,充分发挥单片机设计的优势。
使设计更具特色。
系统可分成三部分,即时钟电路、时间显示电路、控制电路,而时钟电路起控制主导作用。
时钟电路的构成由单片机及其定时器完成,时间显示电路则由单片机串口输出,送到外部集成芯片74LS164,最后由七段数码管显示出来。
控制电路主要控制着复位电路、校时以及设置打铃点等操作,并配以状态指示电路辅助操作。
3设计原理分析:
3.1按键功能
初步设计了由六个按键来完成所有的操作,它们的功能分别是:
复位键、设置键、存储键、加一键、减一键、确认键,具体操作方法由软件设计为菜单式操作,使所有的操作更加的简洁,方便。
3.2状态指示
状态指示电路由硬件部分(六个发光二极管),结合软件使操作状态一目了然。
第一个发光二极管亮时候,表明当前状态为时间显示;第二个发光二极管亮时候,表明此状态为时间调整状态;第三个发光二极管亮时候,表明此状态为时间加一状态;第四个发光二极管亮时候,表明此状态为时间减一状态;第五个发光二极管亮时候,表明此状态为定时时间设定存储状态。
3.3打铃控制
比较所存储的打零时间点,到打铃时间时进行打铃。
3.4电路原理图
图2总体电路图
图2中,S1为确认键,S2为设置键,S3为加一键,S4为减一键,S5为存储键,S7为复位键。
当S2按下时L2亮,S3按下时L3亮,S4按下时L4亮,S5按下时L5亮。
L1为正常运行指示。
S5,L6暂无使用。
蜂鸣器在每个操作时给予报警提示。
继电器电路作为打铃信号输出电路,对外提供打铃信号。
4程序流程框图
4.1总体程序流程图
根据硬件设计结果,为满足要求,程序应有主程序、按键处理程序、中断服务程序和显示程序等部分构成。
主程序中主要是程序各部分的初始化;按键处理程序处理五个按键的操作,包括各个按键的响应程序以及按键指示、闪烁指示、报警输出等;显示程序显示星期、时、分、秒,主要是时钟显示。
图3总体程序流程图
4.2主程序流程图
该部分程序主要是对程序中所用到的数据单元进行初始化,以及定时器的赋初值。
图4主程序流程图
4.3校时程序流程图
该部分的键盘扫描为程序扫描方式,CPU不停的对P1口进行扫描,当任何一个键按下时,与之相连的输入数据线即被清0(低电平),而平时该线为1(高电平)。
这种键盘扫描方式的优点是电路简单:
缺点是当键数较多时,要占用较多的I/O线。
由于按键的机械特性,在闭合及断开的瞬间均伴随有一连串的抖动,键抖动会引起一次按键被误读多次。
为了确保CPU对键的一次闭合仅作一次处理,必须去除键抖动。
该程序使用10ms延时程序作为去抖动程序去除键抖动。
图5校时程序流程图
4.4时钟打铃程序流程图
时钟打铃程序使用单片机T0、T1两个定时器中断,两个定时器均为方式一,初值为10ms,当定时器T0溢出时响应中断,使毫秒单元加1,当毫秒单元满100时分单元加1,依此类推。
当定时器T1溢出时响应中断,依次比较存储的打铃点,条件符合就输出打铃信号。
中断均需保护现场,返回时恢复现场。
图6时钟打铃中断程序流程图
5心得与体会:
周一老师布置了课程设计的任务,老师没有像其他小组一样好几个人做一个题目,而是让我们小组每人做一个题目,这给了我们足够的空间,我们可以按照自己的想法去做,做自己感兴趣的东西。
我几经周折最终选择做一个单片机控制的电铃,电铃可以按照我在程序中设定的时间自动打铃。
开始就是上网查资料,去图书馆找有关方面的书籍,东拼西凑。
周三才把程序和电路图做好。
在上机调试的时候遇到了很大的麻烦,程序运行没有错误,就是连接电路时发现我用到的芯片实验台上都没有,我又找其他芯片代替,可没有找到合适,以至于调试不成功。
总之在这一周的课程设计中,我学到了很多课堂上学不到的东西,也深刻的体验到了实践的重要性。
只学习理论而不实践,那理论就是一具空壳。
只有实践才能检验自己所学的理论知识。
实践的好处就在于能帮助你去更好地理解理论知识,平时课堂上不理解的东西,在实践的过程中就能很好的理解。
虽然这次课程设计上机调试没有成功,但是我自己毕竟努力做了。
参考文献:
[1] 周航慈.单片机应用程序设计基础[M].北京:
电子工业出版社,1997年7月
[2] 朱承高.电工及电子技术手册[M].北京:
高等教育出版社,1990
[3] 阎石.数字电子技术基础(第三版)[M].北京:
高等教育出版社,1989
[4] 廖常初.现场总线概述[J].电工技术,1999.6
[5]李朝青.单片机原理及接口技术(第三版)[M].北京;北京航空航天大学出版社,2005年10月
附录
1程序分为五部分:
1.初始化程序,2.键值处理程序,3.中断程序,4.显示程序,5.延时程序
2程序清单:
ORG0000H
LJMPMAIN
ORG000BH
LJMPTOINT
ORG001BH
LJMPDLBJ
;**********主程序**********
ORG30H
MAIN:
MOVIE,#8AH;开T0,T1中断
MOVTMOD,#11H;定时器方式1
MOVTH0,#0D8H
MOVTL0,#0F0H;初值
MOVA,#0
MOV59H,A
MOV60H,A
MOV61H,A
MOV62H,A
MOV63H,A
MOV64H,A
MOV65H,A
MOV66H,A;清零
m_secEQU20H;毫秒单元
secEQU21H;秒单元
minEQU22H;分单元
hourEQU23H;时单元
weekEQU24H;星期单元
SETBTR0
SETBTR1
CLRP1.0
CLRA
MOVR0,A
MOVR1,A
MOVR2,A
MOVR3,A
MOVR5,A
MOVR6,A
MOVR7,A
MOVms,#00;毫秒单元清零
MOVsec,#00;秒单元清零
MOVmin,#00;分单元清零
MOVhour,#00;时单元清零
MOVweek,#00;星期单元清零
MOV70H,A
MOV71H,A
MOV72H,A
MOV73H,A
MOV74H,A
LCALLXS;调用显示程序
;************************************************
;*****************数字钟按键程序*****************
;************************************************
;**********调时钟按键**********
NET1:
JBP0.0,NET2
LCALLYS10MS
JBP0.0,NET2
CLRp2.2
JNBP0.0,$
SETBp2.2
CLRP1.1
SETBP1.0
SETBTR0;开中断
SETBTR1
CLRP1.0;正常运行
SETBP1.1
SETBP1.2
SETBP1.3
MOV59H,#00
MOVR7,#00
****************调整时间部分切换键********************
NET2:
MOVA,59H
CJNEA,#00,NET3
JBP0.1,NET9;数字钟调整时间部分切换键
LCALLYS10Ms
JBP0.1,NET9
CLRp2.2
INC59H
JNBP0.1,$
SETBp2.2
INCR7
CLRTR0
CLRTR1
SJMPNET4
NET3:
JBP0.1,NET4
LCALLYS10ms
JBP0.1,NET4
CLRp2.2
INC59H
JNBP0.1,$
SETBp2.2
INCR7
NET4:
CJNER7,#1,NET5
LCALLSSH;秒闪烁
SJMPNET9
NET5:
CJNER7,#2,NET6
LCALLMSH;分闪烁
SJMPNET9
NET6:
CJNER7,#3,NET7
LCALLHSH;时闪烁
SJMPNET9
NET7:
MOVR7,#0
LCALLWSH;星期闪烁
SJMPNET9
NET8:
LCALLXS
;******************调整时间加1键*****************
NET9:
JBP0.2,NET115;数字钟调整时间键
LCALLYS10ms
JBP0.2,NET13
CLRp2.2
CLRP1.2
CJNER7,#1,NET10
SETBp2.2
SETBP1.3
LCALLYS200ms
INCsec;秒单元加1
MOVA,sec
CJNEA,#60,NET8;不等60时跳转显示,等60时将秒单元清零
MOVsec,#00
LCALLXS
JBP0.2,NET13
LJMPNET9
NET115:
LJMPNET15
NET10:
CJNER7,#2,NET11
SETBp2.2
SETBP1.3
LCALLYS200ms
INCmin;分单元加1
MOVA,min
CJNEA,#60,NET8;不等60时跳转显示,等60时将分单元清零
MOVmin,#00
LCALLXS
JBP0.2,NET13
LJMPNET9
NET11:
CJNER7,#3,NET12
SETBp2.2
SETBP1.3
LCALLYS200ms
INChour;时单元加1
MOVA,hour
CJNEA,#24,NET8;不等24时跳转显示,等24时将时单元清零
MOVhour,#00
LCALLXS
JBP0.2,NET13
LJMPNET9
NET12:
SETBp2.2
SETBP1.3
LCALLYS200ms
INCweek;星期单元加1
MOVA,week
CJNEA,#08,NET8;不等7时跳转显示,等7时将星期单元清零
MOVweek,#01
LCALLXS
JNBP0.2,NET13
LJMPNET9
NET13:
SJMPNET15
NET14:
LCALLXS
****************调整时间减1键**********************
NET15:
JBP0.3,NET19;数字钟调整时间键
LCALLYS10ms
JBP0.3,NET19
CLRP2.2
CLRP1.3
CJNER7,#1,NET16
SETBP2.2
SETBP1.2
LCALLYS200ms
DECsec;秒单元减1
MOVA,sec
CJNEA,#0FFH,NET14;不等60时跳转显示,等60时将秒单元清零
MOVsec,#59
LCALLNET14
JBP0.3,NET19
LJMPNET15
NET16:
CJNER7,#2,NET17
SETBP2.2
SETBP1.2
LCALLYS200ms
DECmin;分单元减1
MOVA,min
CJNEA,#0FFH,NET14;不等60时跳转显示,等60时将分单元清零
MOVmin,#59
LCALLNET14
JBP0.3,NET19
LJMPNET15
NET17:
CJNER7,#3,NET18
SETBP2.2
SETBP1.2
LCALLYS200ms
DEChour;时单元减1
MOVA,hour
CJNEA,#0FFH,NET14;不等24时跳转显示,等24时将时单元清零
MOVhour,#23
LCALLNET14
JBP0.3,NET19
LJMPNET15
NET18:
SETBP2.2
SETBP1.2
LCALLYS200ms
DECweek;星期单元减1
MOVA,week
CJNEA,#00,NET14;不等7时跳转显示,等7时将星期单元清1
MOVweek,#07
LCALLNET14
JBP0.3,NET19
LJMPNET15
NET19:
LJMPDSH
********************定时程序*********************
DSH:
MOVR2,#00
JBP0.4,NT11
LCALLYS10ms
JBP0.4,NT11
CLRP2.2
CLRP1.4
JNBP0.4,$
SETBP2.2
INCR2
CJNER2,#01,NTA;第1个打铃点
MOVR1,#30H
LCALLCUN
NT11:
LJMPNT1
NTA:
CJNER2,#02,NTB;第2个打铃点
LCALLCUN
NTB:
CJNER2,#03,NTC;第3个打铃点
LCALLCUN
NTC:
CJNER2,#04,NTD;第4个打铃点
LCALLCUN
NTD:
CJNER2,#05,NTE;第5个打铃点
LCALLCUN
NTE:
CJNER2,#06,NTF;第6个打铃点
LCALLCUN
NTF:
CJNER2,#07,NTG;第7个打铃点
LCALLCUN
NTG:
CJNER2,#08,NTH;第8个打铃点
LCALLCUN
NTH:
CJNER2,#09,NTI;第9个打铃点
LCALLCUN
NTI:
CJNER2,#10,NTJ;第10个打铃点
LCALLCUN
NTJ:
CJNER2,#11,NTK;第11个打铃点
LCALLCUN
NTK:
CJNER2,#12,NTL;第12个打铃点
LCALLCUN
NTL:
CJNER2,#13,NTM;第13个打铃点
LCALLCUN
NTM:
CJNER2,#14,NTN;第14个打铃点
LCALLCUN
NTN:
CJNER2,#15,NTO;第15个打铃点
LCALLCUN
NTO:
CJNER2,#16,NTP;第16个打铃点
LCALLCUN
NTP:
CJNER2,#17,NTQ;第17个打铃点
LCALLCUN
NTQ:
CJNER2,#18,NTR;第18个打铃点
LCALLCUN
NTR:
CJNER2,#19,NTS;第19个打铃点
LCALLCUN
NTS:
CJNER2,#20,NT1;第20个打铃点
LCALLCUN
NT1:
LJMPNET1
;****************打铃点存储子程序********************
CUN:
MOV@R1,hour
INCR1
MOV@R1,min
INCR1
;********************时钟中断程序*********************
TOINT:
PUSHPSW
PUSHACC;保护现场
MOVTH0,#0D8H
MOVTL0,#0F0H;重新赋计数初值
INCms;毫秒单元加1
MOVA,ms
CJNEA,#100,NEXT1
MOVms,#00
INCsec;秒单元加1
MOVA,sec
CJNEA,#60,NEXT1
MOVsec,#00
INCmin;
MOVA,min
CJNEA,#60,NEXT1
MOVmin,#00
INChour;
MOVA,hour
CJNEA,#24,NEXT1
MOVhour,#00
INCweek
MOVA,week
CJNEA,#08,NEXT1
MOVweek,#01
NEXT1:
LCALLXS
POPACC
POPPSW;恢复现场
RETI;中断返回
;********************打铃中断程序*********************
DLBJ:
PUSHPSW
PUSHACC
MOVTH0,#0D8H
MOVTL0,#0F0H
MOVR0,#30H
FH:
MOVA,@R0
CJNEA,hour,LOP1
INCR0
MOVA,@R0
CJNEA,min,LOP2
CLRP2.2
CLRP1.4;铃声响
LCALLYS1min;延时1分钟
SETBP2.2
SETBP1.4;铃声停
CLRA
MOV7FH,A
AJMPLOP2
LOP1:
INCR0
LOP2:
INCR0
CJNER0,#58H,FH
LOP3:
LCALLXS
POPPSW
POPACC
RETI
;********************数字钟显示程序******************
XS:
MOVA,sec;将秒送A
MOVB,#10
DIVAB
MOV60H,B;秒的个位
MOV61H,A;秒的十位
MOVA,min;将分送A
MOVB,#10
DIVAB
MOV62H,B;分的个位
MOV63H,A;分的十位
MOVA,hour;将时送A
MOVB,#10
DIVAB
MOV64H,B;时的个位
MOV65H,A;时的十位
MOVA,week;星期的送A
MOVB,#10
DIVAB
MOV66H,B;星期的个位
LCP:
MOVR1,#60H
MOVR5,#7
MOVDPTR,#TAB
BK:
MOVA,@R1
MOVCA,@A+DPTR
MOVSBUF,A
JNBTI,$
CLRTI
INCR1
DJNZR5,BK
RET
TAB:
DB11H,0D7H,32H,92H,0D4H,98H,18H,0D3H,10H,90H
;*******************延时10ms子程序******************
YS10ms:
MOVR2,#10H
TS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 控制 电铃 控制器