溫度傳感器廣泛用于電子設備中,用來顯示實時溫度,比如我們經常看到一些數字時鐘便帶有溫度計,這是由于其中嵌入了溫度傳感器。在這個項目中,將展示如何設計數字溫度傳感器電路。在這個過程中,使用的是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);
}
-
溫度傳感器
+關注
關注
48文章
2974瀏覽量
156300 -
溫度計
+關注
關注
6文章
406瀏覽量
78536 -
8051單片機
+關注
關注
5文章
153瀏覽量
25550
發布評論請先 登錄
相關推薦
評論