基于单片机的数字温度计的设计.docx
- 文档编号:23605208
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:14
- 大小:158.89KB
基于单片机的数字温度计的设计.docx
《基于单片机的数字温度计的设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的数字温度计的设计.docx(14页珍藏版)》请在冰豆网上搜索。
基于单片机的数字温度计的设计
物理与电气工程学院课程设计报告
基于单片机的数字温度计的设计
摘要:
本设计以STC89C52单片机为核心的温度控制系统的工作原理和设计方法。
温度信号由温度芯片DS18B20采集,并以数字信号的方式传送给单片机。
文中介绍了该控制系统的硬件部分,包括:
温度检测电路、温度控制电路、PC机与单片机串口通讯电路和一些接口电路。
单片机通过对信号进行相应处理,从而实现温度控制的目的。
关键词:
STC89C52单片机、DS18B20温度芯片、温度控制、串口通讯
引言:
温度控制系统广泛应用于社会生活的各个领域,如家电、汽车、材料、电力电子等,常用的控制电路根据应用场合和所要求的性能指标有所不同,在工业企业中,如何提高温度控制对象的运行性能一直以来都是控制人员和现场技术人员努力解决的问题。
这类控制对象惯性大,滞后现象严重,存在很多不确定的因素,难以建立精确的数学模型,从而导致控制系统性能不佳,甚至出现控制不稳定、失控现象。
传统的继电器调温电路简单实用,但由于继电器动作频繁,可能会因触点不良而影响正常工作。
控制领域还大量采用传统的PID控制方式,但PID控制对象的模型难以建立,并且当扰动因素不明确时,参数调整不便仍是普遍存在的问题。
而采用数字温度传感器DS18B20,因其内部集成了A/D转换器,使得电路结构更加简单,而且减少了温度测量转换时的精度损失,使得测量温度更加精确。
数字温度传感器DS18B20只用一个引脚即可与单片机进行通信,大大减少了接线的麻烦,使得单片机更加具有扩展性。
由于DS18B20芯片的小型化,更加可以通过单跳数据线就可以和主电路连接,故可以把数字温度传感器DS18B20做成探头,探入到狭小的地方,增加了实用性。
更能串接多个数字温度传感器DS18B20进行范围的温度检测。
1.设计原理
根据系统的设计要求,选择DS18B20作为本系统的温度传感器,选择单片STC89C52为测控系统的核心来完成数据采集、处理、显示、报警等功能。
选用数字温度传感器DS18B20,省却了采样/保持电路、运放、数/模转换电路以及进行长距离传输时的串/并转换电路,简化了电路,缩短了系统的工作时间,降低了系统的硬件成本。
该系统的总体设计思路如下:
温度传感器DS18B20把所测得的温度发送到STC89C52单片机上,经过51单片机处理,将把温度在显示电路上显示。
2.元器件功能介绍
2.1DS18B20是DALLAS公司生产的一线式数字温度传感器,它具有微型化、低功耗、高性能抗干扰能力、强易配处理器等优点,特别适合用于构成多点温度测控系统,可直接将温度转化成串行数字信号(按9位二进制数字)给单片机处理,且在同一总线上可以挂接多个传感器芯片,它具有三引脚TO-92小体积封装形式,温度测量范围-55~+125℃,可编程为9~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出,其工作电源既可在远端引入,业可采用寄生电源方式产生,多个DS18B20可以并联到三根或者两根线上,CPU只需一根端口线就能与多个DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。
从而可以看出DS18B20可以非常方便的被用于远距离多点温度检测系统。
综上,在本系统中我采用温度芯片DS18B20测量温度。
该芯片的物理化学性很稳定,它能用做工业测温元件,且此元件线形较好。
在0—100摄氏度时,最大线形偏差小于1摄氏度。
该芯片直接向单片机传输数字信号,便于单片机处理及控制。
温度控制系统
2.2中央微处理器STC89C52
STC89C52是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用STC公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80S51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的STC89C52可为许多嵌入式控制应用系统提供高性价比的解决方案。
STC89C52具有如下特点:
40个引脚,4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
此外,STC89C52设计和配置了振荡频率,并可通过软件设置省电模式。
空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。
同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式。
STC89C52单片机综合了微型处理器的基本功能。
按照实际需要,同时也考虑到设计成本与整个系统的精巧性,所以在本系统中就选用价格较低、工作稳定的STC89C52单片机作为整个系统的控制器。
3.总体设计框图
本方案设计的系统由单片机系统、数字温度传感器、LED显示模块、按键控制模块、温度报警模块组成,其总体架构如下图1。
图1系统总体方框图
4.单片机
目前的单片机开发系统只能够仿真单片机,却没有给用户提供一个通用的最小系统。
由设计的要求,只要做很小集成度的最小系统应用在一些小的控制单元。
其应用特点是:
(1)全部I/O口线均可供用户使用。
(2)内部存储器容量有限(只有4KB地址空间)。
(3)应用系统开发具有特殊性
图3.1最小系统图
4.1单片机最小系统的设计
单片机最小系统如图3.1所示,其中有4个双向的8位并行I/O端口,分别记作P0、P1、P2、P3,都可以用于数据的输出和输入,P3口具有第二功能为系统提供一些控制信号。
时钟电路用于产生MCS-51单片机工作所必须的时钟控制信号,内部电路在时钟信号的控制下,严格地按时序指令工作。
MCS-51内部有一个用于构成振荡器的高增益反向放大器,该高增益反向放大器的输入端为芯片的引脚XTAL1,输出端为XTAL2。
这两个引脚跨接石英晶体振荡器和微调电容,就构成了一个稳定的自激振荡器。
电路中的微调电容通常选择为30pF左右,该电容的大小会影响到振荡器频率的高低、振荡器的稳定性和起振的快速性。
晶体的振荡频率为12MHz。
把EA脚接高电平,单片机访问片内程序存储器,但在PC值超过0FFFH(4Kbyte地址范围)时,将自动转向执行外部程序存储器内的程序。
MCS-51的复位是由外部的复位电路来实现。
采用最简单的外部按键复位电路。
按键自动复位是通过外部复位电路的来实现的.我们选用时钟频率为12MHz,C1取47μf。
4.2温度传感电路设计
DS18B20的性能特点:
采用单总线专用技术,既可通过串行口线,也可通过其它I/O口线与微机接口,无须经过其它变换电路,直接输出被测温度值(9位二进制数,含符号位)
测温范围为-55℃-+125℃,测量分辨率为0.0625℃
内含64位经过激光修正的只读存储器ROM
适配各种单片机或系统机
用户可分别设定各路温度的上、下限
内含寄生电源。
DS18B20内部结构主要由四部分组成:
64位光刻ROM,温度传感器,非挥发的温度报警触发器TH和TL,高速暂存器。
DS18B20的管脚排列如图3.2所示。
图3.2DS18B20管脚图
在硬件上,DS18B20与单片机的连接有两种方法,一种是VCC接外部电源,GND接地,I/O与单片机的I/O线相连;另一种是用寄生电源供电,此时UDD、GND接地,I/O接单片机I/O。
无论是内部寄生电源还是外部供电,I/O口线要接5KΩ左右的上拉电阻.我们采用的是第一种连接方法,如图3.3所示:
把DS18B20的数据线与单片机的13管脚连接,再加上上拉电阻。
4
5.程序如下:
#include"reg51.h"
#include"intrins.h"//延时函数用
#defineDisdataP1//段码输出口
#definediscanP3//扫描口
#defineucharunsignedchar
#defineuintunsignedint
sbitDQ=P3^7;//温度输入口
sbitDIN=P1^7;//LED小数点控制
uinth;
ucharcodeditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};//温度小数部分用查表法
ucharcodedis_7[12]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff,0xbf};
/*共阳LED段码表"0""1""2""3""4""5""6""7""8""9""不亮""-"*/
ucharcodescan_con[4]={0xfe,0xfd,0xfb,0xf7};//列扫描控制字
uchardatatemp_data[2]={0x00,0x00};//读出温度暂放
uchardatadisplay[5]={0x00,0x00,0x00,0x00,0x00};//显示单元数据,共4个数据,一个运算暂存用
voiddelay(uintt)//11微秒延时函数
{
for(;t>0;t--);
}
scan()//显示扫描函数
{
chark;
for(k=0;k<4;k++)//四位LED扫描控制
{
Disdata=dis_7[display[k]];
if(k==1){DIN=0;}
discan=~scan_con[k];delay(90);discan=0x00;
}
}
ow_reset(void)//18B20复位函数
{
charpresence=1;
while(presence)
{
while(presence)
{
DQ=1;_nop_();_nop_();
DQ=0;
delay(50);//550us
DQ=1;
delay(6);//66us
presence=DQ;//presence=0继续下一步
}
delay(45);//延时500us
presence=~DQ;
}
DQ=1;
}
voidwrite_byte(ucharval)//18B20写命令函数
{
uchari;
for(i=8;i>0;i--)//
{
DQ=1;_nop_();_nop_();
DQ=0;_nop_();_nop_();_nop_();_nop_();_nop_();//5us
DQ=val&0x01;//最低位移出
delay(6);//66us
val=val/2;//右移一位
}
DQ=1;
delay
(1);
}
ucharread_byte(void)//从总线上读取一个字节
{
uchari;
ucharvalue=0;
for(i=8;i>0;i--)
{
DQ=1;_nop_();_nop_();
value>>=1;
DQ=0;//
_nop_();_nop_();_nop_();_nop_();//4us
DQ=1;_nop_();_nop_();_nop_();_nop_();//4us
if(DQ)value|=0x80;
delay(6);//66us
}
DQ=1;
return(value);
}
read_temp()//读出温度函数
{
ow_reset();//总线复位
write_byte(0xCC);//发SkipROM命令
write_byte(0xBE);//发读命令
temp_data[0]=read_byte();//温度低8位
temp_data[1]=read_byte();//温度高8位
ow_reset();
write_byte(0xCC);//SkipROM
write_byte(0x44);//发转换命令
}
work_temp()//温度数据处理函数
{
ucharn=0;//
if(temp_data[1]>127)
{temp_data[1]=(256-temp_data[1]);temp_data[0]=(256-temp_data[0]);n=1;}//负温度求补码
display[4]=temp_data[0]&0x0f;display[0]=ditab[display[4]];
display[4]=((temp_data[0]&0xf0)>>4)|((temp_data[1]&0x0f)<<4);//
display[3]=display[4]/100;
display[1]=display[4]%100;
display[2]=display[1]/10;
display[1]=display[1]%10;
if(!
display[3]){display[3]=0x0A;if(!
display[2]){display[2]=0x0A;}}//最高位为0时都不显示
if(n){display[3]=0x0B;}//负温度时最高位显示"-"
}
main()//主函数
{
Disdata=0xff;//初始化端口
discan=0xff;
for(h=0;h<4;h++){display[h]=8;}//开机显示8888
ow_reset();//开机先转换一次
write_byte(0xCC);//SkipROM
write_byte(0x44);//发转换命令
for(h=0;h<500;h++)
{scan();}//开机显示"8888"2秒
while
(1)
{
read_temp();//读出18B20温度数据
work_temp();//处理温度数据
for(h=0;h<500;h++)
{scan();}//显示温度值2秒
}
6.仿真图
7.体会:
在本次毕业设计中,不仅自己付出了很多心血,也得到了很多老师和同学的支持,为我创造了很多有利条件,在这里,我要特别感谢我的导师孙志富老师,在毕业设计的开始,孙志富老师给了我很多帮助,指导我了解了很多单片机的相关知识,并在当我设计遇到困难时,及时的给予帮助和鼓励,同时,对我其他学科的鼓励也渗透在毕业设计的同时,给了我莫大的信心,为我顺利完成毕业设计起到了非常重要的作用。
同时。
我还要感谢实习组及实验室的所有老师,为我的毕业设计提供了非常便利的条件。
最后还要感谢帮助我的同学,在我遇到困难时给予我耐心的帮助。
参考文献
[1]沙占友.集成温度传感器原理与应用.北京:
机械工业出版社,2002,84~95.
[2]刘君华.智能传感器系统.西安:
西安电子科技大学出版社,1999,83~105.
[3]沙占友.智能化传感器原理与应用.北京:
电子工业出版社,2004,99~108.
[4]赵负图.传感器集成电路手册.:
化学工业出版社,2002,692~703.
[5]张毅刚.MCS-51单片机原理及应用.哈尔滨:
哈尔滨工业大学出版社,2004,81~94
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 数字 温度计 设计