第八屆畫畫小車_第1頁
第八屆畫畫小車_第2頁
第八屆畫畫小車_第3頁
第八屆畫畫小車_第4頁
第八屆畫畫小車_第5頁
免費預(yù)覽已結(jié)束,剩余32頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、低調(diào)畫畫小車小組組長:組員:翟文豪,目錄1方案設(shè)計與論證1.1 主控系統(tǒng)電機驅(qū)動模塊測距模塊1.4 機械系統(tǒng)2主要器件介紹2.1 AT89S52 的介紹L298N 的介紹L298 的引腳功能2.2.2 L298 的運行參數(shù)2.2.3 L298 的邏輯控制硬件設(shè)計總體設(shè)計WYHC2010 測編碼盤電路3.3LM324 電壓比較電路3.4 AT89C52 單片機控制電路時鐘電路復(fù)位電路EA/VPP(31 腳)的功能和接法P0 口外接上拉電阻3.5 L298N 馬達(dá)驅(qū)動電路控制電路3.6程序設(shè)計主程序4. 2 51 單片機串口通訊程序4. 3 上位機程序附錄方案設(shè)計與論證根據(jù)要求,確定如下方案:在現(xiàn)

2、有玩具電動車的基礎(chǔ)上,加裝光電檢測器,實現(xiàn)對電動車的速度、所走過距離的實時測量,并將測量數(shù)據(jù)傳送至單片機進(jìn)行處理,然后由單片機根據(jù)所檢測的各種數(shù)據(jù)實現(xiàn)對電動車的智能控制。這種方案能實現(xiàn)對電動車的運動狀態(tài)進(jìn)行實時控制,控制靈活、可靠,精度高,可滿足對系統(tǒng)的各項要求。2.1 主控系統(tǒng)根據(jù)設(shè)計要求,我認(rèn)為此設(shè)計屬于多輸入量的復(fù)雜程序控制問題。據(jù)此,決定采用單片機作為整個系統(tǒng)的,用其控制行進(jìn)中的小車,以實現(xiàn)其既定的性能指標(biāo)。充分分析的系統(tǒng),其關(guān)鍵在于實現(xiàn)小車的自動控制,而在這一點上,單片機就顯現(xiàn)出來它的優(yōu)勢控制簡單、方便、快捷。這樣一來,單片機就可以充分發(fā)揮其資源豐富、有較為強大的控制功能及可位尋址操

3、作功能、價格低廉等優(yōu)點。因此,這種方案是一種較為理想的方案。針對本設(shè)計特點多開關(guān)量輸入的復(fù)雜程序控制系統(tǒng),需要擅長處理多開關(guān)量的標(biāo)準(zhǔn)單片機,而不能用精簡 I/O 口和程序器的小體積單片機,D/A、A/D 功能也不必選用。根據(jù)這些分析,我選定了 AT89S52 單片機作為本設(shè)計的主控裝置,51 單片機具有功能強大的位操作指令,I/O 口均可按位尋址,程序空間多達(dá) 8K,對于本設(shè)計也綽綽有余,更可貴的是 51 單片機價格非常低廉。在綜合考慮了傳感器、兩部電機的驅(qū)動等諸多片機,充分利用 AT89S52 單片機的資源。后,決定采用一片單2.2 電機驅(qū)動模塊方案一:采用繼電器對電的開或關(guān)進(jìn)行控制,通過開

4、關(guān)的切換對小車的方向進(jìn)行調(diào)整.此方案的優(yōu)點是電路較為簡單,缺點是繼電器的響應(yīng)時間慢,易損壞,較短,可靠性不高。方案二:采用電阻網(wǎng)絡(luò)或數(shù)字電位器調(diào)節(jié)電的分壓,從而達(dá)到分壓的目的。但電阻網(wǎng)絡(luò)只能實現(xiàn)有級調(diào)速,而數(shù)字電阻的元器件價格比較昂貴。更主要在于一般的電方案三:電阻很小,但電流很大,分壓不僅會降低效率,而且實現(xiàn)很。用單片機控制使之工作在占空比可調(diào)的開關(guān)狀態(tài)下,精確調(diào)整電轉(zhuǎn)速。是一種廣泛采用的調(diào)速技術(shù)。現(xiàn)市面上有很多此種,我選用了 L298N。這種調(diào)速方式有調(diào)速特性優(yōu)良、調(diào)整平滑、調(diào)速范圍廣、過載能力大,能承受頻繁的負(fù)載沖擊,還可以實現(xiàn)頻繁的無級快速啟動、制動和反轉(zhuǎn)等優(yōu)點。2.3 測速模塊方案一

5、采用定時器對小車運行距離的的控制,雖然控制簡單,電路簡單,但由于小車運行速度的不穩(wěn)定,輸出電壓的不穩(wěn)定,造成了所走距離產(chǎn)生較大的誤差,不符合的要求。方案二采用紅外對管實現(xiàn)對走過圈數(shù)的測量,從而通過圈數(shù)求出距離來實現(xiàn)測距。WYCH2010 紅外對管槽中無遮擋時,接收管導(dǎo)通,模塊 D0 輸出低電平,遮擋時,D0所示:輸出。通過脈沖數(shù)的數(shù)數(shù),從而確定距離。其電路如下2.4 機械系統(tǒng)本題目要求小車的機械系統(tǒng)穩(wěn)定、靈活、簡單,可選用三輪和四輪式,考慮到要完成 90的轉(zhuǎn)角,采驅(qū)動部分:采用直流驅(qū)動輪加萬向輪。電機,由 L298N 雙通道馬達(dá)驅(qū)動模塊驅(qū)動兩個馬達(dá),其力矩完全可以達(dá)到模擬效果。電源模塊:采用干

6、電池給電機供電,再用穩(wěn)壓對電池電壓進(jìn)行降壓給單片機。采用一套電源可減少小車的負(fù)重。整體組裝效果如圖 3 所示。圖 3 小車組裝效果主要器件介紹3.1 AT89C52 的介紹采用的 STC89S52,其片內(nèi)帶有 8K 字節(jié)閃速可編程、可擦除1000次程序器。該產(chǎn)品與工業(yè)標(biāo)準(zhǔn) 8051 中單片機完全兼容,并且還可支持兩種可選的省電模式,工作時鐘最高可達(dá)到 24MHz。使實時控制、實時處理的功能更加完善,簡化了硬件配置。與 MCS-51 單片機產(chǎn)品兼容 、8K 字節(jié)在系統(tǒng)可編程 Flash器、 1000 次擦寫周期、全靜態(tài)操作:0Hz33Hz 、三級加密程序器 、 32 個可編程 I/O 口線、三個

7、 16 位定時器/計數(shù)器八個中斷源、全雙工 UART 串行通道、 低功耗空閑和掉電模式 、掉電后中斷可喚醒、看門狗定時器、雙數(shù)據(jù)指針、掉電標(biāo)識符。AT89S52 實物如圖 4。圖 4 AT89S52 引腳示意圖AT89C52 是一種低功耗、高性能CMOS8 位微控制器,具有在系統(tǒng)可編8K程 Flash器。使用高密度非易失性器技術(shù)制造,與工業(yè) 80C51 產(chǎn)品指器在系統(tǒng)可編程,亦適于常規(guī)編程系統(tǒng)可編程 Flash,使得 STC89C52令和引腳完全兼容。片上 Flash 允許程序器。在單上,擁有靈巧的 8 位CPU 和為眾多控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。 STC89C52 具有以下標(biāo)

8、準(zhǔn)功能: 8k 字節(jié) Flash,256 字節(jié)RAM, 32 位I/O 口線,看門狗定時器,2 個數(shù)據(jù)指針,三個 16 位 定時器/計數(shù)器,一個 6 向量 2 級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時鐘電路。另外,STC89C52 可降至 0Hz 靜態(tài)邏輯操作,支持 2 種可選擇節(jié)電模式。空閑模式下,CPU 停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM 內(nèi)容被保存,振蕩器被凍結(jié),單片機一切工作停止,直到下一個中斷或硬件復(fù)位為止。8 位微控制器 8K字節(jié)在系統(tǒng)可編程 FlashP0 口:P0 口是一個 8 位漏極開路的雙向I/O 口。作為輸出口,每位能驅(qū)動 8

