当前位置:文档之家› 数字式温度计的设计与制作

数字式温度计的设计与制作

/************温度转换程序*************/
uint readtemperture()
{
uchar a,b;
reset();
write_byte(0xcc);
write_byte(0xbe);
a=read_byte();
b=read_byte();
temp=b;
temp<<=8;
_nop_();
dp=1;
delay_us(5);
}
else
{
dp=0;
delay_us(8);
dp=1;
_nop_();
_nop_();
}
}
}
DS18B20的读时序如图7所示,
图7:DS18B20的读时序
读时序分为读0和读1两个过程。DS18B20的读时序是从主机把单总线拉低之后,在15us之内就得释放总线,以使DS18B20把数据传输到单总线上,DS18B20完成一个读时序过程至少需要60us,这两个时序可以合并为一个子程序,程序代码如下
表3:温度值与输出数据的关系
温度值
十六进制输出
+125摄氏度
07D0 H
+85摄氏度
0550 H
+25.0625摄氏度
0191 H
+10.125摄氏度
00A2 H
+0.5摄氏度
0008 H
0摄氏度
0000 H
-0.5摄氏度
FFF8 H
-10.125摄氏度
FF5E H
-25.0625摄氏度
FF6FH
-55摄氏度
数字式温度计的设计与制作
10级电子1班
一 项目提出
1.1 任务
为某温室大棚设计一个数字式温度计,以便当棚内温度变化时,能及时提醒工作人员进行处理,保证温室温度变化在较小范围。
1.2 要求
(1)能实现温度数据的采集与记录。
(2)能实现各测量值的显示,精度为0.1摄氏度,温度范围在-55到+55摄氏度。
表4:ROM操作指令
指令
指令代码
操作说明
读ROM
33 H
读取固化在ROM中的64位序列号(用于多点测量)
匹配ROM
55 H
主机对多个DS18B20进行某一个操作时,需要发出匹配ROM命令
跳过ROM
CC H
表示之后的操作是对所有DS18B20,此命令可节省时间
搜索ROM
F0 H
主机通过此命令对总线上的多个器件进行ROM编码的搜索
temp=temp|a;
if(temp>0x8000)
{
temp=~temp+1;
flag=1;
}
else
flag=0;
temp=temp*5/8;
return temp;
}
3.2 蜂鸣器的扩展
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机和定时器等电子产品中作为发声器件,按结构的不同,蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型,其实物如图8所示。
图8:蜂鸣器实物
3.2.1 蜂鸣器的结构原理
压电式蜂鸣器:压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱和外壳等组成。有的压电蜂鸣器外壳上还装有发光二极管。多谐振荡器由晶体管或集成电路构成。当接通电源(1.5到15V直流电源)后,多谐振荡器起振,输出1.5到2.5KHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。压电蜂鸣片由铌镁酸铝压电陶瓷材料制成。在陶瓷片的两面镀上银电极,经极化和老化处理后,再与黄铜片或不锈钢片粘在一起。
(3)能实现上、下限报警。
二 项目分析
2.1 任务意义
一些温室大棚常常需要有较好的恒温性,即当温度变化达到一定数值时,需要及时调整,以保持温度恒定,保证作物的品质。现某大棚希望设计一个数字式温度计,能实时测量和显示大棚温度。当温度发生较大变化时,能及时做出报警提示。
2.2 系统方案设计
根据醒目的需求,本系统使用STC89C52单片机,DS18B20数字温度传感器等,监测大棚的温度变化。具体功能如下:
/************读DS18B20指令*************/
bit renop_();
dp=1;
_nop_();
_nop_();
dat=dp;
delay_us(10);
return(dat);
}
uchar read_byte() //读一个位
delay_us(80); //精确延时大于480us
dp=1; //拉高总线
delay_us(8);
flag1=dp; //如果flag=0,则初始化成功,否则,失败!
delay_us(20);
}
DS18B20写时序如图6所示。
图6:DS18B20的写时序
写时序分为写0和写1两个过程,当要写0时,单总线要被拉低至少60us,保证DS18B20能够在15到45us之间正确地采样总线上的0电平。当要写1时,单总线被拉低之后,在15us之内就得释放总线。写0时序和写1时序两个过程可以合并为一个子程序,分别在DS18B20的采样区送0和1,写程序如下:
报警搜索
EC H
此命令可搜索有报警的DS18B20器件
表5:RAM操作指令
指令
指令代码
操作说明
写暂存存储器
4E H
将数据写入暂存器的TH、TL字节
读暂存存储器
BE H
读暂存器内容
复制暂存存储器
48 H
把暂存器的TH、TL字节写到E2RAM中
温度转换
44 H
启动DS18B20进行温度转换
重新调出
B8 H
3.1.1 DS18B20的外观及内部结构
DS18B20采用3脚TO-92A封装,外形如同普通的半导体三极管,除此之外,DS18B20也有8脚的SOIC封装及6脚的TSOC封装等形式,如图2所示。
图2:DS18B20封装形式
DS18B20内部结构框图,如图3所示,主要包括7部分,64位光刻ROM与单总线接口,温度传感器,温度报警触发器TH和TL(E2RAM),分别用来存储用户设定的温度上、下限,高速暂存器(SCRATCHPAD RAM),用于存取中间数据,存储与控制逻辑,寄生电源,8位循环冗余效验码(CRC)。
把E2RAM中的TH、TL字节写到暂存器TH、TL字节
读电源
B4 H
启动DS18B20发送电源供电方式的信号给主CPU
3.1.3
DS18B20与单片机的通信是通过严格的时序来实现的,每次传送数据或命令都是由一系列的时序信号组成,共有3种基本时序:初始化时序,写0、1时序,读0、1时序。初始化时序如图5所示,
*温度检测:系统能够实时检测大棚温度,温度分辨率为0.1摄氏度,温度范围为—55到+55摄氏度。
*温度显示:系统能实时显示大棚温度值,显示到小数点后一位,在设置上、下限报警时,显示上、下限提醒标志。
*温度报警:系统能够设置大棚温度范围,当棚内温度超出设定范围时发生报警。
*报警设置:系统能够设置上、下限报警温度值,设定精度为0.1摄氏度。
FC90 H
DS18B20完成转换后,就把测得的温度值与TH、TL比较,若T>TH或T<TL,当使用报警搜索命令时,DS19B20会输出该器件的64位ROM值。
3.1.2 DS18B20的控制方法
DS18B20与单片机的连接有两种方法,一种是VDD接外部电源,GND接地,DQ与单片机的I/O线相连;另一种是用寄生电源供电,此时VDD、GND接地,DQ接单片机I/O。无论是内部寄生电源还是外部供电,I/O口线都要接5千欧左右的上拉电阻。
根据DS18B20的通信协议,主机(单片机)控制DS19B20完成温度转换必须经过如下几个步骤:每一次读写之前都要对DS18B20进行初始化操作,初始化成功后执行一条对ROM的操作命令,然后进行存储器(包括SCRATCHPAD和E2RAM)操作命令,使DS18B20完成温度测量并将结果存入高速寄存器,在此基础上,主机才能读出转换结果。DS18B20共有5条ROM操作指令(见表4)和6条RAM指令(见表5)。
电磁式蜂鸣器:电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振荡膜片及外壳组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振荡膜片在电磁线圈和磁铁的相互作用下,周期性的振荡发声。
根据以上功能分析,数字温度计基本结构如图1所示,由单片机最小系统、按键模块、温度采样模块、显示模块和报警模块等组成。
图1:数字温度计的基本结构
三 项目相关知识
3.1 数字温度传感器DS18B20的使用
可以测量温度的器件很多,但DS18B20是一种无须进过其它变换电路,直接输出被测温度数字量的传感器。它采用单总线专用技术,可通过串口线或其它I/O口线与计算机接口相连,支持多器件扩展,使用相当方便,测温范围为-55到+125摄氏度,其分辨率为0.5摄氏度,最高可达0.0625摄氏度。
表2:DS18B20温度值格式表
LSBYTE
BIT7
BIT6
BIT5
BIT4
BIT3
BIT2
BIT1
BIT0
MSBYTE
BIT15
BIT14
BIT13
BIT12
BIT11
BIT10
BIT9
BIT8
S
S
S
S
S
S=SIGN
其中S为符号位,如果测得的温度大于0,这5位为0,只要将测到的数据乘以0.0625即可得到实际温度;如果温度小于0,这5位为1,测得的数值要取反加1再乘以0.0625即可得到实际温度,不同温度与数字输出的对应关系如表3所示。
相关主题