技术文档

51单片机 温度 程序 51单片机温度测量系统Proteus仿真

小编 2024-10-12 技术文档 23 0

51单片机温度测量系统Proteus仿真

串行扩展应用:

利用 DS18B20 和 LED 数码管实现单总线温度测量系统。DS18B20的测量范围是-5℃~128℃。由于只接有两个 LED数码管,所以显示的数值只能在 00~~99 之间。

硬件图

Proteus仿真图:

(2)软件设计

#include<reg51.h>#include"intrins.h"#define uchar unsigned char#define uint unsigned int#define out P0sbit smg1=out^4;sbit smg2=out^5;sbit DQ=P3^7;void delay5(uchar);void init_ds18b20(void);uchar readbyte(void);void writebyte(uchar);uchar retemp(void);

嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!

无偿分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!某鱼上买估计至少要好几十。

点击这里找小助理0元领取: 加微信领取资料

void main(){uchar i,temp;delay5(1000);while(1){temp=retemp();for(i=0;i<10;i++){out=(temp/10)&0x0f;smg1=0;smg2=1;delay5(1000);out=(temp%10)&0x0f;smg1=1;smg2=0;delay5(1000);}}}

void delay5(uchar n){do{nop();nop();nop();n–;}while(n);}

void init_ds18b20(void){uchar x=0;DQ=0;delay5(120);DQ=1;delay5(16);delay5(80);}

uchar readbyte(void){uchar i=0;uchar date=0;for(i=8;i>0;i–){DQ=0;delay5(1);DQ=1;date>>=1;if(DQ)date|=0x80;delay5(11);}return(date);}

void writebyte(uchar dat){uchar i=0;for(i=8;i>0;i–){DQ=0;DQ=dat&0x01;delay5(12);DQ=1;dat>>=1;delay5(5);}}

uchar retemp(void){uchar a,b,tt;uint t;init_ds18b20();writebyte(0xcc);writebyte(0x44);init_ds18b20();writebyte(0xcc);writebyte(0xbe);a=readbyte();b=readbyte();t=b;t<<=8;t=t|a;tt=t*0.0625;return(tt);}

效果图

上图,仿真运行状态①(未操作温度)。

上图,仿真运行状态②(未操作温度)。

上图,仿真运行状态③(ds18b20按钮按下,温度增加)。

上图,仿真运行状态④(ds18b20按钮按下,温度增加)。

实验结论及分析

1.程序的核心思想

①DS18B20与传统的热敏电阻不同,DS18B20 可直接将被测温度转换为串行数字信号,供单片机处理。通过对 DS18B20 编程可以实现 9~12 位的温度读数,并可分别在 93.75ms 和 750ms 内完成 9 位和 12 位的数字量。其测温范围-55℃~+125℃,最大分辨率为 0.0625℃,在一10℃~+85℃范围内其测温准确度为±0.5℃。

②DS18B20也可以看作一个小的单片机系统,它将温度信息采集到自己的内存中,然后通过一定的节拍将温度信息一位一位地传入at89c51单片机中进行二位数码管的显数。

2.实验中遇到的问题

①lcd1602输入信息时要记得初始化,否则不会显数。

②注意DS18B20的温度信息一位一位地传入at89c51单片机中时严格把控节拍,节拍不正确将影响数据传输。

③at89c51单片机的时钟频率要设置成11.0592mhz。

原文链接:https://mp.weixin.qq.com/s/A9QS6xlYd9XKk8IHtJGffA

转载自:STM32嵌入式开发

原文链接:51单片机温度测量系统Proteus仿真

本文来源网络,免费传达知识,版权归原作者所有。如涉及作品版权问题,请联系我进行删除。

51单片机温度测量系统Proteus仿真

串行扩展应用:

利用 DS18B20 和 LED 数码管实现单总线温度测量系统。DS18B20的测量范围是-5℃~128℃。由于只接有两个 LED数码管,所以显示的数值只能在 00~~99 之间。

硬件图

Proteus仿真图:

(2)软件设计

#include<reg51.h>#include"intrins.h"#define uchar unsigned char#define uint unsigned int#define out P0sbit smg1=out^4;sbit smg2=out^5;sbit DQ=P3^7;void delay5(uchar);void init_ds18b20(void);uchar readbyte(void);void writebyte(uchar);uchar retemp(void);

void main(){uchar i,temp;delay5(1000);while(1){temp=retemp();for(i=0;i<10;i++){out=(temp/10)&0x0f;smg1=0;smg2=1;delay5(1000);out=(temp%10)&0x0f;smg1=1;smg2=0;delay5(1000);}}}

嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!

无偿分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!某鱼上买估计至少要好几十。

点击这里找小助理0元领取: 加微信领取资料

void delay5(uchar n){do{nop();nop();nop();n–;}while(n);}

void init_ds18b20(void){uchar x=0;DQ=0;delay5(120);DQ=1;delay5(16);delay5(80);}

