0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

科技观察员 来源:英锐恩 作者:英锐恩 2023-07-07 11:40 次阅读

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

    文章

    2650

    浏览量

    154298
  • 温度计
    +关注

    关注

    6

    文章

    397

    浏览量

    78118
  • 8051单片机
    +关注

    关注

    5

    文章

    153

    浏览量

    25334
收藏 人收藏

    评论

    相关推荐

    单片机应用技术:数字温度计#单片机

    单片机数字温度计
    学习硬声知识
    发布于 :2022年11月09日 23:34:52

    单片机应用技术:数字温度计实物演示#单片机

    单片机数字温度计
    学习硬声知识
    发布于 :2022年11月09日 23:35:21

    基于单片机的数字温度计设计论文

    基于单片机的数字温度计设计论文
    发表于 08-16 14:46

    基于单片机的数字温度计设计(终稿)

    本帖最后由 eehome 于 2013-1-5 10:00 编辑 基于单片机的数字温度计设计(终稿)
    发表于 08-16 14:47

    基于单片机的数字温度计资料

    基于单片机的数字温度计资料
    发表于 08-20 11:56

    [热]单片机仿真——时钟,温度计和频率

    单片机系统显示实时温度。4) 数字频率在上题的硬基础上,制作个数字频率计。完成以下功能:a. 利用MCU设计
    发表于 08-22 11:32

    DIY自制RT3电子温度计

    `这个制作在设计时是反向思考的,也就是说是先有了单片机和液晶屏组合的可能,才去想这个设计可以制作什么作品的。3 位数字用来显示时钟不行,可是显示温度是很好的选择。加上我最近新驱动起来的LM75 温度
    发表于 09-20 14:55

    数字温度计

    `关于51单片机的数字温度计`
    发表于 11-18 15:33

    基于单片机的多功能数字温度计

    功能简述:多功能数字温度计种基于单片机控制的数字温度计,本温度计属于多功能温度计,可以人工设
    发表于 05-07 11:49

    想用89C52和DS18B20做一个1608双温度显示的点阵温度计,求资料

    手上有89C52RC的单片机和两DS18B20以及两块闲置的8*8点阵,想做一个温度显示的温度计,哪位前辈有相关的资料可否提供给我,我邮
    发表于 02-11 10:24

    基于51单片机的1602液晶温度计

    学了段时间单片机了,正好现在是冬天,顺便就做了温度计练练手,上图张,, 楼主手机发帖,
    发表于 11-15 18:16

    做一个不用单片机和AD转换器的电子温度计!!!!

    做一个电子温度计,要求能用数字方式显示出来不能用AD转换器和单片机。。。。请问下,有什么解决方案?
    发表于 04-22 13:02

    单片机数字温度计

    求大神来单片机数字温度计的程序和仿真图
    发表于 11-26 20:31

    基于单片机温度计设计相关资料分享

    文末下载完整资料摘要:随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为种比较成熟的技术,本文将介绍种基于单片机控制的数字
    发表于 11-09 06:30

    怎样去设计种基于单片机的数字温度计

    1,开发前规划基于单片机的数字温度计-开发前规划 关键字温度计;51单片机;共阳数码管;MOS开关;便携式;课程设计;毕业设计 要求
    发表于 11-10 06:51