标题: 51蓝牙小车源码 [打印本页]

作者: a986271997    时间: 2017-8-6 10:35
标题: 51蓝牙小车源码
#include<reg52.h>
#define uchar unsigned char;
#define        uint unsigned int;
uchar biaozhi=0,shujucc=0,ting=0,shuju;
sbit     in1=P1^0;
sbit         in2=P1^1;
sbit         in3=P1^2;
sbit         in4=P1^3;
sbit     in5=P1^4;
sbit     in6=P1^5;
sbit     in7=P1^6;
sbit     in8=P1^7;
delay(unsigned char n)//11.0592m下延时 n ms。
{
    unsigned char i,j;
    for(i=n;i>0;i--)
        {
         for(j=110;j>0;j--)
                 {
                 ;
                 }

        }
}
void init()//初始化子程序
{
        TMOD=0x20;//定时器1设定为方式2,8位数据自动从装
        TH1=0xfd;//对定时器赋值,高8位与低8位相同
        TL1=0xfd;//波特率定为9600
        TR1=1;//打开定时器1
        SM0=0;//设置串口工作方式1
        SM1=1;
        REN=1;//允许串口接收
        EA=1;//开总中断
        ES=1;//打开串口中断
}
void qianjin()//前进函数
{
    in1=0;//左后轮前进
        in2=1;
        in3=0;//右后轮前进
        in4=1;
        in5=1;//右前轮前进
        in6=0;
        in7=1;//左前轮前进
        in8=0;
        delay(1);        

}
void houtui()//后退函数
{
    in1=1;//左后轮后退
        in2=0;
        in3=1;//右后轮后退                       
        in4=0;
        in5=0;//右前轮后退
        in6=1;
        in7=0;//左前轮后退
        in8=1;
    delay(1);
}
void tingzhi()
{
    in1=0;//左后轮停止
        in2=0;
        in3=0;//右后轮停止                       
        in4=0;
        in5=0;//右前轮停止
        in6=0;
        in7=0;//左前轮停止
        in8=0;
}
void youzhuan()
{
        in1=1;//左后轮后退
        in2=0;
        in3=0;//右后轮前进
        in4=1;
        in5=0;//后退
        in6=1;
        in7=1;//前进
        in8=0;
    delay(1);
}
void zuozhuan()
{
        in1=0;//左后轮前进
        in2=1;
        in3=1;//右后轮后退
        in4=0;
        in5=1;//前进
        in6=0;
        in7=0;//后退
        in8=1;
        delay(1);
}
void jiasu()
{

}
       
void main()
{
    init();
       
       
        while(1)
        {
            
                    if(shuju=='A')//如果数据为0x01,执行前进函数
                        {
                            qianjin();
                                delay(5);
                                tingzhi();
                        }
                        if(shuju=='B')//如果数据为0x02,执行后退函数
                        {
                            houtui();
                                delay(5);
                                tingzhi();
                       
                        }
                        if(shuju=='C')//如果数据为0x03,执行向左转
                        {
                            zuozhuan();
                                delay(5);
                                tingzhi();
                       
                        }
                        if(shuju=='D')//如果数据为0x04,执行向右转
                        {
                            youzhuan();
                                delay(5);
                                tingzhi();
                       
                        }
                        if(shuju=='F')//如果数据为0x05,执行停止
                        {
                            tingzhi();
                                delay(5);
                                tingzhi();
                       
                        }
                  
                 /*
                switch(shuju[2])
                {
                case 'A':  qianjin();break;
                case 'B':  houtui();break;
                case 'C':  zuozhuan();break;
                case 'D':  youzhuan();break;
                case 'F':  tingzhi();break;
                }  */
               
        }



}
void chuankou()        interrupt 4//串口中断服务
{
    RI=0;
        ting=0;             //重新打开串口中断
    shuju=SBUF; //提取串口数据
        /*if(RI){                        
                RI=0;
    shuju[shujucc]=SBUF;
                shujucc++;
                if(shujucc==3) shujucc=0;
                }*/

}


作者: 是珍惜啊    时间: 2019-2-25 10:57
可以加个PWM调速
作者: 潇潇来了    时间: 2021-7-21 17:18
请问这其中的ABCD是定义的,是手机app上按键的名字吗?
作者: 潇潇来了    时间: 2021-7-21 17:19
是珍惜啊 发表于 2019-2-25 10:57
可以加个PWM调速

是应用定时器来pwm调速吗




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1