uchar readbyte(void){uchar i=0;uchar date=0;for(i=8;i>0;i–){DQ=0;delay5(1);DQ=1;date>>=1;if(DQ)date|=0x80;delay5(11);}return(date);}

void writebyte(uchar dat){uchar i=0;for(i=8;i>0;i–){DQ=0;DQ=dat&0x01;delay5(12);DQ=1;dat>>=1;delay5(5);}}

uchar retemp(void){uchar a,b,tt;uint t;init_ds18b20();writebyte(0xcc);writebyte(0x44);init_ds18b20();writebyte(0xcc);writebyte(0xbe);a=readbyte();b=readbyte();t=b;t<<=8;t=t|a;tt=t*0.0625;return(tt);}

效果图

上图,仿真运行状态①(未操作温度)。

上图,仿真运行状态②(未操作温度)。

上图,仿真运行状态③(ds18b20按钮按下,温度增加)。

上图,仿真运行状态④(ds18b20按钮按下,温度增加)。

实验结论及分析

1.程序的核心思想

①DS18B20与传统的热敏电阻不同,DS18B20 可直接将被测温度转换为串行数字信号,供单片机处理。通过对 DS18B20 编程可以实现 9~12 位的温度读数,并可分别在 93.75ms 和 750ms 内完成 9 位和 12 位的数字量。其测温范围-55℃~+125℃,最大分辨率为 0.0625℃,在一10℃~+85℃范围内其测温准确度为±0.5℃。

②DS18B20也可以看作一个小的单片机系统,它将温度信息采集到自己的内存中,然后通过一定的节拍将温度信息一位一位地传入at89c51单片机中进行二位数码管的显数。

2.实验中遇到的问题

①lcd1602输入信息时要记得初始化,否则不会显数。

②注意DS18B20的温度信息一位一位地传入at89c51单片机中时严格把控节拍,节拍不正确将影响数据传输。

③at89c51单片机的时钟频率要设置成11.0592mhz。

原文:https://blog.csdn.net/axu_990707/article/details/125665739

Proteus仿真相关资源

原文链接:https://mp.weixin.qq.com/s/A9QS6xlYd9XKk8IHtJGffA

转载自:STM32嵌入式开发

原文链接:51单片机温度测量系统Proteus仿真

本文来源网络,免费传达知识,版权归原作者所有。如涉及作品版权问题,请联系我进行删除。

相关问答

51单片机 的承受 温度 ?

主要实现:实时温度测量及显示,超出温度范围相应的继电器工作,继电器可以驱动相应的加热或制冷负载,上下限温度可通过按键设定等功能。本保温箱的温控系统研...

单片机温度 控制系统怎么解决?

单片机温度控制系统可以通过以下步骤来解决:选择合适的传感器:选用温度传感器来监测环境温度。连接传感器:将传感器与单片机连接,以便采集温度数据。编写...

温度 控制器w1209与 51单片机 如何连接?

需要根据w1209的使用手册进行操作。承接单片机开发控制器定制。需要根据w1209的使用手册进行操作。承接单片机开发控制器定制。

上位机如何接收 单片机 上传的 温度 值?

串口或usb

c 51单片机温度 报警器灯不亮?

装的默...解决方案,有两种:1、安装KEIL到其安装的默认路径下(C:\keil\)。2、如果你装在了其他路径下,在安装好后,打开你keil安装目录下的tool.ini文件,找...

想用 单片机 测量 温度 ,热电阻 温度 计算公式为:T1=1/[ln(Rt / R)/B+1/T2],怎样用C语言表示此公式?

C语言里面有专门的数学库函数,写的时候带上头文件#includeC语言里面有专门的数学库函数,写的时候带上头文件#include这里选用函数doublelog(doublex)返回的...

单片机温度 传感器不显示示数?

如果单片机温度传感器不显示示数,可能有几个原因。首先,检查传感器是否正确连接到单片机,并确保电源供应正常。其次,检查传感器的引脚是否正确配置,并确保...

基于 单片机 温度 、电流、电阻,只用一块显示屏可以显示这三种参数吗?

根据提问者的意思,一块显示屏能否可以全部显示单片机采集的温度、电流、电阻这三种参数?完全可以,根据自己的要求选择一块合适的显示屏即可!显示屏有很多种...

如何把 单片机 采集到温湿度上传到redis数据库?

单片机通过以太网接口或WifI接口通过tcP或udP协议上传数据给服务器。单片机通过以太网接口或WifI接口通过tcP或udP协议上传数据给服务器。

...做的这个 温度 检测,,谁会这个 程序 啊? - 爱与诚 的回答 - 懂得

我有。51单片机开发板使用例程,你找找,里面有一百个C的程序,有一个是关于这个的。这个挺简单的,网上搜搜一大把DS18B20的程序。

猜你喜欢