找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機藍(lán)牙遙控+超聲波跟隨+紅外循跡切換問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1071654 發(fā)表于 2023-9-4 17:58 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
各位大神好
以下是51單片機(STC89C52)藍(lán)牙遙控+超聲波跟隨+紅外循跡主程序,現(xiàn)在經(jīng)過測試功能均能實現(xiàn),能否幫忙解釋下主程序里面超聲波+紅外切換那塊還有問題么?其他子程序是否還有問題,有沒有什么優(yōu)化代碼的可能,感謝解惑。。。完整程序放置在附件

#include <REGX52.H>
#include <INTRINS.H>
#include <Timer2.H>
#include <Timer0.H>
#include "UART.H"
#include "Delay.H"
#include "MotorDrive.H"
#include "HC_SR04.H"
#include <IR_Tracking.H>

bit gb_ultrasonic=0;
bit gb_IR=0;
bit gbRI=0;

sbit L298N_ENA=P1^4;
sbit L298N_ENB=P1^5;
sbit L298N_ENA1=P1^1;
sbit L298N_ENB1=P0^2;

unsigned char Compare,Compare1,Compare2,Compare3;
unsigned char Counter,Counter1,Counter2,Counter3;
unsigned char Data;
               
void main()
{
        UART_Init();                //串口初始化
        Timer0_Init();        //T0初始化
        Timer2_Init();        //T2初始化
        Compare=Compare1=Compare2=Compare3=20;
        while(1)
        {
    if(gb_IR)
      IR_Tracking();//紅外循跡
                if(gb_ultrasonic)
                        Ultrasound_Dis();//超聲波跟隨
    if(gbRI)//有新的串口數(shù)據(jù) 在串口接收中斷中加入gbRI=1;
     {
        gbRI=0;//新的串口數(shù)據(jù)已處理
        gb_IR=0;//除循跡指令外,其它指令不循跡
                         gb_ultrasonic=0;//除超聲波跟隨指令外,其它指令不跟隨
                if(Data        == 8)
                        gb_ultrasonic=1;//收到超聲波跟隨指令
    if(Data == 7)
        gb_IR=1;//收到循跡指令
    else if(Data == 0)
        StopIt();
    else if(Data == 1)       
      {
                                Compare=Compare1=Compare2=Compare3=100;
        Forward();
      }
    else if(Data == 2)
      {
                                Compare=Compare1=Compare2=Compare3=100;
        BackOff();
      }
                else if(Data==3)
                        {
                                Compare=Compare1=Compare2=Compare3=40;
                                TurnLeft();
                        }
                else if(Data==4)
                        {
                                Compare=Compare1=Compare2=Compare3=40;
                                TurnRight();
                        }
                else if(Data==5)
                        {
                                Compare=Compare1=Compare2=Compare3=30;
                                TurnLeftCircle();
                        }
                else if(Data==6)
                        {
                                Compare=Compare1=Compare2=Compare3=30;
                                TurnRightCircle();
                        }
                }
  }
}
               
void Timer0_Routine() interrupt 1
{
        TL0=0xA4;  //設(shè)置定時初值
        TH0=0xFF;  //設(shè)置定時初值
        Counter++;
        Counter%=100;                //計數(shù)值變化范圍限制在0~99
        Counter1++;
        Counter1%=100;        //計數(shù)值變化范圍限制在0~99
        Counter2++;
        Counter2%=100;        //計數(shù)值變化范圍限制在0~99
        Counter3++;
        Counter3%=100;        //計數(shù)值變化范圍限制在0~99
        if(Counter<Compare)
        {
                L298N_ENA=1;
        }
        else
        {
                L298N_ENA=0;
        }
        if(Counter1<Compare1)
        {
                L298N_ENB=1;
        }
        else
        {
                L298N_ENB=0;
        }
        if(Counter2<Compare2)
        {
                L298N_ENA1=1;
        }
        else
        {
                L298N_ENA1=0;
        }
        if(Counter3<Compare3)
        {
                L298N_ENB1=1;
        }
        else
        {
                L298N_ENB1=0;
        }
}


void UART_Routine() interrupt 4    //串口中斷
{         
gbRI=1;
if(RI==1)   //允許單片機接收數(shù)據(jù)
{
        Data=SBUF;                   //讀取數(shù)據(jù)
        UART_SendByte(SBUF);  //將接收到的數(shù)據(jù)發(fā)回串口
        RI=0;  //接收標(biāo)志位清0 軟件復(fù)位
}
}

TEST-藍(lán)牙遙控 紅外循跡 超聲波跟隨小車.zip

59.76 KB, 下載次數(shù): 18

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

使用道具 舉報

沙發(fā)
ID:1071654 發(fā)表于 2023-9-5 09:30 | 只看該作者
自頂下,望各位大神指點,感謝感謝。!
回復(fù)

使用道具 舉報

板凳
ID:320306 發(fā)表于 2023-9-5 11:00 | 只看該作者
不是你自己寫的程序嗎?為啥還需要解釋?    if(gb_IR)
      IR_Tracking();//紅外循跡
                if(gb_ultrasonic)
                        Ultrasound_Dis();//超聲波跟隨這些不都有注釋嗎?
回復(fù)

使用道具 舉報

地板
ID:1071654 發(fā)表于 2023-9-5 17:57 | 只看該作者
zsyzdx 發(fā)表于 2023-9-5 11:00
不是你自己寫的程序嗎?為啥還需要解釋?    if(gb_IR)
      IR_Tracking();//紅外循跡
                ...

因為這個程序是根據(jù)我之前的一個問題里面兩位大神指點寫下來的,雖然我都寫了注釋,但是還是有點懵。
http://www.torrancerestoration.com/bbs/dpj-231199-1.html
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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