AT89S51单片机全地形八足机器人机械手的设计(14)
时间:2017-01-17 19:45 来源:毕业论文 作者:毕业论文 点击:次
图4.4 自动运行时,上位机界面显示 手动控制时,只需在“设定圈数”和“电机转向”中设置各电机的相应控制命令。 4.2 下位机软件设计 下位机软件主要由C语言编程,下位机主要功能是通过串口接收上位机传来的控制命令,根据命令执行相应的程序控制步进电机运行,使机械手按照操作者意愿到达指定位置。 4.2.1 下位机串口通讯模块 1.AT89S51串行口结构[19] 下位机串口通讯主要是通过对串行控制寄存器SCON 和电源控制寄存器PCON 的设置来实现的,SCON 是一个可位寻址的特殊功能寄存器,通过设置SCON 的SM0 和SM1 ,可以使单片机有四种不同的工作方式。SCON和PCON各位定义如表4.1: 位地址 9F 9E 9D 9C 9B 9A 99 98 SCON SM0 SM1 SM2 REN SM0 TB8 TI RI (a)SCON各位定义 位地址 8E 8D 8C 8B 8A 89 88 87 PCON SMOD … … … GF1 GF0 PD IDL (b)PCON各位定义 表4.1 SCON和PCON各位定义 (1)SCON常用位定义: SM0和SM1:为串行口方式控制位,用于设定串行口工作方式,在用于和PC机实现串行通信时,一般设置为方式1或方式3,主要区别是方式1的数据格式为8位,只用于双机通信;方式3的数据格式为9位,其中第9位SM2为多机通信位,可实现单片机的多点通信,即既适用于双机通信,又适用于多机通信。 SM2:为多机通信控制位,在方式1下,SM2应设置为0,此时RI只有在接收电路接收到停止位“1”时才被激活成“1”,并能自动发出串行口中断请求。 TI:为发送中断标志位,用于指示一帧数据发送完否。在方式0下,发送电路发送完第8位数据时,TI由硬件置位;在其他方式下,TI在发送电路开始发送停止位时置位。这就是说:TI在发送前必须由软件复位,发送完一帧后由硬件置位。因此,CPU查询TI状态便可知晓一帧信息是否已发送完毕。 RI:为接收中断标志位,用于指示一帧信息是否接收完。在方式1下,RI在接收电路接收到第8位数据时由硬件置位;在其他方式下,RI是在接收电路接收到停止位的中间位置时置位的。RI也可供CPU查询,以决定CPU是否需要从“SBUF(接收)”中提取接收到的字符或数据。RI也由软件复位。 (2)PCON常用位的定义 SMOD:为波特率选择位。在方式1、方式2和方式3时,串行通信波特率与2SMOD成正比。即:当SMOD=1时,通信波特率可以提高一倍。PCON中的其余各位用于51单片机的电源控制。 2.串行口的工作方式 51单片机有方式0、方式1、方式2和方式3等4种工作方式。如表4.2所示: 工作方式 说明 所用波特率 方式0 同步移位寄存器 f/2 方式1 10位异步收发 由定时器控制 方式2 11位异步收发 f/32或f/64 方式3 11位异步收发 由定时器控制 表4.2 AT89S51串口工作方式 本设计主要采用串口方式1,下面简单介绍一下方式1数据收发原理,在方式1下,串行口设定为10位异步通信方式。字符帧中除8位数据位外,还可有1位起始位和1位停止位。发送操作也在TI=0时开始,然后发送电路就自动在8位发送字符前后分别添加1位起始位和停止位,并在移位脉冲作用下在TXD线上依次发送一帧信息,发送完后自动文持TXD线为高电平。TI也由硬件在发送停止位时置位,并由软件将它复位。接收操作在RI=0和REN=1条件下进行,平常,接收电路对高电平的RXD线采样,采样脉冲频率是接收时钟的16倍。当接收电路连续8次采样到RXD线为低电平时,相应检测器便可确认RXD线上有了起始位。此后,接收电路就改为对第7、8、9三个脉冲采样到的值进行检测,并以三中取二原则来确定所采样数据的值。在接收到第9数据位(即停止位)时,接收电路必须同时满足以下两个条件:RI=0和SM2=0或接收到的停止位为“1”,才能把接收到的8位字符存入SBUF(接收)中,把停止位送入RB8中,并使RI=1和发出串行口中断请求(若中断开放)。若上述条件不满足,则这次收到的数据就被舍去,不装入SBUF(接收)中。这是不能允许的,因为这意着丢失了一组接收数据。 (责任编辑:qin) |