• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

单片机通信模块和PC机通信模块分析

      PC机和多个单片机也可以组成多级控制系统,一般以PC机为后级,多个单片机最小系统为前级。其通信一般由两个独立的模块组成,即单片机通信模块和PC机通信模块。


  51单片机内串行口部分有两个物理上相互独立的数据缓冲器SBUF,但两个缓冲器的地址是一个(99H)。该缓冲器用来发送和接收数据。专用寄存器SCON和PCON控制串行口的工作方式和通信的波特率设定。定时器作为波特率发生器。CPU和SBUF写数据即是发送数据,CPU从SBUF读数据就是接收数据。


  RB8:在方式2和方式3时接收数据的第9位;在方式1时,若SM2=0,则RB8为接收到数据的停止位。


  TI和RI:发送和接收中断标志,表示是否已发送完或接收到数据,由硬件置位,软件清O。因为PC机的RS - 232接口是由8250芯片控制的,所以一般PC/XT和PC/AT机用RS - 232与其他设备通信时所使用的是8位数据位(可少于8位数据),由此决定单片机必须设置方式1。


  工作方式1:当SMO和SM1一0时,串行接口被选择为工作方式1,此时为可变波特率的8位异步通信方式。


  发送数据以TxD端输出,每帧信息为10位:一位起始标志位0、8位数据位和一位停止位1。发送时数据先送到缓冲器SBUF,然后启动发送。数据发送完后,将中断标志TI置1。


  接收时(BEN-1),数据从RxD输入,当采样到第一个1到O的下跳沿时,启动接收器;确认起始位后,接收一帧信息;当RI=O,停止位为1或SM2 =0时,停止位进入RB8,中断标志位RI置1,接收了一帧数据。


  波特率的设定 单片机定时器作为波特率发生器。为此定时器1须是工作方式2,即自动重装载模式。TL1作为8位计数器,TH1作为常数缓冲器。当TL1计数溢出时,将TH1中常数送到TLO中,使TL1再次从初值开始重新计数。定时器1产生固定频率占空比是1:1的脉冲,波特率可由设定时间常数确定。


  通信所用线是一般双绞电源线 m以内。如果通信距离比较远,则须考虑用光电隔离或电流环来驱动,这时距离可达1000 m。波特率为300时问题不大,通信是可靠的,对通信线也无特殊要求。


  PC/XT机RS - 232接口输入/输出使用MC1488和MC1489。用9013和9012两只晶体管把RS - 232的标准电平-12 V表示1, 12 V表示0,转变成0~5 V的电平,以便和单片机最小系统中8031进行连接。D是发光二极管,PC机和单片机通信时,D有明暗变化,表示正在传送数据。这种电路是准RS - 232接口电路。


  接收模块接收串行口上的数据,送到累加器ACC中。是返回DOS。先选择1,把ABC. OBJ文件传到开发机(或最小系统)的以2100H开始的地址处。PC机传送完ABC. OBJ后,又返回到(1~3)通信的提示状态。这时选择2,即把单片机的外存RAM中2100H处的16个(十进制数)字节内容传回PC机,并形成另一个文件,文件名是ABCI. OBJ。最后再返回DOS,这时用DOS的TYPE命令分别显示ABC. OBJ和ABCLOBJ两个文件的内容,从而比较是否一致,以便证明通信过程是否正常。


  如果通信不在开发机上进行,只须把单片机的通信程序写入EPROM中,并通过按键或启动复位执行通信程序。其他步骤同上,即可完成相应通信。


  这个PC机和单片机的通信模块应用是很广的。如果再增加一些控制命令,将是一个很好的控制系统。KDC -型开发机的在线仿真机通信程序就是在此基础上扩充的。


来源:网络,如侵,删

全部回复(1)
正序查看
倒序查看
lingyan
LV.8
2
2018-12-05 07:52
学习了
0
回复