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

QQ登錄

只需一步,快速開始

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

基于51單片機(jī)制作的避障尋跡小車

[復(fù)制鏈接]
ID:444191 發(fā)表于 2021-7-24 10:18 | 顯示全部樓層 |閱讀模式
循跡避障一體小車
一)   小車功能實(shí)現(xiàn)描述
利用光電傳感(紅外對(duì)射管,紅外發(fā)射與接收二極管組成)檢測(cè)黑白線,實(shí)現(xiàn)小車能跟著白線(或黑線)行走,同時(shí)也可避開障礙物,即小車尋跡過程中,若遇障礙物可自行繞開,繞開后繼續(xù)尋跡。
二)   電路詳細(xì)分析
1.   光電傳感
循跡光電傳感器原理,利用黑白線對(duì)紅外線不同的反射能力。然后通過光敏二極管或光敏三極管,接收反射回的不同光強(qiáng)信號(hào),把不同光強(qiáng)轉(zhuǎn)換為電流信號(hào),最后通過電阻,轉(zhuǎn)換為單片機(jī)可識(shí)別的高低電平。光電傳感器實(shí)現(xiàn)循跡的基本電路如下圖所示

循跡傳感器基本電路
       電路解釋:TC端是傳感器工作控制端,為高電平時(shí),發(fā)光二極管不工作,傳感器休眠,為低電平時(shí),傳感器啟動(dòng)。Signal端為檢測(cè)信號(hào)輸出,當(dāng)遇到黑線,黑線吸收大量的紅外線,反射的紅外線很弱,光敏三極管不導(dǎo)通,signal輸出高電平,當(dāng)遇到白線,與黑線相反,反射的紅外線很強(qiáng),使光敏三極管導(dǎo)通,signal輸出低電平。
   尋跡部分
調(diào)整左右傳感器之間的距離,兩探頭距離約等于白線寬度最合適,一般白線寬度選擇范圍為3 – 5 厘米比較合適。注意:該傳感器的靈敏度是可調(diào)的,偶爾傳感器遇到白線卻不能送出相應(yīng)的信號(hào),通過調(diào)節(jié)傳感器上的可調(diào)電阻,適當(dāng)?shù)脑龃蠡驕p小靈敏度。另外,循跡傳感器的安放也算是比較有講究的,有兩種方法,一種是兩個(gè)都是放置在白線內(nèi)側(cè)但緊貼白線邊緣,第二種是都放置在白線的外側(cè),同樣緊貼白線邊緣。我們通常采用第二種方法。
編寫程序使小車遇白線時(shí),小車跟著白線走。當(dāng)小車先前前進(jìn)時(shí),如果向左偏離了白線。那么右邊傳感器會(huì)產(chǎn)生一個(gè)低電平,單片機(jī)判斷這個(gè)信號(hào),然后向右拐;氐桨拙后。兩傳感器輸出信號(hào)為高電平。小車前進(jìn)。如果小車向右偏離白線,左邊傳感器產(chǎn)生一個(gè)低電平,單片機(jī)判斷這個(gè)信號(hào),然后向左拐。如此如此,小車必不偏離白線。若小車的兩對(duì)光電傳感器同時(shí)輸出的信號(hào)為高電平(黑底)或低電平(白底),即單片機(jī)判斷的都為高電平或低電平,小車向前直走,在此過程中(直走)小車若遇白線,小車又重復(fù)上面動(dòng)作跟著白線走。
   避障部分
     當(dāng)小車在尋跡(沿著白線走或直走)過程中遇障礙物,小車亦可自行轉(zhuǎn)彎,轉(zhuǎn)彎動(dòng)作完成后,又繼續(xù)尋跡。  

2.   電機(jī)驅(qū)動(dòng)電路
     電機(jī)驅(qū)動(dòng)芯片采用L298N,是一款承受高壓大電流的全橋型直流/步進(jìn)電壓驅(qū)動(dòng)器,如下圖

電機(jī)控制芯片L298N的引腳排列
L298N引腳編號(hào)與功能
  
引腳編號(hào)
  
