找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1316|回复: 0
打印 上一主题 下一主题
收起左侧

蓝牙小车程序

[复制链接]
跳转到指定楼层
楼主
ID:501297 发表于 2019-4-30 14:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg52.h>
#include "intrins.h"


typedef unsigned char u8;
typedef unsigned int u16;   


u8 r_buf,flag=8,R,L;                         //蓝牙接收到的字符存储缓冲区                 ,L1,L2,R1,R2


sbit IN1_1 = P1^1;                     //驱动1
sbit IN2_1 = P1^2;
sbit IN3_1 = P1^3;
sbit IN4_1 = P1^4;
sbit ENA_1 = P1^0;
sbit ENB_1 = P1^5;


void left_go();
void go_fast();
void go_slow();
void right_go();
void left();
void right();
void stop();
void deal();
void back();




sbit LED_1 = P1^6;                         //红外传感
sbit LED_2 = P1^7;
               
sbit BUZ=P0^6;                                //峰鸣器
sbit LED=P0^7;


void delay(u16 z)                            //延迟函数
{  
        u16 x,y;  
        for(x=z;x>0;x--)   
                for(y=110;y>0;y--);
}




void UART_Init() //串口初始化9600                                  //初始化串口定时器9600
{
        TMOD = 0x20;
        PCON = 0x00;
        SCON = 0x50;   
    TH1 = 0xFD;
    TL1 = 0xFD;
        TR1 = 1;
        ES = 1;
        EA = 1;
}


void SendOneByte(u8 c) //发送字符函数
{
    SBUF = c;
    while(!TI);
    TI = 0;
}


void UART_Interrupt(void) interrupt 4 //串口接收字符
{       
    if(RI)
    {
        RI = 0;
                r_buf = SBUF;


                if(r_buf == '1')                 //Left
                {
                       
                     flag=1;//left_go();
       
            }
                if(r_buf == '2')
                {
                        flag =2;//go_fast();
       
                }
                if(r_buf == '3')                 //Right
                {
                        flag=3;//right_go();
               
                }
               
                if(r_buf == '4')
                {       
                    flag=4;//left();
                               
                }
                if(r_buf == '5')
                {       
                     flag=5;//go_slow();
                               
                }
                if(r_buf == '6')
                {       
                      flag=6;// right();
                                       
                }
                if(r_buf == '8')
                {       
                      flag=8; //stop();
                               
                }
                if(r_buf == '7')
                {       
                      flag=7; //back();
                                       
                }
       
        if(flag==1)        left_go();                           //  break;
        if(flag==2)        go_fast();                  // break;
        if(flag==3)        right_go();                   //   break;
        if(flag==4)        left();                          //   break;
        if(flag==5)        go_slow();                  // break;
        if(flag==6)        right();                 //  break;
    if(flag==7)        back();                         //  break;       
        if(flag==8)        stop();                          


    SendOneByte(r_buf);//回发该字符
    }


}


void alarm()
{       
        if(LED_1==0)                                       
        {
                BUZ=0;
                LED=0;
                delay(100);
                BUZ=1;
                delay(100);
                LED=1;
        }
}


void go_fast()
{
        IN1_1=1;
        IN2_1=0;
        IN3_1=1;
        IN4_1=0;
}


void go_slow()
{
       
        IN1_1=1;
        IN2_1=0;
        IN3_1=1;
        IN4_1=0;
        delay(30);
        IN1_1=0;
        IN2_1=0;
        IN3_1=0;
        IN4_1=0;
        delay(5);
}


void left_go()
{
        IN1_1=0;
        IN2_1=0;
        IN3_1=1;
        IN4_1=0;
        delay(100);
         go_fast();


}


void left()
{
        IN1_1=0;
        IN2_1=0;
        IN3_1=1;
        IN4_1=0;
}


void right_go()
{
        IN1_1=1;
        IN2_1=0;
        IN3_1=0;
        IN4_1=0;
        delay(100);
        go_fast();


}


void right()
{        
        IN1_1=1;
        IN2_1=0;
        IN3_1=0;
        IN4_1=0;  
}


void stop()
{
    IN1_1=0;
        IN2_1=0;
        IN3_1=0;
        IN4_1=0;
}


void back()
{       
        IN1_1=0;
        IN2_1=1;
        IN3_1=0;
        IN4_1=1;
}
/*void deal()
{
        if(flag==1)          left_go();
        //        case 1:                             break;
        if(flag==2)        go_fast();                  // break;
        if(flag==3)        right_go();                   //   break;
        if(flag==4)        left();                          //   break;
        if(flag==5)        go_slow();                  // break;
        if(flag==6)        right();                 //  break;
        if(flag==8)        stop();                         //  break;
        else          go_fast();
        //}
}  */


void main(void)
{
        BUZ=1;         
        IN1_1 = 0;                IN3_1 = 0;
        IN2_1 = 0;                IN4_1 = 0;
        ENA_1 = 1;
        ENB_1 =        1;
    UART_Init();
        delay(2);
        while(1);   
       
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表