标题:
单只18B20测温程序带负温度(LCD1602写单字符方式)
[打印本页]
作者:
经年
时间:
2017-5-21 16:10
标题:
单只18B20测温程序带负温度(LCD1602写单字符方式)
0.png
(72.26 KB, 下载次数: 69)
下载附件
2017-5-21 16:23 上传
单片机源程序如下:
//单只DS18B20的温度检测,测温范围-55 —— +125度,1602液晶显示。
#include "STC15W4K.H"
#include "DS18b20.h"
#include "myfun.h"
#include "LCD1602.h"
bit flag; // flag=0表示正温,flag=1表示负温。
unsigned char baiw,shiw,gew; // 百位、十位、个位 ASCII码
unsigned char point_1,point_2,point_3,point_4; // 小数点后1、2、3、4位ASCII码
//****************温度数据处理函数************************/
void gettemp() //读取温度值
{
unsigned int temp0,temp1,temp; // 存放小数、整数、符号,10000倍小数值
unsigned char temh,teml; // 存放原始高字节与低字节
temp=DS18B20_ReadTemperature(); // 从18B20中读取2字节原始温度值
flag=0;
if ((temp&0xf800)!=0) // 如果是负温,将补码取反加1变为原码
{
temp=~temp +1;
flag=1;
}
temh=temp/256; // 高字节(5位符号+3位数据)
teml=temp%256; // 低字节(4位整数+4位小数)
temp0=teml&0x0F; // 4 位小数
temp1=(temh<<4)|(teml>>4); // 8 位整数(最高一位符号0不用管)
baiw=temp1/100+48; // 百位ASCII码
shiw=(temp1%100)/10+48; // 十位 ASCII码
gew=(temp1%100)%10+48; // 个位 ASCII码
temp=temp0*625; // 将结果中的小数乘以分辨温度0.0625
// 扩大10000倍进行输出,不用浮点,同样可以保留4位小数精度
point_1=temp/1000+48; // 小数点后1位ASCII码
point_2=(temp%1000)/100+48; // 小数点后2位ASCII码
point_3=(temp%100)/10+48; // 小数点后3位ASCII码
point_4=temp%10+48; // 小数点后4位ASCII码
}
void port_mode() // 端口模式
{
P0M1=0x00; P0M0=0x00;P1M1=0x00; P1M0=0x00;P2M1=0x00; P2M0=0x00;P3M1=0x00; P3M0=0x00;
P4M1=0x00; P4M0=0x00;P5M1=0x00; P5M0=0x00;P6M1=0x00; P6M0=0x00;P7M1=0x00; P7M0=0x00;
}
void main()
{
unsigned char xPos,yPos;
unsigned char *s="Now temp is:";
port_mode(); // 所有IO口设为准双向弱上拉方式。
xPos=0; // xPos表示水平右移字符数(0-15)
yPos=0; // yPos表示垂直下移字符数(0-1)
delay100ms(); // 等待LCD1602上电时内部复位
LCD1602_Init();
WriteString(xPos,yPos,s); // X坐标、Y坐标、字符串,屏幕左上角为坐标原点
DS18B20_SetResolution(3); //设置DS18B20的分辨率为12位(默认值,新器件可以不作任何设置)
while(1)
{
gettemp();
if(flag) // 负温度
{
WriteChar(0,1,'-');
}
if(!flag) // 正温度
{
WriteChar(0,1,'+');
}
WriteChar(1,1,baiw);
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
单只18B20测温(1602写单字符方式).rar
(57.38 KB, 下载次数: 11)
2017-5-21 16:10 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1