单片机最小系统与PC机的通信分析
扫描二维码
随时随地手机看文章
PC机和多个单片机也可以组成多级控制系统,一般以PC机为后级,多个单片机最小系统为前级。其通信一般由两个独立的模块组成,即单片机通信模块和PC机通信模块。
1.单片机通信模块的设计
51单片机内串行口部分有两个物理上相互独立的数据缓冲器SBUF,但两个缓冲器的地址是一个(99H)。该缓冲器用来发送和接收数据。专用寄存器SCON和PCON控制串行口的工作方式和通信的波特率设定。定时器作为波特率发生器。CPU和SBUF写数据即是发送数据,CPU从SBUF读数据就是接收数据。
单片机51串行口是全双工串行通信口。0串行口控制寄存器是SCON。
SMO和SMl:工作方式选择位,如表所列。
表中UART是异步串行通信。
SM2:允许方式2和方式3多机通信。
REN:允许串行接收。
TB8:在方式2和方式3时是发送数据的第9位。
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的脉冲,波特率可由设定时间常数确定。
式中:fosc是主振荡频率,选用6 MHz。
当波特率为1 200时,TH1=TLl=OF3H。
通信所用线是一般双绞电源线。通信距离一般在30 m以内。如果通信距离比较远,则须考虑用光电隔离或电流环来驱动,这时距离可达1000 m。波特率为300时问题不大,通信是可靠的,对通信线也无特殊要求。
2.PC/XT机通信模块
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接口电路。
单片机通信模块包含3个子模块:
●初始化模块置定时器1的工作方式,置计数初值,定义波特率,定义串行口的工作模式等。
●发送模块将累加器ACC中的内容发送到串行口。
●接收模块接收串行口上的数据,送到累加器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 -Ⅲ型开发机的在线仿真机通信程序就是在此基础上扩充的。