嵌入式期末考試_第1頁(yè)
嵌入式期末考試_第2頁(yè)
嵌入式期末考試_第3頁(yè)
嵌入式期末考試_第4頁(yè)
嵌入式期末考試_第5頁(yè)
已閱讀5頁(yè),還剩36頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、嵌入式作品期末設(shè)計(jì)嵌入式作品簡(jiǎn)介作品名稱:多功能智能探測(cè)車制作團(tuán)隊(duì):王明睿(硬件電路搭建、整體設(shè)計(jì))王杰英(面向單片機(jī)編程、功能實(shí)現(xiàn))鄭芳芳(資料整理、外圍設(shè)計(jì))制作時(shí)間:20天指導(dǎo)老師:孫玉軒創(chuàng)意來(lái)源:我們本身身為通信專業(yè)的學(xué)生,并且對(duì)電子電路,和對(duì)于硬件編程非常感興趣,所以制作了該課題,主要進(jìn)行硬件編程,硬件搭建,無(wú)線信號(hào)的綜合處理。并且有實(shí)際運(yùn)用價(jià)值。作品意義:搭建硬件并對(duì)硬件進(jìn)行二次開(kāi)發(fā)編程,達(dá)到綜合運(yùn)用的價(jià)值。作品運(yùn)用環(huán)境及主要功能:本作品主要應(yīng)用于救援、安防、勘探、偵查、追蹤、等人類不可到達(dá)的領(lǐng)域。本小車可快速組建小區(qū)安防網(wǎng)絡(luò)。對(duì)小區(qū)安全進(jìn)行綜合監(jiān)控。本小車可以對(duì)生命物體、對(duì)綜合煙

2、霧氣體探測(cè),并回傳電腦,可以用于救援救災(zāi),本小車可以自動(dòng)檢測(cè)障礙物體,使小車行進(jìn)更流暢。本小車可以跟蹤物體進(jìn)行監(jiān)控,實(shí)現(xiàn)了無(wú)人自動(dòng)追蹤。本小車可以實(shí)現(xiàn)超聲波測(cè)距并回傳電腦,精度精確到毫米。本小車留有多個(gè)I/O口,可以快速擴(kuò)展其他模塊,實(shí)現(xiàn)更多功能。下一部需完善 :增加小車云臺(tái),使攝像頭上下各45度角旋轉(zhuǎn),增加觀測(cè)的范圍。增加數(shù)據(jù)傳輸?shù)乃俣群蜏?zhǔn)確性,使傳回的信息更豐富、迅速。可以增加3G模塊,使小車在任何基站覆蓋范圍內(nèi)都能進(jìn)行遠(yuǎn)程綜合控制和數(shù)據(jù)傳輸。嵌入式作品說(shuō)明書 作品名稱:多功能智能探測(cè)車 院系專業(yè):信息工程學(xué)院移動(dòng)通信專業(yè) 作 者:王明睿、王杰英、鄭芳芳 目 錄一、概述 -P3P4二:制作

3、流程 -P5P6三、硬件電路結(jié)構(gòu) -P7P15四、硬件編程程序 -P16P37五、小車控制方法、視頻存儲(chǔ)方法-P38六、未來(lái)發(fā)展 -P39一、概述:隨著移動(dòng)通信業(yè)務(wù)的增加,無(wú)線通信已獲得非常廣泛的應(yīng)用。無(wú)線網(wǎng)絡(luò)除了提供語(yǔ)音服務(wù)之外,還提供多媒體、高速數(shù)據(jù)和視頻圖像業(yè)務(wù)。無(wú)線通信環(huán)境(無(wú)線信道、移動(dòng)終端等)以及移動(dòng)多媒體應(yīng)用業(yè)務(wù)的特點(diǎn)對(duì)視頻圖像的視頻圖像編碼與傳輸技術(shù)已成為當(dāng)今信息科學(xué)與技術(shù)的前沿課題。該課題圍繞硬件結(jié)構(gòu)搭建,與硬件編程實(shí)現(xiàn)為中心,對(duì)無(wú)線信號(hào)進(jìn)行綜合處理。硬件編程是重點(diǎn),同時(shí)也是難點(diǎn)。整個(gè)作品的軟件使用面向單片機(jī)的C語(yǔ)言編寫有以下原因:1、 可以直接對(duì)硬件編程,良好的硬件管理,可