9、個TTL 邏輯電平。對P0 端口寫“1”時,引腳用作抗輸入。當(dāng)外部程序和數(shù)據(jù)器時,P0 口也被作為低 8 位地址/數(shù)據(jù)復(fù)用。在這種模式下, P0 具有上拉電阻。在flash 編程時,P0 口也用來接收指令字節(jié);在程序校驗時,輸出指令字節(jié)。程序校驗時,需要外部上拉電阻。P1 口:P1 口是一個具有上拉電阻的 8 位雙向I/O 口,p1 輸出緩沖器能驅(qū)動 4 個此時可以作為輸TTL 邏輯電平。對 P1 端口寫“1”時上拉電阻把端口拉高,使用。作為輸入使用時,被外部拉低的引腳由于電阻的原因,將輸出電流(IIL)。此外,P1.0 和P1.2 分別作定時器/計數(shù)器 2 的外部計數(shù)輸入(P1.0/T2)和

10、時器/計數(shù)器 2 的觸發(fā)輸入(P1.1/T2EX),具體如下表所示。 在flash 編程和校驗時,P1 口接收低 8 位地址字節(jié)。引腳號第二功能P1.0 T2(定時器/計數(shù)器T2 的外部計數(shù)輸入),時鐘輸出P1.1 T2EX(定時器/計數(shù)器 T2 的捕捉/重載觸發(fā)信號和方向控制)P1.5 MOSI( P1.6 MISO(P1.7 SCK(系統(tǒng)編程用)系統(tǒng)編程用)系統(tǒng)編程用)P2 口:P2 口是一個具有上拉電阻的 8 位雙向I/O 口,P2 輸出緩沖器能驅(qū)動 4 個此時可以作為輸TTL 邏輯電平。對 P2 端口寫“1”時上拉電阻把端口拉高,使用。作為輸入使用時,被外部拉低的引腳由于電阻的原因,將

11、輸出電流(IIL)。在外部程序器或用 16 位地址外部數(shù)據(jù)器(例如執(zhí)行MOVX DPTR) 時,P2 口送出高八位地址。在這種應(yīng)用中,P2 口使用很強的上拉發(fā)送 1。在使用 8 位地址(如MOVX RI)外部數(shù)據(jù)器時,P2口輸出P2 鎖存器的內(nèi)容。在flash 編程和校驗時,P2 口也接收高 8 位地址字節(jié)和一些控制信號。P3 口:P3 口是一個具有上拉電阻的 8 位雙向I/O 口,p2 輸出緩沖器能驅(qū)動 4 個此時可以作為輸TTL 邏輯電平。對 P3 端口寫“1”時上拉電阻把端口拉高,使用。作為輸入使用時,被外部拉低的引腳由于電阻的原因,將輸出電流(IIL)。P3 口亦作為 STC89C52

12、 特殊功能(第二功能)使用,如下表所示。在flash 編程和校驗時,P3 口也接收一些控制信號。端口引腳 第二功能P3.0 RXD(串行輸)P3.1 TXD(串行輸出口) P3.2O(外中斷 0)P3.31(外中斷 1)P3.4 TO(定時/計數(shù)器 0)P3.5 T1(定時/計數(shù)器 1)P3.6 WR(外部數(shù)據(jù)P3.7 RD(外部數(shù)據(jù)器寫選通)器讀選通)此外,P3 口還接收一些用于 FLASH 閃存編程和程序校驗的控制信號。RST復(fù)位輸入。當(dāng)振蕩器工作時,RST 引腳出現(xiàn)兩個機器周期以上高電平將是單片機復(fù)位。ALE/PROG當(dāng)外部程序器或數(shù)據(jù)器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低