名稱
功能
1
電流傳感器A
在該引腳和地之間接小阻值電阻可用來檢測(cè)電流
2
輸出引腳1
內(nèi)置驅(qū)動(dòng)器A的輸出端1,接至電機(jī)A
3
輸出引腳2
內(nèi)置驅(qū)動(dòng)器A的輸出端2,接至電機(jī)A
4
電機(jī)電源端
電機(jī)供電輸入端,電壓可達(dá)46V
5
輸入引腳1
內(nèi)置驅(qū)動(dòng)器A的邏輯控制輸入端1
6
使能端A
內(nèi)置驅(qū)動(dòng)器A的使能端
7
輸入引腳2
內(nèi)置驅(qū)動(dòng)器A的邏輯控制輸入端2
8
邏輯地
邏輯地
9
邏輯電源端
邏輯控制電路的電源輸入端為5V
10
輸入引腳3
內(nèi)置驅(qū)動(dòng)器B的邏輯控制輸入端1
11
使能端B
內(nèi)置驅(qū)動(dòng)器B的使能端
12
輸入引腳4
內(nèi)置驅(qū)動(dòng)器B的邏輯控制輸入端2
13
輸出引腳3
內(nèi)置驅(qū)動(dòng)器B的輸出端1,接至電機(jī)B
14
輸出引腳4
內(nèi)置驅(qū)動(dòng)器B的輸出端2,接至電機(jī)B
15
電流傳感器B
在該引腳和地之間接小阻值電阻可用來檢測(cè)電流

L298N內(nèi)部原理圖
電機(jī)驅(qū)動(dòng)A/B的控制邏輯如下表所示
  
輸入信號(hào)
  
電機(jī)運(yùn)動(dòng)方式
使能端A/B
輸入引腳1/3
輸入引腳2/4
1
1
0
前進(jìn)
1
0
1
后退
1
1
1
緊急停車
1
0
0
緊急停車
0
X
X
自由轉(zhuǎn)動(dòng)
電機(jī)驅(qū)動(dòng)A/B的工作原理
電機(jī)控制邏輯如下:以電機(jī)A為例,當(dāng)使能端A為高電平是,如果輸入端M1 Direction引腳為高電平,三極管導(dǎo)通,輸入引腳1為低電平而輸入引腳2為高電平,電機(jī)A反轉(zhuǎn);如果輸入端M1 Direction引腳為底電平,三極管截止,輸入引腳1為高電平而輸入引腳2為低電平,電機(jī)A正轉(zhuǎn)。

電機(jī)驅(qū)動(dòng)原理圖


  • 中文液晶顯示器128x64
帶中文字庫的128X64是一種具有4位/8位并行、2線或3線串行多種接口方式,內(nèi)部含有國(guó)標(biāo)一級(jí)、二級(jí)簡(jiǎn)體中文字庫的點(diǎn)陣圖形液晶顯示模塊。其顯示分辨率為128×64, 內(nèi)置8192個(gè)16*16點(diǎn)漢字,和128個(gè)16*8點(diǎn)ASCII字符集。利用該模塊靈活的接口方式和簡(jiǎn)單、方便的操作指令,可構(gòu)成全中文人機(jī)交互圖形界面?梢燥@示8×4行16×16點(diǎn)陣的漢字,也可完成圖形顯示。具有低電壓低功耗特點(diǎn)。由該模塊構(gòu)成的液晶顯示方案與同類型的圖形點(diǎn)陣液晶顯示模塊相比,不論硬件電路結(jié)構(gòu)或顯示程序都要簡(jiǎn)潔得多,且該模塊的價(jià)格也略低于相同點(diǎn)陣的圖形液晶模塊。
基本特性: 低電源電壓(VDD:+3.0--+5.5V)
              顯示分辨率:128×64點(diǎn)
              內(nèi)置漢字字庫,提供8192個(gè)16×16點(diǎn)陣漢字(簡(jiǎn)繁體可選)
              內(nèi)置 128個(gè)16×8點(diǎn)陣字符
              2MHZ時(shí)鐘頻率
             顯示方式:STN、半透、正顯
              驅(qū)動(dòng)方式:1/32DUTY,1/5BIAS
              視角方向:6點(diǎn)
              背光方式:側(cè)部高亮白色LED,功耗僅為普通LED的1/5—1/10
              通訊方式:串行、并口可選
              內(nèi)置DC-DC轉(zhuǎn)換電路,無需外加負(fù)壓
             無需片選信號(hào),簡(jiǎn)化軟件設(shè)計(jì)
             工作溫度: 0℃- +55℃ ,存儲(chǔ)溫度: -20℃ -+60℃
    模塊接口說明:

  
