4.2程序流程
在整个程序流程中,经常要控制一部分指令重复执行若干次,以便简短的程序完成大量的处理任务。这种按某种控制规律重复执行的程序称为循环程序。循环程序有先执行后判断何先判断后执行两种基本结构。而我们要选用的是先判断后执行。
MQ-2刚开始的时候不能马上检测烟雾,需要等通电一会后才能正常工作,程序初始化结束后系统进入工作状态。89S52单片机对传感器检测到的烟雾信号进行模数转换,然后与设定的门限值进行比较,如果超过预算门限值蜂鸣器报警,同时把烟雾浓度值送入显示管显示,没有超过门限值继续进入监控工作状态。
程序初始化子程序,这部分实现的功能包括各种I/O口输入输出状态的设定、寄存器初始化、中断使能等。首先设定定时初值50ms,利用IAP写入EEPROM,作为取值间隔。然后设置定时器0,选择方式1。方式1状态下定时器的工作寄存器TH1、TL1是全16位参与操作。接下来定时器0中断允许位置1,打开定时器0,关闭蜂鸣器,开启绿灯,设置报警限初值。
图4.1主程序流程图
17
开始 初始化 A/D转换 否 检测的烟雾是否超过门限值 是 报警 结束 4.3程序调试的过程
1、源文件的建立:使用菜单 “File-New”或者点击工具栏的新建文件按钮,即可在项目窗口的右侧打开一个新的文本编辑窗口,在该窗口中输入C语言源程序(附录所示)。保存该文件,加上扩展名(.asm或a51),这里将文件保存为src.asm。
2、建立工程文件:点击“Project-New Project”菜单,出现以个对话框,要求给工程起一个名字,我们输入src不需要扩展名,点击保存按钮,出现第二个对话框。这个对话框要求选择目标CPU(即我们所使用的芯片型号89S52)点击ATMEL前面的“+”号,展开该层,点击其中的80C51,因为S52与C51是一样的所以选择80C51然后点击确定按钮。回到主界面,此时,在工程窗口的文件页中,出现了“Targ et1”,前面有 “+”号,点击“+”展开,可以看到下一层的“Source Group1”,这时的工程还是一个空工程,里面什么文件也没有,需要手动把刚才编写好的源程序加入,点击“Souce Group”使其反白显示,然后,点击鼠标右键,出现一个下拉菜单。选中其中的“Add file to Group”Souce Group1”,对话框,要求寻找源文件,注意该对话框下面的“文件类型“默认为C Souce file (*.c),也就是以C为扩展名的文件,而我们的文件是以asm 为扩展名的,所以在列表框中找不到src.asm,要将文件类型该掉,点击对话框中”文件类型‘后的下拉列表,找到并选中“Asm Souce File(*.asm,*.a51)”,这样,在列表框中就可以找到src.asm文文件了。双击src.asm文件,将文件加入项目,注意,在文件加入项目后,该对话框并不消失,等待继续加入其他文件,但初学时常会认为操作没有成功而再次双 击同一文件,这时会出现对话框,提示你所选的文件以在列表中,此时点击确定,返回前一对话框,然后,点击”Close”即可返回主界面,返回后,点击“Souce Goup 1”前的加号,会发现src.asm 文件以在其中。双击文件名,即打开源程序。
3、工程的详细设置:首先点击左边Project窗口的Target 1,然后使用菜单“Proget-Option for target ‘target 1’”即出现对工程设置的对话框,对这个对话框可谓非常复杂,共有8个页面,要全部高清可不容易,好在绝大部分设置项取默认值就行了。设置完成以后安确认返回主界面,工程建立、设置完毕。
4、 编译、连接:在设置好工程后,既可以进行编译、连接。选择菜单Project-Build target,对当前工程进行连接,如果当前文件已修改软件会先对该文件进行比阿尼,然后在连接以产生目标代码。编译过程中的信息将出现在输出窗口中的Build页中,如果源程序有语法错误,会有错误报告出现,双击该行,可以定到出错的位置,对源程序反复修改后,最终会得到如图4-2所示的结果,提示获得了名为src.hex的文件,该文件即可被编程器读入并写到芯片中,同时还产生了一些其他相关文件可被用于KEIL的仿真与调试。
18
图4-2 正确连接、编译之后的结果
4.3.1程序调试过程遇见的问题与解决办法 1、在进入Keil的调试环境以后,发现程序有错
解决方法:将光标定位于需要修改的程序上,用菜单,Debug》Inline Assambly…即可出现对话框,Enter New 后面的编辑框内直接输入需要修改的程序语句,输入完之后键入回车将自动指向下一条语句,可以继续修改,如果不在需要修改,可以点击右上角的关闭按钮关闭窗口。
2、输入程序时,有中文标点,用keil编译时出现错误
解决方法:程序里有带中文标点,用英文重输入一遍 3、汇编出现数字、字母混淆
解决方法:字母“O” 和 数字 “0”。主要错在这里。注意细节!
19
结 论
随着技术越来越成熟烟雾报警器成为保障生产与生活的安全一个重要的工具,避免火灾和爆炸事故的发生,是人们生活中一项重要的发明,具有广阔的市场空间与发展前景。
本烟雾报警器由烟雾信号采集电路与单片机控制电路两大部分构成。 根据设计要求、使用环境、等因素,选用MQ-2型半导体烟雾传感器。该传感器常用于家庭和工厂的气体泄漏装置,适宜于液化气、丁烷、丙烷、甲烷、酒精、氢气、烟雾等的探测,它的灵敏度适中,长期工作稳定性、重现性、不易受环境影响及抗温湿度影响等优点。
在系统单片机控制电路的设计上,采用了89S52单片机作为核心芯片,使仪器具有结构简单、性能稳定、体积小、成本低等优点。为提高响应时伺,保证传感器准确地、稳定地工作,需要向烟雾传感器持续供给5V的加热电压。 当烟雾传感器检测到一定的浓度的烟雾,传感器把烟雾信号送入到模数转换器中进行转换,把模拟信号转换成数字信号送入单片机,单片机对送入的信号进行处理,大于预定值的浓度,报警电路报警。本设计的报警器小巧轻便,方便安装。
20
相关推荐: