智能尋跡小車設計
目錄簡介 1實驗一程序狀態(tài)指示燈演示 3實驗二流水燈演示5實驗三數(shù)碼管演示8實驗四數(shù)碼管及跑馬燈演示10實驗五按鍵中斷查詢演示13實驗六話筒聲音識別演示15實驗七光敏電阻與蜂鳴器演示17實驗八紅外反射與直流電機驅動演示19實驗九紅外遙控器解碼程序演示23實驗十串口通信程序演示2830實驗十一 綜合功能演示簡介單片機益智系列 智能尋跡機器人是由益芯科技有限公司為科教方便而研發(fā)設計。 根據現(xiàn)代學校對嵌入式系統(tǒng)開發(fā)的需求。 依據提高學生實際動手 操作能力和思考能力, 以 加強學生對現(xiàn)實生活中嵌入式系統(tǒng)的應用為參照。智 能尋跡機器人全新的設計模式,良好的電路設計, 一體化的機電組合,智趣的 系統(tǒng)開發(fā),更是成為加強學生學習興趣的總動源。智能尋跡機器人采用現(xiàn)在較為流行的 8 位單片機作為系統(tǒng)大腦。以 8051系列家族中的 AT89S51/AT89S52 為主芯片。 40 腳的 DIP 封裝使它擁有 32 個完 全 IO(GPIO 通用輸 入輸出 ) 端口, 通過對這些端口加以信號輸入電路,控制 電路, 執(zhí)行電路共同完成尋跡機器人。 P0.0, P0.1 ,P0.2 ,P0.3 分別通過 LG9110電機驅動來驅動電機 1 和電機 2 。由電機的正轉與反轉來完成機器人的前進, 后退,左轉,右轉,遇 障礙物繞行, 避懸崖等基本動作。 在機器人前進時如果 前方有障礙物, 由紅外發(fā)射管發(fā)射的紅外信號被 反射給紅外接收管, 紅外接管 將此信號經過 P3.7 傳送入 AT89S52 中,主芯片通過內部的代碼進行機器 人的 繞障礙物操作, 同時主芯片將 P3.7 的信號狀態(tài)通過 P2.5 的 LED 指示燈顯示出 來。機器人行走 時會通過 P3.5 與 P3.6 的紅外接收探頭來進行檢測。 當走到懸 崖處時, P3.5 或 P3.6 將收到一個電 平信號, 此電平信號將通過相應端口傳送 入主芯片中, 主芯片通過內部代碼完成機器人的避懸崖操作。 同時 P3.5 與 P3.6的信號狀態(tài)將通過 P2.6/P2.7 顯示出來。在機器人的左轉,右轉,后退的過程, 可以通過觀看以 P2.0/P0.7 為指示燈的運行狀態(tài)。 P0.4 為機器人的聲控檢測端 口,在運行為前進狀態(tài)時, 可以能過聲 控(如拍手聲 )來控制它的運行與停止。P0.6 為機器人的聲音輸出端。在機器人遇到障礙物時。進行繞障礙物與避懸 時可以通過此端口控制蜂鳴器發(fā)出報警聲。當為白天或黑夜時可以通過 P0.5 端口中的光敏電阻來進行判斷,以方便完成機器人夜間自動照明等功能。兩個按鍵以查詢/中斷兩種不同的方式來展現(xiàn)按鍵操作。你可以按下S1鍵來進行機 器的停止。再按下S2鍵來進行機器人的運行。這個按鍵的信息分別被 P3.2,P3.4接收到。IR1為紅外遙控接收器,這就為機器人進行遠程遙控創(chuàng)造了可能。這個紅外遙控接收頭接收到紅外信號時將信號經過P3.3送入到主芯片,主芯片對其進行解密后以不同的方式對機器人進行控制。同時將用戶的按鍵信息通過P2端口上LED數(shù)碼管顯示出來。 P3.0、P3.I中COM端口的加入,讓你完全可以用電腦對其進行控制。你可以通過對串口發(fā)送數(shù)據,數(shù)據會被顯示到LED數(shù)碼管中,并讓機器人執(zhí)行相應的功能。電腦的串口軟件要求波特率為9600。8位數(shù)據位,這時你就可以快樂的用電腦來對它進行你的完全控制了。EXKJ-ZN02功能的組合多樣,使得學生可以充分發(fā)揮自主能力,制作出不同的機器人。它為學校進行機器人競賽和畢業(yè)項目設計建立了實物平臺,是學校教師授課變得更輕松有趣。同時也能改變學生學習模式和激發(fā)學習興趣。更是作為驗證學生學習效果的有力工具。良好的電路板設計,讓學生制作變得 方便容易,其大大提高了學生的制作成功率。提高了學生對電子電路的興趣, 更是教學過程中不可或缺的教具。實驗一程序狀態(tài)指示燈演示實驗簡介:本程序重點演示了一個最簡程序的基本結構, 它從順序、判斷、循環(huán)的形式表現(xiàn)程序的基 本 結構,此程序通過閃燈不斷的閃動, 及閃燈閃動的快慢來表示程序不不同工作狀態(tài)。它也是 常數(shù)字設備中進行狀態(tài)表示的方法之一(例:網卡)。實驗原理圖:VCCR151QKC7 30pFTl-C8 30pFzIMOXT A LIKTAL2C6 10 lFPOjOWDOP0.1WD1P02WD2P0.3iD3m4D4 RODS P0.6»D P0 7WD7R255601020304 D5 06 D7 DBRST 或許PPSEN 亂E網郭P30RiDP3.1/TKDP3 ;TO0P3.3W1F3 沖口'QP3.5/T1町.因只P3 7TOP1.3CD(0P1.4CEX1P1.5iCEX2P1.6CEX3Pt7C»EX4P2.0.MVSSP22A10P2 311P2 4.A12P2 5A13PZB.AUP2.7M15-AT-8S551 AT89S52 AJ69C51AIB9C52三、實現(xiàn)代碼:LED EQU P1MCUDATA EQU 30HDLYCOUNT EQU 40HDLY1 EQU 41HDLY2 EQU 42HORG 0000HMOV LED,#0FFHMOV MCUDATA,#0LOOP:INC MCUDATA MOV A,MCUDATA CLR CSUBB A,#15 JC LOP1 MOV A,MCUDATA CLR C SUBB A,#30 JC LOP2MOV A,MCUDATACLR C SUBB A,#60 JC LOP3 MOV MCUDATA,#0 MOV LED,#0FFH SJMP LOOPLOP1:MOV A,LEDCPL AMOV LED,A MOV DLYCOUNT,#25 LCALL DELAY SJMP LOOPLOP2:MOV A,LEDCPL AMOV LED,A MOV DLYCOUNT,#10 LCALL DELAY SJMP LOOPLOP3:MOV A,LEDCPL AMOV LED,A MOV DLYCOUNT,#5 LCALL DELAY SJMP LOOPDELAY: MOV DLY1,#100 DLYLOP2:MOV DLY2,#10DJNZ DLY2,$ DJNZ DLY1,DLYLOP2 DJNZ DLYCOUNT,DELAYRETEND四、運行效果:程序運行效果為:開機后程序以慢速閃動,一段時間后速度開始加快,再等待時間,閃燈 的速度達到最快,之后一段時間后,閃動將回到開始狀態(tài)。實驗二流水燈演示實驗簡介:本程序全面的表現(xiàn)了子程序的用法, 它從對幾個子程序的操作, 顯示不同的流燈技術,流 水 燈的不同需要不同的表現(xiàn)的形式, 而這里主要介紹了移位操作和內部數(shù)據存儲及讀入操作。延時函數(shù)采用可重入標志,可進行函數(shù)的遞歸調用。實驗原理圖:001 D2 03 OU±ci _FIOlFXT豪 LIXT厲 12RSTEA-P FSEn ALE.TOR;P3P31/TkDP3 sTntdP3.3WT1 pa/ro P3 5/T1FiewvRP3 JTIbvccIPO DADOPOHiftOI P0.2MI2PO.3D3 HH 典 CM P0.5D5 P0.6iAD6 P0 707PU/T2EX Pl-2£CiC7MpFHFz5-r百 -,-'CS30fE 畧!.L二RW仃劉用1R195B0 LJ56D L更二D5 D6 D1P1.4.CEX1 P1 5DC2P20MSP2 1A9P22A10 P21A11 P2 4*12P2 5A13 P2&A14 P2TA15ZTbrl三、 實現(xiàn)代碼:LED EQU P1DLY1 EQU 41HDLY2 EQU 42HDLY3 EQU 43HORG 0000HMOV LED,#0FFHLOOP:LCALL RTOLLCALL LTOR LCALL BTOM LCALL MTOB SJMP LOOPLTOR:MOV R0,#9MOV LED,#0FFHLOP1:LCALL DELAYMOV A,LEDCLR CRLC A MOV LED,ADJNZ R0,LOP1 RETRTOL:MOV R0,#9MOV LED,#0FFHLOP2:LCALL DELAYMOV A,LEDCLR CRRC A MOV LED,ADJNZ R0,LOP2 RETBTOM: MOV R0,#5MOV LED,#0FFHMOV DPTR,#bmCLR ALOPBM:LCALL DELAY LCALL DELAYPUSH ACCMOVC A,A+DPTRMOV LED,APOP ACCINC ADJNZ R0,LOPBMRETMTOB: MOV R0,#5MOV LED,#0FFHMOV DPTR,#mbCLR ALOPMB:LCALL DELAYLCALL DELAYPUSH ACCMOVC A,A+DPTRMOV LED,APOP ACCINC Adjnz R0,LOPMBRETDELAY:MOV DLY1,#5DLOP2:MOV DLY2,#100DLOP3:MOV DLY3,#100DJNZ DLY3,$DJNZ DLY2,DLOP3DJNZ DLY1,DLOP2RETbm: DB 7eH,3cH,18H,00Hmb: DB 0e7H,0c3H,81H,00HEND四、 運行效果:程序運行效果為:開機后,指示燈向從左向右依次點亮,從右向左依次點亮,由兩邊向中 間依次點亮,由中間向兩邊依次點亮。實驗簡介:實驗三數(shù)碼管演示本程序通過對端口的置數(shù)操作,展示了數(shù)碼管的應用技術,數(shù)碼管是將發(fā)光二極管通過一定的形式封裝在一個數(shù)字的外殼中,可以通過不同的點亮方式來顯不同的數(shù)字符號。實驗原理圖:07 30 pFXTAL1XTAL2_±LC1 10uFRSTPSENALE,F(xiàn)ROGPlOtixD P3 1/TnD P3 27HT0P3 37rrriP3.4/T0 pawnP3 6WRPJ7JRDV5SVCCp&aDOPD 1JAD1P0 2AD2 PD 3JAD3 PO 4AD4 P05AD5 PO悶M PO 707PI 0/T2 P1.1ff2EX P 1.2EG< PI 3tEX0 P1.4CEX1 PI 5CEX2 Pl 6CEXJ P1.7CEX4P2.0ftBP2lft9P2 2A10P2 3A1 11P2 4A12PZ5A13P26A14P27A1521苕2T24君<27一2B "W U U "W "W "W W A丄9AT8 9S 517ATfl9 S52/AT B9 CS VA1B9C 62實現(xiàn)代碼:DLY1 EQU 41HDLY2 EQU 42HDLY3 EQU 43HORG 0000HMOV P2,#0FFHMOV DPTR,#SMLOOP:MOV R0,#10CLR ALOP: PUSH ACC LCALL DELAY MOVC A,A+DPTR MOV P2,A POP ACC INC ADJNZ R0,LOP SJMP LOOPSM: DB 9fH,25H,0dH,99H,49H,41H,1fH,01H,19H,03HDELAY:MOV DLY1,#30DLOP2:MOV DLY2,#100DLOP3:MOV DLY3,#100 DJNZ DLY3,$ DJNZ DLY2,DLOP3DJNZ DLY1,DLOP2 RETEND四、 運行效果:程序運行效果為 : 程序下載后 ,數(shù)碼管將從 1-9 依次顯示 , 最后將顯示數(shù)字 0.實驗簡介:本程序主要是將數(shù)碼管及跑馬燈放在一起顯示,它主要說明了,如何將在單系中運行多個看似并行運行的子系統(tǒng)本程序在此將跑馬燈子程序放入到一個頭文件中,對于一個大的工程這 樣將有益于程序文件的管理。實驗原理圖:1ICC7 30|TFCB30pFR1-10KVCCXTAL1P0.DAOCPO 1J«KD1XTAL2PO 2 WD2R$T EW*yPPP0 3.WD3- PO 4AD4- P0.S.AD5 PQ扈心PQ 7AD7P10.T2 -PSEnPl.rTJEX-P12£ChPZ.OmDP1.3CEXC'P1.4CEX1-P1.5CEX2pi 1 /n(DP1.6CE3P3.2TFJY0P17CEX4P3.3JIW1P3.47TOP201A&P35/T1PZ1IA9P3 SWItP2.2A10P3/TOPZ3A11VSSP2.耐仔P2.7A1Sk廣VI-囚cF32T"2r?r2B IIHP X > R215601R22 口23 門只25LJs&O U560 U 560 102 D3 D4 &06 D7 DOgswgmR7Enini RT2 rnRi7rbg4BT1三、 實現(xiàn)代碼:LED EQU P1MCUDATA EQU 30HDLY1 EQU 41HDLY2 EQU 42HDLY3 EQU 43HORG 0000HMOV LED,#0FFHMOV MCUDATA,#0LOOP:LCALL RTOLLCALL LTOR LCALL BTOM LCALL MTOB SJMP LOOPLTOR:MOV R0,#9MOV LED,#0FFHLOP1:LCALL DELAYMOV A,LEDCLR CRLC A MOV LED,ADJNZ R0,LOP1 RETRTOL:MOV R0,#9MOV LED,#0FFHLOP2:LCALL DELAYMOV A,LEDCLR CRRC A MOV LED,ADJNZ R0,LOP2 RETBTOM: MOV R0,#5MOV LED,#0FFH MOV DPTR,#bm CLR ALOPBM:LCALL DELAY LCALL DELAY PUSH ACCMOVC A,A+DPTR MOV LED,A POP ACC INC A djnz R0,LOPBM RETMTOB: MOV R0,#5MOV LED,#0FFHMOV DPTR,#mbCLR ALOPMB:LCALL DELAYLCALL DELAYPUSH ACCMOVC A,A+DPTRMOV LED,APOP ACCINC ADJNZ R0,LOPMBRETDELAY:PUSH ACCPUSH DPHPUSH DPLMOV DPTR,#SMMOV A,MCUDATAXRL A,#11JNZ GOONCLR AMOV MCUDATA,A GOON: MOV DLY1,#5 DLOP2:MOV DLY2,#100 DLOP3:MOV DLY3,#100DJNZ DLY3,$DJNZ DLY2,DLOP3DJNZ DLY1,DLOP2MOV A,MCUDATAMOVC A,A+DPTRMOV P2,AINC MCUDATAPOP DPLPOP DPHPOP ACCRETBM: DB 7EH,3CH,18H,00HMB: DB 0E7H,0C3H,81H,00HSM: DB 9FH,25H,0DH,99H,49H,41H,1FH,01H,19H,03HEND四、 運行效果:本程序運行效果: 本程序運行后, 可以看到跑馬燈按, 從左到右, 從右到左, 從兩邊到中 間, 從中間到兩邊將依次運行。并且在運行過程中,可以看到數(shù)碼管依次從 1-9-0 的順序顯示 數(shù) 字符號。實驗簡介:本程序通過兩個按鍵對數(shù)碼管進行操作,分別向用戶演示了查詢與中斷的操作方式,中中斷應用了對按鍵進行查詢的方法來判斷按鍵的鍵值,查詢按鍵方法中則采用了鍵盤延遲的方法消來除按鍵重復輸入。實驗原理圖:IC1VGC40C610JC730pFR1510KXT A LI XTAL2PO.OAM PO血1 P0 2/AD2PG3MD3PO 4AWPO 5剛5P0.6,ftD6PO 7AD7RST EA/PP PSN ME PROGP10J2P1.1 "2EXP13QEX0 Pl.AEXIP3 )忘Q P3.1/Tj(D P3.2lf4T0 P3$7r7ti P34/F0 P3 5/T1 P3.WR P3.7TOP1.6CEX3 Pl MEXdVSSP2D昭P2 J IM P22/A1O P2 3A11 PZ4A12P25AQ P26A14P2 7A157R?霾35一備<1廠|=廠町出2-23F疔薯zJyJ-'l-J'-y *-lI<-Atl活才-1,31,*霍3 H r r r fab7b.ii=b”KM實現(xiàn)代碼S1 BIT P3.2S2 BIT P3.4MCUDATA EQU 30HDLY1 EQU 41HDLY2 EQU 42HORG 0000H SJMP START ORG 0003H SJMP S1DOSTART:NOPSETB S1SETB S2SETB EASETB EX0SETB IT0MOV MCUDATA,#0 MOV DPTR,#SMMOV A,MCUDATA MOVC A,A+DPTRMOV P2,ALOOP:JB S2,$LCALL DLYKEY JB S2,LOOP INC MCUDATA MOV A,MCUDATA XRL A,#10 JNZ GOON1 MOV MCUDATA,#0 GOON1:MOV A,MCUDATA MOVC A,A+DPTR MOV P2,A SJMP LOOPS1DO:JNB S1,$DEC MCUDATAMOV A,MCUDATAXRL A,#0FFHJNZ GOON2MOV MCUDATA,#9GOON2:MOV A,MCUDATAMOVC A,A+DPTRMOV P2,ARETIDLYKEY: MOV DLY1,#250DLYLOP2:MOV DLY2,#250DJNZ DLY2,$DJNZ DLY1,DLYLOP2RETSM: DB 9FH,25H,0DH,99H,49H,41H,1FH,01H,19H,03HEND四、 運行效果:程序運行效果:開機后數(shù)碼管顯示數(shù)字 "1" ,當按 S1 不放時,數(shù)碼管數(shù)字不變, , 松開 S1 按 鍵,數(shù)碼 減 1 ;按 S2 鍵不放時,數(shù)碼管數(shù)字會自動加 1 。并且數(shù)字遵守從 0-9 循環(huán)操作實驗六話筒聲音識別演示實驗簡介:本程序主要通過話筒對聲音信號進行識別,由于本電路有效的去除雜波,所以僅能對響較度 大的聲音進行識別(例:拍手聲)。像正常的說話聲對本電路慮除,不會產生信息的輸入。話 筒識另啲加入,為我們建立了聲控平臺。實驗原理圖:C7XpFVCCL±C1hiolfcsaopF 厲二_ll_JCGIOuFR151DK11917-XTAL1XTAL2PO O ADO P0JAD1 PO2/AD2 PO.3AD3PO.4 AD4PC.5W5 PO.6,1ftD6 PO.7-AD740亙36歹適35<u "JrEKug4MRlhnurK67RI4nJmlV3Xj80S尸nuRST 胡'VPPPSENALE .PROGP1O/T2P1.4CEX1P3 OxD P3 1/TxD P351RT0 P3.3INT1P3.4/T0P3.5/T1P3 6VR P3.7WP16/CEX3VSSPZOfM P2lfl9 P2.21M0 P2 3ft11 P2.4 A12 P2fiA13 P2.61M4 PZ7 A15-1IX7X iiR145.1KC510 JS60DC2R3 15CXXZV3 8590三、 實現(xiàn)代碼:LEFTLED BIT P2.0RIGHTLED BIT P0.7B1 BIT P0.4DLY1 EQU 41HDLY2 EQU 42HORG 0000HCLR LEFTLEDCLR RIGHTLEDLOOP:JB B1,$LCALL DLYKEYJB B1,LOOPCPL LEFTLEDCPL RIGHTLEDSJMP LOOPDLYKEY: MOV DLY1,#2DLYLOP2:MOV DLY2,#5DJNZ DLY2,$DJNZ DLY1,DLYLOP2RETEND四、 運行效果:程序運行效果:本程序開機后,前方兩側的指示燈點亮,拍一下手后,前方指示燈關閉再。 一次進行拍手,指示燈又一次被點亮。實驗簡介:本程序講述了光敏電阻的使用方法。當處于光暗時,光敏電阻導通,將信號傳入到單片機,單片機將控制蜂鳴器按一定的頻率響亮,并且前方的指示燈也開始閃閃亮。通過對光敏電阻號信的接收,從而實現(xiàn)了夜間自動照明的功能。實驗原理圖:30caEesorlBJR1510KCGlOuF±C11-10 uFVCCXTAL1PO O/ADO -PO 1AD1 卜XTAL2P0.2/AD2 -P0 3/AD3 -P0.4JAD4 -P0 5/AD5 -P0 6W6 -P0.7ZD7 RST百可vppPtOT2 -戸SENpurax-alefriSgP1.2ECHP3.Q«xDP13CEX0- P1.4CEX1 Pt5CEX2-P3.1 /TkDPI 6CEX3-巴.CNYOP1.7CEX4 -P3.3TFTT1P3.4/T0P2.0JA8-P3.5/T1P2 1 血9 -P3.6l?P2.2A10-P3.7l?bP23A11 VSSP24jA12 陀如3 P2.6*A14-P2.7iA15-40.21IC1AT6 対 51 AT89 S5? AT89 C5 1/ A 7B9C 5 2尊宜20XOLnunrR15 nurnuPRL11nTB s盯R s三、 實現(xiàn)代碼:LEFTLED BIT P2.0RIGHTLED BIT P0.7RL1 BIT P0.5SB1 BIT P0.6DLY1 EQU 41HDLY2 EQU 42HORG 0000HLOOP:JB RL1,GOTOSETB SB1SETB LEFTLEDSETB RIGHTLEDSJMP LOOPGOTO:LCALL DELAYCPL SB1CPL LEFTLEDCPL RIGHTLEDSJMP LOOPDELAY: MOV DLY1,#250DLYLOP2:MOV DLY2,#250DJNZ DLY2,$DJNZ DLY1,DLYLOP2RETEND四、 運行效果:程序運行效果:打開電源開關,如果本機在有光照的情況下,將無任何的反應,這時將子機 移動到較黑暗的地方,將會看到前方指示燈閃亮和蜂鳴器響亮。實驗簡介:本程序通過前端,底端的紅外發(fā)射頭和接收頭來判斷小車的運行軌跡,當前與底端發(fā)生信號輸入時,信號將被單片機接收,單片機來控制機器按照寫好的程序開始運行。同時為達到好效果,加入聲音識別與蜂鳴器輸入輸出設備。使得此機器人的運動變得更加有趣。實驗原理圖:ce胡聲MCC -rrALia貼曲no - PO 1 期 1 -XTAL2悶2PQ-PO 5JAU5 -TOT«>7 -RST-DvwpP1.O/T2 -1 PSENPI 1T2EX-ale TOTOP1.2ECI- P3IXR 掃Pl.lCEKt -P1 SJCE» P11/TjCJP1&CEX3PH27RT:P1 7JCEX4piiinti P14JT<1P2.0 AB -P15/T1P2.1 AS-“ P3-6kPZZI D+門沁P13*11-vssPz4iA12- P2 5A1J-P2 0AT43K'-r:CiIcjkhi rIIC31D4三、實現(xiàn)代碼:RUNFLAG BIT OOH;/ENABLELIGHT BIT 01H;/定義運行標志位 定義指示燈使能位;* 完成基本數(shù)據變量定義S1STATE BIT P1.0; S2STATE BIT P1.1; B1STATE BIT P1.2; IRSTATE BIT P1.3; RUNSTOPSTATE BIT P1.4; FONTIRSTATE BIT P1.5; LEFTIRSTATE BIT P1.6; RIGHTIRSTATE BIT P1.7;完成狀態(tài)指示燈定義/ / 完成按鍵端口的定義*/ */S1 BIT P3.2;S2 BIT P3.4; */LEFTLED BIT P2.0; RIGHTLED BIT P0.7;*完成前方指示燈端口定義 */LEFTIR BIT P3.5;/RIGHTIR BIT P3.6;/FONTIR BIT P3.7;/;*完成紅外探頭端口定義 */M1A BIT P0.0;/M1B BIT P0.1;/M2A BIT P0.2;/M2B BIT P0.3;/;* 完成電機端口定義 */ B1 BIT P0.4;/RL1 BIT P0.5;/SB1 BIT P0.6;/完成話筒 , 光敏電阻 ,蜂鳴器 .端口定義 */ */定義S1狀態(tài)標志位定義S2狀態(tài)標志位定義B1狀態(tài)標志位 定義IR狀態(tài)標志位 定義運行停止標志位定義FONTIF狀態(tài)標志位定義LEFTIR狀態(tài)標志位定義RIGHTIRSTAT狀態(tài)標志位定義S1按鍵端口定義S2按鍵端口定義前方左側指示燈端口定義前方右側指示燈端口定義前方左側紅外探頭 定義前主右側紅外探頭 定義正前方紅外探頭定義電機 1 正向端口 定義電機 1 反向端口 定義電機 2正向端口 定義電機 2反向端口定義話筒傳感器端口定義光敏電阻端口 定義蜂鳴端口IR1 BIT P3.3;/;* 完成紅外接收端口的定義 */ SHOWSM EQU P2定義紅外接收端口DLY1 EQU 41HDLY2 EQU 42HDLY3 EQU 43HORG 0000HSJMP STARTORG 0003HLJMP S1ZDORG 000BHRETISTART:MOV P0,#0FFHMOV P1,#0FFHMOV P2,#0FFHMOV P3,#0FFHSETB EASETB EX0SETB IT0SETB ES同意開啟外部中斷 1設定外部中斷 1為低邊緣觸發(fā)類型總中斷開啟SETB EX1; /SETB IT1;/SETB ET0;SETB EA;/MOV DPTR,#SMDATAMOV A,#01HMOVC A,A+DPTRMOV SHOWSM,ALOOP:LCALL CARGOJNB FONTIR,CARDOJB LEFTIR,CARDOJB RIGHTIR,CARDOJB B1,LOOPLCALL CARSTOPJB B1,$SJMP LOOPCARDO:MOV A,#02MOVC A,A+DPTR MOV SHOWSM,A LCALL CARBACKMOV R1,#8LOP1: LCALL DELAYCPL SB1DJNZ R1,LOP1 MOV A,#03MOVC A,A+DPTRMOV SHOWSM,ALCALL CARLEFTMOV R1,#8LOP2: LCALL DELAYCPL SB1DJNZ R1,LOP2SETB SB1MOV A,#01MOVC A,A+DPTRMOV SHOWSM,A LJMP LOOPS1ZD:LCALL CARSTOP JB S2,$ RETICARGO:SETB M1A;SETB M2A;/將電機 1正向端口置高將電機 2正向端口置高CLR M1BCLR M2BSETB RUNFLAGMOV A,#01H MOVC A,A+DPTRMOV SHOWSM,A; / CLR RIGHTLED;/CLR LEFTLED;/RETCARBACK:SETB M1B; / SETB M2B; / CLR M1ACLR M2A數(shù)碼管顯示前進狀態(tài) 將前方右側指示燈置低 ( 亮 ) 將前方左側指示燈置低 ( 亮 )將電機 1反向端口置高將電機 2反向端口置高MOV A,#02HMOVC A,A+DPTRMOV SHOWSM,A;/ 數(shù)碼管顯示后退狀態(tài)SETB RIGHTLED; /SETB LEFTLED; / RETCARLEFT:SETB M1B; /SETB M2A; /CLR M1ACLR M2BMOV A,#03H數(shù)碼管顯示前進狀態(tài)將前方右側指示燈置高 ( 滅) 將前方左側指示燈置高 ( 滅)將電機 1反向端口置高將電機 2反向端口置高MOVC A,A+DPTRMOV SHOWSM,A;/ 數(shù)碼管顯示后退狀態(tài)CLR RIGHTLED;/SETB LEFTLED;/RETCARRIGHT:SETB M1A;/SETB M2B; /CLR M2ACLR M1BMOV A,#04H數(shù)碼管顯示前進狀態(tài) ;將前方右側指示燈置低 ( 亮) 將前方左側指示燈置高 ( 滅)將電機 1反向端口置高將電機 2反向端口置高MOVC A,A+DPTRMOV SHOWSM,A; / / 數(shù)碼管顯示后退狀態(tài)SETB RIGHTLED; / CLR LEFTLED;/RETCARSTOP:CLR M1ACLR M2ACLR M1BCLR M2BCLR RUNFLAGMOV A,#00HMOVC A,A+DPTRMOV SHOWSM,A; / / 數(shù)碼管顯示后退狀態(tài)SETB RIGHTLED; /SETB LEFTLED; / RET數(shù)碼管顯示前進狀態(tài) ;將前方右側指示燈置高 ( 滅) 將前方左側指示燈置低 ( 亮)數(shù)碼管顯示前進狀態(tài) ;將前方右側指示燈置高 ( 滅) 將前方左側指示燈置高 ( 滅)DELAY: MOV DLY1,#10DLYLOP2:MOV DLY2,#100DLYLOP3:MOV DLY3,#100DJNZ DLY3,$DJNZ DLY2,DLYLOP3DJNZ DLY1,DLYLOP2 RETSMDATA: DB 03H,9FH,25H,0DH,99H,49H,41H,1FH,01H,19H;/0,1,2,3,4,5,6,7,8,9END四、運行效果:程序效果: 打開本機電源開關, 機器人開始向前運行(這要看當時的條件),在運動的過程中, 如果前方有障礙物,機器人則開始向后后退一段時間后,向左運動,在向左運行一段時間后。再開始向前運行。在整個調向的過程中,蜂鳴器閃響。并且在機器人前進的過程中,你可以通過拍手來控制機器人的停止和運行。實驗九紅外遙控器解碼程序演示實驗簡介:本程序主要將現(xiàn)在比較常用M50462遙控器進行解碼,將解碼后的數(shù)據通過 P2端口的數(shù)碼管顯示出來,為了更好的看到運行過程,特加了三個指示燈用來指示當前運行狀態(tài)。P10閃亮,表示程序正在運行;P11閃亮,表示接收到數(shù)據;P12閃亮,表示觸發(fā)內部的定時器操作; P13 閃亮,表示正確接收完一個數(shù)據。實驗原理圖:C7 3CpFTcejocfHFR1510K二sisVCCXT A LI XTAL2PO O.AIDOPO1ii!AO1PG 3 AO 3RSTEArPFSEnP3iQ眉邁 P3 1fTiOF3 zTnTOP3 37RT11P14/T0P3 5/T1P3CAV? pa依bPO.6O6PO7iAO7P2JA11P2 5A13R2&A14VSSP27A15臨的ff'34尋廠P1.O7T2P1 1/T2EXPl-2CiP1 3£EX0 P1.5X:EX2P20MSP2 1A9P22A10:E'S-T:CJL>:f>:<罠臨fh訶R1&JS60 1S60DI OS DO cw込R13R12Bfttiiirrti_ BT1三、 實現(xiàn)代碼:#include <reg52.h>/包含 51單片機相關的頭文件#DEFINE UINT UNSIGNED INT / #DEFINE UCHAR UNSIGNED CHAR /重定義無符號整數(shù)類型 重定義無符號字符類型UCHAR CODE LEDSHOWDATA=0X03,0X9F,0X25,0X0D,0X99, / 定義數(shù)碼管顯示數(shù)據0X49,0X41,0X1F,0X01,0X19;/0,1,2,3,4,5,6,7,8,9UCHAR CODE RECVDATA=0X07,0X0A,0X1B,0X1F,0X0C,0X0D,0X0E,0X00,0X0F,0X19;UCHAR IRCOM7;STATIC UNSIGNED INT LEDFLASH;/UNSIGNED CHAR RUNFLAG=0;BIT ENABLELIGHT=0;/* 完成基本數(shù)據變量定義SBIT S1STATE=PU0;SBIT S2STATE=P1A1;SBIT B1STATE=P1A2;SBIT IRSTATE=P1A3;SBIT RUNSTOPSTATE=P1A4;SBIT FONTIRSTATE=P1A5;SBIT LEFTIRSTATE=P1A6;SBIT RIGHTIRSTATE=P1A7;/* 完成狀態(tài)指示燈定義SBIT S1=P3A2;SBIT S2=P3A4;/* 完成按鍵端口的定義SBIT LEFTLED=P2A0;SBIT RIGHTLED=P0A7;/* 完成前方指示燈端口定義SBIT LEFTIR=P3A5;/*/*/*/*/SBIT RIGHTIR=P3A6;/SBIT FONTIR=P3A7;/*完成紅外探頭端口定義 */SBIT M1A=P0A0;/SBIT M1B=P0A1;/SBIT M2A=P0A2;/SBIT M2B=P0A3;/*完成電機端口定義 */SBIT B1=P0A4;/SBIT RL1=P0A5;/SBIT SB1=P0A6;/* 完成話筒 , 光敏電阻 , 蜂鳴器 . 端口定義 */SBIT IRIN=P3A3;/* 完成紅外接收端口的定義 */#DEFINE SHOWPORT P2/定義閃動頻率計數(shù)變量定義運行標志位 定義指示燈使能位定義S1狀態(tài)標志位定義S2犬態(tài)標志位定義B1狀態(tài)標志位定義IR狀態(tài)標志位 定義運行停止標志位定義FONTIF狀態(tài)標志位 定義LEFTIR狀態(tài)標志位定義RIGHTIRSTAT狀態(tài)標志位定義S1按鍵端口定義S2按鍵端口定義前方左側指示燈端口 定義前方右側指示燈端口定義前方左側紅外探頭 定義前主右側紅外探頭 定義正前方紅外探頭定義電機 1 正向端口定義電機 1 反向端口定義電機 2正向端口 定義電機 2反向端口定義話筒傳感器端口定義光敏電阻端口 定義蜂鳴端口定義紅外接收端口定義數(shù)碼管顯示端口EXTERN VOID CONTROLCAR(UCHAR CARTYPE);/ 聲明小車控制子程序VOID DELAYMS(UNSIGNED CHAR X)/0.14MS延時程序UNSIGNED CHAR I;WHILE(X-)FOR (I = 0; I<13; I+) /14MS定義臨時變量延時時間循環(huán)延時VOID DELAY() / UINT DELAYTIME=30000; / WHILE(DELAYTIME-);/RETURN; /定義延時子程序 定義延時時間變量 開始進行延時循環(huán) 子程序返回VOID IR_IN() INTERRUPT 2 USING 0/UNSIGNED CHAR J,K,N=0; /EX1 = 0;/DELAYMS(15); / IF (IRIN=1) / EX1 =1; / RETURN; /WHILE (!IRIN) / 信號。DELAYMS(1); /FOR (J=0;J<4;J+) /FOR (K=0;K<8;K+) / WHILE (IRIN) / 電平信號。DELAYMS(1); /WHILE (!IRIN) /DELAYMS(1); /WHILE (IRIN) /DELAYMS(1); / N+; / IF (N>=30) /定義INT2外部中斷函數(shù)定義臨時接收變量關閉外部中斷 , 防止再有信號到達 延時時間,進行紅外消抖 判斷紅外信號是否消失外部中斷開返回等IR變?yōu)楦唠娖剑^9MS勺前導低電平延時等待采集紅外遙控器數(shù)據分次采集 8位數(shù)據等IR變?yōu)榈碗娖?,跳過4.5MS的前導高延時等待等 IR 變?yōu)楦唠娖窖訒r等待計算IR高電平時長延時等待計數(shù)器加加判斷計數(shù)器累加值EX1=1; / 打開外部中斷功能RETURN; / 返回IRCOMJ=IRCOMJ >> 1; /IF (N>=8) /IRCOMJ = IRCOMJ | 0X80; /N=0; /IF (IRCOM2!=IRCOM3) /EX1=1; /RETURN; /FOR(J=0;J<10;J+) /IF(IRCOM2=RECVDATAJ) /P2=LEDSHOWDATAJ; /EX1 = 1; /VOID MAIN(VOID)/BIT EXEFLAG=0;/LEDFLASH=3000; /EX1=1;/IT1=1;/EA=1;/SHOWPORT=LEDSHOWDATA0;WHILE(1)/DELAY();/RUNSTOPSTATE=RUNSTOPSTATE;進行數(shù)據位移操作并自動補零判斷數(shù)據長度數(shù)據最高位補 1清零位數(shù)計錄器判斷地址碼是否相同打開外部中斷返回循環(huán)進行鍵碼解析進行鍵位對應數(shù)碼管顯示相應數(shù)碼外部中斷開主程序入口定義可執(zhí)行位變量對閃燈數(shù)據進行初始化同意開啟外部中斷 1 設定外部中斷 1為低邊緣觸發(fā)類型 總中斷開啟/ 數(shù)碼管顯示數(shù)字 0程序主循環(huán)延時/ 運行指示燈狀態(tài)轉變四、 運行效果:程序運行效果: 打開本機電源開關,可以看到 P10不停的閃動,按下遙控器的數(shù)字鍵, 數(shù)碼管則顯示相應的數(shù)字鍵 (1-9)。可以看到P11、P12在顯示后呈亮狀態(tài),則可以接收下一 個 數(shù)據,在上面過程中可以看到 P13閃亮了一下,表明上次正確接收到數(shù)據。實驗十串口通信程序演示實驗簡介:本程序通過數(shù)碼管,LED指示燈的閃亮來表示當前串口通信的結果,串口通信使單片機與 電腦之間通信的橋梁,通過對它的學習,可以很好的用電腦來進行單片機的控制,及對單片機 數(shù)據的采集。因此串口通信被廣泛的用于工業(yè)控制中。實驗原理圖:cajOuF-XTAU i XTA.L2Ih- ftP3.0 Rtf) 叫 i lk ElF3.2W5 pijWi4 Tfl-P&.T1 -PlfiWtPi75bilGiFD.aADO PO 1IILD1 PD.2.UkD2PCL3AO3PD.4AD4PC5JADS PQoADe PO.FAD?旦<:31騙專薯一 1vssPlfliirjFHCEM1 P15CEX2F1TCEX4 IBTiR'SlOKP13CEX0WDAfl 曲 P22M10 P23W11 FZ4A12F? 5»13P2SA14三、實現(xiàn)代碼:四、運行效果:程序運行效果:打開本機電源開關后,可以看到P1端LED指示燈在不停的閃耀,我們使 用 “串口調試助手” 或其它軟件向單片機發(fā)送數(shù)據,可以看到相應的數(shù)據顯示在數(shù)碼管上,并 且發(fā)送的數(shù)據又返回到電腦中。(只顯示0-9數(shù)字)實驗十一綜合功能演示一、實驗簡介:本程序通過將以前所編寫的分立程序通過有機結合,編制成一個大的應用系統(tǒng)。小車在完成自動防撞,防懸崖等動作外,還可以通過紅外遙控器進行遠程遙控。如果你對電腦編程很有 趣興的話,當然也可以通過電腦對串口進行編程。以方便通過電腦來進行對小車控制。在正常 的運特過程中,還可以通過聲控(拍手聲)來對小車進行控制,每一種控制小車都會完成相應的功能。為了更清晰的看到小車運行過程狀態(tài),特將