PIN15
  
LED+
背光正極,接4.8V-5V
PIN116
LED-
背光負(fù)極,接0V

*注:1:如在實(shí)際應(yīng)用中僅使用并口通訊模式,可將PSB接固定高電平,也可以將模塊上的J8和“VCC”用焊錫短接;2:模塊內(nèi)部接有上電復(fù)位電路,因此在不需要經(jīng)常復(fù)位的場(chǎng)合可將該端懸空;3:如背光和模塊共用一個(gè)電源,可以將模塊上的JA、JK用焊錫短接。
引腳控制信號(hào)應(yīng)用
   D/I,R/W的配合選擇決定控制界面的4種模式:
  
D/I
  
  
R/W
  
  
功能說明
  
  
L
  
  
L
  
  
MPU寫指令到指令暫存器(IR)
  
  
L
  
  
H
  
  
讀出忙標(biāo)志(BF)及地址記數(shù)器(AC)的狀態(tài)
  
  
H
  
  
L
  
  
MPU寫入數(shù)據(jù)到數(shù)據(jù)暫存器(DR)
  
  
H
  
  
H
  
  
MPU從數(shù)據(jù)暫存器(DR)中讀出數(shù)據(jù)
  
E信號(hào)操作:
  
E狀態(tài)
  
  
執(zhí)行動(dòng)作
  
  
結(jié)果
  
  
高——>低
  
  
I/O緩沖——>DR
  
  
配合/W進(jìn)行寫數(shù)據(jù)或指令
  
  
  
  
DR——>I/O緩沖
  
  
配合R進(jìn)行讀數(shù)據(jù)或指令
  
  
低/低——>高
  
  
無動(dòng)作
  
  
  
內(nèi)部寄存器信號(hào)
忙標(biāo)志:BF   
    BF標(biāo)志提供內(nèi)部工作情況,BF=1表示模塊在進(jìn)行內(nèi)部操作,此時(shí)模塊不接受外部指令和數(shù)據(jù)。BF=0時(shí),模塊為準(zhǔn)備狀態(tài),隨時(shí)可接受外部指令和數(shù)據(jù)。利用STATUS RD 指令,可以將BF讀到DB7總線,從而檢驗(yàn)?zāi)K之工作狀態(tài)。
字型產(chǎn)生ROM(CGROM)   
    字型產(chǎn)生ROM(CGROM)提供8192個(gè)此觸發(fā)器是用于模塊屏幕顯示開和關(guān)的控制。DFF=1為開顯示(DISPLAY ON),DDRAM的內(nèi)容就顯示在屏幕上,DFF=0為關(guān)顯示(DISPLAY OFF)。DFF 的狀態(tài)是指令DISPLAY ON/OFF和D/IT信號(hào)控制的。
顯示數(shù)據(jù)RAM(DDRAM)
    模塊內(nèi)部顯示數(shù)據(jù)RAM提供64×2個(gè)位元組的空間,最多可控制4行16字(64個(gè)字)的中文字型顯示,當(dāng)寫入顯示數(shù)據(jù)RAM時(shí),可分別顯示CGROM與CGRAM的字型;此模塊可顯示三種字型,分別是半角英數(shù)字型(16*8)、CGRAM字型及CGROM的中文字型,三種字型的選擇,由在DDRAM中寫入的編碼選擇,在此階段0000H—0006H的編碼中(其代碼分別是0000、0002、0004、0006共4個(gè))將選擇CGRAM的自定義字型,02H—7FH的編碼中將選擇半角英數(shù)字的字型,至于A1以上的編碼將自動(dòng)的結(jié)合下一個(gè)位元組,組成兩個(gè)位元組的編碼形成中文字型的編碼BIG5(A140—D75F),GB(A1A0-F7FFH)。
字型產(chǎn)生RAM(CGRAM)      
    字型產(chǎn)生RAM提供圖象定義(造字)功能,可以提供四組16×16點(diǎn)的自定義圖象空間,使用者可以將內(nèi)部字型沒有提供的圖象字型自行定義到CGRAM中,便可和CGROM中的定義一樣地通過DDRAM顯示在屏幕中。
