基于单片机的自动打铃系统及仿真.docx
- 文档编号:1347762
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:21
- 大小:391.65KB
基于单片机的自动打铃系统及仿真.docx
《基于单片机的自动打铃系统及仿真.docx》由会员分享,可在线阅读,更多相关《基于单片机的自动打铃系统及仿真.docx(21页珍藏版)》请在冰点文库上搜索。
基于单片机的自动打铃系统及仿真
摘要
在人们的日常生活中,控制系统已经走入了千家万户,对于学校生活来说,按时打铃提醒学生上下课是一件必不可少的事情,遗忘的打铃工作军都是依靠人为进行计时,按时打铃,第一打铃的时间并不精确,同时也浪费较多的人力,造成了很大的浪费,论文以此为切入点,结合已经学习的51单片机的知识,设计了一种自动打铃的自动化系统,改善了学校打铃工作的现状,节约了人力、物力、财力。
关键词:
定时打铃;DS1302时钟;LCD1602液晶显示
ABSTRACT
Withtheimprovementofsociallife,avarietyofautomaticcontrolsystemquicklyintopeople'slives,forschoollife,thebellontimetoremindstudentstoattendclassesisanessentialthing,forgottenbellworkThemilitaryreliesonman-madetiming,thebellontime,thefirstringingtimeisnotprecise,butalsoawasteofmoremanpower,resultinginagreatwasteofpaperasastartingpointforthedesignofa51-basedmicrocontrollerAutomaticschooltimelybellsystem,whileusingLCD1602LCDreal-timedisplaytimetoimprovethestatusofthebellwork.Improvetheautomationofthiswork.
Keywords:
timingbell;DS1302clock;LCD1602liquidcrystaldisplay
第1章绪论
1.1选题背景及研究意义
随着社会的发展和自动化水平的提高,各种物品都在向着自动化方向运行和进展,本片的论文也是如此,为了解决学校日常生活中的打铃问题,开展了自动打铃系统的研制毕业课程设计,充分发挥了所学知识,将其用于学生的日常生活中,方便了老师的同时也方便了学生的日常生活,基于当前已经有较多产品投入了日常的生活中去,论文将以一些常见的自动打铃产品为依托进行仿造设计,从而完成整体的毕业设计任务。
在学校中,无论是上课还是下课,都伴随着一阵阵轻盈的铃声,打铃器为老师和同学们提供时间的提醒,何时应当上课,和现实应该下课。
让学生和老师们自然而然的形成一个准时的生物钟。
对自身有着很大的好处,同时也可以轻轻的提醒一些喜爱拖课堂的老师及时的进行下课,以免耽误大家下一节课的上课时间,造成休息时间不足的情况。
因此,可以看出全自动打铃器的设计有着很强的实用性能。
打铃器的发展由来已久,历经了多年时间的发展,从最一开始的机械式打铃器开始,中国古代也有早晚鸣钟的习惯,公鸡的打铃也可以看做是自动打铃系统的一种。
对着电子领域的发展和各种控制算法的深入研究,大规模集成电路的发展使得自动化打铃的设计变得逐渐清晰了起来。
在四年的微电子课程的学习过程中,关于电路和软件方面的设计已经学习了很多。
因此在本次的毕业设计中,我也将将思念所学放在这一次的毕业设计中,使用基于51单片机的CPU来作为自动打铃系统的核心控制期间。
配套有电子计时电路、寄存器的控制和操作电路等等。
最后将各种不一样的电路整合在一起,形成一个完整成熟的自动打铃系统,完成最后的课程设计。
1.2课题设计的主要内容
本次而设计以51单片机为主,以此为核心设计自动打铃系统,其中主要的部件有以下几个:
计时芯片、蜂鸣器组件、最小系统,以此为主进行总体设计,集合打铃、计时为一体的系统,其中打铃系统以一个蜂鸣器做替代,即蜂鸣器发声代表铃声响起,时间到则铃声响。
而主要的电路设计则包括电路电路、复位电路、时间显示电路等等。
在下文中将会逐一进行介绍。
第2章方案的总体设计
2.1主控芯片的选择
实时时钟芯片显示年日期、时间、日、秒、分等信息的功能和其他各种多点定计时功能,其中计时功能按照和传统的电子钟表一致,每秒自动进行一次,不需程序自动进行干预。
同时利用芯片自带的中断和查询将时间日期信息传输到LCD显示屏幕中进行及时的显示。
所以在计时功能实现的过程中CPU的利用率较低。
同时在电子钟的能源方面使用清洁的锂电池作为整体的电源供电,必要时候可以采用充电宝,外界5V电源进行供电的方式进行总体的供电。
因此具有长期使用性能。
同时使用数字电路中,电子钟的成本进一步降低,CPU中自带的RAM也会保存相对应的一些数据,可以用来存放一些长期使用不需要变更的数据。
程序设计相对较为简单。
因此51单片机在工业生产中具有非常普遍的用途。
结构简单、经济实惠、功能全面、可靠性高、易于编写等诸多优点。
因此,论文选用STC89C52单片机作为主要的控制芯片,STC89C52单片机的主要特性如下:
表2-1STC89C52单片机的主要特点
主要特点
1
与MCS-51产品指令系统完全兼容
2
4K字节的在线编程Flash存储器,1000次擦写周期
3
4.0~5.5V的工作电压范围
4
全静态工作模式:
0~33MHz
5
三级程序存储器锁
6
128×8字节内部RAM
7
32个可编程I/O口线
8
2个16位定时/计数器
9
6个中断源
10
全双工串行UART通道
11
低功耗空闲和掉电模式
12
中断可从空闲模式唤醒系统
13
看门狗(WDT)及双数据指针
14
掉电标识和快速编程特性
15
具有掉电状态下的中断恢复功能
16
灵活的在系统编程(ISP字节或页写模式)
2.2显示模块
在毕业设计当中12864液晶显示当前的实时时间重要的阴阳历节日等功能。
12864液晶具有如下的特性:
(1)提供8位,4位并行接口及串行接口可选
(2)并行接口适配M6800时序
(3)自动电源启动复位功能
(4)内部自建振荡源
2.3时钟模块的选择
对于时钟芯片的选择,论文从多个方面进行考虑,其一是整体的功能方面,设计的电子钟需要多种功能,主要为时间计数和年月日的技术,同时具有闰年月的补偿功能。
因此对计时芯片的精度提出了很高的要求,因此论文选用DS1302芯片作为时钟芯片。
DS1302型时钟芯片具有精度高、价格便宜等优势,其工作电压2.5V~5.5V范围内,2.5V时耗电小于300nA。
第3章系统硬件设计
3.1各个主要模块功能介绍
3.1.1系统主要芯片和元器件的介绍及应用
本系统采用的是深圳宏晶科技公司生产的51单片机,首先对51单片机的内外部原理进行一下深入的研究,为下文打下基础。
主要为引脚部分的定义和主体功能的介绍。
(1).单片机的引脚功能
51单片机有40个引脚。
●Vcc:
电源电压+5V
●GND:
接地
●P0口:
所谓的P0接口对于单片机来说非常重要,P0口是一个单片机的双向I/O结构。
即所谓的输入输出接口。
I即是input,O即是output。
其中每一个I/O接口都可以驱动8个TTL逻辑电路,输入输出为1时为高电频,为0时可以视为低电频。
为了防止短路和较大电流多芯片的损坏,在接入电源时需要设计相对用的上拉电阻进行分压、分流,保证输入电流的安全。
●P1口:
P1口和P0口较为类似,也是一个双向I/O结构。
即所谓的输入输出接口。
I即是input,O即是output。
通过改变高电频和低电频来驱动整个接口,接口同时具有输入输出两种模式,通过高低电频来改变接口的输入输出模式。
P1口可以带动4个TTL逻辑门电路,同时仍然需要接入上拉电阻。
当程序处于校验期的时候,P1位需要接受低8位的地址。
●P2口:
P2口和P1、P0口也十分相似,但是P2口的上拉电阻不在外围电路中,P2口的上拉电阻位于芯片的内部。
也是一个双向I/O结构。
即所谓的输入输出接口。
I即是input,O即是output。
通过改变高电频和低电频来驱动整个接口,接口同时具有输入输出两种模式,对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
对端口写“0”,通过内部的上拉电阻把端口拉到高电平,此时可作输出口。
在访问一些外部地址时候。
P2口同时需要输入输出各种地址数据。
将数据输入到外部的数据储存器中。
●P3口:
P3口的上拉电阻位于芯片的内部。
也是一个双向I/O结构。
即所谓的输入输出接口。
I即是input,O即是output。
通过改变高电频和低电频来驱动整个接口,接口同时具有输入输出两种模式,对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
对端口写“0”,通过内部的上拉电阻把端口拉到高电平,此时可作输出口。
更重要的用途是它的第二功能,见表-1所示:
P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。
表3-1P3口的第二功能图
端口引脚
第二功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
INT0(外中断0)
P3.3
INT1(外中断1)
P3.4
T0(定时/计时器0外部输入)
P3.5
T1(定时/计时器1外部输入)
P3.6
WR(外部数据存储器写选通)
P3.7
RD(外部数据存储器读选通)
●RST:
RST即是常规的复位输出按钮,即英文中的reset意思。
当复位按钮被激活后。
复位按钮将会输出两个周期以上的高电频,这些高电频将会使得单片机进行复位操作。
同时,设置SFRAUXR的DISRT0(地址8EH)功能后,可以有效的防止复位功能的误触发,使得整个电路更加的安全。
而当关闭这项功能后,reset功能将会被重新激活。
使得电路进入复位模式。
●ALE/PROG:
ALE的功能是地址锁存器,通过改变高低电平来改变地址锁存器的输入输出脉冲。
当外部信号需要访问的时候。
ALE将会以特定的震荡频率进行震荡。
进行输入输出和传递数据。
如有必要,可通过多特殊功能寄存器(SFR)区中的8EH单元的D0位置,可禁止ALE操作。
该位置后,只有一条MOVX和MOVC指令ALE才会被激活。
另外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。
●PSEN:
PSEN的功能是程序储存允许,顾名思义是对储存进行干涉的作用,当外部程序存储器需要进行取指令或者出指令操作时。
PSEN将会输出高电平表示允许指令进行操作。
进而允许程序储存操作。
●EA/VPP:
EA/VPP的作用是对CPU进行把关,对于想要访问CPU的外部储存器进行身份的甄别。
同时当reset按钮被激活时,则EA端就会被锁定,无法直接激动。
当EA被置于高电平的时候。
CPU将会直接执行内部存储器里面的命令。
●XTAL1:
振荡器反相放大器及内部时钟发生器的输入端。
●XTAL2:
振荡器反相放大器的输出端。
AT89C51单片机内部结构
(2).STC89C51单片机与MCS-51完全兼容
●看门狗(WDT):
看门狗的意思是watchdog,和日常生活中家门口的看门狗的功能相似。
是一种靠软件控制的reset方式。
他是有计数器和看门狗定时器存储器合起来构成的。
在通常情况下,看门狗一直处于一种休眠状态。
只有当用户手动激活看门狗程序才会让看门狗处于使能状态,从而看门狗开始工作。
●在整个系统中,串口UART的操作何在别的51单片机以及其他单片机中的操作方式一样,分别介于同步通信和异步通信之间。
具有传统意义上的双工功能。
在本位所使用的串口通信也不例外。
在电子钟的设计谷草衡中,需要CPU进行同时的输入输出数据的交流。
因此串口内的接收器采用的是双缓冲结构。
能够同时接收两个字节的数据。
不会导致数据的丢失和失真。
在利用UART进行数据的传输的过程中时候。
需要使用特殊的功能寄存器,即SBUF进行。
在SBUF的内部,分别有两个不同的寄存器,达到了双工的功能,也就是说,当CPU对SBUF进行读写的过程中,分别实在访问不同的寄存器。
保证互不干扰,实现了输入输出的同时进行。
●振荡电路:
51单片机系列的震荡电路由一个单机反相器组成,英雌可以在其中产生出时钟信号,只需要将上文中提到的XTAL1和XTAL2引脚上一个晶体及电容组成的并联谐振电路,就可以完成整个信号震荡器的搭建。
以一种较为平常的方式提供一个外部时钟源。
这种时钟电路具有较多的优点,例如经济实惠、可靠性高、应用广泛等多种优点。
●定时/计数器:
STC89C51单片机的组成里面也含有多个定时器和计数器,当定时器工作时,程序每执行一个周期则就会加1,从而起到技术的功效,通常情况下,一个程序执行的周期里面包含有12个振荡周期,多以晶振的频率一般都设为这个频率的十二分之一。
同时定时器的作用则是在一个固定的时间里面进行中断,保证程序的安全平稳运行,通常情况下,定时器和计数器都是一个16位的计数器,而每一个计数器则又包含高字节和低字节两个部分,每一个部分都有着十分重要的作用。
●RAM:
RAM的作用是用来存储数据,也就是所谓的数据存储器,通常情况下RAM都是8位的。
每一个地址都将对应一个储存空间,和日常生活中的门牌号类似,通过寻找门牌号对应挨家挨户,硬件也是靠寻找地址来对应储存空间中的数据。
一般情况下RAM的地址空间只有256字节,但是寻址却可以寻找到384个字节数。
这大大的提高了RAM的运行效率和存储效率,为之后的写入程序和读取程序以及程序的执行都提供了很多的方便。
●中断系统:
中断系统顾名思义,在程序运行中起到的是中断作用,在需要中断的时候进行中断、保证程序的正常执行,他是由一些中断寄存器、优先级结构和一些逻辑门电路组成的。
优先级用于判断中断的优先顺序。
逻辑门电路用于响应各种中断的请求。
在整个中断响应过程中CPU所执行的操作步骤如下:
3.1.2DS1302时钟模块介绍
DS1302时钟芯片是由美国的一家公司进行设计和制造,具有多种的优点,例如结构简单、造价较为低廉、同时具有精度高、效果好等各种优点,在计时方面,DS1302芯片可以喝CPU芯片,即51单片机芯片紧密的进行通信,准确的提供分、秒、时等多方面的信息,工作打压一度可以达到5V左右。
同时DS1302芯片的引脚构造较为简单。
主要引脚构造如下图所示。
Ds1302主要的性能:
a.对年、月、日、周、日、时、分、秒进行计时,且具有闰年补偿等多种功能。
b.318位暂存数据存储RAM
c.串行I/O口方式使得管脚数量最少
d.宽范围工作电压2.05.5V
e.工作电流2.0V时,小于300nA
f.读/写时钟或RAM数据时有两种传送方式单字节传送和多字节传送字符组方式
g.8脚DIP封装或可选的8脚SOIC封装根据表面装配
h.简单3线接口
j.与TTL兼容Vcc=5V
k.可选工业级温度范围-40+85
l.与DS1202兼容
m在DS1202基础上增加的特性对Vcc1有可选的涓流充电能力,双电源管用于主电源和备份电源供应,备份电源管脚可由电池或大容量电容输入附加的7字节暂存存储器。
DS1302时钟模块设计电路如图3.2所示。
图3.2DS1302时钟模块设计电路图
3.1.3LCD液晶显示模块介绍
在本电子时钟当中12864液晶显示当前的实时时间重要的阴阳历节日等功能。
12864液晶具有如下的特性:
(1)提供8位,4位并行接口及串行接口可选
(2)并行接口适配M6800时序
(3)自动电源启动复位功能
(4)内部自建振荡源
64×16位字符显示RAM(DDRAM最多16字符×4行,LCD显示范围16×2行)(改为半角输入)
2M位中文字型ROM(CGROM),总共提供8192个中文字型(16×16点阵)16K位半宽字型ROM(HCGROM),总共提供126个西文字型(16×8点阵)
64×16位字符产生RAM(CGRAM)
15×16位总共240点的ICONRAM(ICONRAM)
读操作时序图如图3.3所示;写操作时序图如图3.4所示;12864液晶显示系统实际应用电路如图3.5所示。
图3.3读操作时序
图3.4写操作时序
图3.512864液晶显示器实际应用电路图
3.1.4蜂鸣器模块
系统蜂鸣器的工作原理如下:
当图中右侧的三极管的集电极处于高电平的情况下,那么对于蜂鸣器而言,整体就将处于高电平的阶段,此时蜂鸣器就将发出声音,而当集电极处于低电平的情况时候。
当单片机端口输出高电平时,三极管B极处于高电平,三极管不导通,蜂鸣器不响。
当单片机端口输出低电平时,三极管B极处于低电平,三极管导通,蜂鸣器鸣响。
在本系统中如果要运用到实际中的话本来是要把单片机端口P3.4口接上继电器再控制220V电源的电铃的,但由于各种原因,在这次设计中我是用蜂鸣器来显示出打铃的效果的,蜂鸣器与单片机的连接图如图3.6所示。
图3.6蜂鸣器连接图
3.2单片机最小系统的设计
3.2.1时钟脉冲电路
80C51单片机有一个用于构成内部振荡器的反相放大器,XTAL1和XTAL2分别是放大器的输入、输出端。
石英晶体和陶瓷谐振器都可以用来一起构成自激振荡器,晶振电路如图3.7所示。
图3.7晶振电路
石英晶振(利用12MHZ晶振)C1,C2=30PF。
陶瓷谐振器C1,C2=40PF。
XTAL1:
振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2:
振荡器反相放大器的输出端。
3.2.2复位电路
80C51的复位引脚(RESET)是第9脚,当此引脚连接高电平超过2个机器周期,即可产生复位的动作。
以12MHz的时钟脉冲为例,每个时钟脉冲为1μS,两个机器周期为2µS,因此,在第9脚上连接一个2μS的高电平脉冲,即可产生复位动作。
最简单的就是只有一个电阻跟一个电容就可组成一个可靠复位的电路,电阻一般选择10K,电容一般选择10µF,复杂一点的就加个按键,可以进行手动复位。
复位电路如图3.8所示。
图3.8复位电路
3.3硬件设计总图
图3.9硬件设计总图
第4章软件程序设计
4.1软件程序整体设计
单片机校园打铃控制系统的主控程序采用循环调用显示、键盘处理程序、电铃判断子程序,控制子程序。
显示子程序将最新的时、分、秒的数据在液晶上显示。
在主控程序循环中主要的工作就是扫描是否有按键,若有按键按下则应做相应的功能处理,转入相应的程序,执行相应的功能。
判断子程序检查当前时间是否相等,如果相等,就执行相应程序,根据设计要求画出程序主流程图。
4.1.1程序流程图
图4.1程序流程图
4.2程序模块设计
4.2.1DS1302时钟显示与调节程序设计
/*************************读地址中的数据*******************/
ucharread_ds1302(ucharadd)//读地址中的数据
{
uchari,value;
rst=0;
_nop_();
sck=0;
_nop_();
rst=1;
_nop_();
write_ds1302_byte(add);//写单字节地址
for(i=0;i<8;i++)//读一帧数据
{
value=value>>1;
sck=0;//开始读数据
if(io==1)//if(io)
value=value|0x80;
sck=1;
}
rst=0;
_nop_();
sck=0;
_nop_();
sck=1;
io=1;
returnvalue;
}
/**********************写地址和数据*****************************/
voidset_rst(void)//写地址和数据
{
uchari,j;
for(i=0;i<7;i++)
{
j=time_data[i]/10;
time_data[i]=time_data[i]%10;
time_data[i]=time_data[i]+j*16;
}
write_ds1302(0x8e,0x00);//去除写保护
for(i=0;i<7;i++)
{
write_ds1302(write_add[i],time_data[i]);
}
write_ds1302(0x8e,0x00);//加上写保护
}
4.2.2LCD1602显示程序设计
/************************写命令函数*****************************/
voidwrite_com(ucharcom)//写命令
{
rs=0;//把rs拉低,写命令
rw=0;
lcden=0;//把使能拉低
P2=com;//把指令给P0口
delay(5);
lcden=1;//拉高使能端
delay(5);
lcden=0;//拉低使能端
}
/**********************写数据函数******************************/
voidwrite_date(uchardate)//写数据
{
rs=1;//把rs拉高。
写数据
rw=0;
lcden=0;//把使能拉低
P2=date;//把数据给P0口
delay(5);
lcden=1;//拉高使能端
delay(5);
lcden=0;//拉低使能端
}
/***********************初始函数*****************************/
voidlcd1602_init(void)//初始化
{
rw=0;
lcden=0;//把使能拉低
write_com(0x38);//显示设置
write_com(0x0c);//不显示光标
write_com(0x06);//显示光标移动设置(右移)
write_com(0x01);//显示器清零
}
4.2.3蜂鸣器程序设计
/*************************蜂鸣器发声******************/
voidtimer1()interrupt1
{
TH0=yin[2*line];
TL0=yin[2*line+1];
speaker=!
speaker;
}
第5章系统仿真
5.1proteus软件简介
本次仿真使用的proteus软件是一款专门用于单片机等微电子电路仿真的软件。
他来自于英国的LabCenterElectronics公司。
目前在中国有一些公司负责代理销售工作。
这款软件的优点很多,不仅仅能够绘制电路的原理图,同时也能对设计的电路进行仿真。
验证电路设计过程中有没有错误,错误的话会给出错误原因并报错。
同时也可以进行功能仿真,验证电路是否能够有完成指定工作的能力。
同时proteus也支持一键切入到PCB的绘制。
直接将设计的电路图转换成PCB文件。
真正的实现了从理论到工程的实践过程。
支持从AVR单片
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 自动 打铃 系统 仿真