欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2148|回復: 2
打印 上一主題 下一主題
收起左側

求助-藍牙遙控小車時手機app一直收到亂碼且沒有實現功能

[復制鏈接]
跳轉到指定樓層
樓主
ID:259210 發表于 2019-12-16 15:37 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
藍牙模塊通過usb-ttl可以和電腦正常通信,波特率設置9600,晶振為11.0562。
藍牙模塊的RXD接51單片機的TXD,藍牙模塊的TXD接51單片機的RXD。

幫忙看看程序有沒有問題。
程序如下:
#include<AT89X52.H>

#define Left_moto_Stop    {P1_1=0,P1_2=0;}    //左電機停轉
#define Left_moto_go      {P1_1=1,P1_2=0;}    //左電機正轉
#define Left_moto_back    {P1_1=0,P1_2=1;}           //左電機反轉
#define Right_moto_Stop   {P1_4=0,P1_5=0;}          //右電機停轉                     
#define Right_moto_go     {P1_4=1,P1_5=0;}          //右電機正轉
#define Right_moto_back   {P1_4=0,P1_5=1;}          //右電機反轉

#define Left_moto_pwm            P1_0          //PWM信號端
#define Right_moto_pwm          P1_3          //PWM信號端

unsigned char bluetoothdata;

//pwm調速
unsigned char pwm_val_left  =0;              //變量定義
unsigned char push_val_left =0;              //左電機占空比N/20
unsigned char pwm_val_right =0;
unsigned char push_val_right=0;              //右電機占空比N/20
bit Right_moto_stop=1;
bit Left_moto_stop =1;
unsigned  int  time=0;

//延時函數
void delay(unsigned int k)
{   
     unsigned int x,y;
         for(x=0;x<k;x++)
           for(y=0;y<2000;y++);
}

//小車前進
void  front_run(void)
{
         push_val_left=12;
         push_val_right=12;
         Left_moto_go;   
         Right_moto_go;  
}

//小車后退
void  back_run(void)
{
         push_val_left=12;
         push_val_right=12;
         Left_moto_back;   
         Right_moto_back;  
}

//小車左轉
void  left_run(void)
{
         push_val_left=5;
         push_val_right=15;
         Right_moto_go;   
         Left_moto_back;  
}


//小車右轉
void  right_run(void)
{
         push_val_left=16;
         push_val_right=8;
         Left_moto_go;   
         Right_moto_back;  
}


//小車停止
void  stop(void)
{
         Left_moto_Stop
         Right_moto_Stop;   
}

//左電機調速
void pwm_out_left_moto(void)
{  
        if(Left_moto_stop)
        {
            if(pwm_val_left<=push_val_left)
                        {
                                Left_moto_pwm=1;
       
                        }
                else
                    {
                        Left_moto_pwm=0;
       
                        }
                if(pwm_val_left>=20)
                    pwm_val_left=0;
        }
        else   
        {
                Left_moto_pwm=0;
        }
}


//右電機調速
void pwm_out_right_moto(void)
{
        if(Right_moto_stop)
    {
            if(pwm_val_right<=push_val_right)
            {
                    Right_moto_pwm=1;
                }
        else
            {
                        Right_moto_pwm=0;
                }
        if(pwm_val_right>=20)
               pwm_val_right=0;
   }
   else   
   {
       Right_moto_pwm=0;

   }
}

//定時器0初始化
void timer0_Init(void)
{
        TMOD=0X01;
        TH0= 0XFc;                  //1ms定時
        TL0= 0X18;
        TR0= 1;
        ET0= 1;
        EA = 1;                           //開總中斷       
}


//定時器0中斷服務子程序  
void timer0()interrupt 1   using 2
{
   TH0=0XFc;          
         TL0=0X18;
         time++;
         pwm_val_left++;
         pwm_val_right++;
         pwm_out_left_moto();
         pwm_out_right_moto();
}       



void usart_t1()  //計數器1的初始化
{
        TH1=0xFD;
        TL1=0xFD;//設置波特率9600
        PCON=0X00;                        //波特率不加倍
        SCON=0x50;//方式一10位異步收發器8位數據,允許串行接收。
        TMOD|=0X20;//計數器工作方式2  8位自動重裝載
        IP=0x10;//設置串口中斷位高優先級
        ES=1;//開串口中斷
        EA=1;
        TR1=1;        //開計數器1
        TI=0;
        RI=0;
}


void usart_receive(void) interrupt 4  //串口中斷服務子程序
{
        if(RI==1)
        {
                RI=0;    //接受中斷標志位清零
                bluetoothdata=SBUF;//讀取數據
                SBUF=bluetoothdata;     //將接收到的數據放入到發送寄存器
                while(!TI);         //等待發送數據完成
                    TI=0;        //清除發送完成標志
        }
       

       

}


void usart_service()
{
        switch(bluetoothdata)
        {
        case'1':front_run();
        break;
       
        case'2':back_run();
        break;

        case'3':left_run();
        break;

        case'4':right_run();
        break;

        case'5':stop();
        break;
        default:stop();
        break;

        }
       
}




void main()
{
stop();

timer0_Init(void);//定時器0初始化
usart_t1() ;//計數器1的初始化
while(1)
{
        usart_service();

}

}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

板凳
ID:722967 發表于 2020-4-5 20:46 | 只看該作者

請問你是怎么解決的呢
回復

使用道具 舉報

沙發
ID:259210 發表于 2019-12-16 20:16 | 只看該作者
已解決
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表