天然气浓度检测系统设计
第1章 绪 论
1.1 气体甲烷浓度测试系统研究目的和意义
天然气(主要成分甲烷)是大自然给予我们的巨大财富,它已日渐成为人们生产、生活中不可缺少的能源。人类在利用天然气的过程中也尝到了它的苦头。由于管道设备的老化、地理、气候条件的影响以及人为的破坏,经常会造成泄漏事故的发生。天然气一旦泄漏,不仅会带来经济上的损失和环境污染,还会发生火灾和爆炸,造成人员伤亡事故。因此,对天然气储存、输送设备进行泄漏检测,保障其安全性和可靠性是十分必要的。气体浓度检测是一种常见的检测气体泄漏的方法,具有高效、经济、便于管理等多项优点。因此,在石油天然气以及其他燃气检测中有着重要的地位。
1.2气体巡检在国内外的发展现状
在应用方面,目前最广泛的是基于单片机的可燃性气体的巡检,本设计所应用的是QM-N10型气敏元件传感器,已普及应用于气体泄漏检测和监控,从工厂企业到居民家庭,应用十分广泛。仅以用于安全保护家用燃气泄漏报警器为例,日本早在1980年1月开始实行安装城市煤气、液化石油气报警器法规,1986年5月日本通产省又实施了安全器具普及促进基本方针。美国目前已有6个州立法,规定家庭、公寓等都要安装CO 报警器。报警器种类也相当繁多,有用于一般家庭、集体住宅、饮食餐店、医院、学校、工厂的各种气体报警器和系统,有单体分离型报警器、外部报警系统、集中监视系统、遮断连动系统、防止中毒报警防护系统等。结构型式有袖珍型便携式、手推式、固定式报警等;工业用固定式报警又有壁挂式、台放式、单台监控式、多路巡检式等。气体检测技术与计算机技术相结合,实现了智能化、多功能化。美国工业科学公司(ISC )一台携带式气体监控仪可实现4种气体监测,采用了统一的软件,只需要换气体传感器,即可实现对特定气体监测。美国国际传感器技术(IST )公司应用一种"MegaCas" 传感器和微程序控制单元,可检测100种以上毒性气体和可燃性气体,通过其" 气体检索" 功能扫描,能很快确定是哪一种气
体。
国外气体传感器发展很快,一方面是由于人们安全意识增强,对环境安全性和生活舒适性要求提高;另一方面是由于传感器市场增长受到政府安全法规的推动。因此,国外气体传感器技术得到了较快发展,据有关统计预测,美国1996年—2002年气体传感器年均增长率为(27~30)%。
目前,气体传感器的发展趋势集中表现为:一是提高灵敏度和工作性能,降低功耗和成本,缩小尺寸,简化电路,与应用整机相结合,这也是气体传感器一直追求的目标。如日本费加罗公司推出了检测(01~10)×10-6硫化氢低功耗气体传感器,美国IST 提供了寿命达10年以上的气体传感器,美国FirstAlert 公司推出了生物模拟型(光化反应型)低功耗CO 气体传感器等。二是增强可靠性,实现元件和应用电路集成化,多功能化,发展MEMS 技术,发展现场适用的变送器和智能型传感器。如美国GeneralMonitors 公司在传感器中嵌入微处理器,使气体传感器具有控制校准和监视故障状况功能,实现了智能化;还有前已涉及的美国IST 公司的具有微处理器的"MegaGas" 传感器实现了智能化、多功能化。
国内现状与差距 :
总的看来,我国气敏元件传感器及其应用于天然气巡检的技术有了较快进展,但与国外先进水平仍有较大的差距,主要是产品制造技术、产业化及应用等方面的差距,与日本比较仍要落后10年。
目前,我国许多工矿企业,绝大多数的生产数据监测还是采用分散的模拟或数字仪表来进行计量与监测。常用的仪表如流量计,功率计,压力表,温度计,电压表,等等,值班工人必须24小时不断来回地巡视,记录这些仪表的数值,这种人工巡视,记录的管理方式,不仅劳动量大,有时还不精确。基于单片机的智能气体巡检装置,是我国许多大,中型工矿企业步入生产自动化管理时必然要提出来研制的设备。随着微电子技术的发展,特别是单片微型计算机的出现,对被测对象采用功能强、体积小、价格低的浓度在线巡测显示装置成为现实。
现代工业自动化不断的发展,单片机广泛用于工业控制中。单片机是将微处理器、存储器、I/O接口和中断系统集成在同一芯片上,具有完整功能的微型计算机,这块芯片就是其硬件。软件程序存放在片内或片外扩展的只读存储器内。
从应用规模上分,单片机应用系统可以分为简单应用系统、常规应用系统和
高级应用系统三类。简单应用系统是指它在家用电器或仪器仪表中的应用,其特点是没有人机对话,功能、程序和运行参数均可固化在ROM 中;常规应用系统常用于过程控制,通常配有一个键盘和若干I/O端口,用以实现对被控对象进行监视和控制;高级应用系统是指单片机在分布式计算机系统或计算机网络中的应用。在这类应用系统中,单片机通常用以做前置机,后台机是一台系统机或网络工作站。
采用单片机来对它们进行控制,不仅具有控制方便、简单和灵活性大等优点,而且可以大幅度的提高被控对象的技术指标。从而能够大大提高产品的数量和质量。
本次设计就是选用性能/价格比较高的AT89C51作为微控制器的核心,气敏传感器为检测元件的浓度巡测系统。此巡测系统把天然气的浓度通过气敏传感器转换成电压信号并显示出来,如果浓度超过限度就报警, 提示工作人员采取保护措施。从传感器出来的气体浓度的检测范围是2000—25000PPM ,工作电压是VH-工作电压为20V ;VD —灯丝的加热电压为5V ±0.2V ;RL=2K ;精度可达万分之一;检测范围是500-20000PPM 。
天然气的使用给人们的生活带来了极大的方便, 但作为天然气的生产和存贮部门, 对安全生产提出了严格的要求. 本装置是对2个贮气罐, 而每个罐有8个点需要对其泄漏的浓度进行在线巡测显示, 并且当浓度超限时报警, 提醒工作人员采取措施.
1.3 气体泄漏巡环检测和定位的主要方法
管道泄漏检测技术从不同的侧重点出发可以有不同的分类方法:从测量方式可分为外部监测法和内部监测法;从监测是管道的运行状态来看可分为静态方法和动态方法;从采用的技术来看可以分为基于硬件的方法和基于软件的方法。本文使用基于硬件和软件编程的分类方法对输气管道的泄漏检测技术进行分类评述。
基于硬件的方法:
这类方法主要依靠的是人工巡视或者各种基于光学、声学、化学等原理的仪器设备对管壁和管道周围环境进行监测以实现泄漏检测。根据其原理可以分为以下几种。
a. 人工巡视法
早期的管道大多采用人工分段巡视的方法。天然气无色无味,输送进管道之前要添加臭味剂以便及时发现其泄漏。臭味剂多为硫化物,其中四氢噻吩(THT )使用最为广泛。人工巡视法的缺点是在于依赖检测者的经验,检测速度慢,无法连续检测,目前已基于被其他方法所取代。
b. 空气采样法
从空气中采样,用仪器进行检测,当空气中泄漏气体的浓度超过一定限度时就进行报警,这就是空气采样法的基本原理。检测器主要有火焰电离检测器和可燃气体监测器。
火焰电离检测器(FID )通过计算烃类气体在电场中灼烧产生的带电碳原子数目来计算该气体的浓度。其最大优点是灵敏度高,可燃气体监测器是一类监测可燃气体的独立传感器,它通过催化氧化原理产生与可燃气体浓度超过预设定值时,由继电器驱动信号进行报警。
空气采样法精度高、定位准确,但是无法实现连续检测,而且设备昂贵,所以一般只作为辅助手段来使用。
c. 声学检测法 声学检测法依据下面的原理:发生泄漏的时候,流体经过
漏点时会产生泄漏声波。在输气管道中,该泄漏声波在超声波范围内,以声波向管道两端传播,可由相应的声学传感器检测到。通过检测泄漏声波信号,寻找信号的最大点即可进行泄漏定位。这类方法的普遍缺点是不能连续检测管道(声波法出外),而实际管道发生泄漏是无法预知的,在每时刻管道的每一点都需要进行监测,所以它们一般不作为主要管道的检测手段。
基于软件的方法:
这种方法主要依靠的是检测泄漏引起的压力、流量等参数的变化,利用特定的算法来进行泄漏检测和定位。随着计算机技术的发展和SCADA 系统在管线上的应用,泄漏检测技术已成为SCADA 系统的一个重要组成部分。SCADA 系统实时采集管道流量、压力等参数,并且使用各种算法进行实时分析处理,以此来进行泄漏监测和定位。基于软件的方法一般都可以用于SCADA 系统提供的平台上,这类方法逐步成为目前泄漏检测和定位方乏的主流。
以上方法的原理简单,但由于误报警率高,而且无法定位,所以不能作为主
要的检测方法。
1.4 拟定总体方案
根据生产实际要求,本设计对两个储气罐的16个点进行在线巡回检测,并且当浓度超限时报警,提醒工作人员采取措施。本设计有信号采集系统、A/D转换装置,CPU 控制单元、显示单元、报警装置等几部分组成。图1.1为装置硬件设计:
其中: 1为气敏传感器及测量电路;2为多路开关;3为放大电路;4为控制电路;5为A/D转换;6为接口电路;7为CPU ;8位显示电路;9为报警电路。
由图可知,当某点有漏气时,便将气敏传感器采集的信号经测量电路、多路
选择开关分时输至信号放大器,再经A/D转换转变为数字量送至微机进行处理,其结果由LED 显示,超过一定限度由报警装置报警,提醒工作人员采取措施。
图1.1装置硬件设计图
本设计采用美国ATMEL 公司生产的8位高性能单片机AT89C51,它与工业标准MCS-51系列单片机的指令组和引脚是兼容的,因而可以替代MCS-51系列单片机使用。AT89C51单片机的主要技术优势是内部含有可编程Flash 存储器,用户可以很方便地进行程序的擦写操作,在嵌入式控制领域中被广泛的应用。由于本装置需要检测2个存气罐,而每个存气罐上有8个浓度监测点,因此要对16个点采集信号,所以本装置选用多路模拟开关CD4051。多路开关的作用主要是用于切换信号,如
在某一时刻接通某一路,让该路信号输入而让其他路断开,达到切换信号的目的。CD4051为单端8通道低价格模拟开关,性能稳定,它与地址锁存器74LS373和译码器74LS138组成采集电路用于对16个检测点进行信号采集。运算放大电路采用斩波稳零运算放大器ICL7650,其特点是超低失调和超低漂移,高增益、高输入阻抗,其放大倍数在100倍以内。
本次设计中采用逐次逼近型A/D转换器AD574A 。AD574A 是美国模拟器件公司(Analog Devices)生产的12位逐次逼近型快速A/D转换器。它的转换速度最大为35us ,转换精度≤0.05%,是目前我国市场应用最广泛、价格适中的A/D转换器。AD574A 片内配有三态输出缓冲电路,因而可直接与各种典型的8位或16位的微处理器连接,而无须附加逻辑接口电路,且能与CMOS 及TTL 电平兼容。由于AD574A 片内包含高精度的参考电压源和时钟电路,这使它不在需要任何外部电路和时钟信号的情况下完成一切A/D转换功能,应用非常方便。
浓度显示部分采用LED 显示,自动显示16个采样点的浓度信息。LED 显示器有静态显示和动态显示两种显示方式。本设计需要6位共阴极LED 显示,所以采用动态显示方式,通过扩展I/O接口芯片8255A 来实现6位LED 显示接口电路。
另外,控制系统浓度采样周期是1S ,采用中值滤波方法去控制现场对采样值的干扰。
第2章 方案论证
系统的配置方案:根据被测信号的路数以及信号变化快慢等的不同,数据采集系统由多种配置方案,多路数据采集采用无采集保持器的多通道共享ADC 多路框图, 如图2.1:
X1
X2
Xn
图2.1 ADC多路框图 前向通道为由传感器,放大测量电路以及AD574组成,后向通道由8255、键盘组成,最后由LED 显示,存储器用6264,作为89C51的外扩存储器。
本设计信号调理部分在软件部分实现,在设计中报警部分选了个使用而又简单 的蜂鸣报警程序。当浓度超限时蜂鸣报警,以便工作人员采取措施以防损失。
2.1传感器的选择
天然气的主要成分是CH4,属于可燃性气体,所以本设计选择电阻式气敏传感器QM-N10来检测气体。
电阻式气敏传感器的敏感元件多采用半导体材料如SnO2 ,当这种半导体材料表面吸附某些气体时,其电导率将随气体浓度的变化而发生变化。SnO2 是由许多晶粒组成的N 型多晶体,其内部的电阻值可以等效为三种:晶粒与晶粒之间的晶间电阻Rn 、单个晶粒的表面电阻Rs 和单个晶粒的体电阻Rb ,三类等效电阻串联连接;其中体电阻不受吸附气体的影响,而表面电阻Rs 和晶间电阻Rn 的阻值则随吸附气体的浓度而变化。又由于Rn ≥ Rs ,故晶体电阻以晶间电阻Rn 等效。
晶粒与晶粒相互接触的表面(即晶界)存在着势垒,当其表面吸附还原性气
体时,还原性气体(如CO 或H2 )就与晶粒所吸附的氧发生反应,把其电子给予半导体,进入到N 型半导体内的电子,束缚其少数载流子的空穴,是空穴与电子的复合率降低。结果加强了自由电子形成电流的能力,因而元件材料的电导率提高、电阻率减小,电阻也减小;与此相反,若N 型半导体元件吸附氧化性气体(如O2 ),这些吸附态的氧化性气体从晶粒表面俘获电子,增大了材料表面的电子势垒,结果使导带电子数目减少,材料导电率降低、电阻率升高,电阻也增加。
电阻式气敏传感器具有灵敏度高、响应速度快等优点。但是,其选择性和稳定性存在一定问题,温度、湿度对其特性都有较大的影响。
2.2放大电路的选择
本设计放大电路采用高精度、低温漂的运放ICL7650。ICL7650采用14脚双列直插式和8脚金属壳两种封装形式. 图2.3所示是最常用的14脚双列直插式封装的引脚排列图.
2.2.1引脚的功能说明
图2.3 ICL7650 引脚排列图
图2.4 工作原理图
2.2.1引脚的功能说明
CEXTB : 外接电容 ;CEXTA : 外接电容;-I N : 反相输入端;+ I N : 同相输入端;
V- : 负电源端;
CRETN : CEXTA和CEXTB 的公共端;
OUT CLAMP : 箝位端 ;
OUTPU : 输出端;
V +:正电源端;
INT CLKOUT :时钟输出端 ;
NT/EXT: 时钟控制端;
EXT CLKIN : 时钟输入端
可通过该端选择使用内部时钟或外部时钟. 当选择外部时钟时. 该端接负电源端V- ,并在时钟输入端(EXT CLKIN)引入外部时钟信号. 当该端开路或接V+ 时. 电路将使用内部时钟去控制其它电路的工作。
2.2.2工作原理
ICL7650 利用动态校零技术消除了CMOS 器件固有的失调和漂移. 从而摆脱了传统斩波稳零电路的束缚, 克服了传统斩波稳零放大器的这些缺点.ICL7650 的工作原理如图2-3所示,. 图中MAIN 是主放大器(CMOS运算放大器),NULL 是调零放大器
(CMOS 高增益运算放大器). 电路通过电子开关的转换来进行两个阶段工作. 第一是在内部时钟(OSC) 的上半周期. 电子开关A 和B 导通.,A- 和C 断开. 电路处于误差检测和寄存阶段. 第二是在内部时钟的下半周期, 电子开关A-和C 导通,A 和B 断开. 电路处于动态校零和放大阶段. 由于ICL7650 中的NULL 运算放大器的增益AIN 一般设计在100dB 左右. 因此, 即使主运放MAIN 的失调电压VOSN 达到100mV 整个电路的失调电压也仅为1μv. 由于以上两个阶段不断交替进行. 电容CN 和CM 将各自所寄存的上一阶段结果送入运放MAIN,NULL 的调零端. 这使得图2.4所示电路
几乎不存在失调和漂移. 可见ICL7650 是一种高增益、高共模抑制比和具有双端输入功能的运算放大器.
2.3数据采集系统的选择
2.3.1CD4051的介绍
本设计共有16路漏点信号,为满足要求需采用CD4051为扩展电路组成数据采集电路。74LS373用于锁存由AT89C51P 0输出的多路开关选通信号。低位开关片内
的译码信号,高位经译码器74LS138作为开关选通信号。
其中INH 为禁止端,当INH 为高电平时,八个通道全部禁止;当INH 为低电平时,由A 、B 、C 决定选通的通道,COM 为公共端,真值表如表2-1所示。[4]
表2-1 CD4051通道
2.3.2地址锁存器74LS373
地址锁存器74LS373是一种三态门的8D 锁存器,其引脚如图2.5所示。
ALE
A0A1A2A3A4A5A6A7
表2-2 74L373功能表
图2.5 74LS373引脚
其引脚的功能如下:
D7—D0:8位数据输入线。 Q7—Q0:8位数据输出线。
LE :数据输入锁存选通信号,高电平有效。当该信号为高电平时,外部数据选通到内部锁存器,负跳变时,数据存到锁存器中。
OE :数据输出允许信号,低电平有效。当该信号为低电平时,三态门打开,锁存器中数据输出到数据输出线。当该信号为高电平时,输出线为高阻态。74LS373功能表见表2-2所示。
2.4 CPU 的选择
本设计采用美国ATMEL 公司生产的8位高性能单片机AT89C51。AT89C51是美国ATMEL 公司生产的低电压,高性能CMOS8位单片机。片内含4K bytes的可反复擦写的只读程序存储器(EPROM )和128 bytes的随机存取数据存储器(RAM ),器件采用ATMEL 公司的高密度、非易失性存储技术生产,兼容标准MCS-51 指令系统,片内置通用8位中央处理器(CPU )和Flash 存储单元,功能强大AT89C51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。AT89C51单片机的主要技术优势是内部含有可编程Flash 存储器,用户可以很方便地进行程序的擦写操作,在嵌入式控制领域中被广泛的应用。AT89C51单片机与工业标准MCS-51系列单片机的指令组和引脚是兼容的,因而可以替代MCS-51系列单片机使用。
2.5 A/D转换器的选择
本次设计中采用逐次逼近型A/D转换器AD574A 。AD574A 是美国模拟器件公司(Analog Devices)生产的12位逐次逼近型快速A/D转换器。它的转换速度最大为35us ,转换精度≤0.05%,是目前我国市场应用最广泛、价格适中的A/D转换器。AD574A 片内配有三态输出缓冲电路,因而可直接与各种典型的8位或16位的微处理器连接,而无须附加逻辑接口电路,且能与CMOS 及TTL 电平兼容。由于AD574A 片内包含高精度的参考电压源和时钟电路,这使它不在需要任何外部电路和时钟信号的情况下完成一切A/D转换功能,应用非常方便。 2.6显示电路选择
浓度显示部分采用LED 显示,自动显示16个采样点的浓度信息。LED 显示器有静态显示和动态显示两种显示方式。本设计需要6位共阴极LED 显示,所以采用动态显示方式,通过扩展I/O接口芯片8255A 来实现6位LED 显示接口电路。 2.7单频音报警接口方案
实现单频音报警的接口电路比较简单,其发音元件可采用压电蜂鸣器,这种蜂鸣器只需在其两引线上加3~5V的直流电压,就能产生3KHZ 左右的蜂鸣震荡音响,比电研式蜂鸣结构简单,耗电少,且更适合于在单片机系统之中应用。
压电式蜂鸣器,约需10MA 的驱动电流,可以使用TTL 系列集成电路7406或7407低电平驱动,也可以使用一个晶体管三级管驱动。
+5V
2.6 蜂鸣报警器图
选用价格便宜的蜂鸣报警器,可以节省资源。 2.8译码器的选择方案
译码法就是使用译码器对AT89C51的高位地址进行译码,译码器的译码输出作为存储器芯片的片选信号。由于这是一种常用的存储器地址分配的方法,它能有效地利用存储器的空间,适用于大容量的多芯片的存储器扩展。译码电路可以使用现成的译码器芯片。最常用的译码芯片是74LS138 (3-8译码器);由于使用灵活,完全可根据设计者的要求来组合译码,产生片选信号。 2.9静态数据存储器扩展的选择方案
AT89C51单片机内部有128个字节RAM 。因为在实际气体巡检系统中,仅靠片内的RAM 往往不够用,必须扩展外部数据存储器。在此系统中,外扩的数据存储器都采用静态数据存储器。
所扩展的数据存储器空间地址,由P2口提供高8位的地址,P0口分时提供低8位地址和用作8位的双向数据总线,片外数据存储器RAM 的读和写有AT89C51的
(P3.7)和(P3.6)信号控制,而片外程序存储器EPROM 的输出允许端,由读选通信号控制,尽管与EPROM 共处同一个地址空间,但由于控制信号不同,不会发生总线冲突。
单片机系统中常用的SRAM 芯片的典型型号有:6116(2K ×8),6264(8K ×8),它们都用单一+5V电源供电,双列直插封装,6116为24引脚封装,6264为28引脚封装,本设计采用6264。
第
3章 硬件电路设计
3.1气敏传感器
气敏传感器实现检测气体的机理有多种。可利用待检测气体的物理吸附作用,如湿度传感器利用吸附水的传导作用引起表面电导率变化,获得电信号;或是由吸附水引起电容变化,由静电电容的变化取得电信号;利用待测气体的化学吸附与反应引起表面附近的电子或空穴浓度变化而使表面电导率变化,这类敏感元件有Zn 、SnO2等,用于检测可燃气、CO 2、N 2类等; 利用气体成分的反应性如催化燃烧式可燃性气体传感器利用可燃性气体在元件表面催化燃烧是因升温而引起的铂丝电阻变化,测出可燃性气体的浓度,利用待测气体对固体的分配平衡,如半导体氧敏元件和体电导体半导体可燃性气敏元件,属于这类的有TiO 、CoO 等,可用于氧气、煤气、液化气、酒精等的检测;还可利用气体成分的选择性透过,如固体电解氧敏元件,当元件两侧的氧浓度不同时,形成浓差电池电动势也不同,这就是可用来检测氧浓度的变化,这类有ZrO2-CaO 、ZrO2-Y2O3、ZrO2-MgO 、TrO2-Y2O3等。
以氧化物半导体为基质材料的气敏元件,已发展为包括烧结型、厚模型、薄膜型、集成型等多种气敏元件。除半导体表面吸附气体发生电子传递的表面型气敏半导体外,还发现了半导体吸附气体后与体内发生电子传递的体电导气敏半导体和气体分子在金属半导体接触面上产生电子传递的结型气敏半导体。
在本次设计中,从检测对象来看,天然气的主要成份是CH4 ,所以选用QM-N10气敏传感器。QM-N10型气敏元件是以金属氧化物SnO2为主体材料的N 型半导体气敏元件,当元件接触还原性气体时,其电导率随气体浓度的增加而迅速升高。它适合检测天然气,煤气,液化石油气,氢气,一氧化碳,烷类气体,烯类气体,汽油,煤油,柴油,乙炔,氨类蒸汽,醚蒸汽及烟雾等。它具有以下几个特点。1、用于可燃性气体的检测(CH4、C4H10、H2等);2 灵敏度高;3、响应速度快;4、输出信号大;5、寿命长,工作稳定可靠。
表3-2 QM-N10型气敏传感器的参数
其关系为:
V1= F(c )≈V H R L C m ∕10n 其中:C 为气体浓度;
QM-N10气敏传感器,以电压采样方式,原理如图3.1所示。V 1随气体浓度变化,
m 、n —由传感器及气体决定的常数,且m
V1
图3.1 气敏传感器原理如图
3.2 AT89C51简介
AT89C51是美国ATMEL 公司生产的低电压,高性能CMOS 8位单片机。片内含4K bytes的可反复擦写的只读程序存储器(PEROM )和128 bytes的随机存取数据存储器(RAM ),器件采用ATMEL 公司的高密度、非易失性存储技术生产,兼容标准MCS-51 指令系统,片内置通用8位中央处理器(CPU )和Flash 存储单元,功能强大AT89C51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。
AT89C51主要特性:
RXD P3.1TXD
INT 0INT 1RD XTALC1
)))))))))
XTAL2GND
图3.2 AT89C5引脚图
主要性能参数:
·与MCS-51产品指令系统兼容 ·4K 字节可重擦写Flash 闪
·1000次擦写中期
·全静态操作:0Hz ——24MHz ·三级加密程序存储器 ·128*8字节内部RAM ·32个可编程I/O口线 ·2个16位定时/计数器 ·5个中断源
·可编程串行UART 通道 ·低功耗空闲和掉电式能图
特性概述:AT89C51提供以下标准功能:4K 字节Flash 闪存存储器,128字节内部RAM ,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路同时,AT89C51可降至0Hz 的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU 的工作,但允许RAM ,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM 中的内容。但振荡器停止工作并禁止其它所有不见工作直到下一个硬件复位。
AT89C51有40条引脚,与其他51系列单片机引脚是兼容的。这40条引脚可分为I/O端口线、电源线、控制线、外接晶体线四部分。其封装形式有两种:双列直插封装(DIP )形式和方形封装形式,如图3.2所示。
图3.3 AT89C51内部结构框图
3.2.1AT89C51单片机结构
AT89C51系列单片机在结构上基本相同,只是在个别模块和功能上有些区别。图3-3是AT89C51单片机的内部结构框图。它包含了作为微型计算机所必需的基本功能部件,各功能部件通过片内单一总线连成一个整体,集成在一块芯片上。为了更详细地了解AT89C51内部结构和工作原理,现将其分成中央处理器(CPU )、存储器、I/O端口、定时器/计数器、中断系统和内部总线六部分加以介绍。
a. 中央处理器
CPU 是单片机内部的核心部件,是一个8位二进制数的中央处理单元,主要由运算器、控制器和寄存器阵列构成。
1.运算器
运算器用来完成算术运算和逻辑运算功能,它是AT89C51内部处理各种信息的
主要部件。运算器主要由算术逻辑单元(ALU )、累加器(ACC )、暂存寄存器(TMP1、TMP2)和状态寄存器(PSW )组成。
(1)算术逻辑单元(ALU ):AT89C51中的ALU 由加法器和一个布尔处理器组成(图中未具体画出)。它不仅可以对8位二进制变量进行与、或、非、异或等逻辑运算,加、减、乘、除的四则运算,还具有运算结果判断、数据传送、程序转移等功能。它是运算器的核心部件。
(2)累加器(ACC ):用来存放参与算术运算和逻辑运算的一个操作数或运算的结果。
(3)暂存寄存器(TMP1、TMP2):用来存放参与算术运算和逻辑运算的另一个操作数,它对用户不开放。
(4)状态寄存器(PSW ):PSW 是一个8位标志寄存器,用来存放ALU 操作结果的有关状态。PSW 中各位状态常量是操作过程中自动相成的,但也可以由用户根据需要由位操作指令加以改变,PSW 各位定义如表3-3所示。
表3-3 PSW各位定义表
①进位标志符CY :表示累加器A 在加减运算过程中其最高位A7有无进位或借位。若有则CY=1,若没有则CY=0。CPU 在进行移位操作时也会影响这个标志位。
②辅助进位位AC :表示累加器在加减运算时低4位(A3)有无向高4位(A4)进位或借位。若有则AC=1,若没有则AC=0。
③用户标志位F0:是用户定义的一个状态标志位,根据需要可以用软件来使它置位或清除。
④寄存器选择位RS1、RS0:AT89C51共有四组,每组八个工作寄存器R0~
R7。编程时用与存放数据或地址。但每组工作寄存器在内部RAM 中的物理地址不同。RS1和RS0的四种状态组合就是用来确定四组工作寄存器的实际物理地址的。RS1、RS0状态与工作寄存器R0~R7的物理地址关系如表3-4所示。
表3-4 RS1 RS0关系表
单片机上电复位后,RS1、RS0的状态为00。故R0~R7对应的是0组的物理地址00~07H。若要改变RS1、RS0的状态,可用位操作指令或数据传送指令。
⑤溢出标志位OV :当执行算术指令时,由硬件自动置位或清零,表示累加器A 的溢出状态。
⑥奇偶标志位P :用于指示运算结果中1的个数的奇偶性,若累加器A 中的1的个数为奇数,则P=1;若1的个数为偶数,则P=0。
2.控制器
控制器是单片机内部按一定时序协调工作的控制核心,是分析和执行指令的部件。控制器主要由程序计数器PC 、指令寄存器IR 、指令译码器ID 和定时控制逻辑电路等构成。
程序计数器PC 是专门用于存放现行指令的16位地址的。CPU 就是根据PC 中的地址到ROM 中去读取程序指令码和数据,并送给指令寄存器IR 进行分析。每取出现行指令的一个字节后,PC 就自动加1,即(PC )+1→PC ,指向下一个要读取字节的地址。当遇到转移指令或子程序调用指令时,PC 内容会被指定的地址取代,实现程序转移。所以,需要执行程序的机器码,必须在程序执行前预先一条条地按顺序放到程序存储器ROM 中,并使PC 中的初始地址为程序第一条指令的内存地址。
指令寄存器IR 用于存放CPU 根据PC 地址从ROM 中读出指令操作码。
指令译码器ID 是用于分析指令操作的部件,指令操作码经译码后产生相应于某一特定操作的信号。
定时控制逻辑中定时部件用来产生脉冲序列和多种节拍脉冲。控制逻辑根据指令译码器产生的操作信号,按一定时间顺序发出一系列节拍脉冲控制信号来完成指令所规定的全部操作。
3.寄存器阵列
寄存器阵列是单片机内部的临时存储单元或固定用途单元,包括通用寄存器组
和专用寄存器组。
通用寄存器组用来存放过渡性的数据和地址,提高CPU 的运行速度。
专用寄存器组主要用来指示当前要执行指令的内存地址,存放特定的操作数,指示指令运行的状态等。例如前面介绍的PC 、PSW 、累加器A 等。其他专用寄存器将在后面的相关章节中介绍。
b. 存储器
AT89C51单片机内部有128个字节的RAM 数据存储器和4KB 的内存程序存储器(Flash ),当不够使用时,可分别扩展为64KB 外部RAM 存储器和64KB 外部程序存储器。它们的逻辑空间是分开的,并有各自的寻址机构和寻址方式。这种结构的单片机称为哈佛型结构单片机。
程序存储器是可读不可写的,用于存放编好的程序和表格常数。
数据程序存储器是既可读有可写的,用于存放运算的中间结果,进行数据暂存及数据缓冲等。
c.I/O端口
AT89C51单片机对外部电路进行控制或交换信息都是通过I/O端口进行的。单片机的I/O端口分为并行I/O端口和串行I/O端口,它们的结构和作用并不相同。
1. 并行I/O端口
AT89C51有四个8位并行I/O端口,分别命名为P0口、P1口、P2口和P3口,它们都是8位准双向口,每次可以并行输入或输出8位二进制信息。也可以按位操作进行输入或输出信息。每个并行I/O端口内部都有一个8位数据输出锁存器(即特殊功能寄存器SFR 中的P0~P3),一个输出驱动器和一个8位输入缓冲器。因此,CPU 进行数据输出时可以将数据锁存,进行数据输入时可以得到缓冲。
当AT89C51无需扩展功能,由自身资源构成最小系统时,这四个端口都可以作为普通的输入/输出口使用。但当AT89C51扩展扩展外部存储器或使用外部中断、外部计数等功能时,这四个口的功能又各不相同。
2. 串行I/O端口
AT89C51有一个全双工的可编程串行I/O端口,它利用了P3口的第二功能,即将P3.1引脚作为串行数据的发送线TXD ,将P3.0引脚作为串行数据的接收线RXD 。在串行口控制寄存器SCON ,电源及波特率选择寄存器PCON 和串行数据缓冲
器(它们都是特殊功能寄存器)的控制下,每次只能发送或接收一位二进制信息。这样,CPU 内部的8位并行二进制数必须变成一位一位的串行数据才能通过TXD 发送出去。同理,从RXD 接收的数据也是一位一位的串行数据,必须转化为并行数据后才能供CPU 使用。
d.定时计数器
AT89C51内部有两个16位可编程定时器/计数器。简称为定时器0(T0)和定时器(T1),T0和T1分别由两个8位寄存器构成,其中T0由TH0(高8位)和TL0(低8位)构成,T1由TH1(高8位)和TL1(低8位)构成。TH0、TL0、TH1、TL1都是SFR 中的特殊功能寄存器。
T0和T1在定时器控制寄存器TCON 和定时器方式选择寄存器TMOD 的控制下(TCON 、TMOD 为特殊功能寄存器),可工作在定时器模式或计数妻模式下,每种模式下又有不同的工作方式。当定时或计数溢出时还可以申请中断。
e. 中断系统
单片机中的中断是指CPU 暂停正在执行的原程序转而为中断源服务(执行中断服务程序),在执行完中断服务程序后再回到原程序继续执行。中断系统是指能够处理上述中断过程所需要的部分电路。
AT89C51可提供5个中断源:2个外部中断,2个定时器溢出中断和1个串行口中断。
AT89C51的中断系统主要由中断源、中断允许控制器IE 、中断优先级控制器IP 、定时控制器TCON (中断标志寄存器)等构成,IE 、IP 、TOCN 均为SFR 特殊功能寄存器。AT89C51的中断源(产生中断请求信号的源泉)有五个。它们分别是两个外部中断源INT0、INT1,中断信号从P3.2、P3.3引脚输入;三个内部中断源:定时器0溢出中断、定时器1溢出中断、串行口中断。每个中断源都有固定的中断服务程序人口地址。
f. 内部总线
总线是用于传送信息的公共途径。总线可分为数据总线、地址总线、控制总线。单片机内的CPU 、存储器、I/O接口等单元部件都是通过总线连接到一起的。采用总线结构可以减少信息传输线的根数,提高系统可靠性,增强系统灵活性。
AT89C51单片机内部总线是单总线结构,即数据总线和地址总线是公用的。内
部所有单元电路都挂在总线上,它们之间的信息传递都经过内部总线,并采用分时操作、分时使用的方法,所以,不会引起信息冲突或抢占总线的问题。
3.2.2 AT89C51的引脚及功能
a. I/O端口功能
在AT89C51中有四个双向并行I/O端口P0~P3。每个端口都有八条端口线,共32条线,并都配有端口的锁存器、输出驱动器和输入缓冲器。用于CPU 与外部设备之间交换信息。但由于每个端口的结构个不相同,因此它们在功能和用途上有较大的差别。
1.P0口
P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL 逻辑门电路,对断口写“1”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash 编程时,P0接受指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
2.P1口
P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL 逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作为输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号来低时会输出一个电流(I )。Flash 编程和程序校验期间,P1口接受底8位地址。
3.P2口
P2口:P2口是一个带内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL 逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作为输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号来低时会输出一个电流(I )。在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX @DPTR指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(例如执行MOVX @RI指令)时,P2口行上
的内容(也即特殊功能寄存器(SFR )区中R2寄存器的内容),在整个访问期间不改变。Flash 编程或校验时,P2亦接受高位地址和其它控制信号。
4.P3口
P3口:P3是一组带内部上拉电阻的8位双向I/O口,P3口的输出缓冲级可驱动(吸收或输出电流)4个TTL 逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作为输入口。作输入口使用时,被外部拉P3口将用上拉电阻输出电流(I )。P3口除了作为一般的I/O口线外,更重要的用途是她的第二功能,如下表所示:
b. 电源线 P3口还接受一些用于Flash 闪速存储器编程和程序校验的控制信号。
AT89C51单片机的电源线有以下两种:
(1) V CC :+5V电源线
(2) V SS :接地线
c. 控制线
(1)RST :复位输入。当振荡器工作时,RST 引脚出现两个机器周期以上高电平将使单片机复位。
(2)ALE/PROG非:当访问外部程序存储器时,ALE 输出脉冲用于锁存地址的低8位字节。如有必要,可通过对特殊功能寄存器(SFR )区中的8EH 单元的D0位置位,可禁止ALE 操作,该位置位后,只有一条MOVX 和MOVC 指令ALE 才会被激活。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE 无效。
(3)PSEN :程序储存允许(PSEN )输出是外部程序存储器的读选信号,当AT89C51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器,这两次有效的PSEN 信号不出现。
(4)EA/Vpp:外部访问允许。欲使CPU 仅访问外部程序存储器(地址为0000H ——FFFFH ),EA 端必须得保持低电平(接地)。
d. 外接晶体引脚
AT89C51单片机的外接晶体引脚有以下两种:
(1)XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。采用内部振荡器时,它外接石英晶体和微调电容的一个引脚。采用外部振荡器时,它是外部时钟的输入端。
(2)XTAL2:片内振荡器反相放大器的输出端,接外部石英晶体和微调电容的另一端。采用外部振荡器时,该引脚悬空。
3.2.3 时钟振荡器
AT89C51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路参见图3.4。
XTA2
XTA2
外部震荡
信号输入
XTA1
GND
GND XTA1
外部震荡电路
图3.4 时钟电路图
外接石英晶体(或陶瓷谐振器)及电容C1、C2接在放大器的反馈回路中构成并联振荡电路,对外电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性,如果使用石英晶体,我们推荐电容使用30pF+/-10pF,而如使用陶瓷谐振器建议选择40pF+/-10F。用户也可以采用外部时钟。采用外部时钟的电路如图5右图所示。这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,电脑最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。
3.2.4 AT89C51单片机复位方式
单片机在开机时或在工作中因干扰而使程序失控或工作中程序处于某种死循环状态等情况下都需要复位。复位的作用是使中央处理器CPU 以及其他功能部件都恢复到一个确定的初始状态,并从这个状态开始工作。AT89C51单片机的复位靠外部电路来实现,信号由RESET (RST )引脚输入,高电平有效,在振荡器工作时,只要保持RST 引脚高电平两个机器周期,单片机即复位。复位后,PC 程序计数器的内容为0000H 。
复位电路一般有上电复位、手动开关复位和自动复位电路,本次设计中采用的是手动开关复位,手动复位电路在有按键按下时,由于电容充电产生一定时间的高电平,就可以使单片机复位。复位电路图如图3.5所示。
图3.5复位电路
3.2.5中断系统
中断系统是单片机的重要组成部分,CPU 通过中断功能可以分时操作系统启动多个外部设备同时工作、统一管理,并能迅速响应外部设备的中断请求,采集实时数据或故障信息,对系统进行相应处理,从而使CPU 的工作效率得到很大的提高。 AT89C51具有五个中断源,分为内部中断源和外部中断源。外部中断源有两个,通常指由外部设备发出中断请求信号,从P3.2和P3.3(即INT0和INT1)引脚输入单片机,用电平或边沿触发两种方式申请中断。内部中断源有三个,两个定时器/计数器(T0,T1)中断源和一个串行口中断源,T0和T1的中断申请是在它们计数从全“1”变为全“0”溢出时自动向中断系统提出的,串行口中断源的中断申请是在串行口每发送或接收完一个8位二进制数后自动向中断系统提出的。
3.3 A/D转换器
AD574A 是美国模拟器件公司(Analong Devices)生产的12位逐次逼近型快速A/D转换器。转换速度最大为35us ,转换精度≤0.05%,是目前我国市场应用最广泛、价格适中的A/D转换器。AD574A 片配有三态输出缓冲器,因而可直接与各种典型的8位或16位的微处理器相连,而无须附加逻辑接口电路,这使它在不需要任何外部电路和时钟信号的情况下完成一切A/D转换功能,应用非常方便。 AD574A 的主要特性为:
(1) 转换速度:最大转换时间35us ,属于中档速度。
(2) 输入模拟信号范围可为0~+10V,0~+20V,也可为双极性±5V 或±10V 。
(3) AD574A有两个模拟输入端,分别用于不同的电压范围:10V IN 适用于±5V 的
模拟输入,20V IN 适用于±10V 的模拟输入。输出为12位,即DB 0~DB11。
(4) 利用不同的控制信号,既可实现高精度的12 位变换,又可作为快速的8位
转换。转换后的数据有两种读出方式:12位一次输出:8位、4位分两次输
出。设有三态输出缓冲器,可直接与8位或16位的微处理器接口。
(5) 需三组电源:+5V,V CC (+12V~+15V),V EE (-12V~-15V)。由于转换精度高,
所提供电源必须有良好的稳定性,并加以充分滤波,以防止高频噪声的干扰。
(6) 内设有高精度的参考电压(10.00V ),只需外接一只适当阻值的电阻,便可
向DAC 部分的解码网络提供1REF ,转换操作所需的时钟信号由内部提供,不
需要外接任何元器件。
(7) 低功耗:典型功耗为390mW 。
AD574A 为28引脚双列直插式封装。各引脚功能如下:
V L (引脚1):数字逻辑部分电源+5V。
12/8(引脚2):数据输出格式选择信号引脚。当12/8=1(+5V)时,双字节输出,
即12条数据线同时有效输出,当12/8=0(0V )时,为单字节输出,
即只有高8位或低4位有效。
CS (引脚3):片选信号端,低电平有效。
A 0(引脚4):字节选择控制线。在转换期间:A 0=0,AD574A 进行全12位转换, 在
读出期间:当A 0=0时,高8位数据有效;A 0=1,低4位数据有效中间
4位为“0”,高4位为三态。因此当采用两次读数12位数据时,应
遵循左对齐原则。
R/C(引脚5):读数据/转换控制信号,当R/C=1,ADC 转换结果的数据允许被读取;
当R/C=0,则允许启动A/D转换。
CE (引脚6):启动转换信号,高电平有效。可作为A/D转换启动或读取数据的
信号。
V CC 、V EE (7、11):模拟部分供电的正电源和负电源,为±12V 或±15V 。
REF OUT(8):10V 内部参考电压输出端。
REF IN(10):内部解码网络所需参考电压输入端。
BIPOFF (12):补偿调整, 接至正负可调的分压网络,以调整ADC 输出的零点。 10V IN 、20V IN (13、14):模拟量10V 及20V 量程的输入端口,信号的一端接至AG 引
脚。
DG (引脚15):数字公共端(数字地)。
AG (引脚9):模拟公共端(模拟地)。它是在高数字噪声含量的环境中从AD574A
获得高精度的性能,AG 和DG 在封装时已连接在一起,在某些情况下,
AG 可在最方便的地方与参考点相连。
DB 0~DB11(16~27):数字量输出。
STS (28):输出状态信号引脚。转换开始时,STS 达到高电平转换过程中保持高电
平。转换完成时返回到低电平。STS 可以作为状态信息被CPU 查询,也
可以用它的下降沿向CPU 发中断申请,通知A/D转换以完成,CPU 可以
读取转换结果。
AD574A 的控制信号的功能:
AD574A的工作状态由CE 、CS 、R/C、12/8、A 0五个控制信号决定,这些
信号的组合控制功能见表。
由表3-9可见,当CE=1,CS=0同时满足时,AD574A 才能处于工作状AD574A 处于工作状态时,R/C=0启动A/D转换;R/C=1时进行数读出。12/8和A 0端用来控
制转换字长和数据格式。A 0=0时启动转换,则按完整的12位A/D转换方式工作,
如果按A 0=1启动转换,则按8位A/D转换方式工作。当AD574A 处于数据读出工作
状态(R/C=1)时,A 0和12/8成为数据输出格式控制端。12/8=1,对应12位并行
输出;12/8=0则对应8位双字节输出。其中A 0=0时输出高位。A 0=1时输出低4位,
并以4个0补足尾随的4位。必须指出12/8端与TTL 电平不兼容,故只能用通过布线接至+5V或0V 上。另外A 0在数据输出期间不能变化。
表3-9 AD574A控制信号功能组合表
如果要求AD574A 以独立方式工作,只要将CE 、12/8端接入+5V,CS 和A 0接至
0V ,将R/C作为数据读出和数据转换启动控制。当R/C=1时,数据输出现被转换后的数据,R/C=0时,即启动一次A/D转换。在延时0.5us 后STS=1表示转换正在进
行。经过一次转换周期Tc (典型值为25us )后STS 跳回低电平表示A/D转换完毕,可以从数据输出端读取新的数据。
启动AD574A 转换时序图和AD574A 读周期时序图如图a 和图b 所示。
(a).AD574A启动转换时序图 (b).AD574A读周期时序
AD574A 与单片机接口电路如图3.8所示:
千欧
图3.8 AT89C51与AD574
3.4 AT89C51扩展可编程并行I/O芯片8255
Intel 8255A 是一个为8080/8085 微机系统设计的可编程通用并行接口电路,可适用于多种微处理器的8 位并行输入/输出接口芯片。
8255A 是一种8 位并行I/O 接口芯片,8255A 有24 条I/O 引脚,分成A ,B
两大组(每组12 条)允许独立编程,工作方式分为方式0、1 和2 三种。 使用8255A 可实现一下各项功能: (1)并行输入或输出8 位数据;
(2)实现输入数据的锁存和输出数据的缓冲;
(3)提供多个通信接口联络控制信号(如中断请求、外设准备好及选通脉冲等); (4)通过读取状态字可实现程序对外设的查询。 (1) 8255A 的结构
8255A 的内部结构如图3.9(a)所示。
8255A 内部结构包括三个并行数据输入/输出端口,两个工作方式控制电路,一个读/写控制电路和8 位总线缓冲器。
1. 端口A 、B 、C
A 口、B 口和C 口均是一个8 位数据输出锁存器/缓冲器和一个8 位数据输入缓冲器。通常,A 口、B 口作为数据输入/输出端口,C 口作为控制/状态信息端口,C 口内部又分为两个4 位端口,每个端口有一个4 位锁存器,分别与A 口和B 口配合使用,作为控制信号输出或状态信息输出端口。
2. 工作方式控制电路
控制电路分为:A 组工作方式控制电路,B 组工作方式控制电路。A 和B 两组共用控制命令寄存器,用来接收CPU 的控制字(命令),根据控制字决定两端口的工作方式,也可以用控制字做到C 口按位清“0”或按位置“1”。 A 组控制电路用来控制A 口和C 口的上半部分(PC7~PC4),B 组控制电路用来控制B 口和C 口的下半部分(PC3~PC0)。
图3-9 8255A 的内部结构及引脚
8255A 的引脚如图3.9(b)所示。它采用双列直插40 脚封装,40 条引脚可分为两组:
1. CPU 控制信号
A. RESET 复位信号,输入、高电平有效。当RESET 端出现一高电平后,8255A 将复位到初始状态;
B. D7~D0 数据总线,双向、三态。D7~D0 是8255A 与CPU 交换数据、控制字/状态字的总线,通常与系统数据总线连接;
C.CS 片选信号,输入、低电平有效。当CS 为低电平时,该8255A 被选中,D7~D0 可以与CPU 交换信息,否则,D7~D0 处于高阻态;
D.RD 读信号,输入、低电平有效。控制8255A 送出数据或状态信息到数据总线; E.WR 写信号,输入、低电平有效。控制把数据总线的数据或控制信息写入8255A ; F. A1,A0 端口选择信号,输入。根据A1,A0 的不同,将数据总线与不同的输入/输出端口、控制寄存器和状态寄存器相连。详见表3-10。
使用时一般将A1,A0 与地址总线的低2 位相连,故一片8255A 占用4 个I/O 端口地址,分别对应端口A 、端口B 、端口C 和控制寄存器。
2. 并行I/O 端口信号
B. PB7~PB0 端口B 的并行I/O 数据线,双向。
C. PC7~PC0 端口C 的并行I/O 数据线,双向。当8255A 工作在方式0 时,PC7~PC0 为两组并行I/O 数据线。当8255A 工作与方式1 或方式2 时,PC7~PC0 分为两组,作端口A 和端口B 的联络. PA7~PA0 为端口A 的并行I/O 数据线,双向。控制线,此时每根线将赋予新的功能。
(3) 8255A 的控制字和状态字
8255A 共有两个控制字和一个状态字,控制字用来选择工作方式或对C 口控制。状态字用来反映8255A 的工作状态。两个控制字均在A1A0=11 的情况下发送,共用一个设备地址。如果控制字的最高位(D7)是1,表示是工作方式控制字;如果最高位(D7)是0,表示是按位置数控制字。
工作方式控制字格式如图3.10所示。工作方式控制字用于规定端口的工作方式,用3 位(D2~D0)对B 组的工作方式进行设定,用4 位(D6~D3)对A 组的工作方式进行设定。
按位置数控制字用于对C 口的I/O 引脚的输出进行控制。其中(D2~D0)指示输出的位数;(D2~D0)指示输出的值:“1”输出高电平,“0”输出低电平。显然,利用按位置数控制字可使端口C 中每一位分别产生输出,而不影响其他各位。
8255A 没有专门的状态字,工作于方式1 或方式2 时,读取端口C 的数据,即得状态字。当状态字中有效信息不满8 位时,所缺的即为对应端口C 引脚的输入电平。状态字格式如图3.10 所示。
(a )工作方式控制字
(b )按位置位控制字
图3.10 状态字格式
中断请求输出
图3.11 8255A控制字
/输出缓冲器满/输出请求允许
图3.18 8255A与单片机接口电路
3.5键盘与LED 显示
3.5.1键盘部分
系统采用独立式按键。独立式按键就是各按键相互独立,每个按键各接一根输入线,一根输入线上的按键工作状态不会影响其他输入线上的工作状态。因此检测输入线的电平状态可以很容易判断哪个键被按下了。
3.5.2 LED显示电路
显示器是最常用的输出设备。特别时发光二极管显示器(LED )和液晶显示器(LCD ),由于结构简单、价格廉价和接口容易,而得到广泛的应用。尤其是在单片机系统中大量应用。下面介绍发光二极管显示器(LED )接口设计。
(1) LED 结构与原理
a
b c
d
e
f
g
Dp
(b )共阳极
COMM
a b c d e f g Dp
(c )共阴极
图3.19 LED 结构图
点亮LED 显示器有静态和动态两种方法。所谓静态显示,就是显示某一字符时,相应的发光极管恒定得导通或截止,这种方法,每一显示位都需要一个8 位的输出口控制,占用的硬件较多,一般仅用于显示位数较少的场合。而动态就是一位一位地轮流点亮各位显示器,对每一位显示器而言,每隔一段时间点亮一次,利用人的视觉留感达到显示的目的。显示器的亮度跟导通的电流有关也和点亮的时间与间隔的比例有关。动态显示器因其硬件成本较低,而 得到广泛的应用。
为了显示字符和数字,要为LED 显示器提供显示段码(或称字形代码), 组成一个“8”字形的7段,再加上一个小数点位,共计8 段,因此提供LED 显示器的显
用LED 显示器显示十六进制数和空白及P 的显示段码,如表3-12所示。
从LED 显示器的显示原理可知,为了显示字母数字,必须最终转换成相应段选码。这种转换可以通过硬件译码器或软件进行译码。
表3-12 段选码表
(2) 动态显示LED 显示器接口
所谓动态显示,就是一位一位地轮流点亮各位显示器,对每一位显示器而言,每隔一段时间点亮一次。
本设计是用AT89C51和8255的6位动态显示电路。图3.20 LED 为八段共阴数码管,A 口输出字形码,B 口输出位选码,片选端直接接地。根据图中连接可知,8255A 的A 口地址为FFFCH ,B 口地址为FFFDH ,控制口地址为FFFFH ,由于A 、B 口均为输出,因此控制字为80H 。
图3.20 AT89C51和8255的6位动态显示电路
第4章 系统的软件设计
本次设计的软件部分主要由主程序、T0中断服务、浓度检测和LED 显示几部分组成,以下介绍的是软件的程序流程框图,程序清单见附录。 (1)主程序流程框图
主程序包括89C51本身的初始化以及各并行I/O口的初始化等。程序流程框图如图所示。程序清单见附录。
图4.1主程序流程图
(2)T0中断服务程序流程图
图4.2 T0中断服务程序流程图
(3) 采样子程序
图4.3采样子程序流程图
(4)标度变换子程序流程图
生产现场的各种参数都有不同的数值和量纲,这些参数经A/D转换后,统一变成0~M 个数码,这些数码虽然代表参数值的大小,但是并不表示带有量纲的参数值,必须转换成有量纲的数值才能进行显示和打印。这称为标度变换
图4.4标度变换子程序流程图
(5)显示子程序流程图
图4.6显示子程序流程图
致谢
经过几个月的努力,毕业设计-天然气的多点浓度巡测装置终于顺利的完成。通过本次设计加深了我对所学知识的理解,比如AT89C51系列的单片机以及AD574等主要芯片的了解和掌握,从而锻炼了自己综合运用专业知识解决问题的能力,使自己对专业知识的理解和运用上有了很大的提高。
我在设计过程中一直得到指导教师李霄燕老师的细心指导和帮助,在此谨向李霄燕老师致以衷心的感谢,同时也向其他关心和帮助过我的老师和同学们表示感谢。
参考文献
[1] 张毅刚,彭喜元,姜守达,乔立岩. 新编MCS-51单片机应用设计. 哈尔滨工业大学出版社,2003.7 20~56
[2] 李正军. 计算机测控系统设计与应用. 机械工业出版社,2004.1 20~56
[3] 董晓红. 单片机原理及接口技术. 西安电子科技大学出版社,2004.8 30~70
[4 ] 徐大诚,邹丽新,丁建强. 微型计算机控制技术及应用. 高等教育出版社,2003.5 25~50
[5] 王元庆. 新型传感器原理及应用. 机械工业出版社,2002.4 33~66
[6] 何立民. 单片机应用技术选编. 北京:北京航空航天大学出版社,1996 22~77
[7] 李华主编.MCS-51系列单片机实用接口技术. 北京:北京航空航天大学出版社,1993 235~237
[8] 沙占友主编. 集成化智能传感器原理与应. 电子工业出版社,2004.1 77~103
[9] 何希才. 传感器及其应用电路. 电子工业出版社,2002.3 11~13
[10] 徐同举. 新型传感器. 北京:机械工业出版社,1989 126~156
[11] 钱浚霞. 光电检测技术. 北京:机械工业出版社,1993 37~85
[12] Khandpur RSHandbook of Analytical InstrumentsNew Dehli, MeGraw-Hill Publishing Company Li-nited, 1989. 67~123
[13] Ke-Ming ,ChenGuo-Hua Li .etc.. Improvement ofStructural Instability Ion-Selecied Field-EffectTransistor (ISFET), Sensors and Actuators B, 1993. 55~73
[14] Nobuharu Takai and Toshiyuki Hirai etc.. Deweplop-went of an Optical -Fibre Sensor Using a FunctionalMembrane, Sensors and Actuators B, 1993. 66~98