基于单片机燃气报警器存储器分配的设计与实现
2018-10-31孙媛
孙 媛
(北京物资学院, 北京 101149 )
引言
随着计算机技术的发展,人们对计算机的要求越来越高。在计算机的大家族中,单片微型计算机发展十分迅速,渗透到电子设计领域的各个方面,进入智能控制领域,因此开创了控制新局面。
在工业控制领域,人们对计算机提出了控制要求。首先,能够面向控制对象,便于进行控制变量的输入/输出,其次,体积尽量小,能够嵌入控制系统内部,能适应工业现场较为恶劣的工作环境,并且具有丰富的用于控制的指令系统和I/O接口等。单片机系统能很好地满足这些控制要求,成为工业测控系统中最为理想的控制系统[1]。
燃气报警器的气体探测器准确性高,遇到燃气泄漏到一定浓度时,可以显示燃气泄漏量,自动切断燃气阀,发出声光报警,启动排风扇,这样可以有效防止因燃气过量泄露造成人员和财产的伤害。当燃气泄漏时,能够完成以上功能,燃气报警器通常会有以下功能模块:LED显示模块、声光报警模块、排气扇模块、键盘模块、通信模块等。
1 燃气报警器的功能
燃气报警器根据传感器探头采集数据,主要有两方面功能。
(1)燃气泄露警情的处理。安装在楼宇公寓各防区的燃气泄漏感应器(探头),在有燃气泄漏发生时产生输出脉冲,该脉冲经过波形整形为矩形波之后经过燃气控制器判断处理,显示泄漏燃气量,同时伴有声光报警,报警器自动关闭燃气阀,启动排风扇,同时发送信息给用户或中央监控室。
(2)燃气表耗用量的读取。安装在楼宇公寓中的燃气表除了用于常规的显示功能之外,每个表都配备了脉冲输出功能。随着用户对燃气的消费,按照单位计量比例输出相应的脉冲信号。脉冲信号经过波形整形处理为矩形波后作为计数脉冲,燃气报警器通过实时采样计数脉冲获得表的消耗量。
2 燃气报警器总体设计
根据应用系统所要实现的功能,规划出由硬件和软件实现的功能部分。根据燃气报警器的主要功能,规划对整体功能的设计。燃气报警器的功能框图如图1所示。
图1 燃气报警器的功能框图
燃气报警器主要由单片机扩展了两组信号输入:燃气泄漏脉冲采集、燃气消耗量采集;通信接口电路:可以及时发送信息给用户或中控室;键盘:用户可以设置基本功能;LCD显示器:显示泄漏量和消耗量;E2PROM 24C16:掉电保护信息和基本信息的存储等。
(1)由于燃气表消耗量和燃气泄漏量输出都是脉冲量,所以燃气控制器直接对燃气表消耗量和燃气(探头)泄漏量脉冲输出信号进行采集,从而避免了在燃气控制器主板上使用A/D转换接口。利用单片机89C52的P1口作为燃气表脉冲和报警脉冲信号的共同输入通道,燃气表脉冲和燃气泄漏脉冲信号分别通过斯密特触发器波形整形和74LS244缓冲器进入CPU。这里分别用P3.4(定时器T0的外部输入)和P3.5(定时器T1的外部输入)口线作为分时有效使能端。
(2)采用虚拟串行总线技术。LCD液晶显示器和8K E2PROM 24C16用单片机I/O口线扩展了串行接口器件,采用了虚拟串行总线技术。用24C16存放有关初始化信息、燃气表的消耗量和燃气泄漏量以及重要的初始化信息。LCD液晶显示模块,内置显示RAM和驱动控制器,通过串行方法与单片机AT89C52相连。
(3)通过单片机的P0口线串行扩展了简易键盘,实现人机交互。P0口作为普通的I/O使用时,输出是漏极开路电路,故需要外接上拉电阻5~10 KΩ左右才能正常工作。
(4)通过无线转换完成电平转换与无线通信网络连接。
3 单片机的存储分配
51系列单片机的存储器在物理结构上分为程序存储器空间和数据存储器空间,共有4个存储空间:片内程序存储器和片外程序存储器空间,片内数据存储器和片外数据存储器空间[2]。4个存储空间与其物理地址的对应关系如图2所示。
图2 MSC-51单片机的存储器分配
AT89C52(简称89C52)是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes 的随机存取数据存储器(RAM)。
(1)数据存储器(RAM)。数据存储器片内为256个字节,片外最多可外扩64K字节。
(2)程序存储器(Flash)。程序存储器用来存储程序。89C52片内有8K字节的Flash存储器,如果片内的程序存储器的容量不够,片外最多可外扩程序存储器64K字节。
(3)特殊功能寄存器(SFR)。特殊功能寄存器共有21个,用于CPU对片内各种功能部件进行管理、控制和监视。这些特殊功能寄存器映射在片内RAM区80H-FFH的地址区间内。
程序是给微处理器处理问题的一系列命令,是由机器码组成的代码串,设计人员编写的程序就存放在程序存储器中,俗称只读程序存储器(ROM)。相应的数据放到数据存储器中[3]。
4 燃气报警器数据空间的分配
4.1 燃气报警器数据存储空间的分配
根据89C52单片机的数据存储空间,数据区域如果不扩展片外RAM,则片内RAM能够利用的空间只有:
高128字节的80H~FFH的间接存储空间
低128字节中20H~2FH的位存储区,30H~7FH字节存储区
根据可以利用的片内RAM,燃气报警器的存储空间分配如下:
4.1.1高128字节间接存储地址分配
高128B数据区和特殊功能寄存器区的地址空间是重叠的,高128B的直接寻址寄存器被用作特殊功能寄存器区,只有间接寻址的寄存器能够用来存储数据。在燃气报警器中,80H—FFH间接存储的数据分配见表1。
表1 80H~0FFH间接存储地址的分配
汇编语言定义如下:
;某个间址寄存器定义
ALARM1_CYCLE EQU 90H
ALARM2_CYCLE EQU 91H
ALARM3_CYCLE EQU 92H
ALARM4_CYCLE EQU 93H
ALARM5_CYCLE EQU 94H
ALARM6_CYCLE EQU 95H
ALARM7_CYCLE EQU 96H
ALARM8_CYCLE EQU 97H
4.1.2 20H~2FH位寄存器地址分配
在片内寄存器低128B根据不同的寻址方式又分为00H~FH为工作寄存器区,20H~2FH为位寻址区,燃气报警器进行位操作的数据存到20H~2FH位寄存器区,分配见表2。
表2 20H~2FH位寄存器分配
汇编语言定义如下:
;某位位寄存器定义
ALARM_ON EQU 20H
A0ON BIT ALARM_ON_F.0
A1ON BIT ALARM_ON_F.1
A2ON BIT ALARM_ON_F.2
A3ON BIT ALARM_ON_F.3
A4ON BIT ALARM_ON_F.4
A5ON BIT ALARM_ON_F.5
A6ON BIT ALARM_ON_F.6
A7ON BIT ALARM_ON_F.7
4.1.3 30H~7FH通用寄存器地址分配
通用寄存器在燃气报警器中定义见表3。
表3 30H~7FH通用寄存器分配
4.2 燃气报警器程序存储器的分配
整个程序存储器分为片内和片外两部分,寻址范围分别为64 KB,燃气报警器只用到了片内程序存储器。程序存储器中除了存储运行程序之外还将常用表格固化到程序存储器中[4]。
4.3 燃气报警器存储空间的扩展
电可擦除可编程的只读存储器E2PROM 24C16(ELECTRICALLY ERASABLE PROGRAMMABLE READ-ONLY MEMORY)具有如下特点:在线改写数据和自动擦除功能;断电时,数据不会丢失;输入输出口与TTL兼容;片内编程电压发生器,可以产生擦除和写入操作时所需的电压;片内控制和定时发生器可控制擦除和写入操作;具有整体编程允许和截止功能,以增强数据的保护能力;具有二线串行接口,可以在I2C上做从器件使用[5]。
5 结束语
燃气报警器数据采集监控系统采用AT89C52设计,通过项目更好理解燃气报警器存储分配的原理和开发过程。基于单片机设计的燃气报警器,在面向控制方面,具有功能完善、稳定可靠、体积小、价格低廉等优点,被楼宇和住宅等地方采用,已达到良好的效果。