单片机数字温度计设计程序部分.docx
《单片机数字温度计设计程序部分.docx》由会员分享,可在线阅读,更多相关《单片机数字温度计设计程序部分.docx(15页珍藏版)》请在冰点文库上搜索。
单片机数字温度计设计程序部分
数字温度计(程序设计部分)
摘要:
本设计完成了一种基于DS18B20的高精度的数字温度计。
我们设计温度系统是由中央控制器AT89S51、DS18B20温度传感器、LED数码管组成。
温度传感器DS18B20高精度的数字温度信号送给单片机AT89S51处理后,实现将温度数据送LED显示,实现了高精度的数字温度显示。
关键词:
温度计数字控制DS18B20AT89S51
一系统方案设计
1.1方案设计
由于本设计是测温电路,可以使用热敏电阻之类的器件将温度转换为电学量,便于电路处理。
而具体的处理方案和电路较多,一般来说,有下面两种情况。
方案一:
利用热敏元件的感温效应,流过这类元件的电压或电流的随被测温度变化而变化,将这种变化的电压或电流采集过来,通过一系列的电路处理后,再进行A/D转换,就可以用单片机进行数据的处理并送显示电路,就可以将被测温度显示出来。
这种方案需要用到A/D转换电路,缺点是感温电路后的信号处理比较复杂和不易克服干扰,其优点是通过细致的电路处理后,能达到较高的精度。
方案二:
采用集成的温度传感器,在这类器件中,已经集成了热敏器件、信号调理电路、AD转换电路,输出的数据也是处理后的已经编码的数字量。
因而其外部电路简单,但其内部电路固定,所以其精度有限。
在单片机电路设计中,大多都是使用这类集成温度传感器,可以很容易直接读取被测温度对应的数据,进行适当的运算和处理,就可以满足设计要求。
1.2方案选择
从以上两种方案,很容易看出其优缺点,本设计中的设计指标不是很高,为了可靠和降低成本,系统采用方案二进行设计,选择使用一只温度传感器DS18B20作为系统的核心器件。
同时,为了能够可靠的工作,能够使电路比较简单,软件设计也比较简单,故采用了AT89S52作为系统的控制芯片。
1.3系统功能和模块的描述
1.3.1系统功能
本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用。
1.3.2模块描述
<1>、主控制器:
负责温度参数的采集和显示的控制。
<2>、显示电路:
对温度数字进行显示。
<3>、测温电路:
其主要部件为温度传感器,负责对外界进行温度感觉。
二、电路设计
2.1主要电子元件
2.1.1数字温度传感器DS18B20
由DALLAS半导体公司生产的DS18B20型单线智能温度传感器,属于新一代适
图2DS18B20引脚分布图
配微处理器的智能温度传感器,可广泛用于工业、民用、军事等领域的温度测量及控制仪器、测控系统和大型设备中。
它具有体积小,接口方便,传输距离远等特点。
2.1.2数码管LED显示器
●数码显示器有静态和动态显示两种显示方式。
●LED显示器工作在静态显示方式时,其阴极点(或阳极)连接在一起接地(或+5V),每一个的段选线(a,b,c,d,e,f,g,p)分别与一个8位口相连。
●LED显示器工作在动态显示方式时,段选码端口I/O1用来输出显示字符的段选码,I/O2输出位选码。
图3四位数码管
I/O1不断送待显示字符的段选码,I/O2不断送出不同的位扫描码,并使每位显示字符显示一段时间,一般为1—5mS。
利用眼睛的礼视觉惯性,从显示器上便可以见到相当稳定的数字显示。
2.2硬件模块关系图
按照系统设计功能的要求,确定系统由3个模块组成:
主控制器、测温电路和显示电路。
数字温度计总体电路结构框图如图4所示。
图4电路结构框图
三、程序设计
3.1主程序
主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量温度值,温度测量每1s进行一次,其程序流程图如图5。
图5主程序流程图
3.2读出温度子程序
读出温度子程序的主要功能是读出RAM中的9字节,在读出时需要进行CRC校验,校验有错时不进行温度数据的改写。
其程序流程图如图6所示。
图6读出温度子程序流程图
3.3温度转换命令子程序
温度转换命令子程序主要是发温度转换开始命令,当采用12位分辩率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。
温度转换命令子程序流程图如图7所示。
图7温度转换命令子程序流程图
3.4计算温度子程序
计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其流程图如图8所示。
图8计算温度子程序流程图
3.5显示数据刷新子程序
显示数据刷新子程序主要是对显示缓冲区中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。
程序流程图如图9所示。
图9显示数据刷新子程序流程图
四源程序代码
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitDQ=P3^4;//定义通信端口
sbitx=0x90;
ucharcodediscode[16]={0x3f,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7c,0x39,0x5e,0x79,0x71};//0~F
uchara[2]={0,0};//显示两位
uchartemp_H,temp_L;//温度的高八位和低八位//延时
voiddelay(ucharuseconds)
{
do{;}while(--useconds);
}//复位
ucharow_reset(void)
{
ucharpresence;
DQ=0;//拉低DQ
delay(240);//等至少480us
DQ=1;//拉高
delay(15);//等待响应
presence=DQ;//得到器件响应
delay(240);//延迟480us
return(presence);//返回器件响应,0=有器件,1=无器件
}
//从1-wire总线上读取一个字节
ucharread_byte(void)
{
uchari;
//ACC=0;//ucharvalue=0;//初始值为0
for(i=8;i>0;i--)
{
//value>>=1;//右移
DQ=0;//拉低DQ
delay
(2);
DQ=1;//再拉高
delay(4);//
//
CY=DQ;CY=ACC&0x01;//if(DQ)value|=0x80;//将数据循环右移RLCA
delay(30);//等60us
}
return(ACC);//value);//返回读出的数据
}
//向1-WIRE总线上写一个字节
voidwrite_byte(charval)
{
uchari;ACC=val;
for(i=8;i>0;i--)//
{
DQ=0;//拉低
CY=ACC&0x01;
delay
(2);
DQ=CY;//DQ=val&0x01;//输出最低位
delay(30);//等60us
DQ=1;
//val=val/2;
}
delay(30);
}//读取温度
voidRead_Temperature(void)
{
ow_reset();
write_byte(0xCC);//跳过序列号检测
write_byte(0xBE);//读内部单元
temp_L=read_byte();//低八位
temp_H=read_byte();//高八位
ow_reset();//复位
write_byte(0xCC);//跳过ROM
write_byte(0x44);//开始温度转换
temp_H=temp_H*16;
temp_H+=temp_L/16;//还原整数部分
temp_L=(temp_L&0x0f)*25/4;//小数部分
}
voiddisplay1()//小数点显示
{
P0=0x80;
P2=0x04;
}
voiddisplay(void)//温度度数显示
{
uchari,j,k;
i=8;j=0;
while(j<2)
{
P2=0;
P0=discode[a[j]/10];//高八位读取
P2=i;
for(k=0;k<50;k++);
i>>=1;
P2=0;
P0=discode[a[j]%10];//低八位读取
P2=i;
for(k=0;k<50;k++);
i>>=1;
if(i==0)i=0x80;
j++;
}
P2=0;
}
voidmain(void)
{
uchark1=0,k2=0;
//delay1(0);
while
(1)
{Read_Temperature();//读取温度
a[0]=temp_H;//
a[1]=temp_L;
for(k1=0;k1<20;k1++)//循环显示
{display();
display1();}
}
五总结
(1)能实现显示两位小数。
(2)所显示温度的范围在1~100℃之间。
(3)整个系统其性能指标均达到了要求。
通过此次设计,让我对AT89系列单片机的应用有了更深一步的认识,在此设计中也使我的编程技能很好的得到了提高,在硬件设计与PCB的设计等方面都得已提高,并且认识到很多新的算法和设计思想。
六参考文献
[1]电子线路设计与实践.北京:
电子工业出版社,2006
[2] 朱永金、成友才.单片机应用技术(C语言).北京:
中国劳动社会保障出版社,2007
[3] 阎石.数字电子技术基础(第三版).北京:
高等教育出版社,1989
指导教师对毕业设计(论文)的评语:
指导教师(签名) 年月日
答辩小组对毕业设计(论文)的答辩评语:
总评成绩:
答辩小组负责人(签名)
年月日
学生毕业设计答辩情况记载表
论文题目:
班级:
学生姓名:
学号:
指导教师:
答辩时间:
记录人:
答
辩
小
组
成
员
姓名
专业技术职务或职称
签字
答
辩
小
组
提
出
的
主
要
问
题
及
学
生
回
答
问
题
情
况
答辩小组组长签名:
目录
一系统方案设计1
1.1方案设计1
1.2方案选择1
1.3系统功能和模块的描述2
1.3.1系统功能2
1.3.2模块描述2
二、电路设计2
2.1主要电子元件2
2.1.1数字温度传感器DS18B202
2.1.2数码管LED显示器2
2.2硬件模块关系图3
三、程序设计4
3.1主程序4
3.2读出温度子程序4
3.3温度转换命令子程序5
3.4计算温度子程序5
3.5显示数据刷新子程序6
四源程序代码7
五总结9
六参考文献9