找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

尋跡小車求助,剛學(xué)的小白想問問大佬們

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:987663 發(fā)表于 2021-12-3 17:50 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
使用STC15F2K60S2的芯片,要求就是圖上的要求,是真的很懵逼啊,咋個整的,跪求大佬

1638524823933.jpg (2.98 MB, 下載次數(shù): 43)

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

使用道具 舉報

沙發(fā)
ID:155507 發(fā)表于 2021-12-3 21:34 | 只看該作者
你搜一下,論壇有一堆可參考

基于51單片機制作的避障尋跡小車
http://www.torrancerestoration.com/bbs/dpj-210555-1.html

尋跡避障小車電路、程序、電路分析、設(shè)計下載
http://www.torrancerestoration.com/bbs/dpj-78319-1.html
回復(fù)

使用道具 舉報

板凳
ID:984895 發(fā)表于 2021-12-7 14:24 | 只看該作者
    尋跡避障程序

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit RM1=P0^0;
sbit RM2=P0^1;//右電機

sbit LM1=P0^2;
sbit LM2=P0^3;//左電機

sbit bzh=P2^6;
sbit RAD=P0^6;//紅外接收右電機轉(zhuǎn)
sbit LBD=P0^7;//紅外接收左電機轉(zhuǎn)

sbit rs=P3^5;//     LCD的RS  
sbit rw=P3^6;//    LCD的R/W
sbit en=P3^7;//    LCD的E   

void lcd_string(uchar *strpoint);

void delay(uint a)
{ uint b,c;
  for(b=a;b>0;b--)
    for(c=120;c>0;c--);
}
uchar i=0;

void checkbusy()//檢查LCD忙
{      uchar dat;
rs=0;      //rs=1為數(shù)據(jù),=0為命令.
rw=1;    //rw=1為讀,=0為寫.
    do
      {
      P1=0x00;
      en=1; //E信號下降沿鎖存DB7~DBO
      dat=P1; //讀入P1的值
      en=0; //鎖存
      dat=0x80 & dat;    //BUSY:1內(nèi)部在工作,0正常狀態(tài)
       }while(!(dat==0x00));rw=0;
}
void sentcom(uchar com)
{ checkbusy(); //檢查Busy
   rs=0;
   en=0;
   P1=com;
   delay(5);
   en=1;
   delay(5);
   en=0;
   }

void sentdata(uchar date) //寫數(shù)據(jù)
{
  checkbusy();
  rs=1;
  en=0;
  P1=date;
  delay(5);
  en=1;
  delay(5);                                                                                                                 
  en=0;
}



//初始化     LCM  
void     lcd_init()   
    {   

              sentcom(0x38);//功能設(shè)置,一次送8位數(shù)據(jù),基本指令集   
              sentcom(0x0C);//0000,1100       整體顯示,游標off,游標位置off   
              sentcom(0x01);//0000,0001     清DDRAM   
              sentcom(0x02);//0000,0010     DDRAM地址歸位   
              sentcom(0x80);//1000,0000     設(shè)定DDRAM     7位地址000,0000到地址計數(shù)器AC   

    }

void lcd_string(char*strpoint)//在當前顯示位置顯示LCD字符串
{      register i=0;
while(strpoint[ i]!=0){
        sentdata(strpoint[ i]);
        i++;
        }
}
void  stop()
{
     lcd_init();
  sentcom(0x80);
  lcd_string("現(xiàn)代創(chuàng)新實訓(xùn)室 ");//C編譯系統(tǒng)本省也具有轉(zhuǎn)換功能,所以也可以這樣寫
  sentcom(0x90);
  lcd_string("尋跡避障一體小車");                           
  sentcom(0x88);
  lcd_string("--指導(dǎo):");                           
  sentcom(0x98);
  lcd_string("--設(shè)計: ");
}
void  tracing()
{
  sentcom(0x80);
  lcd_string("現(xiàn)代創(chuàng)新實訓(xùn)室 ");
  sentcom(0x90);
  lcd_string("--指導(dǎo):");                              
  sentcom(0x88);
  lcd_string("--設(shè)計:  ");                          
  sentcom(0x98);
  lcd_string("  小車尋跡中---");
}
void  bypass()
{
  sentcom(0x80);
  lcd_string("現(xiàn)代創(chuàng)新實訓(xùn)室 ");
  sentcom(0x90);
  lcd_string("--指導(dǎo):");                              
  sentcom(0x88);
  lcd_string("--設(shè)計:  ");                          
  sentcom(0x98);
  lcd_string("  小車避障中---");
}
void find()
{tracing();
  while(bzh==1)
{      if(LBD&&RAD==1)
           {      
               RM1=1;LM1=1;
               RM2=0;LM2=0;
               }     
         if(RAD==0)
           {                    
               RM1=0;LM1=1;
               RM2=0;LM2=0;
               if(LBD==0)
                   {
                       RM1=1;LM1=1;
                   RM2=0;LM2=0;
                       delay(i);     
                      }
           }                                                                  
        if(LBD==0)
          {      
               RM1=1;LM1=0;
               RM2=0;LM2=0;
               if(RAD==0)
                      {
                             RM1=1;LM1=1;
                             RM2=0;LM2=0;
                             delay(i);
                      }     
           }
    }        
}         
void bizhan()
{    bypass();
if(bzh==0)
        {     
               RM1=1;LM1=0;
               RM2=0;LM2=1;
               delay(100);
        }
}
void main()
{  stop();
delay(2000);      
   while(1)
{
    find();
bizhan();
}            
}
來自基于51單片機制作的避障尋跡小車
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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