温度传感器工作流程图 温度传感器工作流程图解
关于温度传感器工作流程图,温度传感器工作流程图解这个很多人还不知道,今天琪琪来为大家解答以上的问题,现在让我们一起来看看吧!
1、#include #define uchar unsigned char#define uint unsigned intit DS=P2^2; //define inteceuint temp; // variable of temperatureuchar flag1; // sign of the result itive or negativeit dula=P2^6;it wela=P2^7;unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};unsigned char code table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};void delay(uint count) //delay{uint i;while(count){i=200;while(i>0)i--;count--;}}void dsreset(void) //send reset and initialization command{uint i;DS=0;i=103;while(i>0)i--;DS=1;i=4;while(i>0)i--;}bit tmpreadbit(void) //read a bit{uint i;bit dat;DS=0;i++; //i++ for delayDS=1;i++;i++;dat=DS;i=8;while(i>0)i--;return (dat);}uchar tmpread(void) //read a byte date{uchar i,j,dat;dat=0;for(i=1;i{j=tmpreadbit();dat=(j>1); //读出的数据位在前面,这样刚好一个字节在DAT里}return(dat);}void tmpwritebyte(uchar dat) //write a byte to ds18b20{uint i;uchar j;bit testb;for(j=1;j{testb=dat&0x01;dat=dat>>1;if(testb) //write 1{DS=0;i++;i++;DS=1;i=8;while(i>0)i--;}else{DS=0; //write 0i=8;while(i>0)i--;DS=1;i++;i++;}}}void tmpchange(void) //DS18B20 begin change{dsreset();delay(1);tmpwritebyte(0xcc); // address all drivers on bustmpwritebyte(0x44); // initiates a single temperature conversion}uint tmp() //get the temperature{float tt;uchar a,b;dsreset();delay(1);tmpwritebyte(0xcc);tmpwritebyte(0xbe);a=tmpread();b=tmpread();temp=b;temptemp=temp|a;tt=temp0.0625;temp=tt10+0.5;return temp;}void display(uint temp) //显示程序{uchar A1,A2,A2t,A3;A1=temp/100;A2t=temp%100;A2=A2t/10;A3=A2t%10;dula=0;P0=table[A1]; //显示百位dula=1;dula=0;wela=0;P0=0x7e;wela=1;wela=0;delay(1);dula=0;P0=table1[A2]; //显示十位dula=1;dula=0;wela=0;P0=0x7d;wela=1;wela=0;delay(1);P0=table[A3]; //显示个位dula=1;dula=0;P0=0x7b;wela=1;wela=0;delay(1);}void main(){uchar a;do{tmpchange();for(a=10;a>0;a--){display(tmp());}} while(1);}AT89C51单片机那可以的要求的撒这是一个仿真实例,可以参考一下试试。
本文到这结束,希望上面文章对大家有所帮助。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系 836084111@qq.com 删除。