⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 18b20.txt

📁 简单实用的列子,大家可以看看,特别时候初学者,不要改动继续写下去就能用了!
💻 TXT
字号:
#include <reg52.h>
#include <intrins.h>
#define    uint unsigned int
#define    uchar unsigned char
sbit DQ=P3^0; //定义连接DS18B20的IO口
uchar MSB; //温度高字节
uchar LSB; //温度低字节

void delay(uchar count){
uchar i;
for(i=0;i<count;i++);
}
//初始化DS18B20
void DS18B20Init(){
DQ=0;            //下拉500us
delay(60);
DQ=1;            //释放总线
delay(6);
while(DQ);       //等待应答信号
while(~DQ);      //等待释放总线
}
//读一个字节
uchar ReadByte(){
uchar i;
uchar ReadData=0;
for(i=0;i<8;i++){
DQ=0;
ReadData>>=1;
DQ=1;
if(DQ) ReadData|=0x80;
delay(4);
}
return ReadData;
}
//写一个字节
WriteByte(uchar WriteData){
uchar i;
uchar tmpData;
for(i=0;i<8;i++){
tmpData=WriteData&0x01;
WriteData>>=1;
if(tmpData){
DQ=0;
DQ=1;
delay(4);
}else{
DQ=0;
delay(4);
DQ=1;
}
}
}

//主程序
main(){
uchar thl,tl,th;
P0=0xFF; //复位P0口
P2=0xFF; //复位P2口
while(1){
DS18B20Init(); //复位DS18B20
WriteByte(0xCC); //跳过ROM配置
WriteByte(0x44); //启动温度转换
DS18B20Init();
WriteByte(0xCC);
WriteByte(0xBE); //读温度寄存器
LSB=ReadByte(); //读温度数据低字节
MSB=ReadByte();//读温度数据高字节
tl=LSB;
th=MSB;
tl=tl&0xf0;/*对此计算出要精确的温度这里为一度*/
tl=tl>>4;
th=th&0x07;
th=th<<4;
thl=th+tl;
P1=thl;/*在p1口输出01代码,温度精确到1度*/
}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -