ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

智能仓库物流控制系统(2)

2021-06-14 17:59:39  阅读:178  来源: 互联网

标签:温度传感器 18B20 仓库 void 控制系统 unsigned delay 智能 DQ


第二篇文章主要介绍的是温度传感器DS18B20温度传感器

在上一篇文章中没有写出来,在设计LCD1602显示模式的时候出现了一个难题,就是分屏显示数据的问题,因为要显示的东西比较多但是显示屏只支持16*2的显示,所以要设置多个界面显示。在这我设置了几个按键作为触发的条件,进行界面的切换。

void anjiank1()
{
			if(k1==0)
			{
				delay1ms(10);
				if(k1==0)
				{
					 lcd_init();
					 write_com(0x80);
					 display(table1);
					 
					 write_com(0x80+0x40);
					 display(table2);

					 write_com(0x80+0x0A);
					 display(table3);
					 
					 write_com(0x80+0x4A);
					 display(table4);
					 while(3)
				{
				xianshi1();
				jinchu();
				if(k2==0||k3==0)
				{
					break;
				}
				}
			}
			}
			
}


void anjiank3()
{
	if(k3==0)   
			{	
			delay1ms(10);
			if(k3==0)
			{
				lcd_init();
				while(2)
				{
				xianshi3();
				if(k1==0||k2==0)
				{
					break;
				}
				}
			}
			}
}


void anjiank2()
{
	if(k2==0)
			{
			  delay1ms(10);
				if(k2==0)
				{
				lcd_init();
				init_play();
				while(4)
				{
				xianshi2();						
		    ledss();
				temp();
				smoke();                                         
				if(k1==0||k3==0)
				{
				break;
				}
			}
		}
	}
}


再设计的过程中我只考虑了温度的检测,没有进行湿度的检测,所以在检测的过程中使用DS18B20温度传感器就可以,这个温度传感器不需要数模转换器就可以进行显示,现实的结果要在LCD1602上显示出来,所以需要设置一下LCD的另一个显示界面。

DS18B20温度传感器的两个模式就是读和写模式,具体的时序图可以查询其他的CSDN的大神!!

接下来的是DS18B20温度传感器的代码

 void delay_18B20(unsigned int i)		//延时1微秒
{
 	while(i--);
}

void ds1820rst()				//ds1820复位
 {  
	 unsigned char x=0;
	 DQ = 1;          		//DQ复位
	 delay_18B20(4);  		//延时
	 DQ = 0;          		//DQ拉低
	 delay_18B20(100);		 //精确延时大于480us
	 DQ = 1;          		//拉高
	 delay_18B20(40);	 
   }  
  
uchar ds1820rd()				//读数据
  { 
		 unsigned char i=0;
		 unsigned char dat = 0;
		 for (i=8;i>0;i--)
	 {   
	    DQ = 0; 			//给脉冲信号
		  dat>>=1;
		  DQ = 1; 				//给脉冲信号
		  if(DQ)
		  dat|=0x80;
		  delay_18B20(10);
	  }
 	return(dat);
  }

void ds1820wr(uchar wdata)    //写数据
  {
		unsigned char i=0;
    for (i=8; i>0; i--)
   { 
		 DQ = 0;
     DQ = wdata&0x01;
     delay_18B20(10);
     DQ = 1;
     wdata>>=1;
   }
 }
  

read_temp()     //读取温度值并转换
 {
		uchar a,b;
		ds1820rst();    
		ds1820wr(0xcc);			//跳过读序列号
		ds1820wr(0x44);		//启动温度转换
		ds1820rst();    
		ds1820wr(0xcc);		//跳过读序列号
		ds1820wr(0xbe);			//读取温度
		a=ds1820rd();
		b=ds1820rd();
		tvalue=b;
		tvalue<<=8;
		tvalue=tvalue|a;
		tvalue=tvalue*(0.625);//温度值扩大10倍,精确到1位小数
		return(tvalue);
}


 

标签:温度传感器,18B20,仓库,void,控制系统,unsigned,delay,智能,DQ
来源: https://blog.csdn.net/Tony_Starky/article/details/117909222

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有