51单片机DS18B20应用程序详解

发布时间:2018-11-19 阅读量:856 来源: 我爱方案网 作者: 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应用程序详解


数码管显示的数字就是温度传感器的温度,数码显示的跟实际的温度位置相反,这个可以程序里面的数码管的位定义即可。
相关资讯
核心对比!无源晶振与有源晶振在结构和工作原理的本质区别

无源晶振与有源晶振是电子系统中两种根本性的时钟元件,其核心区别在于是否内置振荡电路。晶振结构上的本质差异,直接决定了两者在应用场景、设计复杂度和成本上的不同。

温度稳定性对RTC晶振的计时误差影响与分析

RTC(实时时钟)电路广泛采用音叉型32.768kHz晶振作为时基源,但其频率稳定性对温度变化极为敏感。温度偏离常温基准(通常为25℃)时,频率会产生显著漂移,且偏离越远漂移越大。

从参数到实践!剖析有源晶振的频率稳定度、老化率及正确接线方案

有源晶振作为晶振的核心类别,凭借其内部集成振荡电路的独特设计,无需依赖外部电路即可独立工作,在电子设备中扮演着关键角色。本文将系统解析有源晶振的核心参数、电路设计及引脚接法,重点阐述其频率稳定度、老化率等关键指标,并结合实际电路图与引脚定义,帮助大家全面掌握有源晶振的应用要点,避免因接线错误导致器件失效。

如何对抗晶振老化?深入生产工艺与终端应用的防老化指南

晶振老化是影响其长期频率稳定性的核心因素,主要表现为输出频率随时间的缓慢漂移。无论是晶体谐振器还是晶体振荡器,在生产过程中均需经过针对性的防老化处理,但二者的工艺路径与耗时存在显著差异。

无源晶振YSX321SL应用于高精度HUD平视显示系统YXC3225

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