下位机通过串口中断接收上位机传来的控制命令,其程序如下:
com_interrupt(void) interrupt 4 using 3//接收
  {
    if(RI)
    RI=0;    //软件复位RI
    buffer[point]=SBUF;
    point++    ;
   }
3.下位机串行口波特率
串行口的通信波特率恰到好处地反映了串行传输数据的速率。通信波特率的选用,不仅和所选通信设备、传输距离和MODEM型号有关,还受传输线状况所制约。用户应根据实际需要加以正确选用。
本设计主要用串口方式1,下面简单介绍一下其波特率的产生和计算方法,方式1下串行口波特率是由定时器的溢出率决定的,本设计中主要用到了定时器T1。
波特率= x定时器T1溢出率
定时器T1溢出率=
       波特率= x
式中:K为定时器T1的位数,它和定时器T1的设定方式有关。即:
若定时T1为方式0,则K=13
若定时器T1为方式1,则K=16
若定时器T1为方式2或方式3,则K=8
其实,定时器T1通常采用方式2,因为定时器T1在方式2下工作,THl和TLl分别设定为两个8位重装计数器(当TLl从全“1”变为全“0”时,THl重装TLl)。这种方式,不仅可以使操作方便,也可避免因重装初值(时间常数初值)而带来的定时误差。由公式可知,方式1所选波特率常常可通过计算来确定初值。
下位机串口初始化程序如下:
/*****************初始化串行端口函数*********/
void UART_init()
  {
    SCON= 0x50;            //串口方式1 允许接收
    PCON=0;                //SMOD=0
    TMOD= 0x20;            //定时器1定时方式2
    TH1= 0xfd;             //11.0592M 9600波特率
    TL1= 0xfd;
    TR1= 1;                //启动定时器
    ES= 1;
    EA= 1;
  }
4.2.2 下位机步进电机程序实现
下位机接收到上位机的命令后就开始执行相关程序控制电机运行,单片机此时的任务就是产生一定频率的环形脉冲信号,这里主要用到了单片机的P0口、P1口、P2口、P3口,其中P0口控制腰部回转关节的步进电机,P1口控制肩关节的步进电机、P2口控制肘关节的步进电机,P3口控制手爪步进电机。
电机的转动方向是通过环形脉冲信号的变化顺序来实现的,本设计所用的步进电机为两相八拍型,其正反转环形脉冲为[20]
uchar code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};
uchar code REV[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};
电机的转动速度主要是通过控制环型脉冲信号的切换频率,电机每收到一个脉冲信号,就转动一个角度,通过控制脉冲频率可以使电机加减速,由于电机为两相八拍型,步进角为0.9,假如上位机要求电机速度为a步/S,则每个脉冲之间应该延时1/a秒,延时可以通过定时器实现,也可已通过延时函数实现,本设计中为了简化程序,直接调用延时函数(晶振11.0592MHZ),具体程序如下:
/*****************************延时1ms函数*******************/
    void delay(uint p)
{                           
上一篇:三通管拉制仪材料分配系数精确控制系统设计+PCB+源程序
下一篇:HyperWorks模拟实验炮支撑架优化设计与分析

起重机械安全隐患与缺陷...

起重机械产品制造過程安...

谈机械制造系统中的安全控制系统【3099字】

解析电梯定期检验中限速...

电站锅炉机械未完全燃烧...

电子车速里程表的单片机实现方案【1277字】

现代电梯的机械构造及安...

医院财务风险因素分析及管理措施【2367字】

中国学术生态细节考察《...

志愿者活动的调查问卷表

承德市事业单位档案管理...

国内外图像分割技术研究现状

10万元能开儿童乐园吗,我...

C#学校科研管理系统的设计

公寓空调设计任务书

AT89C52单片机的超声波测距...

神经外科重症监护病房患...