找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 2017|回復(fù): 1
收起左側(cè)

單片機(jī)藍(lán)牙小車程序(帶詳細(xì)注釋)

[復(fù)制鏈接]
ID:147069 發(fā)表于 2019-4-10 15:04 | 顯示全部樓層 |閱讀模式
#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;//定義一個(gè)變量a用來讀取串口的數(shù)據(jù)
void delay(uint z)//一個(gè)帶參數(shù)的延時(shí)程序
{
        int i,j;
        for(i=10;i>0;i--)
                for(j=z;j>0;j--);               
}
void init()//初始化子程序
{
        TMOD=0x20; //設(shè)置定時(shí)器T1為工作方式2
        TH1=0xfd;
        TL1=0xfd;//T1定時(shí)器裝初值
        TR1=1;//啟動(dòng)定時(shí)器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;        //左輪制動(dòng)
        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

回復(fù)

使用道具 舉報(bào)

ID:1 發(fā)表于 2019-4-10 18:26 | 顯示全部樓層
本帖需要重新編輯補(bǔ)全電路原理圖,源碼,詳細(xì)說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表