4、移植性能良好。2、 用C 編寫程序比匯編更符合人們的思考習(xí)慣,開(kāi)發(fā)者可以擺脫與硬件無(wú)必要的接觸,更專心的考慮功能和算法而不是考慮一些細(xì)節(jié)問(wèn)題,這樣就減少了開(kāi)發(fā)和調(diào)試的時(shí)間。3、 C語(yǔ)言具有良好的程序結(jié)構(gòu),適用于模塊化程序設(shè)計(jì)。4、 系統(tǒng)程序結(jié)構(gòu)清晰,易于調(diào)試和維護(hù)。不同的功能模塊,分別指定相應(yīng)的入口參數(shù)和出口參數(shù),對(duì)于一些要重復(fù)調(diào)用的程序一般把其編成函數(shù),這樣可以減少程序代碼的長(zhǎng)度,又便于整個(gè)程序的管理。本小車一共有3種工作方式:方式一:對(duì)小車進(jìn)行無(wú)線遙控,無(wú)線視頻傳輸,小車傳感器感應(yīng),并回傳傳感器信息到上位機(jī)方式二:利用超聲波模塊對(duì)物體進(jìn)行跟蹤,實(shí)現(xiàn)無(wú)人操作跟蹤物體進(jìn)行拍攝。方式三:智能躲避

5、障礙物,無(wú)需人為控制,小車自己躲避障礙物,并回傳視頻。二、制作流程1、作品構(gòu)思:如何使用計(jì)算機(jī)設(shè)計(jì)制作出精彩的作品,這是最核心的問(wèn)題之一,觀察很多計(jì)算機(jī)作品,大多利用已有的計(jì)算機(jī)平臺(tái)進(jìn)行軟件開(kāi)發(fā),于是我們決定自己搭建自己的硬件電路結(jié)構(gòu),對(duì)硬件進(jìn)行編程操作,并建立與上位機(jī)的綜合通訊。2、硬件電路搭建:我們確立課題,以及準(zhǔn)備實(shí)現(xiàn)的功能,我們開(kāi)始搭建硬件電路,硬件電路的每個(gè)模塊的參數(shù)資料都要非常了解,熟悉運(yùn)用每個(gè)模塊。了解模塊的硬件結(jié)構(gòu),和實(shí)現(xiàn)原理,最后把每個(gè)硬件都搭載在我們的核心平臺(tái)上(雙STC 89C52)。3、軟件編程:我們搭載完硬件結(jié)構(gòu),又對(duì)硬件進(jìn)行綜合的運(yùn)用,第一步,調(diào)試電機(jī)控制。第二步,

6、實(shí)現(xiàn)有線對(duì)小車電機(jī)遙控。第三步、實(shí)現(xiàn)無(wú)線對(duì)小車的電機(jī)遙控。第四步,實(shí)現(xiàn)無(wú)線的視頻傳輸。第五步,實(shí)現(xiàn)人體紅外模塊的獨(dú)立功能。第六步、實(shí)現(xiàn)人體紅外模塊與小車無(wú)線遙控綜合功能(對(duì)小車遙控,和小車回傳)。第七步、分步實(shí)現(xiàn)、綜合煙霧信息回傳、酒精氣體回傳、左右是否有障礙物回傳。第八步、實(shí)現(xiàn)超聲波跟蹤功能。(可對(duì)物體進(jìn)行跟蹤、追蹤拍攝)。第九步、實(shí)現(xiàn)超聲波測(cè)距,并回傳。5、 最終調(diào)試與銜接。把每一個(gè)獨(dú)立的模塊,結(jié)合成一個(gè)獨(dú)立的窗口顯示。最后達(dá)到綜合探測(cè)的目的。把相對(duì)獨(dú)立的功能結(jié)合。最后使多功能變成綜合功能。三、硬件電路結(jié)構(gòu)1、USB轉(zhuǎn)RS232結(jié)構(gòu)電路2、測(cè)速傳感器電路3、核心單片機(jī)通訊接口電路,傳感器接

