最常用的DS18B20测温程序

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Read(void) {
uchar i=0; uchar dat=0;Biblioteka Baidufor(i=8;i>0;i--)
{ //DQ=1; //delay(1); DQ=0; dat>>=1; DQ=1; if(DQ) dat|=0x80;//读出数据放入高位,最后右移到低位 delay(4);
} return(dat); }
init_DS(); write(0xcc); write(0xbe);// 读温度寄存器
a=Read();//读取温度低位 LSB b=Read();//读取温度低位 HSB t1=(a&0x0f)*0.0625;//取小数部分
t=((b<<4)|(a>>4));//取整数部分 if(t>128) {
void delay(uint i) {
while(i--); } void DelayMS(uint ms) {
uchar i; while(ms--) for(i=0;i<120;i++); }
void display(int k)//数码管显示 {
P2=0x08; P0=TAB[k%10]; DelayMS(5);
#include<reg51.H> #include<absacc.H> #include <intrins.h> #include<stdio.h> #define uchar unsigned char #define uint unsigned int uchar code TAB[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar code TAB1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; sbit DQ=P3^3;
P2=0x04; P0=TAB[k/10%10]; DelayMS(5);
P2=0x02; P0=TAB1[k/100%10]; DelayMS(5);
P2=0x01; P0=TAB[k/1000]; DelayMS(5);
}
init_DS(void) {
uchar x=0; DQ=1; delay(8); DQ=0; delay(85); DQ=1; delay(14); x=DQ; delay(20); }
t=~t+1; } t=t+t1; return(t); } void main() { float tp; while(1)
{ tp=Readtem(); tp=tp*100;//把二位数乘以 100 变成四位数 display(tp);
} }
write(uchar dat) {
uchar i=0; for(i=8;i>0;i--)
{ DQ=0; DQ=dat&0x01;//从地位开始写入 delay(5); DQ=1; dat>>=1;
} delay(4); }
Readtem(void) { uchar a=0;
uchar b=0;
uchar t=0,t1; init_DS(); write(0xcc);//跳过读序列号操作 write(0x44);//启动温度转换 delay(125);
相关文档
最新文档