摘 要:提出了一种利用大容量FLASH存储器存放楼层地址信息的汉字火灾楼层显示器。该设备通过解析火警控制器从CAN总线上发送来的火警信息,在汉字液晶上动态实时地显示火警发生地点和报警类型。详细介绍了火灾报警系统中楼层显示器的软硬件组成。
关键词:火灾报警;CAN总线;楼层显示器;FLASH;汉字液晶
Abstract: A Chinese fire indicator which used a large-capacity FLASH for floor address information is proposed. This device analyses information from fire alarm controller through CAN Bus, and displays occurent fire addresses and alarm types on Chinese LCD module dynamically and in real time. The software and hardware architecture of fire indicator is introduced in detail.
Keywords: Fire alarm; CAN Bus; Fire indicator; FLASH; Chinese LCD
1 引言
火灾楼层显示器作为火灾自动报警系统的重要组成部分,是一种安装在楼层或独立防火区中的数字式火灾报警显示装置。它通过报警总线与火灾报警控制器相连,处理并显示报警总线上的数据。火灾楼层显示器中的内置单片机将接收到的总线信息进行判断、分析和处理,将报警的探测器地址编号转换成相应的火警地点信息(例如房间号和房间类型等),连同火警类型一道通过液晶显示出来,同时发出声光报警信号,通知失火区域的人员。
目前国内现有的火灾楼层显示器大都以51单片机作为MCU。因为ROM寻址空间所限,火灾楼层显示器大都只能显示火警所在楼层号和地址号,无法以直观的汉字信息提示情况各异的具体火警地点。如果将汉字信息通过总线分发到各个楼层显示器,巨大的通讯量又会给火警系统总线带来沉重负荷,导致整个火警系统效率低下,延误火警上报时机。本文提出了一种基于CAN总线的大容量汉字火灾楼层显示器,很好的解决了上述问题。
2 火灾报警系统总体功能描述
火灾报警控制系统中,中央火警控制器通过CAN总线和各个单元进行实时通讯并完成各项控制和报警功能。单元是火灾探测器、手动报警按钮、输入输出模块、楼层显示器等设备的总称。它们是系统终端,直接探测火灾信号,并通过通道上报给控制器,同时接收由各种通道转发控制器给单元的联动信息(启动输入输出模块控制的灭火装置)、显示信息(楼层显示器显示火灾信息)等。通道是回路模块、转接模块和总线控制盘等设备的总称。它们是控制设备和终端的通道,是拓扑网络构成的中继设备。火灾报警控制系统的总体结构和楼层显示器在系统的中的位置如图1所示。
3 系统功能及硬件描述
3.1 汉字楼层显示器硬件设计方案
如图2所示,汉字楼层显示器包括单片机及其外围电路,CAN总线模块, FLASH存储器,汉字液晶模块,UART接口,以及灯和按键,蜂鸣器。单片机可通过UART接收PC上传下来的汉字信息,存储到FLASH中作为地址信息的查询数据库。通过CAN控制器MCP2510和CAN总线驱动器PCA82C250组成的CAN通信模块和火灾报警控制器进行CAN总线通信。如果有火警发生,单片机将记录火警信息,查询FLASH得到火警发生的汉字地址信息,并在汉字液晶上滚动显示火警和信息查询结果。同时,发生火警时还可通过查询键快速查询火警信息,通过蜂鸣器报警,通过消音键消音,并点亮发光二极管报警。未发生火警时,通过自检键自检可以检查各个功能是否能正常工作。
3.2 FLASH存储器电路设计
FLASH选用的SST29SF040是SST公司推出的高速可编程闪存。它符合JEDEC标准,具有512K×8 Bits的存储结构;芯片擦除及写入的时间快,整片擦除只需70毫秒,段擦除只需18毫秒,字编程写入时间仅为14微秒;可靠性高,能够重复写100,000次,数据可以保存100年不丢失。
SST29SF040的容量是512K Bytes,而51系列单片机的ROM直接寻址范围是64K Bytes,如果不加以处理而直接使用,将会浪费大量的存储空间。我们使用了一种分页存储方式,使得FLASH存储空间得以充分利用,大大扩充了单片机ROM寻址范围。按照每条汉字信息占用32个Bytes计算,理论上可以{zd0}存储16384条火警地址信息,足以应付绝大多数复杂的工程环境。图3为存储器电路,{zg}位地址线A16-A18接单片机的P1.0-P1.2,因而FLASH存储器实现了8页,每页64K的外部存储结构。在每次读写FLASH时,将P1.0-P1.2赋不同的值即可实现不同的页选。假设page为待选取的页号变量(0-7),在Keil Cx51中通过下列语句即可实现读写前的选页操作:P1 = (P1 & 0xf8) | page;
3.3汉字液晶显示模块设计
我们选用金鹏电子公司的OJM2*8A汉字液晶模块作为显示设备。OJM2*8A中文液晶显示模块内含GB 2312的15*15点阵国标一、二级简体汉字和 8*8点阵及8*16点阵ASCII字符,用户输入GB2312区位码或ASCII码即可实现文本显示。每个汉字的区位码只占用两个字节,是原来汉字点阵所需存储单元的1/16。
汉字液晶模块接口协议为请求/应答(REQ/BUSY)握手方式。应答BUSY高电平(BUSY =1)表示液晶模块忙于内部处理,不能接收用户命令;BUSY低电平(BUSY =0)表示液晶模块空闲,等待接收用户命令。发送命令到液晶模块可在BUSY =0后的任意时刻开始,先把用户命令的当前字节放到数据线上,接着发高电平REQ信号(REQ =1)通知液晶模块处理当前数据线上的命令或数据。液晶模块在收到外部REQ高电平信号后立即读取数据线上的命令或数据,同时将应答线BUSY 变为高电平,表明模块已收到数据并正在忙于对此数据的内部处理。此时用户对模块的写操作已经完成,用户可以撤消数据线上的信号并可作模块显示以外的其他工作,也可不断地查询应答线BUSY是否为低(BUSY=0 ?),如果BUSY=0,表明模块对用户的写操作已经执行完毕,可以再送下一个数据。如向模块发出一个完整的显示汉字的命令,包括坐标及汉字代码在内共需5个字节。模块在接收到{zh1}一个字节后才开始执行整个命令的内部操作,因此{zh1}一个字节的应答BUSY 高电平(BUSY =1)持续时间较长。对液晶模块写汉字时序图如图4所示。
3.4 CAN总线通讯模块设计
我们选择Microchip公司的MCP2510CAN控制器和Philips公司的PCA82C250CAN收发器构建CAN总线通讯模块。MCP2510支持CAN2.0A/B协议,可接收和发送2.0协议下的标准帧、扩展帧和远程帧。MCP2510拥有三个发送缓冲区和两个接收缓冲区,可以进行接收滤波和消息管理,防止过度发送和过度接收形成拥塞。其{zd0}的优点是拥有传输速率可达5Mb/S的SPI端口,节省MCU端口,提高通信速度。Philips公司的82C250CAN总线收发器可与MPC2510无缝连接,它有高速模式,斜率控制模式和延时模式。经过多次的实验证实其工作在斜率控制模式下最为稳定,速度也能构满足系统10Kbps的传输速率。
CAN总线通讯模块电路如图5所示,单片机通过I/O口直接和MCP2510的SPI口相连,用软件模拟实现SPI接口协议。PCA82C250作为MCP2510与物理CAN总线的接口。如果需要进一步提高系统的抗干扰能力,可在MCP2510和PCA82C250之间加一个光电隔离器。
4 系统软件设计
汉字楼层显示器软件功能主要是1.将串口发送下来的汉字信息文件写入FLASH存储。2.和火灾报警控制器进行CAN通信,如果发现有火警信息,则查找FLASH中的汉字地址信息,予以显示在汉字液晶上报警,如有多条火警信息,则滚动显示各条信息。
图6是汉字楼层显示器软件流程图。用page(值为0-7)表示读写的FLASH页,用count(值为0-65535)表示每页页内地址。其中page0-page6用来存储通过串口下载的汉字信息,page7用来存储接收到的火警等动态信息。一旦接收到新火警,即查询FLASH中相应的汉字信息,并在液晶上滚动显示。
为了快速定位所查询的火警汉字地址信息,我们采用数组结构存储。尽管这样会因为实际火警地址不等长,而造成存储中出现一些空地址,存储效率不高,但是由于我们对数组的查找是一种可以直接定位的快速查找,不用采用链表之类的复杂数据结构,也避免了二分检索之类复杂的搜索算法。对于单片机而言,实质上是以比较小的空间为代价换来了比较高的时间效率,还是十分值得的。
5 结语
本文提出的基于CAN总线的大容量汉字火灾楼层显示器,较好的解决了现有火灾楼层显示器的缺陷。对大于51单片机ROM 64K寻址空间的数据存储需求,采取分页存储的访问方式可以很好的解决这个问题。通过在FLASH中存储大容量数据信息,可以避免因为CAN总线上通讯数据流量过大而导致火警不能及时传达,延误报警时机。而且FLASH中的汉字信息可以通过串口在线擦写,便于现场调试。目前产品已经投入实用,用户反应运行良好。
参考文献
[1] 朱明,王殊. 一种基于CAN总线的大型火灾报警系统下位网络的设计与实现. 消防技术与产品信息,2003,(12):5~8
[2] 王立峰,王晓平,耿庆波,彭熙伟. 基于CAN总线的客房通信控制器的设计.微计算机信息,2005,(16):3~7
[3] 徐爱钧,彭秀华编著. Keil Cx51 V7.0单片机高级语言编程与uVision2应用实践. 电子工业出版社,2004