13、 8 位字節(jié)。一般情況下,ALE 仍以時鐘振蕩頻率的 1/6 輸出固定的脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當(dāng)外部數(shù)據(jù)器時將跳過一個ALE 脈沖。對 FLASH器編程期間,該引腳還用于輸入編程脈沖(PROG)。必要,可通過對特殊功能寄存器(SFR)區(qū)中的 8EH 單元的D0 位ALE 操作。該位置位后,只有一條 MOVX 和MOVC 指令才能將ALE置位,可激活。此外,該引腳會被微弱拉高,單片機執(zhí)行外部程序時,應(yīng)設(shè)置 ALE無效。位PSEN程序當(dāng) STC89C52 由外部程序允許(PSEN)輸出是外部程序器的讀選通信號,器取指令(或數(shù)據(jù))時,每個機器周期兩次 PSEN有

14、效,即輸出兩個脈沖,在此期間,當(dāng)信號。外部數(shù)據(jù)器,將跳過兩次 PSENEA/VPP外部允許,欲使CPU 僅外部程序器(地址為0000H-FH),EA 端必須保持低電平(接地)。需注意的是:如果加密位 LB1 被編程,復(fù)位時會鎖存 EA 端狀態(tài)。如 EA 端為FLASH(接 Vcc 端),CPU 則執(zhí)行程序器的指令。器編程時,該引腳加上+12V 的編程允許電源Vpp,當(dāng)然這必須是該器件是使用 12V 編程電壓 Vpp。3.2 L298N 的介紹L298 是 ST 公司生產(chǎn)的一種高電壓、大電流電機驅(qū)動。該的主要特點是:工作電壓高,最高工作電壓可達(dá) 46V;輸出電流大,瞬間峰值電流可達(dá) 3A,持續(xù)工

15、作電流為 2A;內(nèi)含兩個 H 橋的高電壓大電流全橋式驅(qū)動器,可以用來驅(qū)動直流電和步進(jìn)電、繼電器、線圈等感性負(fù)載;采用標(biāo)準(zhǔn) TTL 邏輯電平信號控制;具有兩個使能控制端,在不受輸入信號影響的情況下允許或器件工作;有一個邏輯電源輸入端,使邏輯電路部分在低電壓下工作;可以外接檢測電阻,將變化量反饋給控制電路。3.2.1L298 的引腳功能L298的引腳圖如下圖 5,其引腳功能見表 1。圖 5 L298 引腳圖表 1 L298 引腳功能表引腳符號功能115234576SENSING A SENSING B OUT1 OUT2Vs IN1 IN2ENABLE A ENAB GNDVss IN3 IN4

16、OUT3OUT4與地連接電流檢測電阻,并向驅(qū)動與地連接電流檢測電阻,并向驅(qū)動反饋檢測到的信號反饋檢測到的信號此腳是全橋式驅(qū)動器A 的兩個輸出端,用來連接負(fù)載此腳是全橋式驅(qū)動器A 的兩個輸出端,用來連接負(fù)載電機驅(qū)動電源輸入端輸入標(biāo)準(zhǔn)的 TTL 邏輯電平信號,控制全橋式驅(qū)動器A 的開關(guān)輸入標(biāo)準(zhǔn)的 TTL 邏輯電平信號,控制全橋式驅(qū)動器A 的開關(guān)使能控制端.輸入標(biāo)準(zhǔn) TTL 邏輯電平信號;低電平時全橋式驅(qū)動器禁使能控制端.輸入標(biāo)準(zhǔn) TTL 邏輯電平信號;低電平時全橋式驅(qū)動器工作。工作。11接地端,本身的散熱片與 8 腳相通邏輯控制部分的電源輸人端口輸入標(biāo)準(zhǔn)的 TTL 邏輯電平信號,控制全橋式驅(qū)動器B

17、 的開關(guān)輸入標(biāo)準(zhǔn)的 TTL 邏輯電平信號,控制全橋式驅(qū)動器B 的開關(guān)此腳是全橋式驅(qū)動器B 的兩個輸出端,用來連接負(fù)載此腳是全橋式驅(qū)動器B 的兩個輸出端,用來連接負(fù)載89101213143.2.2 L298 的運行參數(shù)L298 的運行參數(shù)見如下表 3表 2L198 的運行參數(shù)參數(shù)測試環(huán)境最小值最大值驅(qū)動電源電壓 Vs邏輯電源電壓 Vss輸入低電平電壓持續(xù)工作時-ViL-ViH-2.5V4.5V0.3V2.3V0.3V2.3V1.8V46V7V1.5VVss 1.5VVss4.9V輸入電壓使能端低電平電壓 Ven=L-電壓 Ven=H-使能端全橋式驅(qū)動電壓Vat) IL=1A IL=2A3.2.3

