DS18B20的内部结构 DS18B20内部功能模块如图4.1.3.2所示,
图4.1.3.2 DS18B20内部功能模块
1.3.2 DS18B20工作原理
DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同DS18B20 为9位~12位A/D转换精度,而DS1820为9位A/D转换,虽然我们采用了高精度的芯片,但在实际情况上由于技术问题比较难实现,而实际精度此时温度寄存器中的数值即为所测温度。斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。如下图的测温原理图不同,且温度转换时的延时时间由2s减为750ms。 DS18B20测温原理如图4.1.3.3所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。则高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55℃所对应的一个基数值时。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直
到计数器2计数到0时,停止温度寄存器值。
图4.1.3.3 DS18B20原理图
1.3.3 DS18B20使用中注意事项
DS18B20虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题:
⑴较小的硬件开销需要相对复杂的软件进行补偿,由于DS18B20与微处理器间采用串行数据传送,因此,在对DS18B20进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在使用PL/M、C等高级语言进行系统程序设计时,对DS18B20操作部分最好采用汇编语言实现。
⑵在DS18B20的有关资料中均未提及单总线上所挂DS18B20数量问题,容易使人误认为可以挂任意多个DS18B20,在实际应用中并非如此。当单总线上所挂DS18B20超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。
⑶连接DS18B20的总线电缆是有长度限制的。试验中,当采用普通信号电缆传输长度超过50m时,读取的测温数据将发生错误。当将总线电缆改为双绞线带屏蔽电缆时,正常通讯距离可达150m,当采用每米绞合次数更多的双绞线带屏蔽电缆时,正常通讯距离进一步加长。这种情况主要是由总线分布电容使信号波形产生畸变造成的。因此,在用DS18B20进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。
⑷在DS18B20测温程序设计中,向DS18B20发出温度转换命令后,程序要等待DS18B20的返回信号,一旦某个DS18B20接触不好或断线,当程序读该DS18B20时,将没有返回信号,程序进入死循环。这一点在进行DS1820硬件连接和软件设计时也要给予一定的重视。 测温电缆线建议采用屏蔽4芯双绞线,其中一对线接地线与信号线,另一组接VCC和地线,屏蔽层在源端单点接地。
1.4水位传感器
ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D模数转换器。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。目前仅在单片机初学应用设计中较为常见。 1.4.1 主要特性
1)8路输入通道,8位A/D转换器,即分辨率为8位。 2)具有转换起停控制端。
3)转换时间为100μs(时钟为640kHz时),130μs(时钟为500kHz时) 4)单个+5V电源供电
5)模拟输入电压范围0~+5V,不需零点和满刻度校准。 6)工作温度范围为-40~+85摄氏度 7)低功耗,约15mW。 1.4.2 内部结构
ADC0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器、逐次逼近寄存器、逻辑控制和定时电路组成。 外部特性(引脚功能)
ADC0809芯片有28条引脚,采用双列直插式封装,如图所示。下面说明各引脚功能。
IN0~IN7:8路模拟量输入端。 2-1~2-8:8位数字量输出端。
ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路 ALE:地址锁存允许信号,输入,高电平有效。
START: A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。
EOC: A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ。 REF(+)、REF(-):基准电压。 Vcc:电源,单一+5V。 GND:地。
1.5 显示元件
TC1602的液晶字符性显示器也适合运用于此控制系统当中的,并且功能特性也适用于此设计系统的功能要求。但我还希望此显示系统中能同时显示时间(年月日),所以1602可能就显得力不从心了,于是我选择了液晶LED 12864,它的显示特性很适用此设计系统的功能要求,也不会造成资源浪费。
其管脚说明如下表4.1.6所示。
表4.1.6 液晶12864管脚说明
管脚 1 2
3 ,16,18 4 5 6 7 8 9 10 11
符号 GND VDD NC RS
W / R
功能
接地
接入+5V电源电
压
空
高:数据(低:指
令)
高:读(低:写) 使能端 数据线 控制模式 系统复位 背光电源, +5V 背光电源, 0V
E
DB0~DB7 PSB RST LED+ LED-
12864液晶的具体指令介绍
DR为数据寄存器:简称DR,它们负责存储微机要写到CGRAM或DDRAM的数据,或者存储MCU要从CGRAM或DDRAM读出的数据。因此,可将DR视为一个数据缓冲区,当RS及R/W引脚信号为1且Enable引脚信号由1变为0时,读取数据;当RS引脚信号为1,R/W引脚信号为0且Enable引脚信号由1变为0时,存入数据。
AC为地址计数器:简称AC,负责计数写/读CGRAM或DDRAM的数据地址,AC依照MCU对LCD的设置值而自动修改它本身的内容。
IR为指令寄存器:简称IR,负责存储MCU要写给LCD的指令码,当RS及R/W引脚信号为0且Enable引脚信号由1变为0时,D0~D7引脚上的数据便会存入到IR寄存器中。
BF为忙碌信号:简称BF,当BF为1时,不接收微机送来的数据或指令;当BR为0时,接收外部数据或指令,所以,在写数据或指令到LCD之前,必须查看BF是否为0。
只要把数据写到文本显示RAM中,就能显示文本内容,具体流程如下:先设定工作模式,接着信号的检测,再数据的传送。
ST7920的显示RAM中提供了8个乘以4行的汉字空间, 当RAM进行写入显示在文本时,CGROM、HCGROM与CGRAM的字型就会显示出。ST7920A可以显示三种字型,分别是显示半宽的HC-GROM字型、中文CGRAM字型和CGRAM字型,在DDRAM中写入编码来进行设定选择哪种字型,各个字型的详细编码如下:
半宽字型显示 :只将一位字节写入DDRAM中,编码范围为02-7FH。 显示中文字形:将两字节编码写入DDRAM,编码范围为A1A0H~F7FEH编码为A140H-D75FH BIG5的码。
显示CGRAM字型:需两个字节的编码写入DDRAM中来实现这种字型,总共有四种编码方式它们分别是0000H、0002H、0004H、0006H。
液晶显示器与单片机连接基本要注意以下三点:
1.若以CMOS芯片为单片机时不需要电平转换电路来转换;若其单片机为TTL芯片则必须配备电平转换电路。
2.模块读或者写控制线为单选,必须加读或者写信号转换电路(对读、写控制线分开的单片机)。
3.对于模块确定的编码地址,应选择相对应的译码电路。
本设计用的液晶4行汉字第一行为温度,第二行为水位,第三行、第四行空缺,在GB2312编码中查询“温度”和“水位”的四个字得到的16位编码分别为:#CEC2、#B6C8、#CBAE、
#CEBB,每个字的编码分为高8位和低8位,写入时先写入高8位,再写入低8位即可。
GB或
五.硬件模块设计
1.1单片机模块设计
控制模块是整个设计方案的核心,它控制了温度的采集、处理与显示、温度值的设定与温度越限时控制电路的启动。本控制模块由单片机89C51及其外围电成,电路如图5.1.1所示。