卜纪清:基于单片机的智能温室大棚温度控制系统设计与仿真
据总线和单片机的一个I/O口连接。具体结构如图2.4所示。
图2.4传感器结构图
(2)DS18B20特性
①九位温度读数,测温范围为-55~+125℃,最大精度为0.0625℃;
②全数字温度转换及输出,不需要A/D转换,只通过一条数据线即可实现通信,无需任何外围硬件;
③先进的单总线数据通信,每个DS18B20器件上都有独一无二的序列号,所以一条数据线上可以挂接很多该传感器;
(3)DS18B20由三个主要数字器件组成: ①64bit闪速ROM; ②温度传感器;
③非易失性温度报警触发器TH和TL。
(4)DS18B20的测温原理:DS18B20测量温度时使用特有的温度测量技术,其测量电路框图如图2.5所示。
12
卜纪清:基于单片机的智能温室大棚温度控制系统设计与仿真
斜率累加器 预置 比较 预置 加1 =0 温度寄存器 LSB 设置清除 低温度系数振荡器 计数器 高温度系数振荡器 计数器 停止 =0 图2.5 测量电路
内部计数器对一个受温度影响的振荡器的脉冲计数,低温时振荡器的脉冲可以通过门电路,而当到达某一设置高温时振荡器的脉冲无法通过门电路。计数器设置为-55℃时的值,如果计数器到达0之前,门电路未关闭,则温度寄存器的值将增加,这表示当前温度高于-55℃。同时,计数器复位在当前温度值上,电路对振荡器的温度系数进行补偿,计数器重新开始计数直到回零。如果门电路仍然未关闭,则重复以上过程。
DS18B20测温时,计数门打开,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55 ℃所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在 -55 ℃ 所对应的一个基数值。减法计数器1对低温度系数晶振而产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置值将重新被装入,减法计数器1重新开始对低温度系数晶振所产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。
斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,所测出的温度通过I/O口则传送到液晶上显示出当前的温度。当温度发生变化时,则对应的测量温度同样也在液晶上显示出来[11]。
13
卜纪清:基于单片机的智能温室大棚温度控制系统设计与仿真
本设计用DS18B20的外部电源供电方式在外部电源供电方式下,DS18B20工作电源由VDD引脚接入,此时I/O线不需要强上拉,不存在电源电流不足的问题,可以保证转换精度,同时在总线上理论可以挂接任意多个DS18B20传感器,组成多点测温系统。注意:在外部供电的方式下,DS18B20的GND引脚不能悬空,否则不能转换温度,读取的温度总是85℃。温度传感器测得农田内的即时温度,上传到单片机内,在单片机内通过数据转化上传到LCD1602液晶显示器上显示具体的数据。LCD1602显示如图2.6:
图2.6 LCD1601显示
2.3输出通道
2.3.1多功能农田温度自动环境监测系统显示电路设计
LCD1602已很普遍了,市面上字符液晶绝大数是基于HD44780液晶芯片的,控制
原理是完全相同的,因此HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。字符型LCD通常有14条引脚线或16条引脚线,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,定义如下表2.3所示:
表2.3 字符型LCD的引脚定义
引脚号 1 2 3 4 5
引脚名 Vss Vcc Vee RS R/W
电平 0/1 0/1
输入/输出
输入 输入
14
作用 电源地 电源(+5V) 对比度调整电压 0—输入指令;1—输入数据 0=向LCD写入指令或数据。
卜纪清:基于单片机的智能温室大棚温度控制系统设计与仿真
1=从LCD读取信息。
6
E
1,1→0
输入
使能信号,1时读取信息, 1→0(下降沿)执行指令。
7 8 9 10 11 12 13 14 15 16
DB0 DB1 DB2 DB3 DB4 DB5 Db6 DB7 A K
0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 +Vcc 接地
输入/输出 输入输出 输入/输出 输入/输出 输入/输出 输入/输出 输入/输出 输入/输出
数据总线line0(最低位)
数据总线line1 数据总线line2 数据总线line3 数据总线line4 数据总线line5 数据总线line6 数据总线line7 LCD背光电源正极 LCD背光电源负极
其中,HD44780内置了DDRAM、CGROM、CGRAM。
DDRAM就是显示数据RAM用来寄存待显示的字符代码。共80个字节,其地址和屏幕的对应关系如下表2.4所示:
表2.4地址和屏幕的对应关系
DDRAM地
址
显示位置 第一行 第二行
1 00H 40H
2 01H 41H
3 02H 42H
4 03H 43H
5 04H 44H
6 05H 45H
7 06H 46H
…… …… ……
40 27H 67H
也就是说想要在LCD1602屏幕的第一行第一列显示一个“A”字,就要向DDRAM的00H地址写入“A”字的代码就行了。但具体的写入是要按以LCD模块的指令格式来进行的,那么一行可有40个地址呀?是的,在LCD1602中我们就用前16个就行了。第二行也一样用前16个地址。对应如下图2.8所示:
图2.8
刚才我说了想要在LCD1602屏幕的第一行第一列显示一个“A”字,就要向DDRAM的00H地址写入“A”字的代码41H就行了,可41H这一个字节的代码如何才能让LCD模块
15
卜纪清:基于单片机的智能温室大棚温度控制系统设计与仿真
在屏幕的阵点上显示“A”字呢?同样,在LCD模块上也固化了字模存储器,这就是CGROM和CGRAM,HD44780内置了192个常用字符的字模,存于字符产生器CGROM,另外还有8个允许用户自定义的字符产生RAM称为CGRAM。下图6说明了CGROM、CGRAM
与字符的对应关系如下图2.9所示:
图2.9 CGROM、CGRAM与字符的对应关系
从上图可以看出,“A”字的对应上面高位代码为0100,对应左边低位代码为000l,合起来就是01000001,也就是41H可见它的代码与我们PC中的字符代码是基本一致的。
字符代码0x00-0x0F为用户自定义的字符图形RAM,(对于5×8点阵的字符,可以存放8组,5×10点阵的字符,存放4组,)就是CGRAM了。
0x20—0x7F为标准的ASII码,0xA0—0xFF为日文字符和希腊文字符,其余字符码(0x10一0x1F及0x80一0x9F)没有定义。
那么如何对DDRAM的内容和地址进行具体操作?下面先说说HD44780的指令集及其设置说明,请浏览该指令集,并找出对DDRAM的内容和地址进行操作的指令[12-13]。 共11条指令: 清屏指令如表2.5:
表2.5
执行
功能 清屏
RS 0
R/W 0
DB7 0
DB6 0
指令码 DB5 DB4 0
0
DB3 0
DB2 0
DB1 0
DB0 1
执行
时间,ms 1.64
功能:
(1)清除液晶显示器,即将DDRAM的内容全部填入“空白”的ASCII;
16