18、 L298 的邏輯控制L298 的邏輯控制見如下表 3。其中 C、D 分別為 IN1、IN2 或 IN3、IN4;L為低電平,H 為,為不管是低電平還是。表 3 L298 對直流電機控制的邏輯真值表輸入輸出Ven=HC=H;D=L正轉(zhuǎn)C=L;D=H反轉(zhuǎn)硬件設(shè)計4.1 總體設(shè)計從畫畫小車的設(shè)計要求出發(fā),經(jīng)過前面的方案論證我決定用原有的玩具小車作為設(shè)計模型。再在小車身上加上測圈模塊和馬達(dá)驅(qū)動裝置來完成整個功能。智能小車采用后輪驅(qū)動,前輪轉(zhuǎn)換方向。測圈 U 型槽分別裝在馬達(dá)配備的編碼盤的上邊,當(dāng)電壓比較器輸出不平時,對編碼盤圈數(shù)加一,若達(dá)到的理想的圈數(shù),所示。便對電機驅(qū)動或關(guān)閉,從而畫出理想的直線。

19、信號流程如圖 11圖 11 整體設(shè)計框圖4.紅外對管測編碼盤圈數(shù)WYCH2010 紅外對管槽中無遮擋時,接收管導(dǎo)通,模塊 D0 輸出低電平,遮擋時,D0 輸出。通過脈沖數(shù)的數(shù)數(shù),從而確定距離。其電路如下所示:電壓比較馬達(dá)驅(qū)動模塊單片機控制系統(tǒng)編碼盤轉(zhuǎn)動時電平變換C=D制動Ven=LC=;D=沒有輸出,電機不工作4.3LM324 電壓比較電路電壓比較器式在運放的基礎(chǔ)上去掉反饋電阻使放大倍數(shù)趨于無窮大。此時形成了一個電壓比較器。當(dāng)同相端電壓大于反相端電壓時比較器輸出,當(dāng)反相端電壓高于同相端電壓時輸出端輸出度電平。如圖 13 電壓比較電路,用了 LM324 3 個單獨的運放外接一個可調(diào)電阻輸入基準(zhǔn)電

20、壓。基準(zhǔn)電壓加在反相輸入端上,上一級電路反饋過來的電壓從電壓比較器的同相端輸入。當(dāng) WYCH2010 反饋的電壓高于基準(zhǔn)電壓時,比較器輸出。當(dāng) WYCH2010 反饋的電壓低于基準(zhǔn)電壓時,比較器輸出低電平。這樣就使探頭把地面的反射光線的程度只分成了兩種情況,易于單片機識別。考慮到地面的粗超程度不一樣可以用可調(diào)電位器去調(diào)節(jié)基準(zhǔn)電壓,經(jīng)過軌道實際測量后確定基準(zhǔn)電壓的值。圖 13 電壓比較電路4.4 AT89S52 單片機控制電路單片機控制電路由但單片機最小系統(tǒng)組成,主要作用是接受探頭傳來的電壓信號,再通過程序設(shè)定的邏輯算法給出下一級馬達(dá)驅(qū)動電路的指令。單片機最小系統(tǒng)包括主控 IC,外部時鐘電路,復(fù)

21、位電路和電源組成。本設(shè)計采用如圖 14 所示的單片機最先系統(tǒng)。在此就圖 14 為參照解釋一下 51 單片機最小系統(tǒng)各子電路的特點。圖 14 單片機主控電路4.4.1 時鐘電路XTAL1 和 XTAL2 是獨立的輸入和輸出反相放大器,它們可以被配置為使用石英晶振的片內(nèi)振蕩器,或者是器件直接由外部時鐘驅(qū)動。圖 14 中采用的是內(nèi)時鐘模式,即采用利用的振蕩電路,在 XTAL1、XTAL2 的引腳上外接定時元件(一個石英晶體和兩個電容),振蕩器便能產(chǎn)生自激振蕩。一般來說晶振可以在 1.2 12MHz 之間任選,甚至可以達(dá)到 24MHz 或者更高,但是頻率越高功耗也就越大。在本實驗套件中采用的 11.0