7、口電路,蜂鳴器電路。4、藍(lán)牙串口電路,LCD顯示電路5、U1U2核心單片機(jī)接口及電路。6、 復(fù)位電路、時(shí)鐘電路。7、 直流電動(dòng)機(jī)驅(qū)動(dòng)電路及工作原理。8、 擴(kuò)展接口電路 9、 直流電機(jī)工作原理。10、 傳感器參數(shù)及其資料。四、面向硬件編程程序1、小車無(wú)線控制與傳感器數(shù)據(jù)回傳。(1)U1程序#include #define left P3_2#define right P3_3#define go P3_4#define back P3_5#define leftdata 0x11#define rightdata 0x22#define godata 0x33#define backdata 0

8、x44#define man P1_0 /定義串口/#define yan P1_1#define jiu P1_2 /#define uchar unsigned char#define uint unsigned int unsigned char a,b,flag,flag1=1;char code MESSAGE=有人: ;/查表顯示/char code QITI=煙霧:;char code ALL=酒精: ;void send(void);void delay1ms(unsigned int x) /延時(shí)子程序/ unsigned int i,j; for(j=x;j0;j-) fo

9、r(i=75;i0;i-); /初始化工作方式/void InitCom(void)SCON = 0x50; /REN=1允許串行接受狀態(tài),串口工作模式2 TMOD|= 0x21; /定時(shí)器工作方式2 PCON|= 0x00; /波特率提高一倍 TH1=0xfd;TL1=0xfd;/9600波特率TR1=1;/開(kāi)定時(shí)器計(jì)數(shù)SM0=0;SM1=1;/串行工作方式1REN=1;/允許接收數(shù)據(jù)EA=1;/開(kāi)中斷總開(kāi)關(guān)ES=1;/允許串 TR0=1;TF0=0;ET0=1;void intT0() interrupt 1 /中斷/ TH0=-2720/256; TL0=-2720%256; send(

10、); void send(void) /發(fā)送傳感器數(shù)據(jù)子程序/ unsigned char w,m,r; if(man = 1 ) SBUF = MESSAGEw; while(TI=0); TI=0; w+; b=a=0; yan=1; jiu=0; if(yan = 0) SBUF = QITIm; while(TI=0); TI=0; m+; b=a=0; if(jiu=1) SBUF = ALLr; while(TI=0); TI=0; r+; b=a=0; main() TH0=-2720/256; TL0=-2720%256; ET0=1;InitCom(); while(1) i

11、f(flag=1) flag=0; flag1=1; if(b!=a) left=1; right=1; go=1; back=1; switch(b) case leftdata:left=0;break; case rightdata:right=0;break; case godata:go=0;break; case backdata:back=0;break; a=b; flag1=0; delay1ms(300); else left=1; right=1; go=1; back=1; /if(flag1=0)/ send();/ void serial() interrupt 4

12、 /中斷法ET0=0;flag=1;flag1=1;b=SBUF;RI=0;/中斷標(biāo)志ET0=1; (2)U2程序。/下載到U2,然后用遙控器控制其方向#include #define uchar unsigned char#define uint unsigned intvoid motor_r_z(void);/右邊電動(dòng)機(jī)正轉(zhuǎn)void motor_l_z(void);/左邊電動(dòng)機(jī)正轉(zhuǎn)void motor_r_f(void);/右邊電動(dòng)機(jī)反轉(zhuǎn)void motor_l_f(void);/左邊電動(dòng)機(jī)反轉(zhuǎn)void back(uchar,uchar); /小車后退void go(uchar,ucha

