金沙js5线路(中国)有限公司

技术热线: 4007-888-234

PC和多单片机通信的一种方法

更新时间: 2019-03-26
阅读量:1955

单片机应用简单灵活,使用非常广泛,但存在无法实时保存大量的数据、实时更新数据等缺点,因此经常需要把单片机和PC机的优势相结合组成系统。本文以卡式电话管理系统(非通用型电话系统)为例,从硬件和软件两方面分析PC和单片机之间的通信方法和注意事项,并给出相关系统的结构框图。
  现在的卡式电话系统一般都采用单片机实现读卡、计费等功能,但单片机操作相对固定,无法根据外界条件变化作出相应改变。比如当计费的单价发生变化时,必须重新更新整个计费程序,再烧录到每个单片机中,这就使得维护非常复杂。如果把这些经常改变的量写入到一个类似服务器的PC机中,单片机只要到PC中读取相应的数据,就可以实现数据更新了。实现此功能,要解决PC和多个单片机之间的连接,以及协调PC和多个单片机之间的通信,使之不出现冲突。
  PC和单片机之间的连接方式有多种,如利用微机的串口、并口或通过专门的I/O板进行数据传送,单片机通过共享通道的方法挂在上述总线上。附表列出以上三种连接方式的特点。

应用时应根据实际需要进行选择。在我们的卡式电话系统中,通信数据量很小、传输距离很近,因此选择了串口通信方式。
  由于每个单片机都是通过串口线和PC连接的,也就是说其总线是共享的,必须避免冲突。其方法有:各单片机通过中断向PC申请数据总线、PC轮询各单片机、单片机进行数据总线检测等。单片机通过中断向PC申请数据总线的方式可以实现实时的通信,但控制比较复杂,同时需要PC具有中断排队的能力,并且要求很多的中断线,因此只适合一台PC带少量的单片机的情况。PC轮询单片机则相对简单,成本也很低,不过实时性较差,握手时延很长。第三种方法若要完全避免冲突则非常复杂。
  在卡式电话系统中,我们采用了由PC机轮询方式,在轮询时采用PC中断单片机的方法。这是第一、二种方法的折衷。由于中断线是共享的,还为每个单片机设定了地址码。
  卡式电话系统的硬件系统框图如图1所示。此系统共需要4根信号线,即收、发、地和中断线,收、发和地可以从串口中找到相应的线,而中断线采用串口中的RTS信号,可以直接编程。
  软件工作流程是:PC先发送一个中断信号,使所有的单片机转入中断程序,然后发送一个地址码,各单片机读此地址码以后和自己的实际地址相比较,若相同,则转入相应的动作,比如读取单价或上报本机信息等,否则从中断程序中跳出。软件需要解决的是设定PC串口的工作方式,包括串口的通讯速率、奇偶校验位、停止位等。经测试,此系统可以在288kbit/s速率下稳定工作,比较理想。在此工作速率下,一台PC可以带64台单片机。图2为通信程序流程图。


XML 地图