22、592M 的石英晶振。和晶振并聯(lián)的兩個電容的大小對振蕩頻率有微小影響,可以起到頻率微調(diào)作用。當(dāng)采用石英晶振時,電容可以在 20 40pF 之間選擇(本實驗套件使用 30pF);當(dāng)采用陶瓷諧振器件時,電容要適當(dāng)?shù)卦龃笠恍?30 50pF 之間。通常選取 33pF 的陶瓷電容就可以了。另外值得一提的是如果在設(shè)計單片機系統(tǒng)的印刷電路板(PCB) 時,晶體和電容應(yīng)盡可能與單片機靠近,以減少引線的寄生電容,保證振蕩器可靠工作。檢測晶振是否起振的方法可以用示波器可以觀察到 XTAL2輸出的十分漂亮的正弦波,也可以使用萬用表測量( 把擋位打到直流擋,這個時候測得的是有效值)XTAL2 和地之間的電壓時,

23、可以看到 2V 左右一點的電壓。4.4.2 復(fù)位電路在單片機系統(tǒng)中,復(fù)位電路是非常關(guān)鍵的,當(dāng)程序跑飛(運行不正常)或死機(停止運行)時,就需要進(jìn)行復(fù)位。MCS-5l 系列單片機的復(fù)位引腳 RST( 第9 管腳) 出現(xiàn) 2 個機器周期以上的時,單片機就執(zhí)行復(fù)位操作。如果 RST持續(xù)為,單片機就處于循環(huán)復(fù)位狀態(tài)。復(fù)位操作通常有兩種基本形式:上電自動復(fù)位和開關(guān)復(fù)位。圖 14 中所示的復(fù)位電路就包括了這兩種復(fù)位方式。上電瞬間,電容兩端電壓不能突變,此時電容的負(fù)極和 RESET 相連,電壓全部加在了電阻上,RESET 的輸入為高,上的電壓逐漸減小,最后約等于 0,被復(fù)位。隨之+5V 電源給電容充電,電阻

24、正常工作。并聯(lián)在電容的兩端為復(fù)位按鍵,當(dāng)復(fù)位按鍵沒有被按下的時候電路實現(xiàn)上電復(fù)位,在正常工作后,通過按下按鍵使 RST 管腳出現(xiàn)腳上保持 10ms 以上的達(dá)到手動復(fù)位的效果。一般來說,只要 RST 管,就能使單片機有效的復(fù)位。圖中所示的復(fù)位電阻和電容為經(jīng)典值,實際制作是可以用同一數(shù)量級的電阻和電容代替,讀者也可自行計算 RC 充電時間或在工作環(huán)境實際測量,以確保單片機的復(fù)位電路可靠。4.4.3 EA/VPP(31 腳)的功能和接法51 單片機的 EA/VPP(31腳) 是程序外部和外部程序器的選擇管腳。當(dāng)EA 保持是否有時,單片機程序器,只器;當(dāng) EA 保持低電平時,則不管器。對于現(xiàn)今的絕大部

25、分單片機來說,其的程序器(一般為 flash)容量都很大,因此基本上不需要外接程序器,而是直接使用的器。器。在本實驗套件中,EA 管腳接到了 VCC 上,只使用的程序4.4.4 P0 口外接上拉電阻51 單片機的 P0 端口為開漏輸出,無上拉電阻(見圖 15)。所以在當(dāng)做普通 I/O 輸出數(shù)據(jù)時,由于 V2 截止,輸出級是漏極開路電路,要使“1”信號(即)正常輸出,必須外接上拉電阻。圖 15 P0 端口的 1 位結(jié)構(gòu)另外,避免輸入時數(shù)據(jù)出錯,也需外接上拉電阻。在這里簡要的說下其原因:在輸入狀態(tài)下,從鎖存器和從引腳上讀來的信號一般是一致的,但也有例外。例如,當(dāng)從總線輸出低電平后,鎖存器Q 0,

