DS18B20温度采集并由lcd显示 - 图文(5)

2019-05-17 10:08

}

{ }

count=0; miao++; if(miao==60) { }

//write_sfm(10,miao);

miao=0; fen++; if(fen==60) { // }

//write_sfm(7,fen);

fen=0; shi++; if(shi==24) { }

write_sfm(4,shi);

shi=0;

温感部分

#include #include #include

sbit ds=P1^1; //温度传感器信号线 //sbit beep=P2^3; //蜂鸣器 uint temp; float f_temp;

void dsreset(void) //18B20复位,初始化函数 { uint i; ds=0; i=103; while(i>0)i--; ds=1; i=4; while(i>0)i--; }

bit tempreadbit(void) { uint i; bit dat;

ds=0;i++; ds=1;i++;i++; dat=ds; i=8;while(i>0)i--; return (dat); }

uchar tempread(void) {

//读1位函数 //i++ 起延时作用 //读1个字节 uchar i,j,dat; dat=0;

for(i=1;i<=8;i++) {

j=tempreadbit();

dat=(j<<7)|(dat>>1); //读出的数据最低位在最前面,这样刚好一个字节在DAT里 }

return(dat); }

void tempwritebyte(uchar dat) //向18B20写一个字节数据 { uint i; uchar j; bit testb; for(j=1;j<=8;j++) {

testb=dat&0x01; dat=dat>>1; if(testb) //写 1 { ds=0; i++;i++; ds=1;

i=8;while(i>0)i--; } else

{

ds=0; //写 0 i=8;while(i>0)i--; ds=1; i++;i++; } } }

void tempchange(void) //DS18B20 开始获取温度并转换 {

dsreset(); delay(1);

tempwritebyte(0xcc); // 写跳过读ROM指令 tempwritebyte(0x44); // 写温度转换指令 }

uint get_temp() //读取寄存器中存储的温度数据 {

uchar a,b; dsreset(); delay(1);

tempwritebyte(0xcc); tempwritebyte(0xbe);

a=tempread(); //读低8位 b=tempread(); //读高8位 temp=b;

temp<<=8; //两个字节组合为1个字 temp=temp|a;

f_temp=temp*0.0625; //温度在寄存器中为12位 分辨率位0.0625° temp=f_temp*10+0.5; //乘以10表示小数点后面只取1位,加0.5是四舍五入 f_temp=f_temp+0.05;

return temp; //temp是整型 }

////////////////////显示程序调用lcd中的write_sfm1 十位地址写4 void dis_temp(uint t) { uint i; i=t/100; write_sfm1(0,i); i=(t0)/10; write_sfm1(1,i); i=t; write_sfm1(3,i); }

void dis_temp1(uint t) //显示储存的温度

{ uint i; i=t/100; write_sfm1(11,i); i=(t0)/10; write_sfm1(12,i); i=t;

个位为5 小数为7//////////////////////////


DS18B20温度采集并由lcd显示 - 图文(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:4AM2U3 I have a friend 教案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

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