单片机智能火灾报警系统毕业论文 下载本文

第4章 软件设计

硬件电路和软件程序是组成一个系统不可缺少的两部分,二者的正确与否将直接影响整个程序的可实现性。在上一章中已经将整个系统的硬件部分作了介绍,在这一章中将就系统的软件部分加以分析说明。本次设计的软件要实现的功能是:当传感器在有火灾信息是,采集信息,用单片机实现对火灾信号处理,并在LED和蜂鸣器上显示结果。

4.1 编程Keil环境介绍

Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统。51的编程语言常用的有二种:一种是汇编语言,一种是C语言。汇编语言的机器代码生成效率很高但可读性却并不强,复杂一点的程序就更是难读懂,而C语言在大多数情况下其机器代码生成效率和汇编语言相当,但可读性和可移植性却远远超过汇编语言,而且C语言还可以嵌入汇编来解决高时效性的代码编写问题。对于开发周期来说,中大型的软件编写用C语言的开发周期通常要小于汇编语言很多。综合以上C语言的优点,我在学习时选择了C语言。

使用C语言肯定要使用到C编译器,以便把写好的C程序编译为机器码,这样单片机才能执行编写好的程序。KEIL uVISION2是众多单片机应用开发软件中优秀的软件之一,它支持众多不同公司的MCS51 架构的芯片,它集编辑、编译、仿真等于一体;同时还支持PLM,汇编和C语言的程序设计,它的界面和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。因此,很多开发51应用的工程师或普通的单片机爱好者,对它十分喜欢。

以上简单介绍了KEIL51软件,要使用KEIL51软件,必需先要安装它。安装好后,建立第一个C项目。接着按下面的步骤建立第一个项目:

(1)点击Project菜单,选择弹出的下拉式菜单中的New Project。在“文件名”中输入第一个C程序项目名称。“保存”后的文件扩展名为uv2,这是KEILuVision2

28

项目文件扩展名。

(2)选择所要的单片机,这里我们选择常用的Ateml公司的AT89C51。 (3)首先我们要在项目中创建新的程序文件或加入旧程序文件。如果您没有现成的程序,那么就要新建一个程序文件。

(4)保存新建的程序,也可以用菜单File-Save 或快捷键Ctrl+S进行保存。鼠标在屏幕左边的Source Group1文件夹图标上右击弹出菜单,在这里可以做在项目中增加减少文件等操作。我们选“Add File to Group ‘Source Group 1’”弹出文件窗口,选择刚刚保存的文件,按ADD 按钮,关闭文件窗,程序文件已加到项目中了。这时在Source Group1 文件夹图标左边出现了一个小+号说明,文件组中有了文件,点击它可以展开查看。

(5)C程序文件已被我们加到了项目中了,下面就剩下编译运行了。 (6)进入调试模式。

4.2 系统软件设计

4.2.1 ADC0809流程图

数据输出 转换结束 正在转换 启动A/D 初始化 29

4.2.2 DS18B20流程图

初始化 复位 读一个字节 读取温度 写一个字节 4.2.3 系统软件流程图

采集烟雾和 CPU处理 声光报警 火灾? 温度信号 系统初始化 上电复位 开始 N NY Y30

4.3 本章小结

本章主要介绍了本设计中的软件设计部分,通过流程图对每一部分电路所要实现功能的流程作了讲解。系统软件的程序设计主要是和硬件电路相结合,正确的实现火灾报警,此部分发挥了软件的很多优点,简化了电路,最后通过对程序的调试和改进,达到了预期的效果。

第5章 系统调试

5.1 系统调试的步骤

系统调试的步骤:

1. 对单片机MC-51最小系统的调试。 2. 对A/D转换电路ADC0809的调试。 3. 对MQ-2烟雾传感器的调试。 4. 对数字温度传感器DS18B20的调试。 5. 对报警电路的调试。 6. 对整个系统的电路调试。

5.2 调试过程中遇到的问题及解决方法

1.PCB干扰

PCB板是工控系统中器件、信号线和电源线的高密度集合体,PCB板设计得好坏对抗干扰能力影响极大,所以PCB板设计决不单是器件和线路的简单布局安排,还必须符合抗干扰的设计原则。

PCB板上元器件布局的好坏,直接影响整机性能,决不能小视。应按以下原则进行布局:

(1)一般情况下,所有元器件都应布置在基板不焊接的一面,以便于安装、焊接、调试及维修。

(2)可能的话,所有的元器件均放置在离板的边缘3mm以内或至少大于板厚,

31

这是由于在大批量生产的流水线插件和进行波峰焊时,要提供给导轨槽使用,同时也为了防止由于外形加工引起边缘部分的缺损。

(3)重量超过159的元器件、应当用支架加以固定,然后焊接。那些又大又重、发热量多的元器件,不宜装在印制板上,而应装在整机的机箱底板上,且应考虑散热问题。

(4)大而重的元器件应安放在利于PCB板固定支架附近,以提高装配板的固有频率和增加防振能力。

(5)发热元器件应放在利于散热的位置,防止对周围元器件产生热传导或辐射。 2.调试过程中遇到的问题

(1)在进入Keil的调试环境以后,发现程序有错。

解决方法:将光标定位于需要修改的程序上,用菜单,Debug Inline Assambly...即可出现对话框,Enter New 后面的编辑框内直接输入需要修改的程序语句,输入完之后键入回车将自动指向下一条语句,可以继续修改,如果不再需要修改,可以点击右上角的关闭按钮关闭窗口。

(2)程序调试时,一些程序必须满足一定的条件才能被执行到。

解决方法:这些条件往往是异步发生或难以预先设定的,这类问题使用的单步实行方法是难以调试的,这时就要使用程序调试中的另一种非常重要的方法断点设置。断点设置的方法有多种,常用的是在某一程序行设置断点,设置好断点后可以全速运行程序,一旦执行到该程序行即停止,可在此观察有关变量值,以确定问题所在,在程序行设置/移除断点的方法是将光标定位于需要设置断点的程序行,使用菜单Debug/Insert/Remove Break Point设置或移除断点;Debug/Enable/Disable Break Point是开启或暂停光标所在行的断点功能;Debug/Disable All Break Point暂停所有断点;Debug/Kill All Break Point清除所有的断点设置。这些功能也可以在工具栏的快捷键进行设置。 (3)输入程序时,有中文标点,用Keil编译时有错误。 解决方法:程序有中文标点,用英文重输入一遍就行了。 (4)汇编出现字母和数字的混淆。

解决方法:字母“O”和数字“0”。主要错在这里。

5.3 本章小结

本章主要介绍了调试过程中对PCB板的干扰和Keil环境发现的错误和缺陷给予正确的处理方法。

32