1、第一章 概述1.1 设计背景一氧化碳(CO)为无色、无味、无刺激性气体,比重0.967,几乎不溶于水,不易被活性炭吸附。当碳物质燃烧不完全时,可产生CO,如人体短时间内吸收较高浓度的C0,或浓度虽低,但吸时间较长,均可造成急性中毒。CO与血红蛋白结合能力超过氧和血红蛋白的结合能力的200-300倍,当CO与血红蛋白结合形成的碳氧血红蛋白含量达到5%时,就会对人体产生慢性损害,达到60%时就会昏迷,达到90%就会死亡。唐山中润煤化工有限公司甲醇分厂,是利用炼焦过程产生的焦炉气,经过净化、脱硫等工段后,纯净的焦炉气传输到甲醇分厂再各个工段用来生产甲醇。净化后焦炉气主要含量是CO,在生产现场及周围不
2、可避免的有煤气存在,当CO超出安全范围时,常人很难发现,为了保证人员财产安全和正常生产不受影响,检测其含量十分重要。所以基于单片机设计制作一氧化碳报警器,保障人们的生命财产安全。1.2 一氧化碳报警器概述首先我们应该对国家标准规定的燃气报警器的种类有所了解。燃气报警器可分为可燃气体泄漏仪(简称“检漏仪”),可燃气体报警控制器(简称“控制器”)、可燃气体探测器(简称“探测器”)、可燃气体报警器(简称“报警器”)四大系列产品。可燃气报警器的核心是气体传感器,俗称“电子鼻”。当气体传感器遇到燃气时,传感器电阻随燃气浓度而变化,随之产生电信号,供燃气报警器后继线路处理。经过电子路线处理变成浓度成比例变
3、化的电压信号,由线性电路加以补偿,使信号线性化,经微机处理、逻辑分析,输出各种控制信号,即当燃气浓度达到报警设定值时,燃气报警器发出声光报警信号。1.3 设计的目的及意义设计出性能更加可靠,经济实惠的一氧化碳报警器。意义在于:(1)成本低廉并能对一氧化碳准确报警。(2)该产品不需专业人员操作,只要放在合适位置,通电即可,连续使用方便,操作简单。(3)能起到预防一氧化碳中毒的效果,使人们安全放心的工作。(4)出现一氧化碳漏或者着火时,报警器能够立即鸣笛报警,告之工作人员及时采取措施。第二章 设计方案2.1 单片机的介绍和选用单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力
4、的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统,目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机,更不用说自动控制领域的机器人、智能仪表以及各种智能机械了。因此,
5、单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。设计选用ATMEl公司的AT89C51和美国国家半导体公司生产的ADC080。2.2 设计要求及思路设计要求:报警器需在一氧化碳浓度达到100ppm时启动报警。具体实现如下功能:(1)系统要求设置正常工作状态除正常工作状态外,LED红灯处于熄灭状态,蜂鸣器处于关闭状态。(2)在正常工作状态下,绿灯应长亮。当室内一氧化碳浓度达到100ppm时系统应启动蜂鸣器报警,红灯闪烁。设计思路:采用单个传感器检测气体浓度,将检测结果通过高精度运算放大器放大后送入模/数转换芯片中进行转换,传给单片机进行数据处理。处理后的信息将通过单片机
6、控制,驱动报警。2.3 初始方案与确定(1)初始设计以设计思路展开研究:根据该设计要实现的基本功能,设计大概应该分为信号接收,信号处理,信号控制和信号响应四个部分。 A.信号采集接收部分即通过检测一氧化碳气体浓度,并将这种变化量转换成电压或者电流等模拟量的变化 B.信号处理部分是将接收部分得到的电压或电流等变化进行必要放大,为后一部分信号控制提供准备。 C.信号控制部分是通过预定控制方式等实现对设计要求的准确操作。 D.信号响应是通过事故处理部分和显示部分实现控制部分的要求。 (2)对上述四个部分进行分析,得到如下一些基本的结论: A.信号接收部分为了能准且采集到气体浓度的变化应选用传感器敏感
7、器件,为使其有效部分的检测房间中气体浓度,必须选用高温一氧化碳传感器。 B.信号处理部分应该根据实际情况选用电荷放大,或比较器等装置,这部分电路将包含在传感器接口电路中。 C.控制部分为了实现精确控制,采用单片机较为合适。 D.信号响应及报警部分,用蜂鸣器和LED灯即可。根据对上面设计系统的分析,我们得到该设计思想框图如下图2.1所示:信 号响 应装 置信 号控 制装 置信 号处 理装 置信 号接 收装 置 图2.1 设计思想框图(2)方案确定经过分析采用初始方案设计,即用单个传感器检测一氧化碳气体浓度,将检测到的浓度结果通过运算放大器放大后送入模/数芯片ADC0809中进行模数转换,传入单片
8、机中,由AT89C51单片机处理数据,并利用单片机控制报警器进行声音报警。分析:此设计十分简单,也十分实用。虽然对气体浓度的采集不是很精确,但报警方面已经十分符合设计目的。2.4 系统组成本设计属于单片机应用系统。单片机在系统检测以及工程控制方面的应用,是典型的嵌入式系统。通常将满足海量高速数据计算的计算机称为通用计算机系统;而把面向工控领域对象,嵌入到工控系统中,实现嵌入式应用的计算机称之为嵌入式计算机系统,简称嵌入式系统。嵌入式系统分为四种:工控机,通用CPU模块,嵌入式微处理,单片机。嵌入式系统具有以下特点:(1)面对控制对象。如传感器信号输入、人机交互操作、伺服驱动等。(2)嵌入到工控
9、应用系统中的结构形态。(3)能在工业现场环境中可靠运行的品质。(4)突出控制功能。如对外部信息的捕捉、对控制对象实时控制和有突出控制功能的指令系统(I/O控制、位操作和转移指令等)。单片机有唯一的专门为嵌入式应用系统设计的体系结构与指令系统,最能满足嵌入式应用要求。单片机是完全按嵌入式系统要求设计的单芯片形态应用系统,能满足面对控制对象、应用系统的嵌入、现场的可靠运行及非凡的控制品质等要求,是发展最快、品种最多、数量最大的嵌入式系统。2.5 一氧化碳报警器系统的三大部分单片机应用系统的结构分三个层次。(1)单片机:通常指应用系统主处理机,即所选择的单片机器件。(2)单片机系统:指按照单片机的技
10、术要求和嵌入对象的资源要求而构成的基本系统,如时钟电路、复位电路和扩展存储器等与单片机构成了单片机系统。(3)单片机应用系统:能满足嵌入对象要求的全部电路系统。在单片机系统的基础上加上面向对象的接口电路,如前向通道、后向通道、人机交互通道(键盘、显示器、打印机等)和串行通行口(RS232)以及应用程序等。(单片机应用系统三个层次的关系如图2.2:单片机应用系统应用程序单片机系统后向通道前向通道单片机人机交互通道串行通信口图2.2 单片机应用系统三个层次的关系以此理解,一氧化碳报警器同样具有单片机应用系统的三个层次。其中以AT89C51单片机为核心构成单片机系统。在此系统中,检测信号进入单片机进
11、行运算处理。为了更好的理清设计思路,将整个系统细分为三部分加以设计说明。整个报警器由三个部分组成,分为三大模块:浓度检测模块、主控模块和报警模块。在本次设计中,使用的核心器件是单片机和一氧化碳传感器。为了保重整个系统可靠的运行,设计中必须明确三大部分的实际联系:以单片机为中心,其他各大模块一一展开。其中,浓度检测及显示模块所实现的功能是将房间中的一氧化碳浓度值转换成为单片机能够处理的数字信号,并且浓度值显示出来:主控模块以单片机为主,对其他模块的运行进行控制;报警模块是此系统的外部电路,它的功能是实现报警。系统框图如图2.3所示。AT89C51气体浓度检测报警控制图2.3 一氧化碳报警器系统组
12、成框图下面就对各个模块的功能和实现形式做简单介绍(1)气体浓度检测模块一氧化碳报警器主要采用高稳定一氧化碳气体传感器MQ-7检测房间气体浓度,检测结果通过高精度运算放大器放大后送入模/数转换芯片ADC0809中进行转换(2)主控模块系统采用单片机控制,用的是AT89C51单片机,AT89C51单片机是美国Intel公司推出的一种4K字节可编程FLASH存储器,低电压、高性能CMOS 8位微处理器。单片机的可擦除只读存储器可以反复擦除1000次,数据可保留10年。它的主要功能既是和ADC0809芯片一起共同接受检测信号,又可以通过对数字型号的处理来控制外围电路以及显示电路。模数转换芯片采用ADC
13、0809,接收经过运算放大器处理后的一氧化碳传感器的检测值,检测结果通过ADC0809处理后才传给单片机进行数据处理。处理后的信息将通过单片机控制,以驱动报警。(3)报警模块此模块主要有蜂鸣器、LED灯组成,在气体浓度过大,超过安全值时,蜂鸣器工作,提供报警服务。至此,本系统的三大模块功能和设计思路已经确立,下文将介绍整个系统的详细设计过程。并且给出设计电路。第三章 硬件电路设计3.1 单片机基础知识简介介绍及主控电路设计在实际的应用中,基本知识的掌握程度至关重要,他影响到应用的好坏。硬件知识用来设计硬件电路,软件知识用来设计芯片处理数据的先后顺序,数据的获得途径以及对数据做怎样的处理,还有其
14、他的一些驱动和显示功能等等。本设计用到的硬件知识主要有:电子技术、单片机技术。在电子技术方面分为模拟电子技术和数字电子技术,模拟电子技术主要用来放大传感器检测信号和驱动反光二极管以及显示穿管器检测气体浓度;数字电子技术用来把模拟量转换成数字量,把从刚起检测到的模拟量转换成数字值。利用单片机实现综合控制。主控电路中,以单片机为主体,通过分析A/D转换的得到的数字值,控制事故处理模块运行。设计采用的是AT89C51型单片机,AT89C51是一种带4K字节闪存可编程可擦除只读存储器的低电压、高性能CMOS 8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除1000次。由于将多功能8位CP
15、U和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图3.1所示图3.1 单片机外形及引脚排列图(1)主要特性:与MCS-51 兼容 4K字节可编程闪烁存储器 寿命:1000写/擦循环 数据保留时间:10年 全静态工作:0Hz-24MHz 三级程序存储器锁定 1288位内部RAM 32可编程I/O线 两个16位定时器/计数器 5个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路(2)管脚说明:VCC:供电电压。 GND:接地。
16、P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O
17、口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于
18、外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚 备选功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时
19、,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/
20、PSEN信号将不出现。EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 (3)振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分
21、频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。 (4)芯片擦除:整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。 此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。 (5)串口通讯:单片机的结构和
22、特殊寄存器,这是你编写软件的关键。至于串口通信需要用到那些特殊功能寄存器呢,它们是SCON,TCON,TMOD,SCON等,各代表什么含义呢? SBUF 数据缓冲寄存器这是一个可以直接寻址的串行口专用寄存器。有朋友这样问起过“为何在串行口收发中,都只是使用到同一个寄存器SBUF?而不是收发各用一个寄存器。”实际上SBUF 包含了两个独立的寄存器,一个是发送寄存,另一个是接收寄存器,但它们都共同使用同一个寻址地址99H。CPU 在读SBUF 时会指到接收寄存器,在写时会指到发送寄存器,而且接收寄存器是双缓冲寄存器,这样可以避免接收中断没有及时的被响应,数据没有被取走,下一帧数据已到来,而造成的数
23、据重叠问题。发送器则不需要用到双缓冲,一般情况下我们在写发送程序时也不必用到发送中断去外理发送数据。操作SBUF寄存器的方法则很简单,只要把这个99H 地址用关键字sfr定义为一个变量就可以对其进行读写操作了,如sfr SBUF = 0x99;当然你也可以用其它的名称。通常在标准的reg51.h 或at89x51.h 等头文件中已对其做了定义,只要用#include 引用就可以了。 SCON 串行口控制寄存器通常在芯片或设备中为了监视或控制接口状态,都会引用到接口控制寄存器。SCON 就是51 芯片的串行口控制寄存器。它的寻址地址是98H,是一个可以位寻址的寄存器,作用就是监视和控制51 芯片
24、串行口的工作状态。51 芯片的串口可以工作在几个不同的工作模式下,其工作模式的设置就是使用SCON 寄存器。它的各个位的具体定义如下: SM0 SM1 SM2 REN TB8 RB8 TI RI SM0、SM1 为串行口工作模式设置位,这样两位可以对应进行四种模式的设置。串行口工作模式设置。 SM0 SM1 模式 功能 波特率 0 0 0 同步移位寄存器 fosc/12 0 1 1 8位UART 可变 1 0 2 9位UART fosc/32 或fosc/64 1 1 3 9位UART 可变 在这里只说明最常用的模式1,其它的模式也就一一略过,有兴趣的朋友可以找相关的硬件资料查看。表中的fos
25、c 代表振荡器的频率,也就是晶振的频率。UART 为(Universal Asynchronous Receiver)的英文缩写。 SM2 在模式2、模式3 中为多处理机通信使能位。在模式0 中要求该位为0。 REM 为允许接收位,REM 置1 时串口允许接收,置0 时禁止接收。REM 是由软件置位或清零。如果在一个电路中接收和发送引脚P3.0,P3.1 都和上位机相连,在软件上有串口中断处理程序,当要求在处理某个子程序时不允许串口被上位机来的控制字符产生中断,那么可以在这个子程序的开始处加入REM=0 来禁止接收,在子程序结束处加入REM=1 再次打开串口接收。大家也可以用上面的实际源码加入
26、REM=0 来进行实验。 TB8 发送数据位8,在模式2 和3 是要发送的第9 位。该位可以用软件根据需要置位或清除,通常这位在通信协议中做奇偶位,在多处理机通信中这一位则用于表示是地址帧还是数据帧。 RB8 接收数据位8,在模式2 和3 是已接收数据的第9 位。该位可能是奇偶位,地址/数据标识位。在模式0 中,RB8 为保留位没有被使用。在模式1 中,当SM2=0,RB8 是已接收数据的停止位。 TI 发送中断标识位。在模式0,发送完第8 位数据时,由硬件置位。其它模式中则是在发送停止位之初,由硬件置位。TI 置位后,申请中断,CPU 响应中断后,发送下一帧数据。在任何模式下,TI 都必须由
27、软件来清除,也就是说在数据写入到SBUF 后,硬件发送数据,中断响应(如中断打开),这时TI=1,表明发送已完成,TI 不会由硬件清除,所以这时必须用软件对其清零。 RI 接收中断标识位。在模式0,接收第8 位结束时,由硬件置位。其它模式中则是在接收停止位的半中间,由硬件置位。RI=1,申请中断,要求CPU 取走数据。但在模式1 中,SM2=1时,当未收到有效的停止位,则不会对RI 置位。同样RI 也必须要靠软件清除。常用的串口模式1 是传输10 个位的,1 位起始位为0,8 位数据位,低位在先,1 位停止位为1。它的波特率是可变的,其速率是取决于定时器1 或定时器2 的定时值(溢出速率)。A
28、T89C51 和AT89C2051 等51 系列芯片只有两个定时器,定时器0 和定时器1,而定时器2是89C52 系列芯片才有的。 波特率在使用串口做通讯时,一个很重要的参数就是波特率,只有上下位机的波特率一样时才可以进行正常通讯。波特率是指串行端口每秒内可以传输的波特位数。有一些初学的朋友认为波特率是指每秒传输的字节数,如标准9600 会被误认为每秒种可以传送9600个字节,而实际上它是指每秒可以传送9600 个二进位,而一个字节要8 个二进位,如用串口模式1 来传输那么加上起始位和停止位,每个数据字节就要占用10 个二进位,9600 波特率用模式1 传输时,每秒传输的字节数是9600109
29、60 字节。51 芯片的串口工作模式0的波特率是固定的,为fosc/12,以一个12M 的晶振来计算,那么它的波特率可以达到1M。模式2 的波特率是固定在fosc/64 或fosc/32,具体用那一种就取决于PCON 寄存器中的SMOD位,如SMOD 为0,波特率为focs/64,SMOD 为1,波特率为focs/32。模式1 和模式3 的波特率是可变的,取决于定时器1 或2(52 芯片)的溢出速率。那么我们怎么去计算这两个模 式的波特率设置时相关的寄存器的值呢?可以用以下的公式去计算。 波特率(2SMOD32)定时器1 溢出速率 上式中如设置了PCON 寄存器中的SMOD 位为1 时就可以把
30、波特率提升2 倍。通常会使用定时器1 工作在定时器工作模式2 下,这时定时值中的TL1 做为计数,TH1 做为自动重装值 ,这个定时模式下,定时器溢出后,TH1 的值会自动装载到TL1,再次开始计数,这样可以不用软件去干预,使得定时更准确。在这个定时模式2 下定时器1 溢出速率的计算公式如下: 溢出速率(计数速率)/(256TH1) 上式中的“计数速率”与所使用的晶体振荡器频率有关,在51 芯片中定时器启动后会在每一个机器周期使定时寄存器TH 的值增加一,一个机器周期等于十二个振荡周期,所以可以得知51 芯片的计数速率为晶体振荡器频率的1/12,一个12M 的晶振用在51 芯片上,那么51 的
31、计数速率就为1M。通常用11.0592M 晶体是为了得到标准的无误差的波特率,那么为何呢?计算一下就知道了。如我们要得到9600 的波特率,晶振为11.0592M 和12M,定时器1 为模式2,SMOD 设为1,分别看看那所要求的TH1 为何值。代入公式: 11.0592M 9600(232)(11.0592M/12)/(256-TH1) TH1250 12M 9600(232)(12M/12)/(256-TH1) TH1249.49 上面的计算可以看出使用12M 晶体的时候计算出来的TH1 不为整数,而TH1 的值只能取整数,这样它就会有一定的误差存在不能产生精确的9600 波特率。当然一定
32、的误差是可以在使用中被接受的,就算使用11.0592M 的晶体振荡器也会因晶体本身所存在的误差使波特率产生误差,但晶体本身的误差对波特率的影响是十分之小的,可以忽略不计。3.2 模数转换部分电路设计模数转换部分采用ADC0809芯片。ADC0809是M美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D转换器。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。是目前国内应用最广泛的8位通用A/D芯片。(1)主要特性:(1)8路输入通道,8位AD转换器,即分辨率为8位。 (2)具有转换起停控制端。 (3)转换时间为100s(时
33、钟为640kHz时),130s(时钟为500kHz时) (4)单个5V电源供电 (5)模拟输入电压范围05V,不需零点和满刻度校准。 (6)工作温度范围为-4085摄氏度 (7)低功耗,约15mW。(2)内部结构:ADC0809是CMOS单片型逐次逼近式AD转换器,内部结构如图1322所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器、逐次逼近 。(3)外部特性(引脚功能):ADC0809芯片有28条引脚,采用双列直插式封装,如图1323所示。下面说明各引脚功能。 IN0IN7:8路模拟量输入端。 2-12-8:8位数字量输出端。 ADDA、ADDB、ADDC:3位地址
34、输入线,用于选通8路模拟输入中的一路 ALE:地址锁存允许信号,输入,高电平有效。 START: AD转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。 EOC: AD转换结束信号,输出,当AD转换结束时,此端输出一个高电平(转换期间一直为低电平)。 OE:数据输出允许信号,输入,高电平有效。当AD转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。 CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ。 REF(+)、REF(-):基准电压。 VCC:电源,单一5V。 GND:地。其内部结构及引脚图如图3.2所示
35、图3.2 ADC0809内部图及引脚图(4)ADC0809的工作过程:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 AD转换,之后EOC输出信号变低,指示转换正在进行。直到AD转换完成,EOC变为高电平,指示AD转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平 时,输出三态门打开,转换结果的数字量输出到数据总线上。 转换数据的传送 A/D转换后得到的数据应及时传送给单片机进行处理。数据传送的关键问题是如何确认A/D转换的完成,因为只有确认完成后,才能进行传送。为此可采
36、用下述三种方式。 (1)定时传送方式 对于一种A/D转换其来说,转换时间作为一项技术指标是已知的和固定的。例如ADC0809转换时间为128s,相当于6MHz的MCS-51单片机共64个机器周期。可据此设计一个延时子程序,A/D转换启动后即调用此子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。 (2)查询方式 A/D转换芯片由表明转换完成的状态信号,例如ADC0809的EOC端。因此可以用查询方式,测试EOC的状态,即可确认转换是否完成,并接着进行数据传送。 (3)中断方式 把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。不管使用上述那种方式,只要一
37、旦确定转换完成,即可通过指令进行数据传送。首先送出口地址并以信号有效时,OE信号即有效,把转换数据送上数据总线,供单片机接受。(5)ADC0809与单片机连接方式如图3.3:图3.3 ADC0809与单片机连接方式3.3 传感器部分电路设计(1)传感器的定义人们通常将能把非电量转换成电量的器件称为传感器,传感器实质是一种功能模块,起作用是将来之外界的各种信号转换成电信号:它是实现测试与自动控制系统的首要环节。(2)传感器的作用传感器是又称之为电五官,是获取自然和生产领域中信息的主要途径与手段。在现代工业生产尤其是自动化生产过程中,要用各种传感器来监视和控制生产过程中的各个参数,使设备工作在正常
38、状态或最佳状态,并使产品达到最好的质量。没有众多的优良的传感器,现代化生产也就失去了基础。传感器技术在发展经济、推动社会进步方面的重要作用,是十分明显的。世界各国都十分重视这一领域的发展。相信不久的将来,传感器技术将会出现一个飞跃,达到与其重要地位相称的新水平。(3)传感器的组成 传感器一般由敏感元件、传感元件和测量电路三部分组成有时还加上辅助电源。通常可用方框图表示,如下图3.4所示:敏感元件测量电路传感元件被测量敏感元件图3.5 方框图敏感元件直接感受被测量,并输出与被测量成确定关系的其他量的元件。传感元件又称变换器,传感元件可以直接感受被测量而输出与被测量成确定关系的电量。也可以不直接感
39、受被测量,而只感受与被测量成确定关系的其他非电量。测量电路能把传感元件输出的电信号转换为便于显示、记录、控制和处理的有用电信号的电路。使用较多的是电桥电路,也是用其他特殊电路,如高阻抗输入电路、脉冲调宽电路、维持震荡的激振电路等。由于传感元件的输出信号一般比较小,为了便于与显示和记录,大多数测量电路还包括了放大器。(4)传感器的分类1.根据传感器工作原理,可分为物理传感器和化学传感器二大类 : a.物理传感器应用的是物理效应,诸如压电效应,磁致拉伸现象,离化、极化、热电、光电、磁电等效应。被测信号量的微小变化都将转换成电信号。b.化学传感器包括那些以化学吸附、电化学反应等现象为因果关系的传感器
40、,被测信号量的微小变化也将转换成电信号。有些传感器既不能划分到物理类,也不能划分为化学类。大多数传感器是以物理原理为基础运作的。2.按照其用途,传感器可分类为: a.压力敏和力敏传感器,b.位置传感器,c.液面传感器,d.能耗传感器,e.速度传感器,f.加速度传感器,g.射线辐射传感器,h.热敏传感器,i.24GHz雷达传感器。 3.按照其原理,传感器可分类为: a.振动传感器,b.湿敏传感器,c.磁敏传感器,d.气敏传感器,e.真空度传感器f.生物传感器等。 4.以其输出信号为标准可将传感器分为: a.模拟传感器,b.数字传感器,c.膺数字传感器,d.开关传感器。5.所应用的材料观点出发可将
41、传感器分成下列几类: 按照其所用材料的类别分:金属、聚合物、陶瓷、混合物 按材料的物理性质分:导体、绝缘体、半导体、磁性材料 按材料的晶体结构分:单晶、多晶、非晶材料 6.按照其制造工艺,可以将传感器区分为: a.集成传感器b.薄膜传感器c.厚膜传感器d.陶瓷传感器 每种工艺技术都有自己的优点和不足。由于研究、开发和生产所需的资本投入较低,以及传感器参数的高稳定性等原因,采用陶瓷和厚膜传感器比较合理。 (4)传感器的设计要点根据以上对传感器的相关知识的介绍,我们可以明确传感器是测量、控制系统的,必须具备良好的性能。在设计中应该注意以下要点:输入和输出之间成比例,直线性好、灵敏度高、分辨力强、测
42、量范围宽。滞后、漂移误差小动态特性好功耗小时间老化特性优良与被测体匹配良好,既不因接入传感器而使得被测对象受到影响,受被测量之外的影响小。体积小、重量轻、价格低廉。故障率低,易于校准和维护。由于传感元件的输出信号一边比较小,为了便于能够驱动控制电路,在传感器电路中还应该包括放大器。鉴于以上选择要点,本文中用到的传感器必须具备良好的测量效果、功耗小、动态特性良好和体积小、重量轻、价格低廉等几个主要特性。为此我们选择了MQ-7系列传感器。(5)传感器与ADC0809的连接检测数据从IN0口输入,转换完毕送给单片机P1口供单片机进行数据处理。连接电路图如图3.6:图3.6传感器与ADC0809连接电
43、路图3.4报警电路的设计报警电路采用了蜂鸣器以及放光二极管。在设计中,单片机的P2.0,P2.1,P2.2分别控制灯以及蜂鸣器,通过编程让传感器的数据和给定值进行比较。如果大于则报警,即蜂鸣器鸣叫,发光二极管闪烁。电路图如图3.7所示图3.7 报警器电路图第四章 软件设计4.1 单片机编程本次设计用汇编语言编写程序。由于程序十分简单,所以用汇编语言能够更直观更便于理解。下面介绍一下汇编语言:汇编语言是面向机器的程序设计语言。在汇编语言中,用助记符代替操作码,用地址符号或标号代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。使用汇编语言编写的程
44、序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编程序把汇编语言翻译成机器语言的过程称为汇编。4.2 汇编语言概况汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。汇编语言,作为一门语言 ,对应于高级语言的编译器,需要一个“汇编器”来把汇编语言原文件汇编成机器可执行的代码。高级的汇编器如MASM,TASM等等为我们写汇编程序提供了很多类似于高级语言的特征,比如结构化、抽象等。在这样的环境中编写的汇编程序,有很大一部分是面向汇编器的伪指令,已经类同于高级语言。现在的汇编环境已
45、经如此高级,即使全部用汇编语言来编写windows的应用程序也是可行的,但这不是汇编语言的长处。汇编语言的长处在于编写高效且需要对机器硬件精确控制的程序。(1)汇编语言直接同计算机的底层软件甚至硬件进行交互,它具有如下一些优点: 1.能够直接访问与硬件相关的存储器或I/O端口; 2.能够不受编译器的限制,对生成的二进制代码进行完全的控制; 3.能够对关键代码进行更准确的控制,避免因线程共同访问或者硬件设备共享引起的死锁; 4.能够根据特定的应用对代码做最佳的优化,提高运行速度; 5.能够最大限度地发挥硬件的功能。 (2)汇编语言是一种层次非常低的语言,它仅仅高于直接手工编写二进制的机器指令码,
46、因此不可避免地存在一些缺点: 1.编写的代码非常难懂,不好维护; 2.很容易产生bug,难于调试; 3.只能针对特定的体系结构和处理器进行优化; 4.开发效率很低,时间长且单调。 (3)汇编语言的特点: 1.面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的。 2.保持了机器语言的优点,具有直接和简捷的特点。 3.可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。 4.目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。5.经常与高级语言配合使用,应用十分广泛。 对于不同型号的计算机,有着不同的结构的汇编语言。汇编语言由于采用了助记符号来编写程序,比用机器语言的二进制代码编程要方便些,在一定程度上简化了编程过程。汇编语言的特点是用符号代替了机器指令代码,而且助记符与指令代码一一对应,基本保留了机器语言的灵活性。使用汇编语言能面向机器并较好地发挥机器的特性
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922