基于AT89C2051的串口扩展器设计
2013-10-11 来源:eefocus
0 引言
银行交易操作中柜员使用的终端要分别和银行数据库、磁卡读写机、密码小键盘、打印机等联络,数据通信往往使用串行口。终端要连接得设备很多,串行口往往不够用。有了串口扩展器,就能很好解决这个问题,如图 1 所示,本文介绍以 ATMEL89C2051 为 MCU 的串行扩展器的设计思路、硬件结构和部分程序模块。
1 串口扩展器结构框图
串口扩展器由 8 位单片机 ATMEL89C2051、双 4 通道多路转换器 4052、双路电平转换器MAX232 和发光二极管等组成,结构框图如图 2 虚线框所示。
双 4 通道多路转换器 4052 有一对四电子开关,(XY,X0Y0~X3Y3)分别定义为 A 口、B口、C 口和 K 口,公共口(XY)连终端串口;ATMEL89C2051 监视终端发出的信息,一旦收到终端发出的串口选择命令,由 P10 和 P11 口连通对应串口并点亮发光二极管作指示;双路电平转换器 MAX232 将 TTL 电平转换成 RS232 电平,或反之;串口选择后,终端和对应设备就可通讯联络,进行工作。
2 串口选择命令
串口选择命令对用户公开,由表 1 所示。
终端可把串口选择命令和其它操作命令组合在一起发送,提高效率。例如柜员欲刷卡,磁卡读写机接在 B 口上,磁卡双道读命令字符串为“ESC B ]”。终端可连续发送“ESC % B ESCB ]”字符串命令,当 ATMEL89C2051 收到“ESC % B”信息时,(实际全部字符串都收到)立即接通 B 口,断开其它口,因为该操作速度非常快,接在 B 口上的磁卡读写机能即时收到“ESC B ]”命令字符串。如串行扩展器原先接 B 口,磁卡读写机收到“ESC % B”串口选择命令字符串后会将它滤掉。
注:命令字符串中无空格的,这里为说明而用。
3 系统软件设计
出于程序运行效率和简化考虑,整个程序分为初始化、串行接收中断服务程序和串口选择三个模块,其实现的编程软件可用 C51 或ASM 等语言编写,程序框图如图 3 所示。
3.1 初始化模块
初始化模块设定串行接收中断模设、波特率,定义命令队列缓冲区地址及指针,确定 B 口为默认选择口。
3.2 串行接收中断服务程序
串行接收中断服务程序仅接收终端发出的命令字符串,采用循环队列方式,收到一个字符,修改命令队列缓冲区地址指针。
3.3 串口选择模块串口选择模块处理命令队列缓冲区中的信息,判断
是否有串口选择命令,如有作相应的处理;如无,则滤掉非串口选择命令等信息。
图3
4 结束语
串口扩展器采用侦听终端发出的信息,从中选出串口选择命令,进行相应操作。若遇到某些设备波特率不一致, 如磁卡机波特率为 9600,密码小键盘为 2400)可将 ATMEL89C2051作为中转站,CPU 以固定波特率(一般为 9600)与终端通信,遇到终端欲与密码小键盘通信,CPU 将收到的命令字符串以密码小键盘的波特率转发给密码小键盘,再将密码小键盘发来的数据以固定波特率返回给终端,这只需将硬件和软件稍作些修改即可。
本文作者创新点:研制开发串口扩展器的硬件和软件系统。硬件结构小巧灵拢、结构简单、使用单电源,成本低。软件系统程序短、速度快。解决了不同波特率设备连接。各端口使用DB25 或 DB9 的接插件实现 RS-232C 标准接口的连接。该系统在银行部门完全获得成功,并且得到较广泛的应用。