地址計(jì)數(shù)器AC
    地址計(jì)數(shù)器AC地址計(jì)數(shù)器是用來貯存DDRAM/CGRAM之一的地址,它可由設(shè)定指令暫存器來改變,之后只要讀取或是寫入DDRAM/CGRAM的值時(shí),地址計(jì)數(shù)器的值就會(huì)自動(dòng)加一,當(dāng)D/I為“0”時(shí)而R/W為“1”時(shí),地址計(jì)數(shù)器的值會(huì)被讀取到DB6——DB0中。
光標(biāo)/閃爍控制電路
    此模塊提供硬體光標(biāo)及閃爍控制電路,由地址計(jì)數(shù)器的值來指定DDRAM中的光標(biāo)或閃爍位置。
指令操作
模塊控制芯片提供兩套控制命令,基本指令和擴(kuò)充指令如下:
指令表1:(RE=0:基本指令)
  
指令
  
  
                      指 令 碼
  
  
功 能
  
  
D/I
  
  
R/W
  
  
D7
  
  
D6
  
  
D5
  
  
D4
  
  
D3
  
  
D2
  
  
D1
  
  
D0
  
  
清除
  
顯示
  
  
0
  
  
0
  
  
0
  
  
0
  
  
0
  
  
0
  
  
0
  
  
0
  
  
0
  
  
1
  
  
DDRAM填滿"20H",并且設(shè)定DDRAM的地址計(jì)數(shù)器(AC)到"00H"
  
  
地址
  
歸位
  
  
0
  
  
0
  
  
0
  
  
0
  
  
0
  
  
0
  
  
0
  
  
0
  
  
1
  
  
X
  
  
設(shè)定DDRAM的地址計(jì)數(shù)器(AC)到"00H",并且將游標(biāo)移到開頭原點(diǎn)位置;這個(gè)指令不改變DDRAM 的內(nèi)容
  
  
顯示狀態(tài)
  開/關(guān)
  
  
0
  
  
0
  
  
0
  
  
0
  
  
0
  
  
0
  
  
1
  
  
D
  
  
C
  
  
B
  
  
D=1: 整體顯示 ON
  
C=1: 游標(biāo)ON   
  
B=1:游標(biāo)位置反白允許
  
  
進(jìn)入點(diǎn)設(shè)定
  
  
0
  
  
0
  
  
0
  
  
0
  
  
0
  
  
0
  
  
0
  
  
1
  
  
I/D
  
  
S
  
  
指定在數(shù)據(jù)的讀取與寫入時(shí),設(shè)定游標(biāo)的移動(dòng)方向及指定顯示的移位
  
  
游標(biāo)或顯示移位控制
  
  
0
  
  
0
  
  
0
  
  
0
  
  
0
  
  
1
  
  
S/C
  
  
R/L
  
  
X
  
  
X
  
  
設(shè)定游標(biāo)的移動(dòng)與顯示的移位控制位;這個(gè)指令不改變DDRAM 的內(nèi)容
  
  
功能
  設(shè)定
  
  
0
  
  
0
  
  
0
  
  
0
  
  
1
  
  
DL
  
  
X
  
  
RE
  
  
X
  
  
X
  
  
DL=0/1:4/8位數(shù)據(jù)
  
RE=1: 擴(kuò)充指令操作
  
RE=0: 基本指令操作
  
  
設(shè)定CGRAM地址
  
  
0
  
  
0
  
  
0
  
  
1
  
  
AC5
  
  
AC4
  
  
AC3
  
  
AC2
  
  
AC1
  
  
AC0
  
  
設(shè)定CGRAM 地址
  
  
設(shè)定DDRAM地址
  
  
0
  
  
0
  
  
1
  
  
0
  
  
AC5
  
  
AC4
  
  
AC3
  
  
AC2
  
  
AC1
  
  
AC0
  
  
設(shè)定DDRAM 地址(顯示位址)
  
第一行:80H-87H
  
第二行:90H-97H
  
  
讀取忙標(biāo)志和地址
  
  
0
  
  
1
  
  
BF
  
  
AC6
  
  
AC5
  
  
AC4
  
  
AC3
  
  
AC2
  
  
AC1
  
  
AC0
  
  
讀取忙標(biāo)志(BF)可以確認(rèn)內(nèi)部動(dòng)作是否完成,同時(shí)可以讀出地址計(jì)數(shù)器(AC)的值
  
  
寫數(shù)據(jù)到RAM
  
  
1
  
  
0
  
  
數(shù)據(jù)
  
  
將數(shù)據(jù)D7——D0寫入到內(nèi)部的RAM (DDRAM/CGRAM/IRAM/GRAM)
  
  
讀出RAM的值
  
  
1
  
  
1
  
  
數(shù)據(jù)
  
  
從內(nèi)部RAM讀取數(shù)據(jù)D7——D0(DDRAM/CGRAM/IRAM/GRAM)
  
