首页 > 其他分享 >基于proteus仿真实现的DS18B20温度传感器读取温度+lcd1602显示,附代码+仿真图

基于proteus仿真实现的DS18B20温度传感器读取温度+lcd1602显示,附代码+仿真图

时间:2024-11-10 15:17:15浏览次数:6  
标签:仿真 温度传感器 DS18B20 uchar void writeCMD delay dq DQ


#include "reg51.h"
#include "absacc.h"
#include "string.h"
#define uchar unsigned char 
#define uint unsigned int 


uint  tem=0;

sbit RS=P2^5;
sbit RW=P2^6;
sbit E=P2^7;
sbit DQ=P1^0;

uchar str0[]={"not,"};
uchar str1[]={" brother"};
uchar str[]={"0123456789"};

void delay(unsigned int t){
	unsigned char i;
	for(;t>0;t--){
	}
}


// 操作ds18b20

// (1)初始化:先拉高dq 480-960微秒,然后拉低,等待15-60,读取dq,如果为1就失败,为0就成功

void initDs(void) {
uchar x=0;
DQ=1;
delay(8);
DQ=0;
delay(71);
DQ=1;
delay(14);
x=DQ;
delay(20);
}

// (2)读操作, 需要读八位,首先把数据右移一位,把每次读出的数据放到第一位,然后为1就把第一位置为1,为0就不用操作
uchar readDs(void) {

uchar i=0;
uchar d=0;

for(i=8;i>0;i--){
DQ=0;
d>>=1;
DQ=1;
if(DQ)
{
d|=0x80;}
delay(4);
}
return d;

}

// (3)写操作,还是先拉低dq,写值到dq中,但是写0和写1需要延时不同,进而需要判断,如果写0,延时60以上,写1,15us以内,延时后再把dq拉高
//				每次需要先把最低为写入,然后写出

void writeDs(uchar d){
uchar i=0;
for(i=8;i>0;i--){
DQ=0;
DQ=d & 0x01; // 获取最低位
if(DQ){
// 写1
delay(2);
DQ=1;
}else {
// 写0
 delay(5);
DQ=1;
}
d>>=1;
}

}

// 读取温度

// 总的来说分为三步骤:
// 1.启动温度转换
// 2.开始读取数据
// 3.转换数据并返回

uint getT(void){
uchar a=0,b=0;
uint t=0;
// 启动温度转换
initDs();
writeDs(0xCC); // 跳过读取序号
writeDs(0x44); // 启动温度转换
delay(100);

// 准备读取温度
initDs();
writeDs(0xCC);
writeDs(0xBE); // 开始读取温度寄存器
delay(100);

// 转换温度
a=readDs(); // 低位
b=readDs();	// 高位
t=((b*256+a))>>4;

return t;
}







// 判断忙函数
void fBusy(){
  	P3=0XFF;
	RS=0;
	RW=1;
	E=0;
	E=1;
	while(P3&0X80){
		E=0;
		E=1;
	}
}

// 写命令函数
void writeCMD(uchar cmd){
	fBusy();
	E=0;
	RS=0;
	RW=0;
	E=1;
	P3=cmd;
	E=0;	
}
// 写数据函数
void  writeData(uchar cmd){
		fBusy();
	E=0;
	RS=1;
	RW=0;
	E=1;
	P3=cmd;
	E=0;
}

// 初始化函数
void initLED(){
 writeCMD(0X38);
 writeCMD(0X0C);
 writeCMD(0X06);
 writeCMD(0X01);
}


// 显示温度
void displayStr(uchar i ){
 uchar a=0,b=0,c=0;
 delay(100);
 writeCMD(0x80+0x40);
			 delay(4);
c=tem%10;
b=(tem/10)%10;
a=(tem/100)%10;


 delay(4);

writeData(str[a]);
delay(4);
writeData(str[b]);
delay(4);
writeData(str[c]);
 delay(4);
 }

void main(void) {
		uint i=0;
	   SP=0X50;
	   initLED();

	while(1){
	delay(30);
	   	tem=getT();
		delay(20);
		displayStr();
	}

}

仿真图

标签:仿真,温度传感器,DS18B20,uchar,void,writeCMD,delay,dq,DQ
From: https://blog.csdn.net/2301_76965898/article/details/143661326

