微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 51单片机中如何用串口控制电机运行

51单片机中如何用串口控制电机运行

时间:10-02 整理:3721RD 点击:
小女子一边看视频,一边学单片机串口的实验,下面是视频中没有问题的程序,可以成功地发送和接收相关的值:
void usartconfiguration()
{
        SCON=0x50;
        TMOD=0x20;
        PCON=0x80;//波特率加倍
        TH1=0xFA;
        TL1=0xFA;
        TR1=1;
        ES=1;
        EA=1;
}
void usart() interrupt 4
{
        unsigned char receive,i;
        receive=SBUF;
        RI=0;
        SBUF=receive;
        while(!TI);
        TI=0;
}
void main()
  {
          usartconfiguration();
        while(1);
        {
        }
  }

在此想自己在电脑中输入参数,实现对电机运动的控制,如输入1,电机正转,输入2,电机反转;于是将usart()函数改为:
void usart() interrupt 4
{
        unsigned char receive,i;
        receive=SBUF;
        RI=0;
        SBUF=receive;
        if(receive==1)
                {
                        for(i=0;i<8;i++)
                        {
                                P1=tap1;//tap1控制电机正转
                                delay(50);//已定义了delay函数
                        }
                }
        if(receive==2)
                {
                        for(i=0;i<8;i++)
                        {
                                P1=tap2;//tap2控制电机反转
                                delay(50);
                        }
                }
        while(!TI);
        TI=0;
}
红色部分是后面添加用于控制电机,但是这样下来,发送数值,不仅电机不会转动,而且电脑中也不能接收到数值,请问这是为什么?
我看单片机例程,其中一个介绍输入数字用来控制LED灯,但用的是RS232串口,请问有什么区别?
小女子菜鸟一枚,希望大家赐教!

小弟也是菜鸟一枚,,帮顶!

你把条件判断里的1、2都换成字符型的试试。我猜想串口没有返回可能是延时的问题,你把延时去掉,直接改变某个IO口的电平,然后外接一个LED指示看看是不是这个问题。

没什么问题

串口控制电机?

很有想象力的啊?

注意一下发送和接收的数是ASSIC码还是十六进制数,还有红色程序语句放到主程序while循环里,中断程序只做简单的数据传递和处理就好,不要有太多操作。

晕16年的帖子。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top