標題: 如何用單片機串口發(fā)送字符控制舵機 [打印本頁]

作者: 藍琪    時間: 2018-10-29 22:21
標題: 如何用單片機串口發(fā)送字符控制舵機
寫了個用51單片機串口發(fā)送字符控制舵機的程序,發(fā)送0左轉(zhuǎn)動90°,發(fā)送1右轉(zhuǎn)動90°。我想要改為發(fā)送0左轉(zhuǎn)動90°,延時1s后歸位,同理發(fā)送1也一樣,請問怎么改?
下面的是兩段主要程序:
void Com_Int(void) interrupt 4
{
        
        if(RI == 1)   //當硬件接收到一個數(shù)據(jù)時,RI會置位
        {
                cmd = SBUF; //這里接收到的是16進制
                RI = 0;  
                SBUF = cmd;               
        }
        
        switch(cmd)
                                {
                                case 0:
                                        SG1_count = 25;
                                        break;
                                
                                case 1:
                                        SG1_count = 5;                        
                                        break;
                                default: break;
        }

        if (TI) //字節(jié)發(fā)送完畢
        {
                TI = 0; //手動清零發(fā)送中斷標志位
        }              //TI清零
}

/*********************************
函數(shù):Time0Int()
參數(shù):無
返回:無
說明:定時器0中斷函數(shù)。用于處理PWM的信號。
**********************************/
void Time0Int(void) interrupt 1 using 1
{
        if(count <= SG1_count) //控制占空比左右
    {
        //如果count的計數(shù)小于(5-25)也就是0.5ms-2.5ms則這段小t周期持續(xù)高電平。產(chǎn)生方波
        SG1_PWM = 1;
    }
    else
    {
        SG1_PWM = 0;
    }
            count++;
    if (count >= 200) //T = 20ms則定時器計數(shù)變量清0
    {
        count = 0;
    }
}         




作者: xuyaqi    時間: 2018-10-30 08:39
發(fā)送 左90°后 延時1秒 再發(fā) 右90°歸位,同理發(fā)送 右90°后 延時1秒 再發(fā) 左90°歸位。
作者: yousunny    時間: 2018-10-30 09:15
   switch(cmd)
                                {
                                case 0:
                                        SG1_count = 25;
                                       flag1=1;
                                        break;
                                
                                case 1:
                                        SG1_count = 5;     
                                       flag2=1;                  
                                        break;
                                default: break;
        }

加上一個標志位然后在主循環(huán)中掃描這個標志位,按照這個思路試試
作者: 333ff    時間: 2018-10-30 15:00
可以試試
作者: 285983552    時間: 2018-10-30 15:24
左90°后 延時1秒 再發(fā) 右90°歸位,同理發(fā)送 右90°后 延時1秒 再發(fā) 左90°歸位。
作者: 在菩提樹下噓噓    時間: 2018-10-30 16:38
厲害厲害
作者: zhangaibinlesli    時間: 2018-10-30 19:16
很好現(xiàn)在正急需
作者: zhangaibinlesli    時間: 2018-10-30 19:16
現(xiàn)在正急需這個
作者: kxl    時間: 2018-10-30 19:55
可以試試

作者: zhang3350552    時間: 2018-10-30 20:07
學習學習
作者: 愛愛愛    時間: 2018-10-30 22:13
電腦上位機發(fā)送字符給單片機  單片機進行處理命令   然后在串口中斷里面判斷接受到的字符   接受到什么字符  單片機執(zhí)行什么操作
作者: perfect12345678    時間: 2018-10-30 23:15
上位機
作者: 藍琪    時間: 2018-11-1 16:42
yousunny 發(fā)表于 2018-10-30 09:15
switch(cmd)
                                {
                                case 0:

試了下,還是不行,但還是謝謝了,換了個思路做




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1