標(biāo)題: 單片機(jī)藍(lán)牙小車程序(帶詳細(xì)注釋) [打印本頁]

作者: asdfrebrh    時間: 2019-4-10 15:04
標(biāo)題: 單片機(jī)藍(lán)牙小車程序(帶詳細(xì)注釋)
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit zuo1=P2^0;//定義控制左邊電機(jī)的單片機(jī)引腳
sbit zuo2=P2^1;//定義控制左邊電機(jī)的單片機(jī)引腳
sbit you1=P2^2;//定義控制右邊電機(jī)的單片機(jī)引腳
sbit you2=P2^3;//定義控制右邊電機(jī)的單片機(jī)引腳
uchar a=0;//定義一個變量a用來讀取串口的數(shù)據(jù)
void delay(uint z)//一個帶參數(shù)的延時程序
{
        int i,j;
        for(i=10;i>0;i--)
                for(j=z;j>0;j--);               
}
void init()//初始化子程序
{
        TMOD=0x20; //設(shè)置定時器T1為工作方式2
        TH1=0xfd;
        TL1=0xfd;//T1定時器裝初值
        TR1=1;//啟動定時器T1                                                   
        REN=1;//允許串口接收
        SM0=0;
        SM1=1;//設(shè)置串口工作方式1
        EA=1; //開總中斷
        ES=1;//開串口中斷
}
void go()
{
        zuo1=0;
        zuo2=1;//左邊輪子正轉(zhuǎn)
        delay(60);//PWM有用值,越大左邊輪子轉(zhuǎn)得越快
        zuo1=1;//關(guān)閉左邊輪子

        you1=0;
        you2=1;//右邊輪子正轉(zhuǎn)
        delay(60);//PWM有用值,越大右邊的輪子越快
        you1=1;//關(guān)閉6右邊輪子
        delay(100);//PWM無用值,越大,小車跑的越慢
}
void hui()
{
        zuo1=1;
        zuo2=0;//左邊輪子倒轉(zhuǎn)
        delay(60);//PWM有用值,越大左邊輪子越快
        zuo2=1;//關(guān)閉左邊輪子

        you1=1;
        you2=0;//右邊輪子倒轉(zhuǎn)
        delay(60);//PWM有用值,越大右邊輪子越快
        you2=1;//關(guān)閉右邊輪子
        delay(100);//PWM無用值,越大,小車跑的越慢
}
void turnleft()//小車左轉(zhuǎn)程序
{
        zuo1=1;
        zuo2=0;        //左輪制動
        delay(35);
        zuo2=1;

        you1=0;
        you2=1;        //右輪正轉(zhuǎn)
        delay(35); //PWM有用值,越大,右輪越快
        you1=1;           //右輪停止

        delay(100);//PWM無用值,越大,小車跑的越慢
}

void turnright()//小車右轉(zhuǎn)程序
{
        zuo1=0;
        zuo2=1;        // 左邊輪子正轉(zhuǎn)
        delay(35);//PWM有用值,越大,左邊輪子越快

        zuo1=1;        // 左輪停止

        you1=1;
        you2=0;          //右輪停止
        delay(35);
        you2=1;

        delay(100);//        PWM無用值,越大,小車跑的越慢
}

void down()//停止程序
{
        zuo1=1;
        zuo2=1;
        you1=1;
        you2=1;
}

void main()//主程序
{

        init();//調(diào)用初始化子程序
        while(1) //死循環(huán)
        {
                switch(a)//判斷a從串口讀取到的數(shù)據(jù)
                {
                case 0x4f: //0x1f 前進(jìn)
                go();
                break;
               
                case 0x3f: //0x2f 后退
                hui();
                break;
               
                case 0x2f: // 0x3f 左轉(zhuǎn)
                turnleft();
                break;
               
                case 0x1f: //0x4f右轉(zhuǎn)
                turnright();
                break;
               
                case 0x00: //0x00停止
                down();
                break;
                }
                        
        }
}

void chuan()interrupt 4//串口中斷服務(wù)
{
        RI=0;//軟件清除串口響應(yīng)
        a=SBUF;//讀取單片機(jī)串口接收的藍(lán)牙模塊發(fā)送的數(shù)據(jù)
}

藍(lán)牙小車.zip

34.75 KB, 下載次數(shù): 21, 下載積分: 黑幣 -5


作者: admin    時間: 2019-4-10 18:26
本帖需要重新編輯補全電路原理圖,源碼,詳細(xì)說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)




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