PC机与多MCS-51单片机间的串行通信设计?

【摘 要】 主要讲解了ibm-pc机与mcs-51单片机多机系统的通信原理,给出了其硬件接口框图,并详细地分析了系统的多机通信软件设计。
关键词:单片机,分布式系统,串行通信
1 引 言
在测控系统和工程应用中,常遇到多项任务需同时执行的情况,因而主从式多机分布式系统成为现代工业广泛应用的模式。它们大多由ibm-pc微机和mcs-51单片机组成。单片机功能强、体积小、价格低廉、开发应用方便,尤其具有全双工串行通讯的特点,在工业控制、数据采集、智能仪器仪表、家用电器方面都有广泛的应用。同时,ibm-pc机正好补充单片机人机对话和外围设备薄弱的缺陷。各单片机独立完成数据采集处理和控制任务,同时通过通信接口将数据传给pc机,pc机将这些数据进行处理、显示或打印,把各种控制命令传给单片机,以实现集中管理和最优控制。
故ibm-pc机(上位机)与各mcs-51单片机(下位机)之间的通信显得尤其重要。本文主要探讨它们之间的远距离串行通信接口和软件程序设计。
2 硬件设计接口
rs-232-c串行通信接口是美国电气工业协会(eia)与bell公司等一起开发的一种标准通信协议,现在它在终端、外设与计算机中被广泛采用。该标准规定了21个信号和25个引脚,但在智能仪器与计算机之间的通信中常用2个信号及3个引脚(2脚数据输入,3脚数据输出,7脚信号地)。它采用双极性的负逻辑信号,0逻辑信号为+3v至12v,1逻辑信号为-3v至-12v,它的传输速率最大为20kbit/s,传输距离仅为15m。由于rs-232主要是完成电平移位、转换和信号反相等,所以它有自己的电平转换与驱动芯片,如mc1488(发送)与mc1489(接受)。ibm-pc机有两个标准的rs-232串行口,其电平采用的是eia电平,而mcs-51单片机的串行通信是由txd(发送数据)和rxd(接收数据)来进行全双工通信的,它们的电平是ttl电平,为了pc机与mcs-51机之间能可靠地进行串行通信,需要用电平转换芯片。由于mc1488和mc1489需要±12v、+5v电源供电,故采用maxim公司生产的低功耗、单电源的max232芯片,因为它自身带有电源电压变换器,可以把+5v电源变换成rs-232输出电平所需的±10v电压,能实现rs-232的技术指标,并只需要+5v的电源,为串行通信带来了较好的性能和低廉的价格。max232的接口电路图如图2所示。
pc机采用可编程串行异步通信控制器8251a来实现,通过对ins8251a初始化可以控制串行数据传送格式和速度及其工作方式,使得它与单片机的通信方式一致,从而实现pc机与单片机之间的通信。mcs-51和8251a的连接图见图3。
由于远距离数据传输,在系统中用了两片max485芯片进行数据传送,还采用了两级光电隔离来提高系统的抗干扰能力。单片机和pc机之间的rs-232通信硬件接口电路框图如图4所示。
3 串行通信的软件程序设计
3.1 主从式多机通信原理
mcs-51用于多机通信时必须工作在方式2或方式3。以方式3为例,每发送一帧数据为11位:1位起始位(0),8位数据位和1位停止位(1),附加的第9位数据在非多机系统中为奇偶校验位,在发送端有scon的tb8产生,在接收端传送到scon的rb8。它还可设定为“0”或“1”作为在多机通信中区分数据帧(0标志)还是地址帧(1标志)的标志。在mcs-51多机系统中有以下协议:所有的各从机均处于听命状态,即sm2=1,以便接收主机发来的地址,当接收到一帧信息的rb8为“1”时,表示主机发送来的是地址信息,所有的从机均发生接收中断,否则中断屏蔽。当一从机进入相应的中断服务程序,把接收到的地址和本机的地址比较,如果相符合就令其sm2=0,并向主机发回本机地址以作应答,该从机就与主机联通,准备接收主机发来的命令或数据信息,而其他的未被寻址从机保持sm2=1并退出各自的中断服务程序。这样,只有sm2=0的从机才能接收到主机发送来的数据信息,顺利实现地址帧和数据帧的分离。被寻址从机在通信完成后重新使sm2=1,并退出中断服务程序,等待下次通信。
3.2 多机通信协议
要实现单片机和pc机的正常通信,必须正确设定它们两者之间的通信方式,保证双方都用相同的波特率、起始位、停止位、奇偶校验位,并且要建立双方通信的应答信号。
单片机既可工作在同步移位寄存器方式下也可工作在uart(通用异步收发器)下。串行口的通信方式是由特殊功能寄存器scon来控制的。其各控制定义如下:
sm0,sm1:工作模式设定位;sm2:允许使用方法2、3多机通信控制位;rb8:接收数据第9位;tb8:发送数据第9位;ti:发送中断标志;ri:接收中断标志。本文中工作方式为3,即9位uart定时器t1作为波特率发生器,工作在方式2,若选定波特率为1200bps,则计数初值为0e8h(smod=0,时钟频率fosc为11.059mhz)。
pc机的异步通信接口为intel8251a,它可设定1位、1.5位或2位停止位,数据可在5~8位之间选择,通信频率为0~9.6kbps,有奇偶校验、帧校验、溢出校验三种方式。可通过对它写入一定的方式控制字、命令控制字从而进行初始化。它与mcs-51的连接如前面所示,则它的数据口地址为0f0h,控制口地址为0f1h。它的工作状态寄存于其状态字寄存器中,可由mcs-51的cpu读取。通信协议如下:(1)串行通信波特率为1200bps;(2)帧格式为8位数据位,一位起始位,一位可编程的第9位(即发送和接收的地址/数据位的标志位),一位停止位;(3)主机和从机遵循主从原则,主机用呼叫方式选择从机,数据在主机和从机之间双向传递,各从机之间的相互通信需通过主机作为中介;(4)主从机之间还应传送一些供它们识别的命令和状态字,如以00h表示主机发送从机接收命令,以01h表示从机发送主机接收命令等。
3.3 通信程序设计思路及其实现
程序主要包括主机程序(由主机主程序和通信子程序组成)、从机主程序和其中断服务程序组成。主机程序主要完成对8251a的初始化以及主机与从机之间的通信,主机程序框图见图5。而从机主程序主要完成对串行口的初始化、波特率的设置(应与8251a的波特率一致),它的中断程序主要用来完成mcs-51单片机与pc机的数据通信。从机中断服务程序框图见图6。
这里简单介绍8251a的初始化程序,设8251a工作于异步通信方式,波特率系数×1,字符长度为8位,偶校验,所以方式字为7dh,又设8251a为全双工方式,出错标志复位,故其命令控制字为27h,其相应的初始化程序如下:
mov r0,#0f0h
4 结束语
本系统软硬件在ibm pc/xt机和dice系列的mcs-51单片机上进行过调试,运行良好,验证了其在 仿真平台的控制,现已用于实际系统,且特别适用于从机实时性要求较高的中小型工控系统。
参考文献
1 何立民.单片机应用文集(2).北京:北京航空航天大学出版社,1993
2 何立民.单片机高级教程.北京:北京航空航天大学出版社,2000
3 胡汉才.单片机原理及其接口技术.北京:清华大学出版社,1996
4 陈荣保,肖本贤,李钢.基于modem和单片机的远程通讯系统设计与实现.微电子学与计算机,1999(1)5 何飞跃。基于mcs-51单片机的lcu与上位机的通信.微计算机信息,1999(1)

开关电源谐波电流的危害
关于示波器和频谱分析仪的不同之处
未来几年手机芯片的格局或被重塑?
国内巨头双摄业务纷纷看涨,也为新思考缔造强大扩产阵容带来动力
谷歌对糟糕的应用程序进行了严厉打击
PC机与多MCS-51单片机间的串行通信设计?
三星S21系列的详细参数与售价曝光
湖南益阳市4个电子电路重大项目集中开工
普渡大学与格芯合作,加强研发和半导体教育
关于配电箱安装的注意事项
在洗衣机下装个底座 有以下这些优点
四大数字化能力,助力浪潮GS Cloud 3.0成就智慧企业
公式+案例,轻松搞懂差分放大电路
java微服务架构有哪些
自动驾驶汽车传感器市场分析详解
小雅NanoAI音箱高清图赏
浅谈DSSHA1可综合SHA-1协处理器
TCL么么哒3N拆解 手机内部做工如何
信息发展与腾讯云牵手 共推云计算市场发展
基于TMS320C6711B DSP的中心定位算法设计