单片机控制的温度传感器C语言程序

单片机控制的温度传感器C语言程序

ID:47665824

大小:42.00 KB

页数:8页

时间:2020-01-27

单片机控制的温度传感器C语言程序_第1页
单片机控制的温度传感器C语言程序_第2页
单片机控制的温度传感器C语言程序_第3页
单片机控制的温度传感器C语言程序_第4页
单片机控制的温度传感器C语言程序_第5页
资源描述:

《单片机控制的温度传感器C语言程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、#include#defineDOP3_7#defineSEGP0//数码管自左至右依次为1234位#defineMS2L0x18//1ms的延时参数#defineMS2H0xfc#defineucharunsignedchar#defineuintunsignedintucharcodecomm[4]={0x01,0x02,0x04,0x08};ucharcodeseg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};ucharcodeseg_add_dicimal[10]={0x40,0x79

2、,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};ucharcodeseg_dicimal[2]={0xc0,0x92};uchark=0;uchartemp_l=0;uchartemp_h=0;uchartempsign=0;ucharhundreds=0;uchartens=0;ucharones=0;ucharlow_four=0;/*延时以ms为单位的t时间*/voidDelay(uintt){uinti;while(t--){for(i=0;i<125;i++){}}}/*us级延时,延时时间约4+2*i*/voidDelayus(uch

3、ari){while(--i);}/*产生复位脉冲,等待应答信号*/voidResetpaulse(){DO=0;//拉低约600usDelayus(150);Delayus(150);DO=1;//产生上升沿,延时约15~60usDelayus(30);while(~DO);//等待应答信号}/*读取数据一位*/bitReadbit(){uinti=0;bitb=0;DO=0;//产生读时隙i++;//维持低电平至少1usDO=1;//1us以上后拉高Delayus(2);//延时8us,DO下降沿15内ds18b20输出的数据才有效b=DO;//读取数据Delayus(40);

4、//每个读时隙至少持续60usreturn(b);}/*读取一个字节*/ucharReadbyte(){ucharbyte_read=0;uchari,j;for(i=0;i<8;i++){j=Readbit();byte_read=(j<

5、byte_read;//低位读起}return(byte_read);}/*写一个字节*/voidWritebyte(ucharbyte_to_write){uchari=0;ucharj=0;bitwrite_bit=0;for(j=0;j<8;j++){write_bit=(byte_to_write&0x01);if(write_b

6、it==1)//写1{DO=0;//产生写时隙Delayus(3);//延时15usDO=1;//写1Delayus(40);//延时,写时隙不得低于60us}else{DO=0;//产生写时隙Delayus(50);//延时,保持低约60us~120usDO=1;i++;}byte_to_write=byte_to_write>>1;}}/*配置ds18b20,9位分辨率*/voidConfigurate(){EA=0;Resetpaulse();//发出复位脉冲,每次操作都从复位开始Delay(1);Writebyte(0xcc);//skiproom命令Writebyte(0

7、x4e);Writebyte(0x7f);Writebyte(0x80);Writebyte(0x1f);EA=1;}/*启动温度转换*/voidStartConvert(){Resetpaulse();//发出复位脉冲,每次操作都从复位开始Delay(1);EA=0;Writebyte(0xcc);//skiproom命令Writebyte(0x44);//启动温度转换命令EA=1;}/*读取温度值*/voidReadTempreture(){EA=0;Resetpaulse();//发出复位脉冲,每次操作都从复位开始Delay(1);Writebyte(0xcc);//skip

8、room命令Writebyte(0xbe);//读取暂存器命令temp_l=Readbyte();//存储温度低字节值(整数部分低四位和小数部分)temp_h=Readbyte();//存储温度高字节值(其中高五位为符号位)EA=1;}/*数据转换*/voidDigitalConvert(){uchartotal=0;tempsign=(temp_h>>7)&0x01;//得出符号位if(tempsign==0)//正数的处理方法{total=((temp_h<<4)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。