温度传感器工作原理.docx

温度传感器工作原理.docx

ID:52345057

大小:302.36 KB

页数:13页

时间:2020-03-26

温度传感器工作原理.docx_第1页
温度传感器工作原理.docx_第2页
温度传感器工作原理.docx_第3页
温度传感器工作原理.docx_第4页
温度传感器工作原理.docx_第5页
资源描述:

《温度传感器工作原理.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、温度传感器设计总体设计框图本方案设计的系统由单片机系统、数字温度传感器、数码管显示模块组成,其总体架构如下图。单片机测温电路显示电路驱动电路单片机系统本设计采用STC89C52单片机作为控制器,完成所有功能的控制,包括:lDS18B20数字温度传感器的初始化和读取温度值lLED数码管显示驱动与控制数字温度传感器模块DS18B20性能l测温范围-55~+125℃,以0.5℃递增l可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃l温度数字量转换时间

2、200ms,12位分辨率时最多在750ms内把温度转换为数字DS18B20外形及引脚说明DS18B20外形及引脚lGND:地lDQ:单线运用的数据输入/输出引脚lVD:可选的电源引脚软件设计主程序模块主程序需要调用1个子程序为:l实时温度显示子程序:驱动数码管把实时温度值送出在LED数码管显示读温度值模块读温度值模块需要调用4个子程序,分别为:lDS18B20初始化子程序:让单片机知道DS18B20在总线上且已准备好操作lDS18B20写字节子程序:对DS18B20发出命令lDS18B20读字节

3、子程序:读取DS18B20存储器的数据l延时子程序:对DS18B20操作时的时序控制DS18B20测温流程数码管显示转换成显示码读暂存器跳过ROM匹配延时IS温度变换跳过ROM匹配初始化DS18B20按照此步骤,程序设计时首先就要执行初始程序化程序INI10,其次将要跳过ROM匹配命令(代码CCH)写入到DS18B20中,此时需根据数字温度传感器写时序编写对DS18B20一个写入字节程序WRITE,将跳过ROM匹配命令写入DS18B20。为了完成温度启动转换,需要将启动转换命令写入DS18B20

4、中。用延时750ms等待转换完成。随后再按照初始化时序执行初始化程序INI10,用写入一个字节程序将匹配ROM命令(代码为55h)写入到DS18B20中。为了完成读便笺式存储器操作,需要先结合数字温度传感器写时序将读便笺式存储器命令(代码为BEH)写入到DS18B20中,再用温度传感器读时序编写的每一个字节程序READ,连续读取DS18B20便笺式存储器中9个字节的内容。由此可见。结合上述所介绍的初始化时序,温度传感器写时序和温度传感器读时序,才可以将所需的命令写入与读出,完成温度的正确读取。软

5、件程序数码管显示温度程序://头文件:#include"reg51.h"#include"ds18b20.h"//引入DS18B20头文件//变量定义:unsignedcharly_dis[4];//定义显示缓冲区codeunsignedchartable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//表:共阳数码管0-9unsignedcharl_posit=0;//显示位置//引脚定义:sbitSMG_q=P1^0;//定义数

6、码管阳级控制脚(千位)sbitSMG_b=P1^1;//定义数码管阳级控制脚(百位)sbitSMG_s=P1^2;//定义数码管阳级控制脚(十位)sbitSMG_g=P1^3;//定义数码管阳级控制脚(个位)//函数声明:voiddisplay(void);//显示函数,显示缓冲区内容voiddelay(void);//主函数,C语言的入口函数:voidmain(){unsignedinti=0;floattt;intltemp;while(1){if(i==0)tmpchange();//温度

7、转换if(i==100){tt=tmp()*0.0625;//得到真实十进制温度值,因为DS18B20//可以精确到0.0625度,所以读回数据的最低位代表的是0.0625度。ltemp=tt*10+0.5;//放大十倍,这样做的目的将小数点后第一位也转换为可显示数字,同时进行一个四舍五入操作。if(ltemp<0){//判断第一位显示整数还是负号ly_dis[0]=0xbf;ltemp=0-ltemp;}elsely_dis[0]=ltemp/1000;//显示百位值ltemp=ltemp%1

8、000;ly_dis[1]=ltemp/100;//显示温度十位值ltemp=ltemp%100;ly_dis[2]=ltemp/10;//显示温度个位值ly_dis[3]=ltemp%10;//显示小数点后一位}i++;if(i==3000)i=0;display();//调用显示delay();}}//显示函数,参数为显示内容voiddisplay(){P0=0XFF;//switch(l_posit){case0://选择千位数码管,关闭其它位SMG_q=0;SMG_b=1;SMG_s=1

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。