指令表2:(RE=1:擴(kuò)充指令)
  
指令
  
  
指 令 碼
  
  
功 能
  
  
D/I
  
  
R/W
  
  
D7
  
  
D6
  
  
D5
  
  
D4
  
  
D3
  
  
D2
  
  
D1
  
  
D0
  
  
待命
  模式
  
  
0
  
  
0
  
  
0
  
  
0
  
  
0
  
  
0
  
  
0
  
  
0
  
  
0
  
  
1
  
  
進(jìn)入待命模式,執(zhí)行其他指令都終止
  
  
卷動(dòng)地址開關(guān)開啟
  
  
0
  
  
0
  
  
0
  
  
0
  
  
0
  
  
0
  
  
0
  
  
0
  
  
1
  
  
SR
  
  
SR=1:允許輸入垂直卷動(dòng)地址
  
SR=0:允許輸入IRAM和CGRAM地址
  
  
反白
  選擇
  
  
0
  
  
0
  
  
0
  
  
0
  
  
0
  
  
0
  
  
0
  
  
1
  
  
R1
  
  
R0
  
  
選擇2行中的任一行作反白顯示,并可決定反白與否。初始值R1R0=00,第一次設(shè)定為反白顯示,再次設(shè)定變回正常
  
  
睡眠
  模式
  
  
0
  
  
0
  
  
0
  
  
0
  
  
0
  
  
0
  
  
1
  
  
SL
  
  
X
  
  
X
  
  
SL=0:進(jìn)入睡眠模式
  SL=1:脫離睡眠模式
  
  
擴(kuò)充功能設(shè)定
  
  
0
  
  
0
  
  
0
  
  
0
  
  
1
  
  
CL
  
  
X
  
  
RE
  
  
G
  
  
0
  
  
CL=0/1:4/8位數(shù)據(jù)
  
RE=1: 擴(kuò)充指令操作
  
RE=0: 基本指令操作
  
G=1/0:繪圖開關(guān)
  
  
設(shè)  定
  繪圖RAM
  地  址
  
  
0
  
  
0
  
  
1
  
  
0
  
AC6
  
  
0
  
AC5
  
  
0
  
AC4
  
  
AC3
  
AC3
  
  
AC2
  
AC2
  
  
AC1
  
AC1
  
  
AC0
  
AC0
  
  
設(shè)定繪圖RAM
  先設(shè)定垂直(列)
  AC6AC5…AC0
    再設(shè)定水平(行)地址AC3AC2AC1AC0
  將以上16位地址連續(xù)寫入即可
  
注:當(dāng)IC1在接受指令前,微處理器必須先確認(rèn)其內(nèi)部處于非忙碌狀態(tài),即讀取BF標(biāo)志時(shí),BF需為零,方可接受新的指令;如果在送出一個(gè)指令前并不檢查BF標(biāo)志,那么在前一個(gè)指令和這個(gè)指令中間必須延長(zhǎng)一段較長(zhǎng)的時(shí)間,即是等待前一個(gè)指令確實(shí)執(zhí)行完成。
三、顯示應(yīng)用
1、字符顯示
帶中文字庫的128X64-0402B每屏可顯示4行8列共32個(gè)16×16點(diǎn)陣的漢字,每個(gè)顯示RAM可顯示1個(gè)中文字符或2個(gè)16×8點(diǎn)陣全高ASCII碼字符,即每屏最多可實(shí)現(xiàn)32個(gè)中文字符或64個(gè)ASCII碼字符的顯示。帶中文字庫的128X64-0402B內(nèi)部提供128×2字節(jié)的字符顯示RAM緩沖區(qū)(DDRAM)。字符顯示是通過將字符顯示編碼寫入該字符顯示RAM實(shí)現(xiàn)的。根據(jù)寫入內(nèi)容的不同,可分別在液晶屏上顯示CGROM(中文字庫)、HCGROM(ASCII碼字庫)及CGRAM(自定義字形)的內(nèi)容。三種不同字符/字型的選擇編碼范圍為:0000~0006H(其代碼分別是0000、0002、0004、0006共4個(gè))顯示自定義字型,02H~7FH顯示半寬ASCII碼字符,A1A0H~F7FFH顯示8192種GB2312中文字庫字形。字符顯示RAM在液晶模塊中的地址80H~9FH。字符顯示的RAM的地址與32個(gè)字符顯示區(qū)域有著一一對(duì)應(yīng)的關(guān)系,其對(duì)應(yīng)關(guān)系如下表所示。
  
