图6 时钟电路
2.3 探测终端的设计
探测终端组成框图如图7所示,该终端以单片机为核心,由温度传感器DS18B20、实时时钟模块,A/D转换器、液晶显示模块、无线发射模块CC1101等构成。环境参数经信号采集电路和A/D转换后送单片机,经处理后在LCD1602上实时显示,然后通过串口传输给监测终端。
图7 探测终端组成框图
探测终端Protel99se原理图如图8所示。
图8 探测终端Protel99se原理图
2.4 监测终端的设计
监测终端组成框图如图9所示,该终端以单片机为核心,由LCD1602液晶显示模块、CC1101无线接收模块,蜂鸣器报警模块,键盘扫描模块等构成。环境参数经无线信号送入单片机,经处理后在液晶上实时显示。
图9 监测终端组成框图
监测终端Protel99se原理图如图10所示。
图10 监测端Protel99se原理图
3. 软件设计
3.1 主程序设计
单片机上电复位,先设置堆栈点,然后清除原有的标志状态,暂存,以及LCD1602上的原始数据;然后进行新的TO初始化,并对CC1101无线收发模块进行串口的初始化;之后CPU打开中断控制,最先扫描优先级高的键盘控制单元,若无操作,则系统开始工作,采集温度数据,并且经过MCU的处理,将采集到的数据送到LCD1602显示,之后再次扫描键盘,若键盘无操作,则采集下一组数据。此时时钟芯片程序与无线接收模块也开始初始化数据[14]。重复上述操作。执行流程如图11所示。
3.2 温度采集程序设计
单片机上电后,温度程序先进行现场的保护,设置堆栈。然后设定1s的计时时间,若未到1s就被高优先级的操作打断,则执行完高优先级后恢复现场并返回主程序。如果1s后未被打断,则对温度进行采样,并将采集到的数据经标度转换后送入MCU,此时将进行是否报警的判断,若超过报警值,则启动报警程序,蜂鸣器报警;若未越限,则将此数据送入LCD1602显示[14]。执行流程如图12所示。
3.3 按键扫描程序设计
单片机上电复位后,先扫描键盘初步判断是否有键按下,如果没有,则重新扫描键盘,如果有,则延时20ms后再判断是否有键按下,若此时没有,则表明无键按下,返回重新扫描键盘,如果有,则表明确实有键按下,此时根据按下键的不同,启动不同的程序[14],使系统启动。执行流程如图13所示。
3.4 无线传输程序设计
单片机上电复位后,先设置堆栈,然后清理串口暂存数据,并对串口进行初始化,然后扫描数据传送/接收键是否被按下,如果没有按下,则直接返回主程序,如果按下则执行数据的传送与接收,直至数据传送完,返回主程序,进行下一组数据传送准备。无线传输/接收程序初始化时间稍长,因此对于数据的收发与传送会有一定的延时,但延时时间过短,不会影响数据传输的实时性,因此在现实操作中可忽略。执行流程如图14所示。
4. 系统仿真
4.1 探测终端仿真
仿真前单片机未上电,LCD1602上未显示温度及时钟数据,仿真前图片如图15所示。给单片机上电后,单片机开始工作,程序开始自动运行,温度传感器将采集到的数据传送给单片机,经处理后传给LCD1602显示。实时时钟芯片也开始工作,将时间数据传送给单片机,经处理后在LCD1602上显示。此时可通过时钟键盘模块对时钟进行调时,按键1为模式选择键,可以选择调节对象,如时、分、秒等;按键2为增加键可以对所调对象进行增加操作;按键3为减小键可以对所调对象进行减小操作,按键4为快速退出键,可以快速退出调节进行显示。此时无线传输模块CC1101也开始工作,准备传送采集到的数据。按键5为传送数据键,按下此键则开始传送数据。单片机上电后仿真如图16所示。在按键时应注意保持一小段时间,不能按下后立刻松开,因为键盘扫描程序有一个预判程序,太快松开,会被程序认为是误操作。这样可能会造成按键无效。 AT89C51单片机单片机的环境监测系统设计+仿真电路图(6):http://www.youerw.com/zidonghua/lunwen_1394.html