13、r);/小車前進(jìn)void stop(void);/小車停止void left(void);/小車左轉(zhuǎn)void right(void);/小車右轉(zhuǎn)sbit PWM1=P25;sbit PWM2=P24;sbit PWM3=P21;sbit PWM4=P22;sbit EN1=P20;sbit EN2=P23;sbit left_k=P02;sbit back_k=P05;sbit go_k=P04;sbit right_k=P03;sbit sound=P27;uchar data t_0;uchar data motor_r;uchar data motor_l;uchar data Valu

14、e;uchar data mid;/*延時(shí)子程序*/void ini(void)/T0初始化/TMOD=0x01; /T0工作在方式1TH0=0xff; /裝入T0初值TL0=0xf6;TR0=1;/開(kāi)T0中斷ET0=1;/T0允許中斷EA=1;/t_0=0;/P2=0;sound=1;void go(uchar left_motor,uchar right_motor)/直行Value=right_motor;motor_r_z();Value=left_motor;motor_l_z();void back(uchar left_motor,uchar right_motor)/后退Val

15、ue=right_motor;motor_r_f();Value=left_motor;motor_l_f();void left(void)/左轉(zhuǎn)Value=0x45;motor_r_z();Value=0x45;motor_l_f();void right(void)/右轉(zhuǎn)Value=0x45;motor_r_f();Value=0x45;motor_l_z();void motor_r_z(void)/右邊電動(dòng)機(jī)正轉(zhuǎn) ACC=0x64+Value; motor_r=ACC; EN1=1;void motor_l_z(void)/左邊電動(dòng)機(jī)正轉(zhuǎn) ACC=0x64-Value; motor_

16、l=ACC; EN2=1;void motor_r_f(void)/右邊電動(dòng)機(jī)反轉(zhuǎn) ACC=0x64-Value; motor_r=ACC; EN1=1;void motor_l_f(void)/左邊電動(dòng)機(jī)反轉(zhuǎn) ACC=0x64+Value; motor_l=ACC; EN2=1;void stop(void)EN2=0;EN1=0;void time0(void) interrupt 1 using 2TR0=0;TH0=0xff;TL0=0xf6;+t_0;ACC=t_0;CY=0;ACC-=motor_r;if(CY=1)PWM1=1;PWM2=0;goto PWM_2;PWM1=0;P

17、WM2=1;PWM_2:ACC=t_0;CY=0;ACC-=motor_l;if(CY=1)PWM3=1;PWM4=0;goto HIGHT;PWM3=0;PWM4=1;HIGHT:ACC=t_0;if(ACC!=0xc9)goto EXIT;ACC=0;t_0=ACC;EXIT:TR0=1; void main(void)ini();/判斷左傳感器狀態(tài)/while(1)aa: while(left_k)/當(dāng)左按鍵按下時(shí),left_k等于1. goto bb; P1=0xff; P1=P0; left();/向左轉(zhuǎn) while(!left_k);/如果left_k一直為一,小車便一直左轉(zhuǎn) st

18、op();/判斷右鍵是否按下,注釋請(qǐng)參考上一段/bb: while(right_k) goto dd; P1=0xff; P1=P0; right(); while(!right_k); stop();/判斷向前鍵是否按下/dd: while(go_k) goto ee; P1=0xff; P1=P0; go(0x64,0x64); while(!go_k); stop();/判斷后退鍵是否按下/ee: while(back_k) goto aa; P1=0xff; P1=P0; back(0x64,0x64); while(!back_k);stop();2、超聲波跟蹤(1)U1程序/請(qǐng)將此

