资源描述:
《基于DS18B20的温度采集和显示》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、基于DS18B20温度采集和显示#includetypedefunsignedcharuchar;typedefunsignedintuint8;typedefunsignedintuint16;sbitrs=P2^5;sbitrw=P2^6;sbite=P2^7;sbitDQ=P2^3;sbitBEEP=P1^2;codeuint8xsH[16][2]={{0,0},{0,6},{1,2},{1,8},{2,5},{3,1},{3,7},{4,3},{5,0},{5,6},{6,2},{6,8},{7,5},{8
2、,1},{8,7},{9,3}};//换用二维数组codeuint8xsL[16][2]={{0,0},{2,5},{5,0},{7,5},{0,0},{2,5},{5,0},{7,5},{0,0},{2,5},{5,0},{7,5},{0,0},{2,5},{5,0},{7,5}};codeucharcdis1[]={"DS18B20OK"};codeucharcdis2[]={"TMP:"};codeucharcdis3[]={"TMP:-"};codeucharcdis4[]={"DS18B20ERR0R"};codeucha
3、rcdis5[]={"PLEASECHECK"};uint8x;uint8WD_S[6];uint8ResultSignal;uint8TB,TS,TG;uint8tempL;uint8tempH;uint8ResultLH[2];ResultLL[2];ResultH;//结果的小数高位,低位、整数/*************************************函数功能:延时子程序输入:k输出:无**************************************/voiddelay(uint16k){whil
4、e(k--);}/****************************************名称:delay_50us()功能:50us非精确延时,晶振12MHz*****************************************/voiddelay_50us(uint8a){uint8i;for(;a>0;a--)for(i=19;i>0;i--);}/****************************************函数功能:DS18B20初始化子程序输入:无输出:无**************
5、****************************/init_DS18B02(){DQ=1;delay(8);DQ=0;delay(80);DQ=1;delay(8);x=DQ;delay(4);return(x);}/*****************************************函数功能:从DS18B20读一字节输入:无输出:dat*******************************************/readOnechar(){uint8i;uint8dat;for(i=8;i>0;i-
6、-){DQ=0;dat>>=1;DQ=1;if(DQ)dat
7、=0x80;delay(4);}return(dat);}/*******************************************函数功能:向DS18B20写一字节数据输入:dat输出:无********************************************/WriteOnechar(uint8dat){uint8i;for(i=8;i>0;i--){DQ=0;DQ=dat&0x01;delay(4);DQ=1;dat>>=1;}dela
8、y(4);}/***************************************名称:writ_comd功能:向LCD写指令****************************************/voidwrite_comd(uint8comd){rs=0;rw=0;e=0;P0=comd;delay_50us(2);e=1;delay_50us(3);e=0;}/***************************************名称:write_data功能:向LCD写数据************
9、****************************/voidwrite_data(uint8dat){rs=1;rw=0;e=0;P0=dat;delay_50us(2);e=1;delay_50us(3);e=0;}/****