基于51單片機運用兩個單片機控制小車前進,一個控制轉(zhuǎn)向,一個控制后輪前進,兩個單片機沒有聯(lián)系各自工作。21ic電子技術(shù)網(wǎng)站上有很多源碼,可以找找看!
創(chuàng)新互聯(lián)一直通過網(wǎng)站建設(shè)和網(wǎng)站營銷幫助企業(yè)獲得更多客戶資源。 以"深度挖掘,量身打造,注重實效"的一站式服務(wù),以網(wǎng)站設(shè)計制作、成都網(wǎng)站建設(shè)、移動互聯(lián)產(chǎn)品、營銷型網(wǎng)站建設(shè)服務(wù)為核心業(yè)務(wù)。10年網(wǎng)站制作的經(jīng)驗,使用新網(wǎng)站建設(shè)技術(shù),全新開發(fā)出的標準網(wǎng)站,不但價格便宜而且實用、靈活,特別適合中小公司網(wǎng)站制作。網(wǎng)站管理系統(tǒng)簡單易用,維護方便,您可以完全操作網(wǎng)站資料,是中小公司快速網(wǎng)站建設(shè)的選擇。
別想那么復(fù)雜。
首先,你把檢測黑線的傳感器就當一普通開關(guān)。因為,當照射在黑線上時,光線反射能力弱,輸出低電平。照在黑線外,則輸出高電平。只有高低兩種電平,所以,你只需要把它當一個普通開關(guān)看待。
然后,既然是普通開關(guān),寫代碼時只需要位聲明以及設(shè)置gpio為雙向或強拉模式,51單片機都不用設(shè)置gpio。
最后,程序里,檢測到高電平然后io口電平取反就行。
簡單的寫的話不會區(qū)別偏離黑線距離遠近的,復(fù)雜點兒的話會分區(qū)編程,簡單版如下:
void turn_left()
{
P1.0 = 0; //左前輪
P1.1 = 1; //右前輪
P1.2 = 0; //左后輪
P1.3 = 1; //右后輪
}
... ...
unsigned char judge()
{
switch(P2 0x??)
case 0x??:
{
break;
}
... ...
return 某變量(用于選擇拐彎方向程序)
}
轉(zhuǎn)彎比較簡單,就是一個輪轉(zhuǎn),另一個不轉(zhuǎn)達到轉(zhuǎn)彎目的,你也可以用速度高低來控制,自己DIY就行。
你在中斷里面把flag=1;進入主函數(shù)后flag一直保持1,而你中斷的判斷條件是if(flag==0P32==0),它就進不了中斷了。你要想這么寫的話可以改成這樣看看:
void INT_0() interrupt 0
{
flag==0;
if(flag==0)
{
P2=0x00; //小車停車
delayms(2000); //延時兩秒
flag=1;
}
}
或者干脆把if判斷去了得了,(僅代表自己看法,我也不怎么懂?。W约憾嗾{(diào)試調(diào)試,肯定能做好的。
1、這不是一個完整的C程序,僅僅是一個延時函數(shù),標準的C程序必須包括main函數(shù)。
2、t是函數(shù)的參數(shù),在調(diào)用的時候,將t值傳入,這個值就相當于你說的初值了。
3、3個while可以看出,這是3層循環(huán),所以總的循環(huán)次數(shù)是j*I*t,即乘數(shù)關(guān)系。因為只使用1層或2層循環(huán)的話,循環(huán)次數(shù)受char類型的限制,所以,必須使用3層循環(huán)。
4、這個函數(shù)的作用應(yīng)當是控制小車的速度。
膠帶的寬度一定的話:
四個傳感器一字排列的情況最簡單:
按1234號傳感器命名,照在膠帶上狀態(tài)位為A,否則為a.
直線正常行走時,23號持續(xù)為A,14號持續(xù)為a.
分析開始右轉(zhuǎn)的邏輯:
2號變a,繼續(xù)直線行走,直到4號變A,根據(jù)24號間的距離和小車在這段時間內(nèi)行駛的距離計算出轉(zhuǎn)動角度(這就是動態(tài)平面幾何問題了,自己畫圖解一下,注意轉(zhuǎn)彎時候前后中心點的軌跡,膠帶寬度是關(guān)鍵,得到的角度不會也不必太精確。這里我只討論邏輯),然后以比計算結(jié)果稍大(目的是確保能讓2恢復(fù)狀態(tài)A)的轉(zhuǎn)動角度開始轉(zhuǎn)彎,等到2和3都恢復(fù)狀態(tài)A,小車變回直線行走,等到2號重新變a,小車再恢復(fù)到原先的轉(zhuǎn)動角度……后面一直循環(huán)就行了
直線上如果車子前進方向傾斜,和轉(zhuǎn)彎一樣,下面以車子向右傾斜為例分析:
會出現(xiàn)3號變a的情況,繼續(xù)保持直線行走,直到1號變A,計算出小車在這個過程中行進距離,結(jié)合膠帶寬度,1和3號間的距離,就可以算出偏離的角度然后決定轉(zhuǎn)動角度。后面具體調(diào)整和過彎道一樣。
然后我來吐槽為什么要用labview,你是想著拿著筆記本進行無線操控么 - -,嵌入式的labview編程現(xiàn)在還不成熟好吧~