基于51单片机的电子万年历与温度检测报警系统.docx
- 文档编号:10527632
- 上传时间:2023-02-21
- 格式:DOCX
- 页数:46
- 大小:1.61MB
基于51单片机的电子万年历与温度检测报警系统.docx
《基于51单片机的电子万年历与温度检测报警系统.docx》由会员分享,可在线阅读,更多相关《基于51单片机的电子万年历与温度检测报警系统.docx(46页珍藏版)》请在冰豆网上搜索。
基于51单片机的电子万年历与温度检测报警系统
序号:
编码:
重庆理工大学
第十八届“开拓杯”学生课外学术科技作品竞赛
参赛作品
作品名称:
基于单片机的万年历与温度检测报警系统
作品类别:
B
类别:
A自然科学类学术论文
B科技发明制作
C哲学社会科学类学术论文与社会调查报告
目录
摘要·······················································1
一、设计要求与方案论证
1.1设计要求···········································2
1.2系统方案选择和论证·································2
1.3电路最终方案确定···································4
二、电子万年历与温度采集报警硬件设计和实现
2.1系统设计···········································4
2.1.1系统设计框图································4
2.1.2系统硬件需求介绍·····························4
2.2系统硬件各模块作用·································5
2.2.1单片机核心控制模块···························5
2.2.2实时时钟电路模块·····························6
2.2.3数字温度传感器模块···························13
2.2.4液晶显示电路模块·····························17
2.2.5蜂鸣器电路模块(2个)··························22
2.2.6USB和外部电源供电模块························23
2.3系统电路图设计·······································23
2.3.1系统电路原理框图和原理图······················23
三、软件设计与分析
3.1系统软件流程图·······································25
3.1.1DS12C87程序流程图······························25
3.1.2DS18B20程序流程图·······························26
3.1.3键盘扫描程序流程图······························27
3.1.4主程序流程图····································28
四、系统测试
4.1测试工具·············································29
4.2软件测试·············································29
4.3硬件测试·············································30
五、设计总结和心得
4.1设计总结与心得·······································31
参考文献·····················································32
附录一:
程序清单·············································33
附录三:
实物图片·············································48
基于单片机的万年历与温度检测报警系统
摘要
随着社会发展需求的改变,电子万年历是一个应用非常广泛的实用日常计时工具,带有显示世纪,年,月,日,星期,时,分,秒和按键可调时间及其按键设置闹钟的功能,同时具有月末自动更新,闰年补偿功能等多种功能。
温度检测报警系统也是在日常生活和工业应用非常广泛的工具,能实时采集周围的温度信息进行显示,程序内部设定有报警上下限,根据应用环境不同可设定不同的报警上下限。
此系统是基于STC89C52单片机设计的,包含液晶显示模块,DS12C887实时时钟模块,DS18B20温度采集模块,键盘扫描模块,报警模块。
STC89C52作为控制核心,具有功耗低,功能强等特点,电压可选3到5V电源供电。
显示模块采用1602液晶动态显示,相对数码管而言经济实用,占用空间小,对于显示数字、字母最为合适,而且与单片机连线简单,占用IO口相对较少。
实时时钟芯片DS12C887是一款与DS12C885实时时钟兼容的替代产品,该器件提供RTC/日历、定时闹钟等功能,如果检测到主电源故障,该器件可自动切换到备用电源供电,DS12C887将石英晶体与电池集成在一起,在断电后仍可精确走10年。
温度检测报警模块采用数字式温度传感器DS18B20,该芯片具有精度高,测量范围广等优点,易与单片机连接,模块电路组成简单并同时具有温度报警功能。
关键词:
STC89C52,DS12C887,DS18B20,1602液晶显示,电子万年历,采集周围设备温度、温度报警
一、设计要求与方案论证
1.1.1设计要求
设计一个能够实现世纪,年,月,日,星期,小时,分,秒显示附带温度检测显示的实时时钟电子万年历,同时具有时间调节和闹钟设置功能,以及时间预设报警、温度报警、报警解除等功能。
该产品共设有四个按键,每个按键具有多种功能,充分利用各个按键。
在温度报警的同时还有发光二极管做相应的指示。
并且通过编程还可以控制继电器的开闭,从而控制外部设备的运行,通过对闹钟和温度报警的设置可进行定时对设备进行自动化控制,也体现了产品的智能化。
1.1.3系统方案选择和论证
STC89C52单片机作为核心控制体,该单片机具有高可靠,超低价,低功耗,无法解密等优点。
该单片机属于双列直插式封装的PDI40口管脚。
具有4个输入输出端口,分别为PORT0,PROT1,PROT2,PROT3,其中P0口是一组8位漏极开路型双向IO口,校验时,要求接上拉电阻。
其他三个内部有30K的电阻,所以不用再外接电阻。
此单片机具有6个中断,其中包括三个定时器中断,二个外部中断,一个串口中断,为全双工通信口。
内部有静态非易失EEPROM和看门狗。
片内含8Kbbytes的可反复檫写的只读程序存储器(PEROM)和256bytes的随机存取数据存储器(RAM),功能强大,适合许多较为复杂的控制应用场合。
相比较其他芯片来说比较适合学生试验所用,故采用此单片机作为核心控制芯片。
DS12C887为实时时钟芯片,功能丰富,可以用来直接代替IBMPC上的时钟日历芯片DS12887,同时,它的管脚也和MC146818B、DS12887相兼容。
由于DS12C887能够自动产生世纪、年、月、日、时、分、秒等时间信息,其内部又增加世纪寄存器,从而利用硬件电路解决子“千年”问题:
DS12C887中自带有锂电池,外部掉电时,其内部信息还能够保持10年之久;对于一天内的时间记录,有12小时制和24小时制两种模式。
在12小时制模式中,用AM和PM区分上午和下午;时间表示方法也有两种,一种用二进制数表示,一种用BCD码表示;DS12C887中带有128字节RAM,其中有11字节RAM用来储存时间信息,4字节RAM用来储存DS12C887的控制信息,称为控制寄存器,113字节通用RAM使用户使用;此外用户还可以对DS12C887进行编程以实现多种方波输出,并对其内部的三路中断进行屏蔽。
芯片内部石英晶体与充电电池,具有三个可单独屏蔽中断标志位的中断输出,闰年补偿至2100年。
+5V或+3.3V工作电源,工业级温度范围,自动电源故障检测和切换电路,故此芯片适合应用于工业生产和家庭应用中。
DS18B20是数字式温度传感器,采用单总线通信协议。
DS18B20具有体积小,硬件开销低,抗干扰能力强,精度高附加功能强,封装形式多样等特点。
适合各种狭小空间内设备的数字测温和控制。
同时单线可挂接多个元件,因为每个元件都有唯一的一个64位光刻ROM编码,家族码为28H,可以多个也可单个操作。
电压测量范围是3.0V到5.5V。
内部含有EEPROM,其报警上、下限温度值和设定的分辨率倍数在芯片掉电的情况不丢失。
并且内部带有AD转换电路,技术较为成熟,所以采用此芯片最为合适。
1602液晶应用非常广泛,操作简单,功能强大,
采用1602液晶显示各种数字信息最为合适,通过对单片机的编程来控制DS12C887和DS18B20芯片的读写操作来获取相应的信息,再通过对液晶的编程控制将获取到的信息通过一系列转换从而显示到1602液晶上。
最后达到有电子万年历和温度采集报警等功能。
系统论证时通过在单片机学习板上的试验操作,能够达到预期的效果!
1.2最终方案确定
核心控制体:
STC89C52单片机
实时时钟芯片:
DS12C887
数字式温度传感器:
DS18B20
总共设有四个按键,为节约资源考虑,每个按键都有多种功能。
每个按键分别标号为A,B,C,D.第一次按下B,C,D都没有反应,首先按下A键可选择指针位置,B,C键为加减键,D键为闹钟设置键。
B同时又是闹钟报警消除键。
操作简单,按键灵活。
两个报警模块,分为温度报警和闹钟报警两种。
二、电子万年历与温度采集报警硬件设计和实现
2.。
1系统设计框图
图1系统组成框图
2.1.2系统硬件需求介绍
STC89C52单片机一片,DS12C887实时时钟芯片一个,DS18B20数字式温度传感器一个,+5V无源蜂鸣器二个,12MHZ晶振一个,多个按键和开关,常用电容电阻,连接线,三极管,二极管若干,滑动变阻器一个,USB母口一个。
2.2系统硬件各模块作用
2.2.1单片机核心控制模块
核心控制器件选用STC89C52单片机。
STC89C52单片机为40管脚双列直插芯片,它是一种高性能,低功耗的8位CMOS微处理器芯片,市场应用最多。
而且价格便宜,控制方便,便于应用有4个I/O口分别为P1,P2,P3,P4。
其中每一个管脚都能做独立的输入输出管脚,它的第9脚位复位管脚,接上电容和上拉电阻再带个开关构成复位电路。
18,19管脚接外部晶振和两个微调电容构成外部晶振电路。
单片机,复位电路,晶振,5V电源构成单片机最小系统。
其中与AT89S52单片机管脚容。
图2单片机最小电路
图2为单片机最小电路,其中晶振频率可以根据自己需要进行选择,范围在0-24MHZ,常用12MHZ。
复位电路得电容一般用10UF,但并不唯一,只要RC所得时间大于两个机器周期即可。
还有其P0内部无上拉电阻,所以在执行输出功能时,外部必须接上拉电阻(一般10K即可)。
P0口有两个作用,一个接上DS12C887的AD0-AD7(双向地址/数据复用总线),控制着DS12C887的8位并行数据的地址和数据的传输,另接上液晶的DB0-DB7(数据总线)控制着向液晶发送8位并行数据。
P1^7接上DS18B20的单数据线,发送并接受数据,地址的操作。
P3^0到P3^3作为独立按键口。
P2^4口为液晶的数据/命令选择端,1为数据,二为命令,P2^5口控制液晶读/写选择端,1为读命令,0为写操作,P2^6口控制液晶使能信号。
对DS12C887:
P2^0口控制DS1`2C887的片选信号的输入(CS),P2^1口控制地址选通输入(AS),P2^2口为读写输入(R/W),P2^3控制着数据选通或读输入(DS)。
P3^2(外部中断0)接reset管脚,当闹钟时间到时便由此触发外部中断0,进入到外部中断0程序中。
P1^0和P1^1口分别控制着蜂鸣器的报警,当温度、时间到达限定值时会发出高低电平脉冲,以至发出报警声音。
2.2.2实时时钟电路模块
时钟模块选用DS12C887芯片,DS12C887芯片能够自动产生世纪,年,月,日,星期,时,分,秒信息,闰年补偿至2100年,具有闹钟功能。
内部自带锂电池,在外部掉电时信息不丢失,并且能精确走10年之久。
同时DS12C887能自动检测电源故障和切换电路,有工业级温度范围。
此芯片可以广泛应用于对环境要求严格的控制系统中。
如嵌入式系统,电表,安全系统,网络集线器,网桥,路由器。
图3DS12C887硬件连接图
D12C887电路图,工作电源采用5V。
第一管脚(MOT)是Motorola或Intel总线时序选择端,利用此引脚选择两种总线类型中的一种,连接到Vcc时选择Motoroal总线时序,接GND或悬空选择Intel总线时序。
该引脚内部有一个下拉电阻。
D0到D7为双向地址/数据复用总线。
地址于总线周期的开始发送到总线上。
并由AS信号的下降沿锁存到DS12C887中。
所写的数据由DS信号的下降沿(Motoroal时序)或R/W信号的上升沿(Intel时序)锁存。
读周期中,DS12C887于DS信号的后期(Motoroal时序中DS和R/W均为高,Intel时序中DS为低、R/W为高)将数据发送到总线上。
读周期结束后,总线恢复到高阻状态,同时DS在Motoroal时序中变低,在Intel时序中变高。
12脚为GND。
13脚叫CS-片选信号输入,片选信号低电平有效,在访问DS12C887的总线周期内必须保持低电平Intel时序中的DS和R/W信号工作期间,CS必须保持有效,在CS信号无效情况下,总线操作将锁存地址,不能访问芯片。
当Vcc低于Vpf电压时,DS12C887内部通过禁止CS输入来拒绝访问,此举旨在断电时保护RTC数据和RAM数据。
所以在访问期间CS片选信号应保持低电平。
14管脚AS-地址选通输入。
有低变为高的地址选通脉冲用来分离总线信号。
在AS信号的下降沿,地址锁存到DS12C887内,无论CS信号是否有效,AS的下一个上升沿都将清除地址,地址选通信号必须先于每个读或写访问。
如果在CS信号无效的情况下执行了读或写操作,则必须在CS信号有效时且在读或写访问之前,从新发送一次地址选通信号。
15管脚R/W读/写输入。
R/W引脚有两种操作模式,在MOT引脚接Vcc的Motoroal时序中,R/W电平用来指示当前周期是读还是写。
DS为高时,R/W为高电平表示读周期,R/W为低电平则表示写周期,在MOT引脚接GND的Intel时序中,R/W为低电平有效,在此模式下,R/W引脚与普通RAM的写时能信号(WE)工作方式类似,在信号的上升沿锁存数据。
17管脚DS-数据选通或读输入,DS引脚根据MOT引脚电平有两种模式,MOT引脚接Vcc时,选择Motorola总线时序,此模式下,总线周期的后期DS为正脉冲,称作数据选通脉冲,在读周期中,DS表明DS12C887将要驱动双向总线,在写周期,DS信号的下降沿使使DS12C887锁存所写的数据,当MOT接GND时,选择Intel总线时序,DS表示读取DS12C887数据驱动总线的时间周期,此模式下,DS引脚与普通RAM的输出使能信号(OE)工作方式类似。
18管脚RESET-复位输入,低电平有效RESET引脚对时钟、日历或RAM不起作用,上电时可将RESET引脚首先保持低电平,以等待电源稳定下来,保持低电平时间可根据应用需要而定,但是,如果上电时使用RESET信号,RESET保持低电平时间应当超过200ms,以保证控制DS12C887上电时的内部定时器结束,当RESET为低电平,而且Vcc大于Vpf时,将产生以下操作:
A周期性中断使能(PIE)位清0;B闹钟中断使能(AIE)位清0;
C更新结束中断使能(UIE)位清0;D周期中断标志(PF)位清0;
E闹钟中断标志(AF)位清0;F更新结束中断标志(UF)位清0;
G中断请求状态标志(IRQF)位清0;HIRQ引脚置为高阻状态;
I直到RESET恢复为高电平才能访问器件;J方波使能(SQWE)位清0。
在典型应用中,将RESET与Vcc连接。
使得DS12C887在进入或退出电源失效状态时不影响任何控制寄存器的值。
19管脚IRQ-中断请求输出。
DS12V887的IRQ引脚低电平有效,可用作处理器的中断请求输入,只要引起中断的状态位置位,并且相应中断使能位也置位,IRQ将一直保持低电平。
处理器程序通常读取C寄存器来清除IRQ引脚输出,RESET引脚也会清除未处理的中断,没有中断发生时IRQ为高阻状态,可将多个中断器件接到一条IRQ总线上,只要他们均为漏极开路输出,IRQ引脚为漏极开路输出,需要使用一个上拉电阻与Vcc相连。
23脚SQW-方波输出,因为我们此实验中不需要方波输出,故不接。
VCC主电源的DC电源引脚。
VCC在正常范围时,可访问器件的所有功能,并能进行数据读写,如果VCC低于VPF,则禁止读和写。
DS12C887采用的是并行通信协议,8位同时传递,对应到D0到D7八位端口。
D0到D7接P0口,作为地址/数据选通复用总线。
并行通信控制简单,传输速度快,适合近距离传输。
图4Intel总线写时序图
图5Intel读时序图
Intel总线如上图所示,编写程序如图时序图所示。
因为其时序延时都为纳秒级的,软件执行一句简单语句为微秒级。
所以在编写程序是可直接跳过,不用做软件延时。
对此相对降低了软件编写的难度。
DS12C887有4个控制寄存器,在任何时间都可以进行访问,即使处于更新周期。
寄存器A字节的内容如下。
MSBLSB
UIP
DV2
DV1
DV0
RS3
RS2
RS1
RS0
UIP:
更新标志位。
为只读位且不受复位操作的影响,为1时,表示即将发生的数据更新;为0时,表示至少244US不会更新数据。
当UIP为0时,可以获得所有时钟、日历、闹钟信息。
将寄存器B中的SET位置1可以限制任何数据更新操作,并且清除UIP位。
DV2、DV1、DV0:
此3位为010时将打开晶振,并开始计时。
RES3、RES2、RES1、RES0:
用于设置周期性中断产生的时间周期和输出方波的频率。
寄存器B字节的内容如下。
MSBLSB
SET
PIE
AIE
UIE
SQWE
DM
24/12
DSE
SET:
设置位,可读写,不受复位操作影响。
为0时,不处于设置状态,芯片进行正常时间数据更新;为1时,抑制数据更新,可以通过程序设定时间和日历信息。
PIE:
周期性中断使能位,可读写,复位时清除此位。
为1时,允许寄存器C中的周期中断标志位PF,驱动/IRQ引脚为低产生中断信号输出,中断信号产生的周期由RS3~RE0决定。
AIE:
闹钟中断使能位,可读写。
为1时,允许寄存器C中的闹钟中断标志位AF、闹钟发生时就会通过/IRQ引脚产生中断输出。
UIE:
数据更新结束中断使能位,可读写。
复位或者SET位为1时清除此位。
为1时允许寄存器C中的更新结束标志UF,更新结束时就会通过/IRQ引脚产生中断输出。
SQWE:
方波使能位,可读写,复位时清除此位。
为0时,SQW引脚保持低电平;为1时,SQW引脚输出方波信号,其频率由RS3~RS0决定。
DM:
数据模式位,可读写,不受复位操作影响。
为0时,设置时间、日历信息为二进制数据;为1时,设置为BCD码数据。
24/12:
时间模式设置为,可读写,不受复位操作影响。
为0时,设置为12小时模式;为1时,设置为24小时模式。
DSE:
为1时,会引起两次特殊的时间更新;4月的第一个星期日凌晨1:
59:
59会直接更新到3:
00:
00,10月的最后一个星期日凌晨1:
59:
59会直接更新到1:
00:
00;为0时,时间信息正常更新,此位可读写,不受复位操作影响。
寄存器C字节内容如下。
MSBLSB
IRQF
PF
AF
UF
0
0
0
0
IQRF:
中断申请标志位。
为1时,/IRQ引脚为低,产生中断申请。
当PF、PIE为1时或者AF、ATE为1或者UF、UIE为1时,此位为1,否则置0.
PF:
中期中断标志位。
为1时,它是只读位,和PIE位状态无关,由复位操作或者寄存器C操作清除。
AF:
闹钟中断标志位。
为1时,表示当前时间和闹钟设定时间一至,由复位操作或读寄存器C操作清除。
UF:
数据更新结束中断标志位。
每个更新周期后此位都会置1,当UIE位位置1时,UF若为1就会引起IRQF置1,将驱动/IRQ引脚为低电平,申请中断。
此位由复位操作或读寄存器C操作清除。
寄存器D字节的内容如下。
MSBLSB
0
0
0
0
0
0
0
0
VRT;RAM和时间有效位。
用于指示和VBAT引脚连接的电池状态。
此位不可写,也不受操作为影响,正常情况下读取时总去为1,如果出现读取为0的情况,则表示电池耗尽,时间数据和RAM中的数据就会出现问题。
芯片DS12CR887的113字节普通RAM空间为非易失性RAM空间,他不专门用于某些特别功能,而是可以在未处理器程序中作为非易失性内存空间使用。
如write_ds(0x0a,0x20);write_ds(0x0b,0x26);分别表示向A,B寄存器发送0X20,0X26命令。
0X20表示RAM中时钟、日历和闹钟信息都可以访问;启动振荡器使能中断和SQW输出都禁止。
0X26表示更新传输功能正常进行;阻止周期性中断输出;开闹钟中断使能;选择二进制格式;24小时格式;关闭夏令时使能。
Read_ds(0x0c)意义为读取C寄存器的地址。
芯片DS12CR887的113字节普通RAM空间为非易失性RAM空间,他不专门用于某些特别功能,而是可以在未处理器程序中作为非易失性内存空间使用。
通过软件编程将读到的信息显示到1602液晶中,显示世纪,年,月,日,星期,小时,分,秒。
通过设置按键可以进行时间调节,在调节时间时时钟暂时停止走,再通过功能键回到正常工作状态中,并且具有闹钟设定功能,但在设定闹钟时期内部时间仍然在走。
当时,分,秒,相符时通过蜂宁器进行报警,再设置按键关闭闹钟。
实现随意控制闹钟的开启和关闭。
2.2.3数字温度传感器模块
数字温度传感器选用DS18B20,采用单总线通信协议。
DS18B20主要特性有:
1、适应电压范围更宽,电压范围:
3.0~5.5V,在寄生电源方式下可由数据线供电。
2、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
3、DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温
4、DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。
5、温范围-55℃~+125℃,在-10~+85℃时精度为0.5℃。
6、可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温。
7、在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快。
8、测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。
9、负压特性:
电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。
DS1820的操作指令分为ROM操作命令和存储器操作命令:
(1)、ROM操作命令及其含义
SkipROM指令代码
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 电子 万年历 温度 检测 报警 系统