DS18B20 可编程数字温度计C程序.doc_第1页
DS18B20 可编程数字温度计C程序.doc_第2页
DS18B20 可编程数字温度计C程序.doc_第3页
DS18B20 可编程数字温度计C程序.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

附录二:18b20 C程序/将DQ与Vcc之间接入4.7K上拉电阻#include reg52.h#include INTRINS.H#include 1602.c#define uchar unsigned char#define uint unsigned int/#define CLEARSCREEN LCD_en_command(0x01) 1602清屏sbit DQ=P10;/*操作命令代码 跳过ROM 0xCC 发送温度转换 0xBE 写EEPROM 0x4E*/ /低层驱动子程序/void Init18B20(void); /初始化void Write18B20(uchar ch);/写数据unsigned char Read18B20(void);/读数据 void Delay15(uchar n); void Delay10ms(uint delay_num);void Display(void);/ code uchar decimalH=00,06,12,18,25,31,37,43,50,56,62,68,75,81,87,93;code uchar decimalL=00,25,50,75,00,25,50,75,00,25,50,75,00,25,50,75;uint ResultTemperatureH ,ResultTemperatureLH,ResultTemperatureLL;/整数,小数高位,小数低位uint ResultSignal;/符号位main() uint TemH,TemL,delay,k=0; for(; ; ) Init18B20(); Write18B20(0xCC);/跳过ROM _nop_(); /Write18B20(0x4E);/写EEPROM / Write18B20(0x00);/Th /Write18B20(0x00);/Tl Write18B20(0x7f);/12 bits温度分辨率 Init18B20(); Write18B20(0xCC);/跳过ROM _nop_(); Write18B20(0x44);/发送温度转换指令 Delay10ms(25); Delay10ms(25); Delay10ms(25); Delay10ms(25);/等待1s转换 Init18B20(); Write18B20(0xCC);/跳过ROM Write18B20(0xBE);/发送温度转换指令 TemL=Read18B20(); /读低位温度值 TemH=Read18B20(); /读高位温度值 Delay10ms(2); TemH=(TemH4); TemL=TemL&0x0f; /取低4位 if(TemH&0x80) TemH=TemH; TemL=TemL+1; ResultSignal=1; /负 else ResultSignal=0; /正 ResultTemperatureLH=decimalHTemL; ResultTemperatureLL=decimalLTemL; ResultTemperatureH=TemH; Display(); for(delay=0;delay60000;delay+); for(delay=0;delay20000;delay+); void Display(void) uint i,j,q; LCD_init(); CLEARSCREEN; LCD_en_command(0x01); delay_nms(2); q=ResultTemperatureH/100; i=(ResultTemperatureH%100)/10; j=ResultTemperatureH-(i*10+q*100); LCD_write_string(0,LINE1, Jaq1217 18B20 );if(ResultSignal) LCD_write_string(0,LINE2, T is:- . ); else LCD_write_string(0,LINE2, T is:+ . ); LCD_write_char(0x07,LINE2,q|0x30); LCD_write_char(0x08,LINE2,i|0x30); LCD_write_char(0x09,LINE2,j|0x30); LCD_write_char(0x0b,LINE2,(ResultTemperatureLH/10)|0x30);LCD_write_char(0x0c,LINE2,(ResultTemperatureLH%10)|0x30);LCD_write_char(0x0d,LINE2,(ResultTemperatureLL/10)|0x30);LCD_write_char(0x0e,LINE2,(ResultTemperatureLL%10)|0x30); unsigned char Read18B20(void) unsigned char ch; unsigned char q ; for(q=0;q1; DQ=0; _nop_(); DQ=1; _nop_();_nop_();_nop_();_nop_(); if(DQ=1) ch=ch|0x80; else ch=ch&0x7f; Delay15(3); DQ=1; return (ch); void Write18B20(uchar ch) uchar i; for(i=0;i1; _nop_(); void Init18B20(void) DQ=0; Delay15(33);/至少延时480us DQ=1; Delay15(10);/至少延时100us /*if(DQ=1) return 0; /初始化失败 else return 1;DQ=1; Delay15(18); */ void Delay15(uchar n) do _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论