26、Q 1,場效應(yīng)管 V1開通,端口線呈低電平狀態(tài)。此時無論端口線上外接的信號是低電平還是,從引腳讀入單片機的信號都是低電平,因而不能正確地讀入端口引腳上的信號。又如,當(dāng)從總線輸出后,鎖存器Q 1, Q 0,場效應(yīng)管 V1 截止。如外接引腳信號為低電平, 從引腳上讀入的信號就與從鎖存器讀入的信號不同。所以當(dāng) P0 口作為通用 I/O 接口輸入使用時,在輸入數(shù)據(jù)前,應(yīng)先向 P0 口寫“1”,此時鎖存器的Q 端為“0”,使輸出級的兩個場效應(yīng)管 V1、V2 均截止,引腳處于懸浮狀態(tài),才可作動 NMOS 電路和避免輸入時外加一個 10K 排阻。此外,51輸入。總結(jié)來說:為了能使 P0 口在輸出時能驅(qū)數(shù)據(jù)出

27、錯,需外接上拉電阻。在設(shè)計中采用的是單片機在對端口 P0P3 的輸入操作上,為避免讀錯,應(yīng)先向電路中的鎖存器寫入“1”,使場效應(yīng)管截止,以避免鎖存器為“0”狀態(tài)時對引腳讀入的干擾。4.5 L298N 馬達(dá)驅(qū)動電路電機驅(qū)動一般采用H 橋式驅(qū)動電路,L298N集成了H 橋式驅(qū)動電路,從而可以采用 L298N 電路來驅(qū)動電機。通過單片機給予 L298N 電路信號來控制小車的速度,起停。為了設(shè)計方便我采用了市面上已有的 L298N 電機驅(qū)動模塊,其特點便宜穩(wěn)定性高。為了是設(shè)計達(dá)到更加好的效果我選用了 L298N 馬達(dá)驅(qū)動模塊。其原理圖如圖 16 所示。實物圖如圖 17 所示。圖 16 L298N 引腳

28、圖4.6 紅外電路4.20.2 紅外接收原理void tim0_isr (void)errupt 1 using 1irtime+; /用于計數(shù) 2 個下降沿之間的時間flag+;/*-外部中斷 0 中斷處理-*/errupt 0 /外部中斷 0 服務(wù)函數(shù)void EX0_ISR (void)/接收紅外信號處理/是否開始處理標(biāo)志位sic unsigned chari;sic bit startflag;if(startflag)if(irtime=33)/引導(dǎo)碼 TC9012 的頭碼,9ms+4.5msi=0;每個電平的持續(xù)時間,用于以后判斷是 0 還是 1irdatai=irtime;/ir

29、time=0; i+;if(i=33)irok=1; i=0;elseirtime=0; startflag=1;/*-定時器 0 初始化-*/void TIM0init(void)/定時器 0 初始化TMOD=0 x02;/定時器 0 工作方式 2,TH0 是重裝值,TL0 是初值TH0=0 x00; /重載值 TL0=0 x00; /初始化值/開中斷ET0=1;TR0=1;/*-外部中斷 0 初始化-*/void EX0init(void)/指定外部中斷 0 下降沿觸發(fā),/使能外部中斷/開總中斷IT0 = 1;EX0 = 1;EA = 1;0 (P3.2)/*-鍵值處理-*/void Ir

30、_work(void)/紅外鍵值散轉(zhuǎn)程序switch(IRcord2)/判斷第三個數(shù)碼值case 0X16:in1=1; in2=0; in3=1; in4=0;顯示相應(yīng)的按鍵值break;/0case 0X0C:in1=0; in2=1; in3=0; in4=1;break;/1 case 0X18: stop(); break;/2 case 0X5E: case 0X08: forty(); break;/4 case 0X1C: sixty(); break;/5 case 0X5A:dred(); break;/6 case 0X42:/7 forty(); turnright()

31、; sixty(); turnright(); forty(); turnright(); sixty();break; case 0X52: case 0X4A:default:break;break;/3;break;/8;break;/9irpro_ok=0;/處理完成標(biāo)志/*-紅外碼值處理-*/void Ircordpro(void)/紅外碼值處理函數(shù)unsigned char i, j, k; unsigned char cord,value;k=1;for(i=0;i4;i+)/處理 4 個字節(jié)for(j=1;j7)/大于某值為 1,這個和晶振有絕對關(guān)系,這里使用 12M 計算,此