19、程序下載到U1,并且把兩機(jī)通訊開(kāi)關(guān)的第1位拔到ON的狀態(tài)/另外一條程序下載到U2#include /器件配置文件#include #define RX P2_0#define TX P2_1#define LCM_RW P2_6 /定義LCD引腳#define LCM_RS P2_5#define LCM_E P2_7#define LCM_Data P0#define Key_Data P3_1 /定義Keyboard引腳#define Key_CLK P3_2#define Busy 0x80 /用于檢測(cè)LCM狀態(tài)字中的Busy標(biāo)識(shí)void LCMInit(void);/LCD初始化函數(shù)v

20、oid DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);/LCD顯示一個(gè)字符函數(shù)void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);/LCD顯示一個(gè)字符串函數(shù)void Delay5Ms(void);/延時(shí)5毫秒函數(shù)void Delay400Ms(void);/延時(shí)400毫秒函數(shù)void Decode(unsigned char ScanCode);void WriteDataLCM(unsig

21、ned char WDLCM);/LCD1602寫數(shù)據(jù)函數(shù)void WriteCommandLCM(unsigned char WCLCM,BuysC);/LCD寫命令函數(shù)/unsigned char ReadDataLCM(void);unsigned char ReadStatusLCM(void);unsigned char code Range =Range Finder=;/LCD1602顯示格式unsigned char code ASCII13 = .-M;unsigned char code table=Distance:000.0cm;unsigned char code t

22、able1=! Out of range;/static unsigned char DisNum = 0; /顯示用指針 unsigned int time=0;unsigned long S=0;bit flag =0;unsigned char disbuff4= 0,0,0,0,;/寫數(shù)據(jù)void WriteDataLCM(unsigned char WDLCM) ReadStatusLCM(); /檢測(cè)忙LCM_Data = WDLCM;LCM_RS = 1;LCM_RW = 0;LCM_E = 0; /若晶振速度太高可以在這后加小的延時(shí)LCM_E = 0; /延時(shí)LCM_E = 1

23、;/寫指令void WriteCommandLCM(unsigned char WCLCM,BuysC) /BuysC為0時(shí)忽略忙檢測(cè)if (BuysC) ReadStatusLCM(); /根據(jù)需要檢測(cè)忙LCM_Data = WCLCM;LCM_RS = 0;LCM_RW = 0;LCM_E = 0;LCM_E = 0;LCM_E = 1;/讀狀態(tài)unsigned char ReadStatusLCM(void)LCM_Data = 0xFF; LCM_RS = 0;LCM_RW = 1;LCM_E = 0;LCM_E = 0;LCM_E = 1;while (LCM_Data & Busy

24、); /檢測(cè)忙信號(hào)return(LCM_Data);void LCMInit(void) /LCM初始化LCM_Data = 0;WriteCommandLCM(0x38,0); /三次顯示模式設(shè)置,不檢測(cè)忙信號(hào)Delay5Ms(); WriteCommandLCM(0x38,0);Delay5Ms(); WriteCommandLCM(0x38,0);Delay5Ms(); WriteCommandLCM(0x38,1); /顯示模式設(shè)置,開(kāi)始要求每次檢測(cè)忙信號(hào)WriteCommandLCM(0x08,1); /關(guān)閉顯示W(wǎng)riteCommandLCM(0x01,1); /顯示清屏WriteC

25、ommandLCM(0x06,1); / 顯示光標(biāo)移動(dòng)設(shè)置WriteCommandLCM(0x0c,1); / 顯示開(kāi)及光標(biāo)設(shè)置/按指定位置顯示一個(gè)字符void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)Y &= 0x1;X &= 0xF; /限制X不能大于15,Y不能大于1if (Y) X |= 0x40; /當(dāng)要顯示第二行時(shí)地址碼+0x40;X |= 0x80; /算出指令碼WriteCommandLCM(X, 1); /發(fā)命令字WriteDataLCM(DData); /發(fā)數(shù)據(jù)/按指定位置顯示

26、一串字符void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)unsigned char ListLength; ListLength = 0;Y &= 0x1;X &= 0xF; /限制X不能大于15,Y不能大于1while (DDataListLength0x19) /若到達(dá)字串尾則退出if (X = 0xF) /X坐標(biāo)應(yīng)小于0xFDisplayOneChar(X, Y, DDataListLength); /顯示單個(gè)字符ListLength+;X+;/5ms延時(shí)void Delay

