基于单片机的烟雾火灾报警仪.docx_第1页
基于单片机的烟雾火灾报警仪.docx_第2页
基于单片机的烟雾火灾报警仪.docx_第3页
基于单片机的烟雾火灾报警仪.docx_第4页
基于单片机的烟雾火灾报警仪.docx_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

题 目:基于单片机的烟雾火灾报警仪院 系:应用技术学院 工学部专 业:12电子信息科学与技术学 号:学生姓名:指导教师:教师职称:论文提交日期:2015年12月5日摘要3Abstract3前言3第一章 绪论4第1.1节 开发背景4第1.2节 研究现状5第1.3节 本系统设计目标7第二章 系统硬件方案介绍7第2.1节 主控芯片介绍7第2.2节 温度传感器介绍8第2.3节 显示模块介绍9第2.4节 烟雾检测传感器介绍9第2.5节 语音芯片的介绍10第2.6节 系统硬件总设计10第三章 系统硬件电路设计11第3.1节 STC89C51单片机系统设计11第3.2节 DS18B20温度传感器的设计13第3.3节 LCD1602液晶显示电路设计14第3.4节 ADC0832电路设计16第3.5节 语音芯片电路设计18第3.6节 独立按键电路的设计18第3.7节 系统硬件电路总设计19第四章 系统软件设计19第4.1节 软件开发环境介绍19第4.2节 主程序介绍20第4.3节 DS18B20温度采集程序的设计23第4.4节 LCD1602显示程序的设计29第4.5节 语音芯片驱动程序设计34第五章 系统测试与分析36第5.1节 系统硬件测试36第5.2 节 系统软件测试36第5.3节 测试实物图37第六章 总结与展望37参考文献38致谢38摘要现在,随着人们生活中所使用的电子产品愈来愈普遍,所发生的火灾事故也愈来愈多,同时我们周围火灾隐患无处不在。为防止火灾和减少火灾所造成的损失,我们必须遵循预防危险火,胜于救灾预防,责任重于泰山”的概念设计,提高火灾自动报警系统,该系统将火灾消灭在萌芽状态,最大程度的减少社会财富的损失。本文设计了一种可以适合用于多个公共场合的火灾报警系统。该系统采用STC89C51微控制器作为主芯片,该系统包括温度采集模块,烟雾检测器模块, AT24C02数据存储模块, LCD1602液晶显示模块,一按键模组以及语音合成模块。该系统具有良好的可靠性和实时性,具有广阔的市场前景。随着计算机技术和信息技术等高新技术的飞速发展,火灾报警技术也得到了快速提升。火灾报警技术应用是非常广泛的,它与我们的生活和生命财产安全密切相关。AbstractNow, with electronic products used in peoples lives become increasingly common, fire accidents occurred also more and more, while the fire hazards around us everywhere. To prevent fires and reduce the losses caused by the fire, we must follow the danger of fire prevention, prevention is better than disaster relief, the responsibility is extremely heavy, the concept of design to improve the automatic fire alarm system, which will fire nipped in the bud, the maximum degree reduction of loss of social wealth.This paper presents a fire alarm system can be adapted for a number of public occasions. The system uses STC89C51 microcontroller as the main chip, the system includes a temperature acquisition module, the smoke detector module, AT24C02 data storage module, LCD1602 LCD module, a key module and speech synthesis module. The system has good reliability and real-time, and has broad market prospects. With the rapid development of computer technology and information technology and other high-tech fire alarm technology has also been improved rapidly. Fire alarm technology applications is very broad, and it is closely related to our lives and the lives and property safety.前言 从历史记载的人开始学会了火灾的早期反应了积极成果在控制这些火灾。当有人发现火灾消防队消防部门通过巡回看守员使用手铃,铃声或教会惊动教堂司事振铃教堂的钟声或工厂气笛。不幸的是,这些系统都没有提供了非常多的细节,常常冲着消防部门到错误的位置。 火灾自动报警系统可以快速的监测,发现人们不容易发现火灾早期的特点,减少火灾造成的生命损失和财产的最低限度。火灾早期,会使燃烧物质分解,大量有毒气体沉淀,人们可能会在不知情的火灾,从而无法逃脱一氧化碳中毒,火灾自动报警系统可监测到CO浓度的转变,可以提供CO浓度超标报警信息,通告人们及时撤离。火灾自动报警系统可作为城市消防系统的单位,通过城市消防管网和城市火灾报警中心网络,及时报警信息被发送到火灾报警中心,市消防报警中心会自动找到起火的位置,并将消防队开发出一条路线图,让消防人员能快速到达火灾现场。火灾自动报警系统能对火灾进行及时监测和确切报警,有着防备和避免火灾风险、保护人身平安和财富安全的重要意义,有着很大的经济效益和社会效益。第1章 绪论第1.1节 开发背景 在种种灾害中,火灾事故往往是公众安全和社会发展最普遍的威胁,也是主要灾害之一。火灾发生的频率较高,基本上每天都会发生火灾。根据联合国世界火灾统计中心(WFSC)2000统计资料”,全世界每一年大概发生火灾600万至700万次,全世界每一年因为火灾而死亡的人数约为65000至75000人。此中,火灾发生较多的地区是欧美地区,然而死亡的人数却相对较少,这与欧美发达国家的生活水平和消防技术以及相关措施有关;然而,亚洲地区发生火灾次数很少,但死亡的人数却很多,这与亚洲经济发展水平不高、消防设施不完善等原因相关。据统计,我国70年的平均年损失为2.5元,80年的平均损失火灾近3.2元。上世纪90年代,特别是1993年代以来,造成了火灾直接财产损失高达数十亿美元,平均每年超过2000人死亡。随着经济和城市建设的迅速发展,都市高层、地下和大型综合性建设日趋增加,火灾隐患也大大增长,火灾发生的次数以及其所形成的破坏呈逐年上升的趋向。一旦火灾,人民的生命财产将遭受造成巨大的伤害。由此可以看出,随着社会经济的发展,社会经济的发展,社会财富的不断增加,火灾对人类、社会和自然造成的危害越来越大,它不仅破坏了物质财产,造成了社会秩序的混乱,还直接危及性命安全,给人们的精神造成很大的伤害。惨烈的事实让人们逐步认识到监控预警和消防措施的重要性,优秀的监控体系和实时的报警机制能够大大减少人员的伤亡,也避免了减少不必要的死亡。火灾自动报警系统(FAS)便是为了满足这一需要而研制出的,而且其本身的技术水平也在随着人们需求的不断地进步,在功用、构造、模式等方面不断地完竣。 火灾自动报警系统可以快速的监测,发现人们不容易发现火灾早期的特点,减少火灾造成的生命损失和财产的最低限度。火灾早期,会使燃烧物质分解,大量有毒气体沉淀,人们可能会在不知情的火灾,从而无法逃脱一氧化碳中毒,火灾自动报警系统可监测到CO浓度的转变,可以提供CO浓度超标报警信息,通告人们及时撤离。火灾自动报警系统可作为城市消防系统的单位,通过城市消防管网和城市火灾报警中心网络,及时报警信息被发送到火灾报警中心,市消防报警中心会自动找到起火的位置,并将消防队开发出一条路线图,让消防人员能快速到达火灾现场。火灾自动报警系统能对火灾进行及时监测和确切报警,有着防备和避免火灾风险、保护人身平安和财富安全的重要意义,有着很大的经济效益和社会效益。第1.2节 研究现状 从历史记载的人开始学会了火灾的早期反应了积极成果在控制这些火灾。当有人发现火灾消防队消防部门通过巡回看守员使用手铃,铃声或教会惊动教堂司事振铃教堂的钟声或工厂气笛。不幸的是,这些系统都没有提供了非常多的细节,常常冲着消防部门到错误的位置。但随着电报的出现,由Samuel FB莫尔斯发明于1840年初S,消防队员分别获得了更快,更准确的火灾报告制度。 1847年,纽约州成为美国第一个城市开始建设的市消防要求报警系统通过法令来构建造电报,通过在设置地面岗位,从市政厅通信火灾报警器不同的消防局,指示不同的钟铃声,通过使用上述发明的。 第一电气火灾传感器是由沃特金斯成功设计用于商业用途。到了1870年年初沃特金斯曾开发了使用远程监控火灾报警系统热探测器在1873年形成了第一家民营火灾报警一家名为波士顿火灾自动报警公司,即现在的亚洲电影大奖,火灾自动报警公司。 现代火灾报警系统能够从一个小火焰,水流的自动喷水灭火系统或激活拉站探测烟雾和热量,并报告该信息现场人员通过专用电话线连接到世界上的任何位置。虽然从安装角度来看一个看似简单的装置,火灾报警器的工作可以说是相当复杂的,尤其是当你考虑到所涉及的巨大的道德和法律责任。也有一些最近的一些更新的技术在过去的几年中值得一提的。 在火灾报警系统舞台上的最新重大发展已引进的寻址头。这些更新前,在发生报警时,在文字显示在控制面板上显示该区域受到影响 - 类似“火灾报警 - 区6栋东座三楼。 ”随着可寻址头系统;然而,确切的位置被精确定位。此外,可寻址头系统提高诊断能力。这是一个很大的优势,因为当一个系统出现故障,时间是在恢复防火的建筑精髓。与寻址头升级或完全取代传统系统的选项,以通过建立业主与内部电工和外部顾问的投入要慎重考虑。对于大集建筑,消费升级可能是巨大的。 近年来,在我国悄然兴起了使用无线通信火灾自动报警系统。该系统引入了无线通信技术,使用无线通信,而不是传统的有线通信,大多数电气装置的通过无线连接来发送信息和控制,适用于所有类型的建筑物和地。自动无线火灾报警系统最初仅用于特殊场合,如不恰当的布线博物馆,纪念馆等的情况下,但其价格也相对较高。随着技术进步和降低零部件成本,开发成本,并自动生成无线火灾报警系统也减少,这在性能和价格方面的竞争非常激烈,其市场潜力已经显现。 在中国,使用的火灾自动报警系统,并更多地关注无线通信方法。由于它易于安装,以建设工作无损伤,柔韧性好,易于扩展等优点,适合多种场合,如古迹,体育场馆,博物馆,会展中心,建设医院的施工阶段的。智能火灾自动报警系统主要体现在判断和协调消防管理,一般分为分散,集中式和分布式,分散式系统由多个智能节点的检测非智能控制器,由火灾探测节点分析完成州 ;集中式系统由智能控制器和多个非智能检测节点,该节点将只发送火灾检测参数到控制器,控制器智能地确定火灾状况;控制器和检测节点分布式系统是很智能,而且也是火灾自动报警系统发展的未来方向。第1.3节 本系统设计目标火灾报警系统协同工作,以检测并通过视觉和音频设备警告人们,当烟,火,一氧化碳或其他紧急情况是存在的设备数量。这些报警可以从烟雾探测器,热探测器激活。报警可以是机动的钟声或壁挂安装探测器或牛角。它们也可以是发出警报声,接着是语音疏散信息通常状态的注意事项“的行喇叭闪光灯,注意事项。消防应急的报道。请留下通过最近的出口建设。切勿使用电梯逃生! “它们也可以通过手动火灾报警激活设备,如手动报警按钮被激活或拉站。火灾报警器发声器可以被设置为某些频率和不同音调包括低,中,高取决于设备的国家和制造商。最火的报警系统在欧洲听起来像交替频率的警笛声。在解开国家火灾报警探测器可以是连续的或设置为代码,也可以设置成不同的音量。较小的建筑物可以具有报警设置为较低的体积和较大的建筑物可以具有设置为更高的级别报警。基于社会和经济方面的需要,本设计目的在于设计一个能够对监测点及时监控、报警的智能火灾报警系统。智能型火警系统是一个集信号探测、传送、报警、处理于一体的系统。随着经济和都市建设的迅速发展,城市高层、地下建设和大型综合性建筑逐渐增加,火灾的隐患也大大增长,火灾发生的次数以及火灾造成的损失变现为逐年上升趋向,市场上迫切需要一种大容量、高可靠性、使用起来比较简单的智能型火灾报警控制系统。该火灾报警系统是把STC89C51单片机作为主控的核心,能够处理火灾探测器输出的温度信号、烟雾浓度信号,并进行声光警报。第2章 系统硬件方案介绍第2.1节 主控芯片介绍方案一:采用STC89C51单片机作为主控芯片。STC89C51是宏晶科技公司生产的一款低功耗、高性能的八位CMOS微处理器,片内具有8k在线编程Flash存储器。STC89C51单片机的内核采用的是MCS-51内核,指令完全兼容MCS-51,但是该单片机越做了升级使得芯片具有很多传统的51单片机不具备的功能,例如该芯片还有4K的EEPROM存储,在需要使用到掉电存储数据的时候就可以直接使用单片机内部的存储,不在需要在外接存储芯片进行存储。STC89C51单片机具有的开发简单、可在线编程下载、成本低是非常不错的选择。方案二:采用MSP430单片机作为主控芯片。MSP430单片机称之为混合信号处理器,它可以将多个不同功能的模拟电路、数字电路模块和微处理器集成在一个芯片上,MSP430系列单片机是美国德州仪器 (TI)1996年开始推向市场的一种16位超低功耗、具有精简指令集(RISC)的混合信号处理器(Mixed Signal Processor)。该系列单片机多应用于需要电池供电的便携式仪器仪表中。而却开发难度相对比较大、价格昂贵。所以在一些简单的设计中不宜采用。方案三:采用PIC16F877A单片机作为主控芯片。PIC16F877A是由Microchip公司所生产开发的新产品,属于PICmicro系统8位单片机微机,具有Flash程序内存功能,可反复擦写程序。但是开发成本高,难度相对大。综合上述的描述,考虑到资源的合理利用和成本以及开发的难易程度最终决定采用宏晶科技的STC89C51单片机作为主控芯片。第2.2节 温度传感器介绍方案一:使用热敏电阻作为传感器,用热敏电阻与一个相应阻值电阻相串联分压,利用热敏电阻阻值随温度变化而变化的特性,采集这两个电阻变化的分压值,并进行A/D转换。此设计方案需用A/D转换电路,增加硬件成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生较大的测量误差。方案二:采用模拟温度传感器AD590,该传感器的输出电流会随温度的变化而变化,从而需要设计电路转换成电压的变化,进而通过A/D转换后接到单片机中,这种方法固然麻烦,而却费用比较高,而却在电流电压转换和A/D转换中会产生误差。方案三:采用数字式温度传感器DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以去除A/D模块,降低硬件成本,简化系统电路。另外,数字式温度传感器还具有测量精度高、测量范围广等优点。所以最终我们采用数字型DS18B20作为温度采集芯片。第2.3节 显示模块介绍方案一:采用LED数码管动态扫描显示。LED数码管的价格适中,对于显示数字或者简单的字母会比较合适。但是采用动态扫描法与单片机连接时占用CPU的I/O口较多,并且由于单片机的IO口输出电流不够,所以需要一个驱动电路,通过驱动电路放大电流后控制数码管,还有就是采用数码管进行显示的话显示的内容多了对于电路的焊接机会增大难得容易焊接错误。方案二:采用LCD1602液晶显示屏。LCD1602液晶又叫LCD1602字符型液晶。液晶显示功能强大,可以同时显示出16*2即32个字符,可包括数字、字母、符号、或者自定义字符。LCD1602液晶显示器中的每一个字符都是由5*7的点阵组成。LCD1602采用并行数据传输也可以采用串行数据传输,控制简单,和市面上的大多基于HD44780液晶的控制原理完全相同。方案三:采用LCD12864液晶显示屏。带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,其显示分辨率为12864,内置8192个16*16点汉字,和128个16*8点ASCII字符集。利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示84行1616点阵的汉字,也可完成图形显示,低电压低功耗是其又一显著特点。虽然LCD12864液晶显示的功能强大,但是显示的内容偏大造成了,显示空间的浪费,再来该液晶的成本高。综合上述的描述,最终根据本设计中的功能要求考虑采用LCD1602液晶显示器比较合理。第2.4节 烟雾检测传感器介绍方案一:采用视频图像检测烟雾。视频图像检测方法是通过采集图像进行分析图像中灰度区域,通过对比后得出是否有烟雾。该方法要求环境物体保持不动,如果物体会动可能就会影响检测结果,出现误判的现象。而却该方法对算法的要求比较高,成本相对比较大。方案二:采用MQ-2传感器检测烟雾浓度。MQ-2是属于二氧化锡半导体气敏材料,MQ-2对烟雾,可燃气体具有很高的灵敏度,并且具有良好的抗干扰能力,可准确的排除有刺激性飞可燃性烟雾的干扰信息,如酒精等。MQ-2型传感器具有良好的重复性和长期的稳定性,响应时间短,长时间工作性能好,并且价格便宜。综合上述的描述,考虑到设计的成本在本设计中采用MQ-2烟雾传感器。第2.5节 语音芯片的介绍本系统采用SC805语音合成芯片。SC8065是一颗单芯片CMOS一次性编程语音芯片,使用最新崁入式EPROM架构的OTP(OneTimeProgrammable)语音晶元,具有1个Input脚和2个I/O脚,利用精准的内阻震荡故不需外加震荡电阻,只有一组PWM输出,故无须再加任何零件。语音合成方式为4-bitAdvancedLOG-PCM,语音还原度高,在6KHz采样频率最大可以录制65秒语音,两种控制方式,按键模式最大可以分128段语音,串行脉冲控制模式最大可以分127段.可将不同的语音资料写录进芯片ROM中.可应用在很多领域,例如:电子琴、高级玩具、儿童学习机、防盗设备、智能家电、保健与理疗产品、仪器仪表,以及各类自动控制系统等。第2.6节 系统硬件总设计通过上述对各个模块介绍,我们最终选择了STC89C51作为本设计的主控芯片,通过LCD1602进行实时显示信息,采用MQ-2烟雾传感器检测烟雾通过ADC0832将烟雾信号转换成数字芯片传输到单片机处理,DS18B20温度传感器采集环境温度。单片机通过反馈的烟雾和温度芯片进行控制蜂鸣器和LED灯的报警,并设立三个独立按键进行设置温度和烟雾的限值,并且设置好后存储于AT24C02中。本设计的具体的系统方案如下图2.6.1所示。图2.6.1第3章 系统硬件电路设计第3.1节 STC89C51单片机系统设计单片机最小系统说的通俗易懂的话就是以最少的元器件组成能让单片机工作起来的系统,接下来开始介绍51单片机最小系统必备的器件及其作用。首先电源这对于一个电子产品的话是必不可少,它提供能源给系统运作,在本设计中由于51单片机的工作电压在4.55.5V之间都可以正常工作所以我们采用了USB电源线连接手机充电器插头或者5V的移动电源给系统进行供电。其次晶振电路,XTAL1和XTAL2 是独立的输入和输出反相放大器,它们可以被配置为使用石英晶振的片内振荡器,或者是器件直接由外部时钟驱动。图3.1中采用的是内时钟模式,即采用利用芯片内部的振荡电路,在XTAL1、XTAL2 的引脚上外接定时元件(一个石英晶体和两个电容),内部振荡器便能产生自激振荡。一般来说晶振可以在1.212MHz 之间任选,甚至可以达到24MHz 或者更高,但是频率越高功耗也就越大。在本实验套件中采用的12M 的石英晶振。和晶振并联的两个电容的大小对振荡频率有微小影响,可以起到频率微调作用。当采用石英晶振时,电容可以在20 40pF 之间选择(本设计使用30pF);当采用陶瓷谐振器件时,电容要适当地增大一些,在3050pF 之间。通常选取30pF 的陶瓷电容就可以了。图3.1.1 晶振电路再来就是复位电路,复位电路分为:上电自动复位和开关复位。图3.1.2中所示的复位电路就包括了这两种复位方式。上电瞬间,电容两端电压不能突变,此时电容的负极和RESET相连,电压全部加在了电阻上,RESET的输入为高,芯片被复位。随之+5V电源给电容充电,电阻上的电压逐渐减小,最后约等于0,芯片正常工作。并联在电容的两端为复位按键,当复位按键没有被按下的时候电路实现上电复位,在芯片正常工作后,通过按下按键使RST管脚出现高电平达到手动复位的效果。一般来说,只要RST管脚上保持10ms以上的高电平,就能使单片机有效的复位。图中所示的复位电阻和电容为经典值,实际制作是可以用同一数量级的电阻和电容代替,读者也可自行计算RC充电时间或在工作环境实际测量,以确保单片机的复位电路可靠。图3.1.2 复位电路完整的STC89C51单片机最小系统电路图如图3.1.3所示。图3.1.3 STC89C51单片机最小系统第3.2节 DS18B20温度传感器的设计根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行 复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后 释放,当DS18B20收到信号后等待1660微秒左右,后发出60240微秒的存在低脉冲,主CPU收到此信号表示复位成功。下面表1为ROM指令表,表2为RAM指令表。表1 DS18B20 ROM指令表表2 DS18B20 RAM指令表在使用时候DS18B20的I/O引脚接一个10K的上拉电阻。具体的电路图如图3.2.1所示。图3.2.1 DS18B20电路图第3.3节 LCD1602液晶显示电路设计LCD1602一共具有11条指令,单片机发送这些指令到LCD1602上就可以完成一些特定的功能,比如清屏,开关显示等等。LCD1602自己带有字库在显示的时候可以直接调用字库进行显示,当然如果字库中没有的字符也可以根据需要自己自定义字符写入CGROM中,自定义字符的分辨率为5*8而却自定义字符数量有限需要合理的安排使用,最多可以自定义8个字符,将自定义字符字模写入LCD的CGROM中后就可以随意的调用,调用的方式和正常显示字符是一样的。控制LCD1602液晶显示器只要会对LCD1602进行读状态操作、写指令操作、读数据操作、写数据操作即可具体的操作对应的引脚电平如表4所示。表3 LCD1602操作指令对应的引脚电平上表中E为使能端;RS为寄存器选择,当RS=H时表示选择数据寄存器,RS=L时选择指令寄存器;R/W为信号线,R/W=H时执行读操作,R/W=L时执行写操作。LCD1602具体的读操作时序如图3.3.1,写操作时序如图3.3.2所示。图3.3.1 LCD1602读操作时序图图3.3.2 LCD1602写操作时序图在使用时候将D0-D7连接到51单片机的P0上方便进行数据的传输,而V0口接一个可调电位器,当调节电位器位置改变时接入V0的电压也随之变化进行显示的清晰度也随之变化,所以在实际时采用电位器而不采用固定阻值的电阻就是为了能够方便的调节以使用在电压不同的场合。具体LCD1602电路图如图3.3.3所示。 图3.3.3 LCD1602电路图第3.4节 ADC0832电路设计 ADC0832 是美国国家半导体公司生产的一种8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在05V之间。芯片转换时间仅为32S,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。通过DI 数据输入端,可以轻易的实现通道功能的选择。当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK 和DO/DI 的电平可任意。当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK 输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。在第1 个时钟脉冲的下沉之前DI端必须是高电平,表示起始信号。在第2、3个脉冲下沉之前DI端应输入2 位数据用于选择通道功能。到第3 个脉冲的下沉之后DI端的输入电平就失去输入作用,此后DO/DI端则开始利用数据输出DO进行转换数据的读取。从第4个脉冲下沉开始由DO端输出转换数据最高位DATA7,随后每一个脉冲下沉DO端输出下一位数据。直到第11个脉冲时发出最低位数据DATA0,一个字节的数据输出 DC0832封装以及各端子完成。也正是从此位开始输出下一个相反字节的数据,即从第11个字节的下沉输出DATA0。随后输出8位数据,到第19 个脉冲时数据输出完成,也标志着一次A/D转换的结束。最后将CS置高电平禁用芯片,直接将转换后的数据进行处理就可以了。作为单通道模拟信号输入时ADC0832的输入电压是05V且8位分辨率时的电压精度为19.53mV。如果作为由IN+与IN-输入的输入时,可是将电压值设定在某一个较大范围之内,从而提高转换的宽度。但值得注意的是,在进行IN+与IN-的输入时,如果IN-的电压大于IN+的电压则转换后的数据结果始终为00H。ADC0832转换时序图如图3.4.1所示。图3.4.1 ADC0832转换时序图ADC0832 与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI。但由于DO端与DI端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将DO和DI 并联在一根数据线上使用。具体的电路图如图3.4.2所示。图3.4.2 ADC0832电路图 第3.5节 语音芯片电路设计图3.5.1 SC8065电路图第3.6节 独立按键电路的设计本设计中设置有按键电路,通过几个独立按键进行人机交互。按键通过一点连接单片机的I/O口一端连接电源地。这样设计是因为单片机的I/O在悬空没有作为输出的情况下是默认高电平的,在按键没有按下则相当于该I/O处于悬空状态。当按下后I/O口的电平就会被拉低,这样单片机只需要进行循环的检测I/O口是否有出现低电平就可以判断是否有按键按下,当然这种按键是金属解除的方式所以会有抖动纹波的情况,所以在程序中需要适当的加上短暂的延时消抖。具体电路如图3.6.1所示。图3.6.1 独立按键电路三个按键的功能分别为:第一个按键:按下后进入设置模式,可以连续按选择所需要设置的参数,显示屏上会有对应的提示。第二个按键:在设置模式下,对应设置的参数加一。第三个按键:在设置模式下,对应设置的参数减一。第3.7节 系统硬件电路总设计第4章 系统软件设计第4.1节 软件开发环境介绍本设计采用 Keil Vision4进行编程实现。Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。第4.2节 主程序介绍主函数void main()是程序的入口函数,一个完整的程序必须要包含该函数。在该函数的开头一般都是先对单片机和一些外围器件需要进行初始化才能正常使用的器件进行初始化和重新赋值一些变量,初始化完后进去死循环,如果不进入死循环程序运行一次就会退出,如果加入死循环程序就会不断地进行循环达到实时检测执行的目的。在主程序的设计中需要注意的是主函数中不宜放过多的代码,具体的代码一般都是采用函数进行封装然后在主函数进行调用,这样也可以方便阅读修改。具体流程图如下4.2.1所示。图4.2.1 主程序流程图/*函数名称:void main()函数作用:主函数参数说明:*/void main()TR1=0; /开机关闭语音led=1; /开机关闭报警灯T0_init();/定时器0初始化/*AT24C02_write_date(0,50);/将温度上限存储AT24C02的0x01地址中保存起来delay_n40us(1000);/延时*/temp_up=AT24C02_read_date(0);/开机先读取AT24C02存储起来的温度上限delay_n40us(1000);/*AT24C02_write_date(1,80);/将烟雾上限存储AT24C02的0x01地址中保存起来delay_n40us(1000); /延时*/smog_up=AT24C02_read_date(1);/开机先读取AT24C02存储起来的烟雾上限delay_n40us(1000);DS18B20_init(); /DS18B20初始化LCD_init(); /LCD1602初始化lcd1602_write_pic(0,pic);/将自定义的字符写入到CGRAM 00Hdelay_n40us(1000);lcd1602_write_pic(1,zeng);/将自定义的字符写入到CGRAM 00Hdelay_n40us(1000);lcd1602_write_pic(2,jian);/将自定义的字符写入到CGRAM 00Hdelay_n40us(1000);lcd1602_write_character(6,1,12DZ);lcd1602_write_character(6,2,SYY);delayms(50);lcd1602_write_character(6,1, );lcd1602_write_character(6,2, );while(!wait_f) /判断上电等待时间是否完成lcd1602_write_character(0,1,Please wait for!);LCD_disp_char(6,2,ASCII(60-time)/10); /显示等待时间倒计时LCD_disp_char(7,2,ASCII(60-time)%10);LCD_disp_char(9,2,S);DS18B20_Read_Temperature();/读取温度 /*/LCD_write_command(0x01);delay_n40us(100);while(1)scan();/进行按键检测if(set_f=0)/正常显示温度DS18B20_Read_Temperature();/读取温度DS18B20_Temperature(); /进行温度转换new_smog=ADC0832_read(0); /读取ADC0832,获取烟雾浓度display(); /显示elselcd1602_write_character(0,1,Temp ceiling:);lcd1602_write_character(0,2,Smog ceiling:);display2();/切换到设置界面显示第4.3节 DS18B20温度采集程序的设计首先需要对温度传感器DS18B20进行采集温度需要在主函数开始的时候先对DS18B20进行初始化,初始化的目的是配置传感器的寄存器使DS18B20的转换精度为12位。初始化完成后就可以对DS18B20进行操作读取温度。对DS18B20读取温度先需要让DS18B20复位然后如果总线上只有一个传感器的话可以跳过读系列号直接进行启动温度转换,然后在进行一次复位同样跳过系列号的匹配,然后发送读取温度指令,最后读取温度寄存器。读取完后将数据进行转换成实际温度即可。具体流程图如图4.3.1所示。图4.3.1 DS18B20温度采集流程图DS18B20单总线控制时序图如图4.3.2所示。图4.3.2 DS18B20单总线操作时序图表5 DS18B20输出的温度值/*DS18B20引脚定义*/sbit DQ = P37 ; /定义DS18B20端口DQ /*DS18B20变量定义*/uchar temp_data2; /存储读回的数字温度uchar temp_t8; /存储转换完后的温度uchar data temp_d5; /存储转换完后的温度bit presence; /检测18b20是否插好uchar zT;uchar xT;uchar code ASCII2 = 0,1,2,3,4,5,6,7,8,9,.;/*DS18B20函数定义*/void Delay(unsigned int num); /us延时void DS18B20_init(void); /DS18B20初始化bit DS18B20_res(void); /DS18B20复位uchar DS18B20_ReadOneChar(void); /DS18B20读一个字节void DS18B20_WriteOneChar(unsigned char dat);/DS18B20写一个字节void DS18B20_Read_Temperature(void); /DS18B20读取温度void DS18B20_Temperature(void); /DS18B20温度转换/*函数名称:void Delay(unsigned int num)函数作用:US延时函数参数说明:*/void Delay(unsigned int num) while( -num ) ;/*函数名称:bit DS18B20_res(void)函数作用:DS18B20复位函数参数说明:返回0=复位成功,1=复位不成功*/bit DS18B20_res(void) DQ = 1 ; /DQ复位 Delay(8) ; /稍做延时 DQ = 0 ; /单片机将DQ拉低 Delay(90) ; /精确延时 大于 480us DQ = 1 ; /拉高总线 Delay(8) ; presence = DQ ; /如果=0则初始化成功 =1则初始化失败 Delay(100) ; DQ = 1 ; return(presence) ; /返回信号,0=presence,1= no presence/*函数名称:void DS18B20_init(void)函数作用:DS18B20初始化函数参数说明:*/void DS18B20_init(void) DS18B20_res(); /复位 DS18B20_WriteOneChar(0xCC) ; /跳过读序号列号的操作 DS18B20_WriteOneChar(0x4e) ; /写暂存DS18B20_WriteOneChar(0x7f) ; /配置转换精度为12位 /*函数名称:uchar DS18B20_ReadOneChar(void)函数作用:DS18B20读一个字节数据参数说明:*/uchar DS18B20_ReadOneChar(void)unsigned char i = 0 ;unsigned char dat = 0 ;for (i = 8 ; i 0 ; i-) DQ = 0 ; / 给脉冲信号 dat = 1 ; DQ = 1 ; / 给脉冲信号 if(DQ) dat |= 0x80 ; Delay(15) ; return (dat) ;/*函数名称:void DS18B20_WriteOneChar(unsigned char dat)函数作用:DS18B20写一个字节数据参数说明:*/void DS18B20_WriteOneChar(unsigned char dat)unsigned char i = 0 ;for (i = 8 ; i 0 ; i-)DQ = 0 ;DQ = dat&0x01 ;Delay(5) ;DQ = 1 ;dat=1 ;/*函数名称:void DS18B20_Read_Temperature(void)函数作用:DS18B20读取温度参数说明:*/void DS18B20

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论