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单片机 和红外探测器怎样测量 温度 ?1.通过51单片机和红外探测器可以测量温度。2.51单片机是一种微控制器,可以通过接收红外探测器发出的红外线信号来测量温度。红外探测器可以感知物体发出的红...
51单片机 控制12864显示 温度 符号怎么写就是怎么显示 ℃,液晶...8条回答:【推荐答案】如果有中文字库的,和中文字符的显示方法一样,A1E6H就是℃编码。如果没有就需要造一个字符了。
如何用 51单片机 读取ds18b20的取 负温度 ?求教.18b20的ram中,前...[最佳回答]判断是否是负,就是取高几位的读取值采用与的方式判断,比如(000)1111100001000,那么高5位可以这样弄,tempH&0x1f,如果这个值=1;说明是负的,否则就...
单片机温度 测试器怎么做?制作单片机温度测试器首先需要选择一个合适的单片机,如ATmega328P,然后将单片机与温度传感器DS18B20相连。通过单片机的GPIO口将DS18B20的数据线连接到单片机...
单片机温度 传感器不显示示数?如果单片机温度传感器不显示示数,可能有几个原因。首先,检查传感器是否正确连接到单片机,并确保电源供应正常。其次,检查传感器的引脚是否正确配置,并确保...
单片机 ,热敏电阻怎么 检测 他的 温度 的?用热敏电阻测温,一般是要加一个固定电阻做分压,然后用ADC来做的。用热敏电阻一般不精准。一般是用ADC得到AD值后再查表得到温度的。要温度分辨率高,查表数组...
单片机 、光耦1系统总体结构原理粮食在储藏期间,由于受环境、气候和通风条件等因素的变化,粮仓内温度或湿度会发生异常,这极易造成粮食的霉烂、或发生虫害。那么...
防止加热器干烧?不能再外加硬件.就用 单片机 读两 温度 传感器...[最佳回答]我建议你把其中一只温感探头直接接触到发热管的表面,平时有水的时候,发热管表面的温度不会超过水的沸点,即100度,当干烧时,表面温度会很快升至100度...
选用Mcs- 51单片机 作为本设计核心器件.具有键盘输入 温度 给TheaimofthedesignistoachieveZnOYaminresistancebysinteringfurnacetemperaturecontrol.Mc...
温度 控制器可以直接与电脑通讯吗?我只想在电脑上得到温控器上的 温度 ,必须得用什么 单片机 ,plc才能行吗?能不能直接与电脑接的回答如楼上。入门级别用51单片机既可。PC端编程可以用VB,也可以用C++。控件使用MSComm。能不能直接与电脑接的回答如楼上。入门级别用51...