找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2032|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

單片機藍牙小車程序(帶詳細注釋)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:147069 發(fā)表于 2019-4-10 15:04 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit zuo1=P2^0;//定義控制左邊電機的單片機引腳
sbit zuo2=P2^1;//定義控制左邊電機的單片機引腳
sbit you1=P2^2;//定義控制右邊電機的單片機引腳
sbit you2=P2^3;//定義控制右邊電機的單片機引腳
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 前進
                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;//讀取單片機串口接收的藍牙模塊發(fā)送的數(shù)據(jù)
}

藍牙小車.zip

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

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

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2019-4-10 18:26 | 只看該作者
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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