80H
  
  
81H
  
  
82H
  
  
83H
  
  
84H
  
  
85H
  
  
86H
  
  
87H
  
  
90H
  
  
91H
  
  
92H
  
  
93H
  
  
94H
  
  
95H
  
  
96H
  
  
97H
  
  
88H
  
  
89H
  
  
8AH
  
  
8BH
  
  
8CH
  
  
8DH
  
  
8EH
  
  
8FH
  
  
98H
  
  
99H
  
  
9AH
  
  
9BH
  
  
9CH
  
  
9DH
  
  
9EH
  
  
9FH
  
其中,C語言編譯器具有直接把中文轉(zhuǎn)換成ASCII碼字符功能。對(duì)照下面原理圖,編譯程序示例,并下載到實(shí)驗(yàn)板上,觀測(cè)現(xiàn)象。



  • 尋跡避障程序
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit RM1=P0^0;
sbit RM2=P0^1;//右電機(jī)

sbit LM1=P0^2;
sbit LM2=P0^3;//左電機(jī)

sbit bzh=P2^6;
sbit RAD=P0^6;//紅外接收右電機(jī)轉(zhuǎn)
sbit LBD=P0^7;//紅外接收左電機(jī)轉(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()//檢查L(zhǎng)CD忙
{      uchar dat;
rs=0;      //rs=1為數(shù)據(jù),=0為命令.
rw=1;    //rw=1為讀,=0為寫.
    do
      {
      P1=0x00;
      en=1; //E信號(hào)下降沿鎖存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       整體顯示,游標(biāo)off,游標(biāo)位置off   
              sentcom(0x01);//0000,0001     清DDRAM   
              sentcom(0x02);//0000,0010     DDRAM地址歸位   
              sentcom(0x80);//1000,0000     設(shè)定DDRAM     7位地址000,0000到地址計(jì)數(shù)器AC   

    }

void lcd_string(char*strpoint)//在當(dāng)前顯示位置顯示LCD字符串
{      register i=0;
while(strpoint[ i]!=0){
        sentdata(strpoint[ i]);
        i++;
        }
}
void  stop()
{
     lcd_init();
  sentcom(0x80);
  lcd_string("現(xiàn)代創(chuàng)新實(shí)訓(xùn)室 ");//C編譯系統(tǒng)本省也具有轉(zhuǎn)換功能,所以也可以這樣寫
  sentcom(0x90);
  lcd_string("尋跡避障一體小車");                           
  sentcom(0x88);
  lcd_string("--指導(dǎo):");                           
  sentcom(0x98);
  lcd_string("--設(shè)計(jì): ");
}
void  tracing()
{
  sentcom(0x80);
  lcd_string("現(xiàn)代創(chuàng)新實(shí)訓(xùn)室 ");
  sentcom(0x90);
  lcd_string("--指導(dǎo):");                              
  sentcom(0x88);
  lcd_string("--設(shè)計(jì):  ");                          
  sentcom(0x98);
  lcd_string("  小車尋跡中---");
}
void  bypass()
{
  sentcom(0x80);
  lcd_string("現(xiàn)代創(chuàng)新實(shí)訓(xùn)室 ");
  sentcom(0x90);
  lcd_string("--指導(dǎo):");                              
  sentcom(0x88);
  lcd_string("--設(shè)計(jì):  ");                          
  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();
}            
}

以上內(nèi)容的Word格式文檔51黑下載地址:
尋跡避障一體小車.doc (390.5 KB, 下載次數(shù): 43)

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:1003871 發(fā)表于 2022-2-12 22:49 | 顯示全部樓層
有機(jī)會(huì)自己做一個(gè)玩玩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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