如何用8051单片机做一个温度计?

描述

温度传感器广泛用于电子设备中,用来显示实时温度,比如我们经常看到一些数字时钟便带有温度计,这是由于其中嵌入了温度传感器。在这个项目中,将展示如何设计数字温度传感器电路。在这个过程中,使用的是8051单片机。

温度值是模拟的,因此它需要使用模数转换器(ADC)转换为数字值,然后显示出来。

一、数字温度传感器电路原理

该电路的主要原理是将模拟温度值转换为数字值,并在LCD显示屏上显示数字温度值。这里使用了8051单片机AT89C51,它没有内置ADC。因此,需要将外部ADC芯片ADC0804与8051单片机连接起来,以将模拟温度值转换为数字值。

二、使用8051的数字温度传感器电路

1.所需组件

AT89C51(8051单片机);

11.0592MHz晶振;

2X33pF电容器;

10μF/16V电容;

3X10KΩ电阻器;

1KΩx8电阻包;

10KΩ电位器;

16X2液晶显示器;

ADC0804;

LM35;

150pF电容;

330Ω电阻;

电源;

连接电线。

2.电路设计

ADCIC的数字输出引脚连接到8051的PORT3引脚。PORT0引脚使用1KΩ电阻包上拉,它们连接到16×2LCD的数据引脚。8051的P2.0和P2.1接LCD的RS和E。

LM35连接到ADC0804的模拟输入引脚VIN+(引脚6)。此处不解释振荡器、复位等基本组件。

完成所有连接并将代码烧录到8051单片机后,打开电源。LM35温度传感器向ADC0804提供模拟温度数据,ADC0804将其转换为数字值并发送到8051。

接收到数字值后,8051单片机执行一个小的计算,然后在LCD上显示温度。详细代码如下:

#include

#define lcd P0

#define dat P3

sbit rs=P2^0;

sbit e=P2^1;

void delay (int);

void display (unsigned char);

void cmd (unsigned char);

void init (void);

void string (char *);

void intro (void);

unsigned char degree[8]={0x0e,0x0a,0x0e,0x00,0x00,0x00,0x00,0x00};

char i=0;

void delay (int d)

{

unsigned char i=0;

for(;d>0;d--)

{

for(i=250;i>0;i--);

for(i=248;i>0;i--);

}

}

void cmd (unsigned char c)

{

lcd=c;

rs=0;

e=1;

delay(10);

e=0;

}

void display (unsigned char c)

{

lcd=c;

rs=1;

e=1;

delay(10);

e=0;

}

void string (char *c)

{

while(*c)

{

display(*c++);

}

}

void init (void)

{

cmd(0x38);

cmd(0x01);

cmd(0x0c);

cmd(0x80);

}

void intro (void)

{

string(" Electronics ");

cmd(0xc0);

string(" Hub ");

delay(1000);

cmd(0x01);

string(" Digital ");

cmd(0xc0);

string(" Thermometer ");

delay(1000);

cmd(0x01);

cmd(0x40);

for(i=0;i<8;i++)

display(degree[i]);

i=0;

cmd(0x80);

}

void main()

{

unsigned int val=0;

unsigned int temp=0;

init();

intro();

dat=0xff;

while(1)

{

if(i==0)

{

string("Temp: ");

i++;

}

val=dat*1.953;

cmd(0x86);

temp=(((val/10)%10)+48);
    display(temp);
    
    temp=((val%10)+48);
    display(temp);
if(i==1)
    {
    display(0);
    string("C");
        i++;
    }
    delay(300);
}
while(1);

}

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分