某型楼层显示器的软硬件设计_第1页
某型楼层显示器的软硬件设计_第2页
某型楼层显示器的软硬件设计_第3页
某型楼层显示器的软硬件设计_第4页
某型楼层显示器的软硬件设计_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

1、    某型楼层显示器的软硬件设计    吕志龙摘要:从rs422串口发送的广播信息中截取有效信息,并以led指示火警信息。关键词:消防 楼层显示器 单片机一、功能要求及总体设计某型火灾主机预留有一个rs422a全双工异步串口,并开放通讯协议。通过该串口向外广播所有操作信息及探测器的故障、火警信息。本次设计的楼层显示器(以下简称“楼显”),即是为了从此广播信息中截取有效火警信息,并发出声光提示。楼显应具有以下功能:最多32台楼显通过rs422串口与火警主机组成主从式网络。在楼显群中唯一指定一台与火警主机进行全双工通讯;其余楼显仅单工接收。采用异步通讯方式

2、,波特率可调。采用一个8位二进制拨码开关:其低五位设定网络地址,第六、第七位设定波特率,第八位设定单/双工通讯方式。楼显应能根据内置的工程数据,从广播信息中自行截取本楼层的火警信息。楼显应有监视、报警等不同状态及相应指示。报警状态优先显示。报警状态应有声光提示,用户可消音;新发报警应能再次鸣响。楼显应能随火警主机同步复位。授权用户也可手动复位。楼显死机时应能自动重启。监视状态下可自检,自检结束后应自动回到监视状态。采用64个led显示火警位置。振荡频率选定为11.0592mhz。二、硬件设计1 主控及存储单元采用89c52作为cpu及程序存储器(片内rom),采用6264(容量8kb)作为片外

3、ram;采用w27c512(容量64kb)作为工程存储器(片外rom)。2 串口转换单元rs422与ttl采用一块max491芯片转换。在rs422端还设计有隔离保护电路。3 通讯设定单元(略)4 复位及看门狗单元正常运行时,cpu的p1.0位向max705的wdi端定时输出watch dog信号;当cpu死机或按下复位按钮后,max705的wdo端会向cpu的rst端输出一个复位脉冲信号。5 面板按键及状态指示单元面板上设计有电源、通讯、监视、预警、火警等状态指示led、蜂鸣器及自检、消音键,分别由cpu的p1.1p1.7位驱动。6 火警位置led驱动单元将64个火警位置led拆分成2块完全

4、相同的32个火警位置led驱动板,通过74hc688比较器的高6位对驱动板寻址,低2位经2/4线译码后对驱动板上的4组74hc373锁存器寻址。7 片选信号分配我们发现ram(6264,8kb)的地址线只有13根,cpu对拨码开关的总线收发器(74hc245)只执行读操作,对火警位置led驱动板执行写操作时不须输出地址。利用这个特性设计了一个特殊的译码电路,解决了片选线的不足。8 供电单元(略)三、软件设计1 选用27c512芯片存储工程数据,建议用户采用asm96语言按下述格式编写“cseg at(报警回路地址*510+报警设备地址*4+番号)*2 dcb楼显网络地址,报警位置led地址;”

5、,并编译、烧写。2 程序采用c51语言编写,模块化设计,由主函数及自检、清显示、串口中断、通讯信息分析、火警信息处理、火警信息显示等子函数组成,下面分别介绍:2.1 串口中断响应子函数serial程序对串口信息采用“中断”方式优先响应。在serial中,程序首先将接收缓冲器sbuf内的字符赋给局部变量recvbyte:如果recvbyte等于enq空闲呼号,则双工楼显回送ack握手信号;如果recvbyte等于nak错误标识,则双工楼显重发;如果recvbyte等于0xff或其它字符,则保存,以待进一步处理。火警主机的复位信息及探测器的火警信息将被保存在全局二维字符数组recvcharrecv

6、countrecvindex中。字符序号计数器recvindex随着当前信息组中已接收字符的增多而不断自增,当7个字符全部接收后回零。信息组计数器recvcount随着有效信息组的增多而不断自增。至此,serial结束,闪烁一次通讯状态指示led后,程序返回原中断点。2.2 信息分析子函数analyse如果接收的是复位指令,则程序同步复位至监视状态。如是火警信息且在本楼显的范围,则调用alarmprocs进一步处理。如是其它信息,则放弃。2.3 火警信息处理子函数alarmprocs程序中定义了一个全局字符数组变量alarmpostalarmcount作为火警位置led的状态表,表征着各个火警

7、位置led所对应的探测器的火警状态(1火警;0正常)。全局字符变量alarmcount作为火警计数器,累计本楼显的火警总数,最大值64。初始化时,该两变量全部清零。当analyse调用alarmprocs后,程序首先根据外置rom中的对照表来修改alarmpost64的状态值,然后根据状态值的变化驱动面板指示led及蜂鸣器,并调用scanalarm刷新显示。2.4 火警位置led显示子函数scanalarmscanalarm首先根据alarmpost64来计算8个火警位置led显示数组alarmgroup8的值,再逐组输出。2.5 主函数main程序上电后,自动执行主函数main,首先初始化,

8、读入拨码开关的设置值并对本机网络地址netaddr、波特率baudrate、单/双工通讯answer赋值,启动相关定时器,置楼显初始状态为监视monite等,最后进入无限主循环语句while(1)。每次循环,程序都要检查是否有已接收待分析的信息。为此,程序定义了两个全局变量:已接收信息组计数器recvcount、已处理信息组计数器procscount。初始化阶段,该两变量全部清零。如果recvcount和procscount均不为0,且recvcount大于procscount,表明有已接收未分析处理的信息,则程序将调用analyse进行分析处理。在analyse中,按照“先接收,先处理”的原

9、则,程序提取最早接收到的一组信息recvcharprocscount0 recvcharprocscount6进行分析处理。每处理完一组信息后,程序即返回主函数的原调用点,并将procscount增1。如果此时recvcount等于procscount,表明接收信息已全部被分析处理,则程序将recvcount和procscount全部清零,随后接收到的信息组将覆盖recvchar00recvchar06。每次循环,程序还要查询一次自检键和消音键。如果监视状态下按下了自检键,则转入自检状态;如果自检结束,或自检状态下再次按下了自检键,或自检状态下发生了报警,则返回监视状态。报警状态下,按自检键不予响应。如果按下了消音键,则停止蜂鸣器的鸣动。每隔500ms,程序还将执行一次“喂狗”指令。如此,则完成了一次循环。2.6 自检子函数selfcheck(略)2.7 关于定时器在程序中设置了一个硬件定时器t0(50ms)作为基础定时器,并设置了若干定时计数器变量作为软定时器。每当基础定时器溢出时,各定时计数器增1;当各定时计数器值达到其设定值时,则视为其

温馨提示

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

评论

0/150

提交评论