相关文章

  • Sigrity SPEED2000 Power Ground Noise Simulation模式如何进行电源阻抗仿真分析操作
    SigritySPEED2000PowerGroundNoiseSimulation模式如何进行电源阻抗仿真分析操作指导(二)-有电容SigritySPEED2000PowerGroundNoiseSimulation模式如何进行电源阻抗仿真分析操作指导(一)-无电容详细介绍了如何在该模式查看电源的自阻抗,它是没有电容参与的模式,接下来......
  • Sigrity SPEED2000 Power Ground Noise Simulation模式如何进行信号时域仿真操作指导(
    SigritySPEED2000PowerGroundNoiseSimulation模式如何进行信号时域仿真操作指导(一)-单个信号PowerGroundNoiseSimulation模式除了可以对电源进行时域仿真外,同样支持对信号进行时域仿真,以下图为例进行说明2D视图3Dview本例中观测信号D2从发送端U17到接收端U9......
  • (63)使用RLS自适应滤波器进行降噪的MATLAB仿真
    文章目录前言一、基本概念二、RLS算法原理1.初始化:2.时间更新:3.逆协方差矩阵更新:4.计算输出:5.计算误差:6.重复步骤:三、RLS算法的典型应用场景四、MATLAB仿真代码五、仿真结果总结与后续前言RLS(递归最小二乘)自适应滤波器是一种用于系统辨识和信号处理的算法,其......
  • 储能辅助火电机组二次调频控制策略及容量优化配置研究(Matlab代码和Simulink仿真)
         ......
  • 终端仿真软件:SecureCRT macOS+Windows电脑安装包
    SecureCRT是一款广受好评的终端仿真软件,专为IT专业人员设计。它支持SSH、Telnet、RLogin等多种协议,提供安全的远程访问功能。用户可以通过该软件安全地连接到远程服务器,进行命令行操作、文件传输等任务。SecureCRT还具备脚本自动化、会话管理、多窗口操作等核心功能,其稳定性和安......
  • 【MATLAB源码-第212期】基于matlab的8PSK的log-map软解调仿真,输出误码率曲线和星座图
    操作环境:MATLAB2022a1、算法描述1.8PSK调制和解调系统8PSK(8相位移键控)是一种数字调制技术,它通过改变载波信号的相位来传输数据。在这个系统中,我们将介绍8PSK的工作原理、调制过程、信道模型、解调过程,特别是log-MAP软解调的实现。1.18PSK调制的基本原理8PSK调制的基本......
  • Sigrity SPEED2000 Power Ground Noise Simulation模式如何进行电源阻抗仿真分析操作
    SigritySPEED2000PowerGroundNoiseSimulation模式如何进行电源阻抗仿真分析操作指导(一)-无电容SigrityPowerGroundNoiseSimulation模式同样可以用来观测电源网络的自阻抗,以下图为例进行说明2D视图3Dview本例要观测的是U17端口处的自阻抗,通过观测电压和电流......
  • ican机器视觉仿真项目一
    相机选型3656x1492产品大小245,相机工作长度782成像面就是上面芯片尺寸相机选了1000w,镜头的也要1000w,焦距选择50mm,接近45视野长边小于产品大小,但是条形码在中间区域,短一点不影响,主要看视野短边 短边满足要求选择光源,印刷表面有反光,选同轴位置修正,先找出两条直......
  • 关于虚拟仿真云实验教学_解决方案及优势介绍!
    在科技飞速演进的潮流下,虚拟仿真技术正不断蓬勃发展,成为教育领域的一颗耀眼之星。作为创新的教育手段,虚拟仿真云教学正逐渐受到越来越多教育机构的高度重视与广泛应用。本文将为您详细探讨虚拟仿真云实验教学的解决方案及其所带来的多重优势。虚拟仿真云-教育培训解决方案虚拟......
  • 人工智能岩土工程+PFC离散元仿真模拟应用(入门+案例实操)
    在深度学习与岩土工程融合的背景下,科研的边界持续扩展,创新成果不断涌现。从基本物理模型的构建到岩土工程问题的复杂模拟,从数据驱动的分析到工程问题的智能解决,深度学习正以前所未有的动力推动岩土工程领域的革新。据调查,目前在岩土工程领域内,深度学习的应用主要集中在以下几个......