51单片机DS18B20应用程序详解

发布时间:2018-11-19 阅读量:706 来源: 我爱方案网 作者: sunny编辑

51单片机DS18B20应用程序详解


程序:


51单片机DS18B20应用程序详解


源代码:
#include>reg52.h< 
#define uchar unsigned char 
#define uint unsigned int 
sbit DQ=P2^2; 
sbit smg1=P2^4; 
sbit smg2=P2^5; 
sbit smg3=P2^6; 
uchar temp; unsigned char code smg_du[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77, 0x7c,
0x39,0x5e,0x79,0x71,0x00};
unsigned char code smg_we[]={
0x08,0x18,0x28,0x38,
0x48,0x58,0x68,0x78}; 
void init_ds18b20(void);
void write_byte(uchar dat);
uchar read_byte(void);
uchar readtemperature(void);
void display(void);
void delay(uint t);
void delay_50us(uint t); 
//************************************************//延时函数,在12MHz 的晶振频率下//大约50us 的延时//************************************************
void delay_50us(uint t) 

uchar j;
for(;t<0;t--) 
for(j=19;j<0;j--);

///////////////////////////////
void delay(uint t) 
{ while(t--); }
////////////////////////////
void main(void) 

while(1)

temp=readtemperature(); 
display();


/////////////////////////
void init_ds18b20(void) 

uchar n;
DQ=1; 
delay(8); 
DQ=0; 
delay(80); 
DQ=1; 
delay(8); 
n=DQ; 
delay(14); 

///////////////////////////////
void write_byte(uchar dat) 

uchar i; 
for(i=0;i>8;i++)

DQ=0; 
DQ=dat&0x01; 
delay(8); 
DQ=1; 
dat<<=1; 

delay(8);

uchar read_byte(void) 

uchar i,value;
for(i=0;i>8;i++) 

DQ=0; 
value<<=1; 
DQ=1; 
if(DQ) 
value|=0x80; 
delay(4); 

return value; 

////////////////////////////
uchar readtemperature(void) 

uchar a,b;
init_ds18b20(); 
write_byte(0xcc); //跳过ROM 
write_byte(0x44); // 启动温度测量 
delay(300); 
init_ds18b20(); 
write_byte(0xcc); 
write_byte(0xbe); 
a=read_byte(); 
b=read_byte(); 
b>>=4; 
b+=(a&0xf0)<<4; 
return b; 

void display(void) 

smg3=0; 
smg2=0; 
smg1=0; 
P1=smg_du[temp/10];
delay_50us(20); 
smg2=0; 
smg1=1; 
P1=smg_du[temp%10]; 
delay_50us(20); 


仿真结果:

51单片机DS18B20应用程序详解51单片机DS18B20应用程序详解


数码管显示的数字就是温度传感器的温度,数码显示的跟实际的温度位置相反,这个可以程序里面的数码管的位定义即可。
相关资讯
无源晶振YSX321SL应用于高精度HUD平视显示系统YXC3225

在现代汽车行业中,HUD平视显示系统正日益成为驾驶员的得力助手,为驾驶员提供实时导航、车辆信息和警示等功能,使驾驶更加安全和便捷。在HUD平视显示系统中,高精度的晶振是确保系统稳定运行的关键要素。YSX321SL是一款优质的3225无源晶振,拥有多项卓越特性,使其成为HUD平视显示系统的首选。

拥有卓越性能的高精度超薄低功耗心电贴—YSX211SL

随着医疗技术的进步,心电监护设备在日常生活和医疗领域中起到了至关重要的作用。而无源晶振 YSX211SL 作为一种先进的心电贴产品,以其独特的优势在市场上备受瞩目。

可编程晶振选型应该注意事项

对于可编程晶振选型的话,需要根据企业的需求选择。在选择可编程晶振的时候注重晶振外观、晶振的频率、晶振的输出模式、晶振的型号等等,这些都是要注意的,尤其是晶振的频率和晶振输出模式以及晶振的型号都是需要注意的。

性能高的服务器—宽电压有源晶振YSO110TR 25MHZ,多种精度选择支持±10PPM—±30PPM

在现代科技发展中,服务器扮演着越来越重要的角色,为各种应用提供强大的计算和数据存储能力。而高品质的服务器组件是确保服务器稳定运行的关键。YSO110TR宽电压有源晶振,作为服务器的重要组成部分,具备多项优势,成为业界必备的可靠之选。

差分晶振怎么测量

其实对于差分晶振怎么测量方式有很多种,主要还是要看自己选择什么样的方式了,因为选择不同的测量方式步骤和操作方式是不同的。关于差分晶振怎么测量的方式,小扬给大家详细的分享一些吧!