32、值可以有一定誤差value|=0 x80; if(j=1; k+;IRcordi=value; value=0;irpro_ok=1;/處理完畢標(biāo)志位置 1/*void hongwai()EX0init(); /初始化外部中斷 TIM0init();/初始化定時器while(1)/主循環(huán)if(irok)Ircordpro(); irok=0;/如果接收好了進(jìn)行紅外處理/如果處理好后進(jìn)行工作處理,如按對應(yīng)的按鍵后顯示if(irpro_ok)對應(yīng)的數(shù)字等Ir_work();*/void main()in1=0; in2=0; in3=0; in4=0;EX0init(); /初始化外部中斷 TIM

33、0init();/初始化定時器 while(1)if(irok)Ircordpro(); irok=0;/如果接收好了進(jìn)行紅外處理/如果處理好后進(jìn)行工作處理if(irpro_ok)Ir_work();程序設(shè)計5.1 主程序主程序流程圖如圖 18 所示。開始選擇結(jié)束控制程序#include#define uunsigned#define uchar unsigned charsbit in1=P10;sbit in2=P11;/用作電機端口NO執(zhí)行自選模式凹形矩形100cm80cm40cmsbitsbitin3=P12;in4=P13;sbitsbitleftled=P24;rightled=P

34、23;/連紅外對管,用作檢測左輪和右輪走過圈數(shù)sbitIR=P32;/紅外接口標(biāo)志void delay(uz);void fifteen(); void thirty(); void forty(); void sixty(); void eighty(); ukeyscan();void cecarquan();/void straight(); void turnleft(); void turnright(); void rectangle(); void stop();voidu ustraight();flag=0; num=0;uuleftquanshu=0; /左編碼盤圈數(shù)rig

35、htquanshu=0; /右編碼盤圈數(shù)/*紅外部分生*/unsigned char irtime;/紅外用全局變量 bit irpro_ok,irok;unsigned char IRcord4; unsigned char irdata33; void Ir_work(void);void Ircordpro(void);void delay(uz)ux,y;for(x=z;x0;x-)for(y=110;y0;y-);void fifteen()while(leftquanshu8)cecarquan();stop(); leftquanshu=0;void thirty()while(

36、leftquanshu15)cecarquan();stop(); leftquanshu=0;void forty()/40cm 線while(leftquanshu25)cecarquan();/straight();stop(); leftquanshu=0;void sixty()while(leftquanshu35)/60cm 線cecarquan();/straight();stop(); leftquanshu=0;void eighty()while(leftquanshu50)/80cm 線cecarquan();stop(); leftquanshu=0;voiddred

37、()while(leftquanshu65)/100cm 線cecarquan();/straight();stop(); leftquanshu=0;void rectangle()forty(); turnright(); sixty();turnright(); forty();turnright();sixty();voixing()leftquanshu=0;sixty(); turnright(); leftquanshu=0;fifteen(); turnright(); leftquanshu=0; thirty(); turnleft(); leftquanshu=0; th

38、irty(); turnleft(); thirty(); turnright(); leftquanshu=0; fifteen(); turnright();leftquanshu=0;sixty(); turnright(); leftquanshu=0;sixty();voidcecarquan()/測num=0; in3=0; in4=1; in1=1;in2=1;圈數(shù)while(num11); in1=0; in2=1; in3=0;in4=1;in1=0; in2=1; in3=1; in4=1;while(numrightquanshu)num=0; while(num!=50)in1=1; in2=0; in3=0; in4=0;in1=1; in2=0; in3=1; in4=0;if (rightquanshuleftquanshu)num=0; while(num!=50)in3=1; in4=0; in1=0; in2=0;in3=1; in4=0; in1=1; in2=0;*/*/紅外部分/*/void tim0_isr (void)errupt 1 using 1irtime+; /用于計數(shù) 2 個下降沿之間的時間flag+; num+;/*外部中斷 0 中斷處理*/void EX0_ISR (void)errupti;0/外部中

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論