27、5Ms(void)unsigned int TempCyc = 5552;while(TempCyc-);/400ms延時(shí)void Delay400Ms(void)unsigned char TempCycA = 5;unsigned int TempCycB;while(TempCycA-)TempCycB=7269;while(TempCycB-);/*/ void Conut(void) time=TH0*256+TL0; TH0=0; TL0=0; S=(time*1.7)/10; /算出來(lái)是MM if(S=7000)|flag=1) /超出測(cè)量范圍 P3_2=1; flag=0; D

28、isplayListChar(0, 1, table1); else disbuff0=S%10; disbuff1=S/10%10; disbuff2=S/100%10; disbuff3=S/1000; DisplayListChar(0, 1, table); DisplayOneChar(9, 1, ASCIIdisbuff3); DisplayOneChar(10, 1, ASCIIdisbuff2); DisplayOneChar(11, 1, ASCIIdisbuff1); DisplayOneChar(12, 1, ASCII10); DisplayOneChar(13, 1,

29、 ASCIIdisbuff0); /*/ void zd0() interrupt 1 /T0中斷用來(lái)計(jì)數(shù)器溢出,超過(guò)測(cè)距范圍 flag=1; /中斷溢出標(biāo)志RX=0; /*/ void StartModule() /啟動(dòng)模塊 TX=1; /啟動(dòng)一次模塊 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _

30、nop_(); _nop_(); TX=0; /*/ void Timer_Count(void) TR0=1; /開(kāi)啟計(jì)數(shù) while(RX);/當(dāng)RX為1計(jì)數(shù)并等待 TR0=0;/關(guān)閉計(jì)數(shù) Conut();/計(jì)算/*/void main(void) unsigned int valA;Delay400Ms(); /啟動(dòng)等待,等LCM講入工作狀態(tài)LCMInit(); /LCM初始化Delay5Ms(); /延時(shí)片刻DisplayListChar(0, 0, Range);DisplayListChar(0, 1, table);/ReadDataLCM();/測(cè)試用句無(wú)意義 TMOD=0x0

31、1;/設(shè)T0為方式1,GATE=1; EA=1; TH0=0; TL0=0; ET0=1; /允許T0中斷 /開(kāi)啟總中斷 while(1) RX=1; StartModule(); for(valA=7510;valA0;valA-) if(RX=1) Timer_Count(); 2、U2程序#include #define uchar unsigned char#define uint unsigned intvoid motor_r_z(void);/右邊電動(dòng)機(jī)正轉(zhuǎn)void motor_l_z(void);/左邊電動(dòng)機(jī)正轉(zhuǎn)void motor_r_f(void);/右邊電動(dòng)機(jī)反轉(zhuǎn)void

32、 motor_l_f(void);/左邊電動(dòng)機(jī)反轉(zhuǎn)void back(uchar,uchar); /小車后退void go(uchar,uchar);/小車前進(jìn)void stop(void);/小車停止void left(void);/小車左轉(zhuǎn)void right(void);/小車右轉(zhuǎn)sbit PWM1=P25;sbit PWM2=P24;sbit PWM3=P21;sbit PWM4=P22;sbit EN1=P20;sbit EN2=P23;sbit Signal=P02;sbit start_k=P32;sbit stop_k=P33;sbit sound=P27;uchar data

33、 t_0;uchar data motor_r;uchar data motor_l;uchar data Value;uchar data mid;/*延時(shí)子程序*/void delay_1ms(uint n)uint i,j;for(j=n;j0;j-)for(i=20;i0;i-);void ini(void)/T0初始化/TMOD=0x01; /T0工作在方式1TH0=0xff; /裝入T0初值TL0=0xf6;TR0=1;/開(kāi)T0中斷ET0=1;/T0允許中斷EA=1;/t_0=0;/P2=0;sound=0;void Sound(void)/蜂鳴器響/sound=0;delay_1

