前端开发入门到精通的在线学习网站

网站首页 > 资源文章 正文

51单片机学习31-DS18B20(51单片机ri)

qiguaw 2024-08-29 22:11:56 资源文章 27 ℃ 0 评论

这篇讲DS18B20温度传感器

仿真图用的是我自己做的一个51单片机开发板 图纸比较大,截图可能看不清,需要的话可以私信联系我。

程序:

源代码:

#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);

}

仿真结果:

数码管显示的数字就是温度传感器的温度,数码显示的跟实际的温度位置相反,这个可以程序里面的数码管的位定义即可。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表