1、安徽建筑大学毕 业 设 计 (论 文)专 业 自动化 班 级 2班 学生姓名 林 祥 学 号 XXXXXXXXX 课 题 基于单片机的火灾自动报警系统 指导教师 汪方斌 2013 年 6 月 18 日目 录摘 要1ABSTRACT21.绪 论31.1选题背景及意义31.2火灾报警技术的发展概况31.3智能火灾报警系统41.4本章小结52.方案设计62.1火灾报警系统的类型62.2目的和要求72.3系统总体功能概述73.硬件设计83.1单片机83.1.1 单片机的选择83.1.2 AT89C51结构简介93.2 A/D转换器10 3.2.1 A/D转换器的选择103.2.2 ADC0809芯片的
2、基本知识103.3烟雾传感器113.4温度传感器124 . 软件设计144.1 系统软件流程图144.2 ADC0809流程图154.3 DS18B20流程图185 . 调试235.1编程Keil环境介绍235.2调试过程中遇到的问题及解决方法256 . 结果27总结与展望29致 谢31参考文献32附录一 火灾自动报警原理图34附录二 文献翻译 35摘 要目前,随着现代家庭用火、用电量正在逐年增加,由此引起的火灾也越来越多,在我们生活得四周到处潜伏着火灾隐患。为了避免火灾以及减少火灾造成的损失,我们必须按照“隐患险于明火,防患胜于救灾,责任重于泰山”的概念设计和完善火灾自动报警系统,将火灾消灭
3、在萌芽状态,最大限度地减少社会财富的损失。本系统可安装在各防火单位,它负责不断地向所监视的现场发出巡检信号,监视现场的温度、浓度等,并不断反馈给报警控制器,控制器将接到的信号与内存的正常整定值比较、判断确定火灾。当发生火灾时,可实现声光报警、报警限设置、延时报警及与上位机串口通信等,是一种结构简单、性能稳定、使用方便、价格低廉、智能化的烟雾传感器,具有一定的实用价值。关键词: 单片机,火灾报警,传感器ABSTRACTNow, With the modern home with fire, electricity consumption increases, the resulting fire
4、, more and more, we live in fire hazards lurking around everywhere. To avoid fires and reduce fire losses, we must follow the hidden dangers fire in prevention is better than disaster relief, the responsibility is extremely heavy, the concept design and improvement of automatic fire alarm system, fi
5、re nipped in the bud, the maximum reduce the loss of social wealth.The system can be installed in all fire units, which is responsible for continuously monitoring the site to start the inspection signal, monitor the site of temperature, concentration, and continuous feedback to the alarm controller,
6、 the controller will receive the signal and the normal memory setting value was determined by comparing to determine the fire. When fire occurs, can achieve sound and light alarm,alarm limit settings, delay alarm and serial communication with the host computer is a simple structure, stable performan
7、ce, easy to use, inexpensive, intelligent smoke sensor, has some practical value.Keywords : SCM,fire alarm,sensor1.绪 论1.1选题背景及意义火灾是可燃物在时间或空间上失去控制的燃烧所造成的灾害,是威胁公众安全和社会发展的主要灾害之一。火,在给人类带来文明进步、光明和温暖的同时也在其失去控制之时给人类造成了巨大的灾难。据统计,我国70年代火灾平均损失不到2.5亿元,80年代火灾平均损失接近3.2亿元。进入90年代,特别是1993年以来,火灾造成的直接损失上升到年均十几亿元,年均死亡
8、2000多人。严峻的事实证明,随着社会和经济的发展,社会财富日益增加,火灾给人类、社会和自然造成的危害范围不断扩大,它不仅毁坏物质财产,造成社会秩序的混乱,还直接威胁生命安全,给人们的心灵造成极大的伤害。残酷的现实让人们逐渐认识到监控预警和消防工作的重要性,良好的监控系统和及时的报警机制可以大大降低人员的伤亡,为社会减少不必要的损失。随着电子产品在人类生活中的使用越来越广泛,由此引起的火灾也越来越多,在我们生活的四周到处潜伏着火灾隐患。智能化火灾报警系统已并非传统意义上的简单的报警设备,而是融入了计算机技术、电子技术、自动控制技术、传感器的应用等各领域知识。伴随着科学技术的不断进步,火灾报警系
9、统必将得到更快的发展。1.2火灾报警技术的发展概况我国的火灾自动报警控制系统经历了从无到有、从简单到复杂的发展过程,其智能化程度也越来越高。目前国内厂家多偏重用于大型仓库、商场、高级写字楼、宾馆等场所大型火灾报警系统的研发,他们采用集中区域报警控制方式,其系统复杂、成本较高。而在居民住宅区、机房、办公室等小型防火单位,需要设置一种单一或区域联网、廉价实用的智能火灾报警装置,因此,研制一种结构简单、价格低廉的智能火灾报警器是非常必要的。火灾报警系统,从发展过程来看,大体可分为三个阶段:第一阶段为多线型火灾自动报警系统,每个探测器除需提供两根电源线外,还需提供一根报警信号线,探测器电源由报警器提供
10、,探测器的信号线均连接到报警显示盘上,报警时点亮相应的指示灯,如日本“日探”公司生产的CPF火灾报警系统。此类系统的功能一般以报警为主,辅以一些简单的联动功能(也为多线制),如驱动蜂鸣器等,其报警器对外围探测器,无故障检测功能,只会对电源线的断线作出故障反应,安装此类系统比较繁琐,特别是校线工作量较大。第二阶段为总线型火灾自动报警系统,已采用微处理器控制。其线制一般有四线制、三线制、二线制。探测器和模块通过总线与控制器实现信号传送。其探测器的报警形式为开关量,它的灵敏度在制造时,通过硬件决定,不可调整。此类系统可通过各种模块对各联动设备实行较复杂的控制。此类系统已具有系统自检以及对外围器件的故
11、障检验等功能,但对故障类型不能区分。目前国内生产的火灾自动报警系统大多数为此类产品。由于此类产品具有先进的报警和控制功能,施工、安装较为方便,且价格较低,己被大量使用。第三阶段为智能型火灾自动报警系统,由于采用了先进的计算机控制技术,智能化程度大大提高,探测器的报警形式采用模拟量,并可通过软件对其灵敏度根据使用场合、时间进行设定和调整,如可设定白天、夜间、休息日不同灵敏度。对探测器的使用环境参数变化较大的场所,灵敏度设定相对低一些,对环境较稳定或一些重要的场所,灵敏度设定相对高一些,这一功能可提高系统的稳定性及可靠性,减少误报。1.3智能火灾报警系统火灾自动报警系统属于楼宇自动化范畴,是当前楼
12、宇自动化的一个主要构成系统。其设置目的是为了防止和减少火灾危害,保护人身和财产安全。火灾报警技术是预防火灾的一项基础工作,应用范围广泛。报警早,损失少,不仅对发生火灾的单位和个人具有重要作用,而且对公安消防监督机构及时扑灭火灾、减少人员伤亡和财产损失同样具有十分重要的现实意义。火灾自动报警系统由触发器件、火灾报警装置、火灾警报装置及具有其他辅助功能的装置组成。随着电子技术和计算机技术的迅速发展,火灾自动报警系统的结构、形式越来越灵活多样,很难精确划分为几种固定的模式。火灾自动报警技术趋向于智能化系统,这种系统可组合成任何形式的火灾自动报警网络形式,既可以是区域报警系统,又可以是集中报警系统或控
13、制中心报警系统形式。所谓智能火灾自动报警系统,应当是:使用探测器件将火灾发生期间所产生的烟、温等信号以模拟量形式,连同外界相关的环境参数一起传送给报警器,报警器再根据获取的数据及内部存储的大量数据,利用火灾模型判据来判断火灾是否存在,这样的系统称为智能火灾自动报警系统。从传统型走向智能型,是国内外火灾自动报警系统技术发展的必然趋势。智能型火灾报警系统是一个集信号检测、传输、处理和控制于一体的控制系统,代表了当前火灾报警系统的发展方向。随着科学技术的迅猛发展以及国内外经济的迅速增长,市场上迫切需要一种容量大、性能优越、可靠性高、便于安装、使用和维护的智能型火灾报警控制系统。在本次设计中采用了感烟
14、效果好、灵敏度高的MQ-2烟雾传感器和DS18B20数字温度传感器来完成设计要求。智能火灾自动报警控制系统具有如下特点:(1)为全面有效地反映被监视环境的各种细微变化,智能系统采用了设有专用芯片的模拟量探测器,对烟雾和灰尘等影响实施自动补偿,同时有数字量的探测器,直接将采集的信号信息送入控制器进行自动处理,从而为实现各种智能特性、解决无灾误报和准确报警奠定了技术基础;(2)系统采用主从式网络结构,解决了对不同工程的适应性,又提高了运行的可靠性;(3)利用全总线计算机通信技术,既完成了总线报警,又实现了总线联动控制,彻底避免了控制输出与执行机构之间的长距离穿线布管,大大方便了系统布线设计和现场施
15、工。(4)基于单片机的灵活性,可对整个系统进行扩展,实现更多的功能。1.4本章小结传感器技术经过十几年的发展,因其具有体积小、功耗低、功能强、成本低等特点正在向各个领域渗透,而单片机的应用正在随着计算机在社会各个领域的渗透不断地走向深入,将单片机与传感器技术有机的结合起来,既方便了人们的日常生活,又推动了科学的发展。如今,将单片机技术恰当的应用在传感器技术中,是技术进步的必然结果。2.方案设计2.1火灾报警系统的类型根据火灾报警系统中所使用的探测器种类的不同,火灾报警系统可以分为以下四种:(1)感温型火灾报警系统由于火灾发生时燃烧物会产生大量的热量,使得周围温度迅速变化。感温型火灾报警系统就是
16、通过判断周围温度变化而产生响应的火灾报警系统,再把温度的变化转换为电信号以达到判断报警的目的。根据探测温度参数的不同,一般可以将感温型火灾报警系统分为定温式、温差式等几种。(2)感烟型火灾报警系统烟雾是早期火灾的重要特征之一。在火灾发生的初期,由于温度比较低,许多物质都处于阴燃阶段,产生大量的烟雾。感烟型火灾报警系统就是对空气中可见或不可见的烟雾粒子进行探测,然后将烟雾浓度的变化转换为电信号来触发报警。感烟型火灾报警系统主要有激光感烟式、光电感烟式和离子感烟式等。(3)感光型火灾报警系统物质燃烧不但会产生烟雾和热量,同时也会产生可见或不可见的光辐射。感光型火灾报警系统就是通过响应火灾中产生的光
17、特性,即扩散火焰的光强度和闪烁频率,来触发报警系统的。根据感应的敏感波长,可以将感光型火灾报警系统分为对波长较短的光辐射敏感的紫外报警系统和对波长较长的光辐射敏感的红外报警系统。(4)复合型火灾报警系统如果报警系统同时对温度、烟雾和光辐射中的两种或两种以上参数做出响应,那么它就是复合型火灾报警系统。目前复合型火灾报警系统有感温感烟型、感烟感光型、感温感光型等多种形式。根据比较总结本文采用感温感烟型复合火灾报警系统,具有灵敏度高、成本较低、操作简单等优点。2.2目的和要求本次设计是设计和实现一种分布式智能火灾报警控制系统,实现系统软硬件的组成和实现。实时、准确报警和可靠的联动控制,使系统可靠性高
18、、灵活性强、人机界面友好。设计成果能对室内烟雾(CO2,CO,甲烷等)及温度突变进行报警,烟雾和温度同时出现异常,则说明有火灾,发出火灾警报。通过设计熟悉51单片机的使用方法、ADC0809和DS18B20、MQ-2传感器等芯片的工作原理及其使用,并通过Keil编程往单片机上下载程序,进而实现对外接在单片机上的电路控制报警系统,驱动扬声器,达到预期效果。在智能火灾报警系统设计过程中,根据设计要求编写程序,绘制Protues原理图来达到设计的最优化和理想化、实用化。2.3系统总体功能概述本文的智能火灾报警系统的工作,首先,通过数据采集模块的MQ-2烟雾传感器采集周围环境的烟雾浓度,经A/D转换送
19、到单片机控制中心进行处理;同时由DS18B20数字温度传感器采集周围环境中的温度,经过信息处理,转化为C51单片机能够处理的数字量。在STC89C51单片机中,采集并经过处理的数据要与系统所规定的相关上限值进行比较(上限值是保证系统正常工作同时周围环境处于良好状态时的上限),如果超过了上限值,则说明周围环境异常,要报警,以便人们的正常生活和工作。把信息综合处理,根据实际的需要以及现场的环境,来发现和识别警报,构成智能化的监控系统,提高了系统工作的可靠性。此系统的总体模块框图如图2.1所示。3.硬件设计3.1单片机3.1.1 单片机的选择单片机是本方案的灵魂,所以我们选择是需要慎之又慎,下面我们
20、来拿8031和AT89C51做一下比较。8031片内不带程序存储器ROM,使用时用户需外接程序存储器和一片逻辑电路373,外接的程序存储器多为EPROM的2764系列。用户若想对写入到EPROM中的程序进行修改,必须先用一种特殊的紫外线灯将其照射擦除,之后再可写入。写入到外接程序存储器的程序代码没有什么保密性可言。由于上述类型的单片机应用的早,影响很大,已成为事实上的工业标准。后来很多芯片厂商以各种方式与Intel公司合作,也推出了同类型的单片机,如同一种单片机的多个版本一样,虽都在不断的改变制造工艺,但内核却一样,也就是说这类单片机指令系统完全兼容,绝大多数管脚也兼容;在使用上基本可以直接互
21、换。我们统称这些与8051内核相同的单片机为51系列单片机。在众多的51系列单片机中,要算 ATMEL 公司的AT89C51更实用,因他不但和8051指令、管脚完全兼容,而且其片内的4K程序存储器是FLASH工艺的,这种工艺的存储器用户可以用电的方式瞬间擦除、改写,一般专为 ATMEL AT89Cx 做的编程器均带有这些功能。显而易见,这种单片机对开发设备的要求很低,开发时间也大大缩短。写入单片机内的程序还可以进行加密,这又很好地保护了你的劳动成果。而且AT89C51目前的售价比8031还低,市场供应也很充足。单对AT89C51来说,在实际电路中可以直接互换8051和8751,替换8031只是
22、第31脚有区别,8031因内部没有ROM,31脚需接地,单片机在启动后就到外面程序存储器读取指令;而8051/8751/89c51因内部有程序存储器,31脚接高电平,单片机启动后直接在内部读取指令。也就是51芯片的31脚控制着单片机程序从内部读取还是从外部读取,31脚接电源,程序从内部读取,31脚接地,程序从外部读取,其他无须改动。另外,AT89C51替换8031后因不用外存储器,不必安装原电路的外存储器和373芯片。由于内部RAM的存在,可以减少I/O扩展芯片、锁存器及片外RAM等等,使整个设计显得简单明了,所以我们选择AT89C51。3.1.2 AT89C51结构简介AT89C51是一种带
23、4K字节FLASH存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机,单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。性能介绍:与MCS-51 兼
24、容 4K字节可编程FLASH存储器 寿命:1000写/擦循环 数据保留时间:10年 全静态工作:0Hz-24MHz 三级程序存储器锁定 1288位内部RAM 32可编程I/O线 两个16位定时器/计数器 5个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路3.2 A/D转换器3.2.1 A/D转换器的选择 A/D转换器的种类很多,就位数来分,有8位、10位、12位、16位等。位数越高,其分辨率也越高,但价格也越贵。而就其结构而言,有单一的A/D转换器,有内含多路开关的A/D转换器。根据本设计的需要,我选择的A/D转换器是ADC0809芯片。ADC0809是美国Analog
25、Device公司生产的8位逐次逼近式模数转换器,转换速率高,自三态输出缓冲电路,可直接与各种典型的8位或16位的微处理器相连而无需附加逻辑接口电路,且能与CMOS及TTL兼容,是目前我国应用最广泛,价格便宜的A/D转换器。加之内部含有三态输入缓冲电路,可直接与各种微处理器连接,且无须附加逻辑接口电路,内部设置的高精参考电压源和时钟电路,使它不需要任何外部电路和时钟信号,就能完成A/D转换功能,应用非常方便。3.2.2 ADC0809芯片的基本知识ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。它是逐次逼近式A/D转换器,可以和单片机直接接口。ADC0
26、809的内部逻辑结构如图3-1。图3.1 ADC0809内部逻辑结构由上图可知,ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。3.3烟雾传感器烟雾检测报警器主要应用在石油、化工、冶金、油库、液化气 站、喷漆作业等易发生可燃烟雾泄漏的场所,根据报警器检测烟雾 种类的要求,一般选用接触燃烧式烟雾传感器和半导体烟雾传感器。使用接触燃烧式传感器,其探头的阻缓及中毒,是不可避
27、免的问题。 阻缓是当在烟雾与空气的混合物中含有硫化氢等含硫物质的情况下,则有可能在无焰燃烧的同时,有些固态物质附着在催化元件表面,阻塞载体的微孔,从而引起响应缓慢反应滞缓,灵敏度降低。虽然将阻缓的传感器再放回新鲜空气环境中有得到某种程度的恢复的可能,但是如果长期暴露在这样的环境中,其灵敏度会不断下降,导致传感器最终丧失检测烟雾的能力。中毒是如果环境空气中含有硅烷之类的物质时,则传感器将 使催化元件产生不可逆转的中毒,以致灵敏度很快就丧失。当怀疑检测环 境中存在这些物质时,经常对探头进行标定,是必须且有效的办法。因此,经常对传感器进行标定,是保证其准确性的必要的途径。一般连续使用两个月后应对传感
28、器进行量程校准,这种经常性对传感器的维护,无形中加大了工作人员的工作量,同时增加了报警器的维护成本。半导体烟雾传感器包括用氧化物半导体陶瓷材料作为敏感体制作的烟雾传感器以及用单晶半导体器件制作的烟雾传感器,它具有灵敏度高, 响应快、体积小、结构简单,使用方便、价格便宜等优点,因而得到广泛应用。半导体烟雾传感器的性能主要看其灵敏度、选择性(抗干扰性)和稳 定性(使用寿命)。 经过对比上述两种烟雾传感器的应用特性,发现半导体烟雾传感器的优点更加突出:灵敏度高、响应快、抗干扰性好、使用方便、价格便宜,且不会发生探头阻缓及中毒现象,维护成本较低等。因此,本设计采用半导体烟雾传感器作为报警器烟雾信息采集
29、部分的核心。而在众多半导体气体传感器中,本设计选用MQ-2型烟雾传感器,这种型号的传感器不但具备一般半导体烟雾传感器灵敏度高、响应快、抗干扰能力强、寿命长等优点。3.4 温度传感器温度传感器,使用范围广,数量多,居各种传感器之首。温度传感器的发展大致经历了以下3个阶段: 1.传统的分立式温度传感器(含敏感元件),主要是能够进行非电量和电量之间转换。传统的分立式温度传感器如热电偶传感器。热电偶传感器是工业测量中应用最广泛的一种温度传感器,它与被测对象直接接触,不受中间介质的影响,具有较高的精度;测量范围广,可从-501600进行连续测量,特殊的热电偶如金铁镍铬,最低可测到-269,钨铼最高可达2
30、800。2.模拟集成温度传感器/控制器。它的主要特点是功能单一(仅测量温度)、测温误差小、价格低、响应速度快、传输距离远、体积小、微功耗等,适合远距离测温,不需要进行非线性校准,外围电路简单。3.智能温度传感器。目前,国际上新型温度传感器正从模拟式想数字式、集成化向智能化及网络化的方向发展。 温度传感器按传感器与被测介质的接触方式可分为两大类:一类是接触式温度传感器,一类是非接触式温度传感器。接触式温度传感器的测温元件与被测对象要有良好的热接触,通过热传导及对流原理达到热平衡,这是的示值即为被测对象的温度。这种测温方法精度比较高,并可测量物体内部的温度分布。但对于运动的、热容量比较小的及对感温
31、元件有腐蚀作用的对象,这种方法将会产生很大的误差。 非接触测温的测温元件与被测对象互不接触。常用的是辐射热交换原理。此种测稳方法的主要特点是可测量运动状态的小目标及热容量小或变化迅速的对象,也可测量温度场的温度分布,但受环境的影响比较大。综合以上,我选择数字温度传感器DS18B20。该产品采用美国DALLAS公司生产的 DS18B20可组网数字温度传感器芯片封装而成,具有耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。DS18B20一线总线数字式传感器,独特的单线接口仅需一个端口引脚进行通讯,用户可定义的非易失性温度报警设置 。现场温度直接以“一线总线”的数
32、字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,与前一代产品不同,新的产品支持3V5.5V的电压范围,使系统设计更灵活、方便。而且新一代产品更便宜,体积更小。4 . 软件设计硬件电路和软件程序是组成一个系统不可缺少的两部分,二者的正确与否将直接影响整个程序的可实现性。在上一章中已经将整个系统的硬件部分作了介绍,在这一章中将就系统的软件部分加以分析说明。本次设计的软件要实现的功能是:当传感器在有火灾信息是,采集信息,用单片机实现对火灾信号处理,并在LED和蜂鸣器上显示结果。4.1 系统软件流程图开始系统初始化采集温度和烟雾信号声光报警温度烟雾是否超过设定上限YN结束4.2 A
33、DC0809流程图开始模拟量输入初始化启动A/D正在转化结束转化数字量输出结束#includesbit OE=P32;sbit EOC=P31;sbit ST=P30;sbit CLK=P15;sbit light=P11;sbit light1=P10;void DelayMS(unsigned int ms) unsigned int i,j;for(i=0;ims;i+) for(j=0;j1141;j+);void Delayus(unsigned int us)unsigned int i;for(i=0;i126)light=0;else light=1;void Timer0_I
34、NT() interrupt 1CLK=!CLK;4.3 DS18B20流程图开始初始化启动温度转换初始化读取温度寄存器读取高低位温度结束转换#include#define uchar unsigned char #define uint unsigned int sbit DQ = P17;/定义ds18B20总线IOsbit deng=P10;void delay(uchar z)uchar x,y;for(x=1000;x1;x-)for(y=z;y1;y-);void tmpDelay(uint num)/延时函数 while(num-);void Init_DS18B20(void)
35、/初始化ds1820unsigned char x=0;DQ = 1; /DQ复位tmpDelay(8); /稍做延时DQ = 0; /单片机将DQ拉低tmpDelay(80); /精确延时 大于 480usDQ = 1; /拉高总线tmpDelay(8);x=DQ; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败tmpDelay(4);unsigned char ReadOneChar()/读一个字节unsigned char i=0;unsigned char dat = 0;for (i=8;i0;i-)DQ = 0; / 给脉冲信号dat=1;DQ = 1; / 给脉冲信号i
36、f(DQ)dat|=0x80;tmpDelay(4);return(dat);void WriteOneChar(unsigned char dat)/写一个字节unsigned char i=0;for (i=8; i0; i-)DQ = 0;DQ = dat&0x01;tmpDelay(4);DQ = 1;dat=1;tmpDelay(4);unsigned int Readtemp()/读取温度unsigned char a=0;unsigned char b=0;uchar t=0;Init_DS18B20();WriteOneChar(0xCC); / 跳过读序号列号的操作Write
37、OneChar(0x44); / 启动温度转换Init_DS18B20();WriteOneChar(0xCC); /跳过读序号列号的操作WriteOneChar(0xBE); /读取温寄度存器a=ReadOneChar(); /连续读两个字节数据 /读低8位 b=ReadOneChar(); /读高8位t=(a4)&0x0f);a=(b80)deng=0;delay(100);else deng=1; delay(100);5 . 调试5.1编程Keil环境介绍Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统。51的编程语言常用的有二种:一种是汇
38、编语言,一种是C语言。汇编语言的机器代码生成效率很高但可读性却并不强,复杂一点的程序就更是难读懂,而C语言在大多数情况下其机器代码生成效率和汇编语言相当,但可读性和可移植性却远远超过汇编语言,而且C语言还可以嵌入汇编来解决高时效性的代码编写问题。对于开发周期来说,中大型的软件编写用C语言的开发周期通常要小于汇编语言很多。综合以上C语言的优点,我在学习时选择了C语言。使用C语言肯定要使用到C编译器,以便把写好的C程序编译为机器码,这样单片机才能执行编写好的程序。KEIL uVISION2是众多单片机应用开发软件中优秀的软件之一,它支持众多不同公司的MCS51 架构的芯片,它集编辑、编译、仿真等于
39、一体;同时还支持PLM,汇编和C语言的程序设计,它的界面和常用的微软VC+的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。因此,很多开发51应用的工程师或普通的单片机爱好者,对它十分喜欢。以上简单介绍了KEIL51软件,要使用KEIL51软件,必需先要安装它。安装好后,建立第一个C项目。接着按下面的步骤建立第一个项目:(1) 源文件的建立:使用菜单 “File-New”或者点击工具栏的新建文件按钮,即可在项目窗口的右侧打开一个新的文本编辑窗口,在该窗口中输入C语言源程序(4.2小节所示)。保存该文件,加上扩展名(.asm或a51),这里将文件保存为examl1.asm
40、。(2)ect-NewProject”菜单,出现以个对话框,要求给工程起一个名字,我们输入examl1,不需要扩展名,点击保存按钮,出现第二个对话框。这个对话框要求选择目标CPU(即我们所使用的芯片型号80C51)点击ATMEL前面的“+”号,展开该层,点击其中的80C51,然后点击确定按钮。回到主界面,此时,在工程窗口的文件页中,出现了“Target1”,前面有“+”号,点击“+”展开,可以看到下一层的“SourceGroup1”,这时的工程还是一个空工程,里面什么文件也没有,需要手动把刚才编写好的源程序加入,点击“SourceGroup”使其反白显示,然后,点击鼠标右键,出现一个下拉菜单。
41、选中其中的“AddfiletoGroupSourceGroup1”,对话框,要求寻找源文件,注意该对话框下面的“文件类型”默认为CSourcefile(*.c),也就是以C为扩展名的文件,点击对话框中文件类型后的下拉列表,找到并选中“CSourceFile(*.C)”,这样,在列表框中就可以找到examl1.C文件了。双examl1.C文件,将文件加入项目,注意,在文件加入项目后,该对话框并不消失,等待继续加入其他文件,但初学时常会认为操作没有成功而再次双击同一文件,这时会出现对话框,提示你所选的文件以在列表中,此时点击确定,返回前一对话框,然后,点击”Close”即可返回主界面,返回后,点击
42、“SourceGroup1”前的加号,会发现examl1.C文件以在其中。双击文件名,即打开源程序。(3)工程的详细设置:首先点击左边Project窗口的Target 1,然后使用菜单“Project-Option for target target 1”即出现对工程设置的对话框,对这个对话框可谓非常复杂,共有8个页面,要全部高清可不容易,好在绝大部分设置项取默认值就行了。设置完成以后安确认返回主界面,工程建立、设置完毕。(4)编译、连接:在设置好工程后,既可以进行编译、连接。选择菜单Project-Build target,对当前工程进行连接,如果当前文件已修改软件会先对该文件进行比阿尼,然
43、后在连接以产生目标代码。编译过程中的信息将出现在输出窗口中的Build页中,如果源程序有语法错误,会有错误报告出现,双击该行,可以定到出错的位置,对源程序反复修改后最终会获得名为examl1.hex的文件,该文件即可被编程器读入并写到芯片中,同时还产生了一些其他相关文件可被用于keil的仿真与调试图5.1 keil编译结果5.2调试过程中遇到的问题及解决方法在进入环境以后,遇到了很多问题,总结如下:(1)提示无asm文件,编译时候提示:F:.XX.asmFile has been changed outside the editor, reload ?解决方法:重新生成项目,产生examl1.
44、asm即可。(2)在进入Keil的调试环境以后,发现程序有错解决方法:将光标定位于需要修改的程序上,用菜单,DebugInline Assambly即可出现对话框,Enter New 后面的编辑框内直接输入需要修改的程序语句,输入完之后键入回车将自动指向下一条语句,可以继续修改,如果不在需要修改,可以点击右上角的关闭按钮关闭窗口。(3)程序调试时,一些程序必须满足一定的条件才能被执行到解决方法:这些条件往往是异步发生或难以预先设定的,这类问题使用的单步实行方法是很难调试的,这时就要使用发哦程序调试中的另一种非常重要是方法-断点设置。断点设置的方法有多种,常用的是在某一程序行设置断点,设置好断点后可以全速运行程序,一旦执行到该程序行即停止,可在此观察有关变量值,以确定问题所在。在程序行设置/移除断点的方法是将光标定位于需要设置断点的程序行,使用菜单Debug/Insert/RemoveBreakPoint设置或移除断点(也可以用鼠标在该行双