34、ms(30);sound=0;void start(void) uchar a; aa: while(start_k); for(a=0;a50;a+) delay_1ms(1); while(start_k) goto aa; Sound(); go(0x30,0x30);void go(uchar left_motor,uchar right_motor)/直行Value=right_motor;motor_r_z();Value=left_motor;motor_l_z();void back(uchar left_motor,uchar right_motor)/后退Value=rig

35、ht_motor;motor_r_f();Value=left_motor;motor_l_f();void motor_r_z(void)/右邊電動(dòng)機(jī)正轉(zhuǎn) motor_r=0x64+Value; EN1=1;void motor_l_z(void)/左邊電動(dòng)機(jī)正轉(zhuǎn) motor_l=0x64-Value; EN2=1;void motor_r_f(void)/右邊電動(dòng)機(jī)反轉(zhuǎn) motor_r=0x64-Value; EN1=1;void motor_l_f(void)/左邊電動(dòng)機(jī)反轉(zhuǎn) motor_l=0x64+Value; EN2=1;void stop(void)EN2=0;EN1=0;voi

36、d time0(void) interrupt 1 using 2TR0=0;TH0=0xff;TL0=0xf6;+t_0;ACC=t_0;CY=0;ACC-=motor_r;if(CY=1)PWM1=1;PWM2=0;goto PWM_2;PWM1=0;PWM2=1;PWM_2:ACC=t_0;CY=0;ACC-=motor_l;if(CY=1)PWM3=1;PWM4=0;goto HIGHT;PWM3=0;PWM4=1;HIGHT:ACC=t_0;if(ACC!=0xc9)goto EXIT;ACC=0;t_0=ACC;EXIT:TR0=1; void main(void)uchar a;

37、ini();start();/判斷U1P3.2是否輸出低電平/如果是低電平,小車后退/如果是高電平,小車前進(jìn)/while(1)aa: while(Signal) goto cc; P1_0=0; P2_7=0; while(!Signal) back(0x35,0x35); go(0x35,0x35); P1_0=1; P2_7=1;/判斷是否按下停止按鈕/cc: while(stop_k) goto aa; for(a=0;a20;a+) delay_1ms(1); while(stop_k) goto cc; stop(); start();3、紅外躲避障礙自動(dòng)行走U2程序#include

38、 #define uchar unsigned char#define uint unsigned intvoid motor_r_z(void);/右邊電動(dòng)機(jī)正轉(zhuǎn)void motor_l_z(void);/左邊電動(dòng)機(jī)正轉(zhuǎn)void motor_r_f(void);/右邊電動(dòng)機(jī)反轉(zhuǎn)void motor_l_f(void);/左邊電動(dòng)機(jī)反轉(zhuǎn)void back(void); /小車后退void go(uchar,uchar);/小車前進(jìn)void stop(void);/小車停止void left(void);/小車左轉(zhuǎn)void right(void);/小車右轉(zhuǎn)sbit PWM1=P25;sbit

39、PWM2=P24;sbit PWM3=P21;sbit PWM4=P22;sbit EN1=P20;sbit EN2=P23;sbit left_k=P02;sbit right_k=P05;sbit start_k=P33;sbit stop_k=P32;sbit sound=P27;uchar data t_0;uchar data motor_r;uchar data motor_l;uchar data Value;uchar data mid;/*延時(shí)子程序*/void delay_1ms(uint n)uint i,j;for(j=n;j0;j-)for(i=20;i0;i-);void ini(void)/T0初始化/TMOD=0x01; /T0工作在方式1TH0=0xff; /裝入T0初值TL0=0xf6;TR0=1;/開(kāi)T0中斷ET0=1;/T0允許中斷EA=1;t_0=0;P2=0;sound=1;void Sound(void)/蜂鳴器響/sound=0;delay_1ms

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論