基于CAN总线的大容量汉字火灾楼层显示器设计
汉字液晶模块接口协议为请求/应答(REQ/BUSY)握手方式。应答BUSY高电平(BUSY =1)表示液晶模块忙于内部处理,不能接收用户命令;BUSY低电平(BUSY =0)表示液晶模块空闲,等待接收用户命令。发送命令到液晶模块可在BUSY =0后的任意时刻开始,先把用户命令的当前字节放到数据线上,接着发高电平REQ信号(REQ =1)通知液晶模块处理当前数据线上的命令或数据。液晶模块在收到外部REQ高电平信号后立即读取数据线上的命令或数据,同时将应答线BUSY 变为高电平,表明模块已收到数据并正在忙于对此数据的内部处理。此时用户对模块的写操作已经完成,用户可以撤消数据线上的信号并可作模块显示以外的其他工作,也可不断地查询应答线BUSY是否为低(BUSY=0 ?),如果BUSY=0,表明模块对用户的写操作已经执行完毕,可以再送下一个数据。如向模块发出一个完整的显示汉字的命令,包括坐标及汉字代码在内共需5个字节。模块在接收到最后一个字节后才开始执行整个命令的内部操作,因此最后一个字节的应答BUSY 高电平(BUSY =1)持续时间较长。对液晶模块写汉字时序图如图4所示。
图4 对液晶模块写汉字时序图
3.4 CAN总线通讯模块设计
我们选择Microchip公司的MCP2510CAN控制器和Philips公司的PCA82C250CAN收发器构建CAN总线通讯模块。 MCP2510支持CAN2.0A/B协议,可接收和发送2.0协议下的标准帧、扩展帧和远程帧。MCP2510拥有三个发送缓冲区和两个接收缓冲区,可以进行接收滤波和消息管理,防止过度发送和过度接收形成拥塞。其最大的优点是拥有传输速率可达5Mb/S的SPI端口,节省MCU端口,提高通信速度。 Philips公司的82C250CAN总线收发器可与MPC2510无缝连接,它有高速模式,斜率控制模式和延时模式。经过多次的实验证实其工作在斜率控制模式下最为稳定,速度也能构满足系统10Kbps的传输速率。
图5 CAN总线通信电路
CAN 总线通讯模块电路如图5所示,单片机通过I/O口直接和MCP2510的SPI口相连,用软件
4 系统软件设计
汉字楼层
图6 汉字楼层显示器软件流程图
图 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
评论