找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3672|回復(fù): 0
收起左側(cè)

基于藍(lán)牙的遙控小車制作 附單片機(jī)源程序

[復(fù)制鏈接]
ID:427492 發(fā)表于 2019-5-14 19:30 | 顯示全部樓層 |閱讀模式
/*
           本程序藍(lán)牙模塊接在了串口1,在下載程序時(shí)需要拔掉藍(lán)牙模塊的RXD和TXD線,下載完成后,在接上。
*/
制作出來(lái)的實(shí)物圖如下:

正面.jpg

正面.jpg

背面.jpg

背面.jpg

藍(lán)牙模塊.jpg

藍(lán)牙模塊.jpg


單片機(jī)源程序如下:

#include "InitFun.h"

u16 flag = 0;               //       左轉(zhuǎn)/右轉(zhuǎn)標(biāo)志
u8 t = 0;
u8 PWM_T = 0;          //       通過(guò)改變PWM_T的值實(shí)現(xiàn)直流電機(jī)轉(zhuǎn)速的改變
u8 ch = '#';                //        用于接收指令

void main()
{
        PortInit();           //       端口初始化
        UartInit();           //       串口1初始化
        IniTime0();         //       定時(shí)器0初始化
        P1=0xff;         
        PWM_T=30;      //        PWM_T劃分為30個(gè)等級(jí)

        while(1)
        {

                if(ch == '1')         //    藍(lán)牙串口助手app給單片機(jī)發(fā)指令1,減速
                {        
                        up = 0;
                        down = 1;
                }                                
                if(ch == '2')         //     指令2,加速
                {               
                        down = 0;
                        up = 1;
                }
                if(ch == '3')         //     指令3,左轉(zhuǎn)彎
                {
                        flag = 1;
                }

                if(ch == '4')         //    指令4,右轉(zhuǎn)彎
                {
                        flag = 2;
                }

                if(!up)
                {
                        if(PWM_T<250)
                        {
                                PWM_T++;
                        }

                        delay_1ms(10);
                }
                if(!down)
                {
                        if(PWM_T>0)
                        {
                                PWM_T--;
                        }

                        delay_1ms(10);
                }
        }
}
void usart() interrupt 4    //    串口中斷函數(shù)
{
        if(RI)                   //    接收助手發(fā)來(lái)的指令
        {
                RI = 0;
                ch = SBUF;
        }
        if(ch != '#')           //   將接收到的指令在串口上顯示
        {
                SBUF = ch;
                while(!TI);
                TI = 0;
        }        
}

void timer0() interrupt 1              //      定時(shí)器0中斷函數(shù)
{
        t++;   
        if(t==250)   
        {
                t=0;                           
                P1=0x00;
        }

        if(PWM_T==t)  
        {  
                P1=0xff;

                if(flag == 1)
                {
                        flag = 0;
                        P1 = P1&0xbf;
                        delay_1ms(4500);
                        ch = '2';
                }

                if(flag == 2)
                {
                        flag = 0;
                        P1 = P1&0xdf;
                        delay_1ms(4500);
                        ch = '2';
                }
        }
}

全部資料51hei下載地址:
基于藍(lán)牙的遙控小車.rar (53.96 KB, 下載次數(shù): 13)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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