本科毕业设计(论文)
}
CS=1;
/*---------------------------------------------------------------- 写数据 双8位
----------------------------------------------------------------*/
void Write_Data(unsigned char DH,unsigned char DL) {
CS=0; RS=1; DataPort=DH; RW=0;
RW=1; }
DataPort=DL; RW=0; RW=1; CS=1;
4.2 温度传感器模块
4.2.1 概述
DS18B20采用的是单总线协议方式,在一根I/O线上完成数据的读写,所以,
对读写的数据位有着严格的时序要求,DS18B20的数据读写是通过时间片处理位和命令字来实现信息交换。DS18B20的通信协议定义了几种信号的时序:初始化时序、读时序、写时序。这些时序都是将主机作为主设备,单总线器件作
27
本科毕业设计(论文)
为从设备,每一次命令和数据的传输都是从主机主动启动写时序开始,在进行写命令后,主机需要启动读时序完成数据接收,数据和命令的传输都是地位在先。
4.2.2 DS18B20的软件程序
据单总线的通信协议,主机控制DS18B20的完成读取温度的过程为:初始化DS18B20(发复位脉冲)、发ROM操作命令、发存储器操作命令、处理数据等。
单片机实现一次温度转换,读取温度数值的流程图如下所示。该流程图程序主要包括:DS18B20的初始化、读取数据和写数据三个子程序及完成温度转换,读取温度值两个功能程序。在温度转换盒读取温度之前,首先要通过产生复位脉冲初始化DS18B20,然后DS18B20发出应答脉冲,当单片机接收到应答脉冲后才开始后面的操作。程序应该严格按照时序进行DS18B20的初始化=、读数据、写数据等操作以保证数据的完整性。
DS18B20的程序流程图具体如图4-2所示:
28
本科毕业设计(论文)
图4-2
4.2.3 DS18B20的程序代码
对于温度传感器的程序代码,重点是读取一个字节及写入一个字节的功能代码,这两部分代码具体如下:
/*------------------------------------------------ 读取一个字节
------------------------------------------------*/ unsigned char ReadOneChar(void) {
unsigned char i=0; unsigned char dat = 0; for (i=8;i>0;i--)
29
本科毕业设计(论文)
{
DQ = 0; // 给脉冲信号 dat>>=1;
DQ = 1; // 给脉冲信号 if(DQ) dat|=0x80; DelayUs2x(25); }
return(dat); }
/*------------------------------------------------ 写入一个字节
------------------------------------------------*/ void WriteOneChar(unsigned char dat) {
unsigned char i=0; for (i=8; i>0; i--) { DQ = 0; DQ = dat&0x01; DelayUs2x(25); DQ = 1; dat>>=1; }
DelayUs2x(25); }
4.3 烟雾传感器模块
4.3.1 概述
30
本科毕业设计(论文)
本系统采用的是电阻控制型的气敏器件MQ-2,其阻值随被测气体的浓度而变化。气敏器件又是一种“气—电”传感器件,它将被侧气体的浓度信号转变成相应的电信号。器件放置一段时间后, 再通电使用时,阻值是先下降,然后又上升,通电大约10分钟后(叫初期稳定时间),才能稳定到与气氛状态相应的阻值。为了避免通电开始时的误报动作,应特别注意要设置十几分钟的延迟电路。器件的响应时间约为10秒,恢复时间约为30秒~60秒。使用气敏器件,要避免油浸或油垢污染,更不要将气敏器件长时间放在腐蚀气体中。长时间使用时,要有防止灰尘堵塞不锈钢网的措施。 4.3.2 MQ-2与单片机的连接图
MQ-2与MCU的连接接口方式如图4-3所示:
图4-3
MQ-2电阻式烟雾传感器先将信号采集,再传送到AD转换器进行模数转换,转换后的数值信息送入单片机进行判值比较,再根据判别结果发出相应的信号。 4.3.3 A/D转换器
本系统使用的AD转换器是ADC0832。ADC0832是美国国家半导体公司生产
31