基于单片机的温度显示报警器Word格式.docx
- 文档编号:16236367
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:29
- 大小:1.17MB
基于单片机的温度显示报警器Word格式.docx
《基于单片机的温度显示报警器Word格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的温度显示报警器Word格式.docx(29页珍藏版)》请在冰豆网上搜索。
LCD液晶显示器是一种低压、微功耗的显示器件,只要2~3伏就可以工作,工作电流仅为几微安,是任何显示器无法比拟的,同时可以显示大量信息,除数字外,还可以显示文字、曲线,比传统的数码LED显示器显示的界面有了质的提高。
在仪表和低功耗应用系统中得到了广泛的应用。
优点为:
(1)由于数码管价格便宜且容易驱动。
(2)功率消耗小,相比而言数码管显示器的主要功耗在内部电极和驱动IC上,因而耗电量比其他器件要小很多。
虽然LCD液晶屏的功能强大,但数码管的足以实现温度的显示,所以在本设计中采用数码管显示。
2.3单片机的选择
对于单片机的选择,可以考虑使用8031与8051系列,由于8031没有内部RAM,系统又需要大量内存存储数据,因而不适用。
STC89C52是STC公司生产的一种低功耗高性能CMOS8位微控制器,具有8k在系统可编程Flash储存器。
其使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。
在芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活超有效的解决方案。
所以这次选择STC89C52。
第3章硬件电路的设计
3.1主控制器
STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。
3.1.1STC89C52的介绍
STC89C52引脚如图3-1-1所示:
图3-1-1STC89C52引脚图
3.1.2DS18B20的介绍
许多情况下需要测量温度参数。
通常测温系统的主要器件是热敏电阻,由于它体积小、重复性好、测量方法简单,所以在测温系统中广泛应用。
但采用热敏电阻的测温系统需要A/D转换,而且测量精度不高。
本文采用Dallas公司生产的一种新型温度传感器DS18B20,它集温度测量、A/D转换于一体,其测量范围宽(-55℃~+125℃),精度高(0.0625℃),DS18B20是一款具有单总线结构的器件。
由DS18B20组建的温度测量单元体积小,便于携带、安装。
同时,DS18B20的输出为数字量,可以直接与单片机连接,无需后级A/D转换,控制简单。
由于DS18B20具有单总线特性,便于扩展,可在一根总线上挂接多个DS18B20来组建温度测量网络。
图3-1-2DS18B20的实物管脚分布图
(1)引脚功能说明
GND是地址信号;
DQ是数据输入/输出引脚,开漏单总线接口引脚,当被用在寄生电源下,也可以向器件提供电源;
VDD为外接供电电源输入端(在寄生电源接线方式时接地)。
(2)DS18B20内部结构及功能
图3-1-3DS18B20内部结构
DS18B20采用3脚PR—35封装或8脚SOIC封装,其内部结构如3.1-3图所示,主要包括:
寄生电源,温度传感器,64位ROM和单总线接口,存放中间数据的高速暂存器RAM,用于存储用户设定温度上下限值的TH和TL触发器,存储与控制逻辑,8位循环冗余校验码(CRC)发生器等7部分。
如上图3-1-3所示
(3)DS18B20的测温原理
如图3-1-4所示,图中低温度系数振荡器的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给减法计数器1;
高温度系数振荡器随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。
图3-1-4DS18B20测温原理图
图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数,进而完成温度测量。
计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的一个基数分别置入减法计数器1和温度寄存器中,减法计数器和温度寄存器被预置在-55℃所对应的一个基数值。
减法计数器1对低温度系数振荡器产生的脉冲信号进行减法计数,当减法计数器1的预置减到0时,温度寄存器的值将加1,减法计数器1的预置值将重新被装入,并重新开始对低温度系数振荡器产生的脉冲信号进行计数。
如此循环,直到减法计数器2计数到0时,停止温度计数器值的累加,此时温度寄存器中的数值就是所测温度值。
图3-1-4中的斜率累加器用于补偿和修正测温过程的非线形性,直到温度寄存器达到被测温度值。
另外,DS18B20单线通信功能是分时完成的,有严格的时隙概念,因此读/写时序很重要。
系统对DS18B20的各种操作必须按协议进行。
操作协议为:
初始化DS18B20(发复位脉冲→发ROM功能命令→发存储器操作命令→处理数据。
3.2单片机最小系统设计
单片机最小系统就是指能使单片机工作的最少的器件构成的系统。
因为单片机已经包含了数据存储器和程序存储器,所以只要在其外部加上时钟电路和复位电路就可以构成单片机最小系统。
3.2.1时钟电路
图3-2-1是时钟电路的PROTEUS仿真图。
图3-2-1时钟电路
单片机允许的振荡晶体可在1.2~24MHz之间选择,一般为11.0592MHz。
电容C2,C3的取值对振荡频率输出的稳定性、大小及振荡电路起振速度有一定的影响,可在20~100pF之间选择,典型值位30pF。
3.2.2复位电路
计算机每次开始工作,CPU和系统中的其他部件都必须要有一个确定的初值,即复位状态。
图3-2-2是单片机复位电路仿真图。
图3-2-2复位电路
单片机RST引脚是高电平有效。
单片机在上电瞬间C1充电,RST引脚端出现正脉冲,只要RST断保持两个机械周期(大约10ms)以上的高电平,单片机就能复位。
在单片机工作后,如果还想再次复位,只需按下开关,单片机就能重新变成复位状态。
当晶体振荡频率为12MHz时,RC的典型值为C=10μF,R=8.2KΩ。
3.2.3最小系统
图3-2-3单片机最小系统
3.3DS18B20与单片机接口电路的设计
DS18B20可以采用两种供电方式:
一种是采用电源供电方式,此时DS18B20的第1引脚接地,第2引脚作为信号线,第3引脚接电源;
另外一种是寄生电源供电方式
当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最长为500ms。
采用寄生电源供电方式时,VDD和GND端接地。
由于单线制只有一根线,因此发送接口必须是三态的。
3.4显示电路的设计
3.4.1LED数码管主要技术参数
图3-4-1数码管
数码管使用条件:
a、段及小数点上加限流电阻;
b、使用电压:
段:
根据发光颜色决定;
小数点:
根据发光颜色决定;
c、使用电流:
静态:
总电流80mA(每段10mA);
动态:
平均电流4-5mA
;
峰值电流100mA;
上面这个只是七段数码管引脚图,其中共阳极数码管引脚图和共阴极的是一样的,4位数码管引脚图数码管使用注意事项说明:
(1)数码管表面不要用手触摸,不要用手去弄引角;
(2)焊接温度:
260度;
焊接时间:
5S
(3)表面有保护膜的产品,可以在使用前撕下来。
3.4.2LED数码管的引脚说明
这类数码管可以分为共阳极与共阴极两种,共阳极就是把所有LED的阳极连接到共同接点com,而每个LED的阴极分别为a、b、c、d、e、f、g及dp(小数点);
共阴极则是把所有LED的阴极连接到共同接点com,而每个LED的阳极分别为a、b、c、d、e、f、g及dp(小数点),如下图所示。
图中的8个LED分别与上面那个图中的A~DP各段相对应,通过控制各个LED的亮灭来显示数字。
图3-4-2
(1)共阳数码管内部结构
图3-4-2
(2)共阴数码管内部结构
第4章系统程序的设计
4.1主程序
主程序主要功能是负责温度的实时显示、读出处理DS18B20的测量温度值。
主程序流程图如图4-1所示:
图4-1主程序流程图
4.2读出温度子程序
读出温度子程序的主要功能是读出RAM中的9字节。
在读出时须进行CRC校验,校验有错时不进行温度数据的改写。
读出温度子程序流程图如图4-2所示:
图4-2读出温度子程序流程图
4.3温度转换命令子程序
温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时,转换时间约为750ms。
在本程序设计中,采用1s显示程序延时法等待转换的完成。
温度转换命令子程序流程图如图4-3所示:
图4-3温度转换命令子程序流程图
4.4计算温度子程序
计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定。
计算温度子程序流程图如图4-4所示:
图4-4计算温度子程序流程图
4.5温度数据的计算处理方法
从DS18B20读取出的二进制值必须转换成十进制值,才能用于字符的显示。
DS18B20的转换精度为9~12位,为了提高精度采用12位。
在采用12位转换精度时,温度寄存器里的值是以0.0625为步进的,即温度值为寄存器里的二进制值乘以0.0625,就是实际的十进制温度值。
通过观察表4-5可以发现,一个十进制与二进制间有很明显的关系,就是把二进制的高字节的低半字节和低字节的高半字节组成一字节,这个字节的二进制化为十进制后,就是温度值的百、十、个位字节,所以二进制值范围是0~F,转换成十进制小数就是0.0625的倍数(0~15倍)。
这样需要4位的数码管来表示小数部分。
实际应用不必这么高的精度,采用1位数码管来显示小数,可以精确到0.1℃。
表4-5二进制与十进制的近似对应关系表
小数部分二进制值
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
十进制值
结论
该基于DS18B20的多点温度测量系统具有硬件结构简单、易于制作、价格低廉、测量值精确和易于操作等许多优点,但由于实验室条件所限,暂时只做四点的温度测量。
但在实际应用中可根据具体情况进行更多点的扩展和对多点进行控制。
随着现代信息技术的飞速发展和传统工业改造的逐步实现,基于DS18B20的多点温度测量系统已经广泛应用于控制、化工等诸多领域。
总结这次的论文工作,得到以下结论:
1.针对现有测温系统的特点,提出了一套应用数字式温度传感器DS81B20组建温度测控网络新型方案,该方案的突出特点是系统的数字化、快速化及其经济实用性。
2.以单总线为基本结构,采用STC公司的STC89C52单片机为总线命令,实现与DSl8B20的总线接口,并提供具体电路设计。
3.软件编程采用模块化、结构化设计,易于修改和维护。
由于时间和精力的限制,对后续的研究还应在以下方面逐步完善:
1.应用软件的完善。
温度采集方面,一次命令全部单总线上的DS18B20进行温度转换,减少系统所需时间。
2.进一步完善系统的可靠性。
由于实际经验的欠缺,设计上难免有考虑不周之处。
当某一个传感器出现故障时,虽然系统能发现该测温点故障,但是更换传感器时涉及到其序列号的修改和应用程序的修改,这些还需要在今后应用时加以完善。
3.可以增加控制部分,以后在该部分进行PID算法控制,以提高控制精度。
总之,本论文在新型数字温度测控系统方面做了一定的研究工作。
该系统初步完成了温度测控方案的预定目标,为今后实现数字化与网络化的温度测控系统工程提供了一种参考。
参考文献
(1)黄智伟.凌阳单片机课程设计指导.北京:
北京航空航天大学出版社,2007
(2)周航慈.单片机程序设计基础.北京:
北京航空航天大学出版社,1997
(3)求实科技.单片机典型模块设计实例导航.北京:
人民邮电出版社,2004
(4)黄智伟.全国大学生电子设计竞赛技能训练.北京:
(5)黄智伟.印制电路板(PCB)设计技术与实践(第二版).北京:
电子工业出版社,2012
(6)基于Proteus的51系列单片机设计与仿真(第二版)陈忠平编著
附录
附录1电路原理图
附录2温度计实物图
附录3温度计程序
#include<
reg52.h>
//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include"
intrins.h"
#defineu8unsignedchar
#defineucharunsignedchar
#defineuintunsignedint
#defineu16unsignedint
ucharyushe_wendu=50;
//温度预设值
uintwendu;
//温度值全局变量
//运行模式
ucharMode=0;
//=1是设置温度阀值=2是设置烟雾阀值=0是正常监控模式
//管脚声明
sbitLED_wendu=P1^4;
//温度报警灯
sbitbaojing=P1^1;
//蜂鸣器接口
voiddelay(uintz)//延时函数大约延时zms
{
uinti,j;
for(i=0;
i<
z;
i++)
for(j=0;
j<
121;
j++);
}
voidInit_Timer0(void);
bitReadTempFlag;
//定义读时间标志
sbitLed_Reg=P1^5;
//红灯
sbitBuzzer=P3^3;
//蜂鸣器
sbitDQ=P1^0;
//ds18b20的数据引脚
#defineSMG_NUM4
u8codeDisplayNum[16]={
0xc0,//0
0xf9,//1
0xa4,//2
0xb0,//3
0x99,//4
0x92,//5
0x82,//6
0xf8,//7
0x80,//8
0x90,//9
0x88,//A
0x83,//b
0xc6,//C
0xa1,//d
0x86,//E
0x8e//F
};
//
u8codeDisplayOther[]={
0xff,//0空
0x7f,//1"
."
0xbf,//2"
-"
0xa7//3c
/********************************************************************
*名称:
delay_1ms()
*功能:
延时1ms函数
*输入:
q
*输出:
无
***********************************************************************/
voiddelay_ms(uintq)
q;
for(j=0;
110;
//数码管位选定义
sbitsmg_we1=P2^0;
//东西数码管2
sbitsmg_we2=P2^1;
//东西数码管1
sbitsmg_we3=P2^2;
//南北数码管2
sbitsmg_we4=P2^3;
//南北数码管1
/***********************数码位选函数*****************************/
//i:
0,东西数码管2
//1,东西数码管1
//2,南北数码管2
//3,南北数码管1
voidsmg_we_switch(uchari)
switch(i)
{
case0:
smg_we1=0;
smg_we2=1;
smg_we3=1;
smg_we4=1;
break;
case1:
smg_we1=1;
smg_we2=0;
case2:
smg_we3=0;
case3:
smg_we4=0;
}
voiddelay_1ms(uintq)
u8ChangeFor(u8dat)
交换一个字节位的位置,用于数码管显示
需要改变的数
改变后的数
#defineLED_a0//数码管段选的a段接在段选IO口的第0位
#defineLED_b2
#defineLED_c6
#defineLED_d4
#defineLED_e3
#defineLED_f1
#defineLED_g7
#defineLED_dp5
u8ChangeFor(u8dat)
u8temp=0;
if(dat&
0x01)//判断数据的第一位是否为1
temp|=0x01<
<
LED_a;
//如果为1,放到控制数码管a段的位置
0x02)
LED_b;
0x04)
LED_c;
0x08)
LED_d;
0x10)
LED_e;
0x20)
LED_f;
0x40)
LED_g;
0x80)
LED_dp;
returntemp;
uchardis_smg[SMG_NUM];
//显示缓存数组
display()
数码管显示
voidDisplayScan()
staticuchari;
P0=0xff;
//消隐
smg_we_switch(i);
//位选
P0=ChangeFor(dis_smg[i]);
//段选
i++;
if(i>
=SMG_NUM)
i=0;
/***
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 温度 显示 报警器