基于DS18B20温度传感器的设计

2026/4/23 20:54:45

图 4-1-3 DS18B20程序流程

所以在软件设计方面,我们主要是读取温度函数和温度显示函数的编写。 1、

读取温度函数

图4-1-4 读温度子程序流程图

图4-1-5 温度转换子程序流程图

void Read_Temperature() {

if(Init_DS18B20()==1) //DS18B20故障 }

DS18B20_IS_OK=0;

else { }

WriteOneByte(0xcc);

//跳过读取DS18B20的系列号

WriteOneByte(0x44); //启动温度转换 Init_DS18B20(); WriteOneByte(0xcc);

//跳过读取DS18B20的系列号

WriteOneByte(0xbe); // 读取温度寄存器 Temp_Value[0] = ReadOneByte(); //温度低8位 Temp_Value[1] = ReadOneByte(); // 温度高8位 DS18B20_IS_OK=1;

上述代码中,未读取DS18B20的系列号。 2、

温度显示函数

void Display_Temperature() {

uchar i;

//延时值和负数标志 uchar t = 150, ng = 0;

//高5位全为1(0XF8)则为负数,为负数时取反加1,并设置负数标识 if((Temp_Value[1]&0xf8)==0xf8) {

Temp_Value[1] = ~Temp_Value[1]; }

//查表得到温度小数部分

Display_Digit[0] = df_Table[Temp_Value[0]&0x0f];

//获取温度整数部分(高字节中的低3位和低字节中高4位,无符号) CurrentT = ((Temp_Value[0]&0xf0)>>4) | ((Temp_Value[1]&0x07)<<4); //将整数部分分解为3位待显示的显示数字

Temp_Value[0] = ~Temp_Value[0]+1; if(Temp_Value[0]==0x00)

Temp_Value[1]++; //负数标识置1

ng = 1;

Display_Digit[3] = CurrentT/100; Display_Digit[2] = CurrentT0/10; Display_Digit[1] = CurrentT; //刷新LCD显示缓冲

Current_Temp_Display_Buffer[11] = Display_Digit[0] + '0'; Current_Temp_Display_Buffer[10] = '.';

Current_Temp_Display_Buffer[9] = Display_Digit[1] + '0'; Current_Temp_Display_Buffer[8] = Display_Digit[2] + '0'; Current_Temp_Display_Buffer[7] = Display_Digit[3] + '0'; //高位为零时不显示 if(Display_Digit[3] == 0)

Current_Temp_Display_Buffer[7] = ' ';

if(Display_Digit[2] == 0&&Display_Digit[3]==0)

Current_Temp_Display_Buffer[8] = ' '; //负数符号显示在恰当的位置

if(ng) {

if(Current_Temp_Display_Buffer[8] == ' ')

Current_Temp_Display_Buffer[8] = '-';

else if(Current_Temp_Display_Buffer[7] == ' ')

Current_Temp_Display_Buffer[7] = '-';

else


基于DS18B20温度传感器的设计.doc 将本文的Word文档下载到电脑
搜索更多关于: 基于DS18B20温度传感器的设计 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219