编号:53
基于STC15W单片机的温度计(DS18B20)
功能描述:
本设计由STC15W4K32S4单片机+DS18B20温度传感器+1602液晶显示模块+串口模块组成。
1、主控制器是STC15W4K32S4单片机
2、DS18B20温度传感器采集温度,精度0.1摄氏度
3、1602液晶显示温度。
4、测温范围-55~110摄氏度,误差±0.1℃
5、温度值发送至串口助手显示。
Proteus软件:Proteus8.11版本才可以使用
编程软件:Keil4 C51
视频演示链接:
53、基于STC15W单片机的温度计(DS18B20)
仿真图:
程序源码:
#include "15W4KxxS4.H"
#include "lcd1602.h"
#include "delay.h"
#include "ds18b20.h"
#include "math.h" //数学函数头文件
#include "stdio.h"
#include "uart.h"
void main(void)
{
unsigned char Cnt = 0;
unsigned char send_buf[20];
short temprature; //定义温度变量
short Temp; //定义显示温度变量
P1M0 = 0x00; //设置IO工作方式
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
Lcd1602_Init(); //LCD1602液晶初始化
while(DS18B20_Init()!=0) //ds18b20初始化检测
{
Lcd1602_String(0,0," DS18B20 Error! ");
delay_ms(800);
Lcd1602_String(0,0," ");
delay_ms(800);
}
Uart1_Init();
while(1)
{
temprature = DS18B20_Get_Temp(); //读取温度
delay_ms(100);
Lcd1602_String(0,0,"Temp:"); //从第一行第一列开始显示
if(temprature>=0) //如果温度大于等于0
{
Temp = temprature; //
Lcd1602_Write_Data(' ');
}
else //如果温度是负的
{
Temp = abs(temprature); //取绝对值
Lcd1602_Write_Data('-'); //显示负号
}
Lcd1602_Write_Data(Temp/1000+0X30);
Lcd1602_Write_Data(Temp%1000/100+0X30);
Lcd1602_Write_Data(Temp%1000%100/10+0X30);
Lcd1602_Write_Data('.');
Lcd1602_Write_Data(Temp%1000%100%10+0X30);
Lcd1602_Write_Data(0XDF);
Lcd1602_Write_Data('C');
Cnt++;
if(Cnt>=5)
{
Cnt = 0;
sprintf(send_buf,"Temp:%5.1f \r\n",(float)temprature/10);
printf(send_buf); //发送数据到串口
}
}
}
软件免费下载地址:
1、Proteus仿真软件
文件内容:Proteus7.8安装包、Proteus8.6安装包、Proteus.8.10安装包、Proteus Professional 8.11 SP0安装包
链接:https://pan.baidu.com/s/11LNUZ9BJXWvXf1C4dPc3_w
提取码:2756
2、Keil4 C51软件安装包(51单片机下载我)
链接:https://pan.baidu.com/s/1CTZBqDsPsyIbjCIjI_birA
提取码:sy2a文章来源:https://www.toymoban.com/news/detail-776584.html
文件下载:
链接:https://pan.baidu.com/s/1N3FkK3N4rpvcwKWpyUs5fg?pwd=ox64
提取码:ox64文章来源地址https://www.toymoban.com/news/detail-776584.html
到了这里,关于53、基于STC15W单片机的温度计(DS18B20)(Proteus仿真+程序)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!