欢迎来到天天文库
浏览记录
ID:37709928
大小:20.50 KB
页数:4页
时间:2019-05-29
《DS18B20温度检测C语言程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、/*DS108B20数码管显示程序*//*直接复制调用即可*/#include#include#defineucharunsignedchar#defineuintunsignedint#definenop_nop_()sbitdq=P3^6;//温度的DQ脚与P3^6相连sbitwx1=P2^4;sbitwx2=P2^5;sbitwx3=P2^6;sbitwx4=P2^7;ucharT,xs;//**************************************
2、*****************************ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6};//*******************************************************************//**********************************************************voiddelay10us(){u
3、chari;for(i=1;i>0;i--){}}//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$voiddelay_us(uchardus){ucharmm;for(mm=0;mm4、ms;mmm++){delay_us(230);}}//*************************************************//*************************************************//*************************************************//*************************************************//***************DS18B20初始化复位5、****************/voidds_rst(){dq=0;delay_us(110);//480usdq=1;delay_us(110);}//************单线写一字节***************voidwrite_ICcmd(uchardat){uchari;for(i=0;i<8;i++){dq=0;dq=dat&0x01;delay_us(3);//延时15usdq=1;dat>>=1;delay_us(10);//延时45us}}//************单线读一字节*****6、*****************ucharread_ICdata(){uchari=0;uchardat=0;for(i=8;i>0;i--){dq=0;dat>>=1;dq=1;if(dq)dat7、=0x80;delay_us(10);//延时45us}return(dat);}//************温度读取**********************voidread_TMP(){uchara=0,b=0;ds_rst();write_ICcmd(0xcc);//跳过ROMwrite_ICcmd(0x48、4);//温度转换为数据ds_rst();write_ICcmd(0xcc);write_ICcmd(0xbe);//读取温度指令a=read_ICdata();//温度低八位,最小位为0.0625°Cb=read_ICdata();//温度高位,高四位为正负号,1111xxxx为负,0000xxxx为正,后四位为温度的高四位T=a;T=(T&0xF0)>>4;T=T+((b&0x0F)<<4);//T为小数点前的数值xs=(a&0x0F)*6.25;//xs为小点后的数值的100倍}//************9、*共阳极数码管显示*******************voidwenduxianshi(){wx1=0;//十位显示P0=table[T/10];delay_us(500);wx1=1;wx2=0;//个位加小数点显示P0=table[T%10]+0x80;delay_us(500);wx2=1;wx3=0;//小数显示P0=table[xs/10];delay_us(
4、ms;mmm++){delay_us(230);}}//*************************************************//*************************************************//*************************************************//*************************************************//***************DS18B20初始化复位
5、****************/voidds_rst(){dq=0;delay_us(110);//480usdq=1;delay_us(110);}//************单线写一字节***************voidwrite_ICcmd(uchardat){uchari;for(i=0;i<8;i++){dq=0;dq=dat&0x01;delay_us(3);//延时15usdq=1;dat>>=1;delay_us(10);//延时45us}}//************单线读一字节*****
6、*****************ucharread_ICdata(){uchari=0;uchardat=0;for(i=8;i>0;i--){dq=0;dat>>=1;dq=1;if(dq)dat
7、=0x80;delay_us(10);//延时45us}return(dat);}//************温度读取**********************voidread_TMP(){uchara=0,b=0;ds_rst();write_ICcmd(0xcc);//跳过ROMwrite_ICcmd(0x4
8、4);//温度转换为数据ds_rst();write_ICcmd(0xcc);write_ICcmd(0xbe);//读取温度指令a=read_ICdata();//温度低八位,最小位为0.0625°Cb=read_ICdata();//温度高位,高四位为正负号,1111xxxx为负,0000xxxx为正,后四位为温度的高四位T=a;T=(T&0xF0)>>4;T=T+((b&0x0F)<<4);//T为小数点前的数值xs=(a&0x0F)*6.25;//xs为小点后的数值的100倍}//************
9、*共阳极数码管显示*******************voidwenduxianshi(){wx1=0;//十位显示P0=table[T/10];delay_us(500);wx1=1;wx2=0;//个位加小数点显示P0=table[T%10]+0x80;delay_us(500);wx2=1;wx3=0;//小数显示P0=table[xs/10];delay_us(
此文档下载收益归作者所有