此时电阻两端有微弱的电压,单片机可以通过P1.1(AD)口检测到,如果传感器电源连接不正常,则会产生断路,检测到电阻两端电压为0。
图3.7 传感器电源连接自诊断电路
(2)判断传感器信号端连接情况
另一种情况是判断传感器信号端是否连接正确,此时不需要外加电路,在传感器预热2分钟后,测量传感器信号的输出电压,如果电压为5V,则说明传感器的信号端连接不正常。
当报警器自诊断发现传感器连接不正常,就会发出长鸣声音警报,并 伴随黄灯闪烁,提醒用户及时排除传感器连接问题。
3.3本章小结
本章阐述了烟雾报警器的硬件设计。首先介绍了STC12系列 单片机系统的结构特点、技术性能特点。从设计要求及对STC12系列单 片机性能指标、价格及节省仪表空间考虑,选用STC12C5410AD单片机 作为该报警系统的核心控制器。然后,详细地阐述了烟雾报警器电 路设计,分为信号采集及前置放大电路、STC12C5410AD单片机接口电路、声音报警电路、显示电路、状态指示灯及键盘控制电路。
第四章 烟雾检测报警器的软件设计
4.1 STC12系列单片机调试及开发工具
本系统的软件编程使用的是美国Keil Software公司出品的Keil C51,是51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势。
Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,Keil C51生成的目标代码效率非常之 高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能 体现高级语言的优势。
C51工具包的整体结构中,μVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经C51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对 目标板进行调试,也可以直接写入程序存贮器如EPROM中。
STC12系列单片机下载程序使用的是宏晶科技自行开发的STC单片 机ISP下载编程软件。本论文程序调试过程中,使用的是STC-ISP-v3.1版。ISP工具的功能主要是将由PC机串接来的8位并行数据与单片机的 串行数据进行相互转换,以实现PC机与STC12C5410AD的RXD及TXD口通讯。 当用户将源程序(汇编语言或C语言)经语法检查无误并生成代码时, 就可以将程序代码下载到Flash芯片中[31],而用户的系统可以是在线状态。
用户可以通过调试环境软件的人机对话界面,在程序中设置断点,在STC12C5410AD中,可以同时设置3个硬件断点,它是经过串口的传输,由芯片中的几组断点条件寄存器实现的。
用户可以通过调试环境软件的人机对话界面,检查或修改Flash芯片 内的各种存储器、寄存器的数据。
4.2烟雾检测报警器软件流程及设计
本论文中,软件解决的主要问题是检测烟雾传感器的烟雾浓度信号,然后对信号进行AD转换,数字滤波,线性化处理,段式液晶浓度 显示,按键功能设置,以及报警器声光警报。
4.2.1主程序设计及流程图
主程序流程图如图4.1所示。首先要给传感器预热三分钟,因为MQ-2型半导体电阻式烟雾传感器在不通电存放一段时间后,再次通电时,传感器不能立即正常采集烟雾信息,需要一段时间预热。程序初始化结束后,系统进入监控状态。本论文的主程序设计先对传感器预热三分钟, 预热同时,对传感器加热丝故障检测,采用软件方式检测传感器加热丝或 电缆线是否断线或者接触不良。 STC12C5410AD单片机对传感器检测的烟雾浓度信号进行A/D转 换、平均值法滤波、线性化处理后,将浓度值与报警限设定值相比较,判断是否报警。同时送入段式液晶显示烟雾浓度值。主程序还包括状态指示灯及按键功能设置,中断子程序等,使报警器功能更加完善,给用户带来便利。
图4.1 主程序流程图
4.2.2主程序初始化流程图
主程序初始化流程图如图4.2所示。给传感器预热后,程序开始执行 初始化子程序,这部分实现的功能包括各种I/O口输入输出状态的设定、 寄存器初始化、中断使能等。首先设定定时初值50ms,利用IAP写入EEPROM,作为取值间隔。然后设置定时器0,选择方式1。方式1状态下定时器的工作寄存器TH1、TL1