智能小車各獨(dú)立模塊 紅外遙控 電機(jī)驅(qū)動(dòng) 超聲波 紅外尋跡_第1頁(yè)
智能小車各獨(dú)立模塊 紅外遙控 電機(jī)驅(qū)動(dòng) 超聲波 紅外尋跡_第2頁(yè)
智能小車各獨(dú)立模塊 紅外遙控 電機(jī)驅(qū)動(dòng) 超聲波 紅外尋跡_第3頁(yè)
智能小車各獨(dú)立模塊 紅外遙控 電機(jī)驅(qū)動(dòng) 超聲波 紅外尋跡_第4頁(yè)
智能小車各獨(dú)立模塊 紅外遙控 電機(jī)驅(qū)動(dòng) 超聲波 紅外尋跡_第5頁(yè)
已閱讀5頁(yè),還剩9頁(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、相信進(jìn)來(lái)的都是想學(xué)習(xí)和制作智能小車的,最近也在學(xué)習(xí)智能小車,我們的小車功能時(shí)紅外遙控小車,小車避障,小車尋跡?,F(xiàn)在將學(xué)習(xí)過(guò)程中所發(fā)現(xiàn)的一些比較好的代碼與大家分享,希望能對(duì)大家有所幫助。紅外遙控#include <stc15.h>#include <gpio.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit IRIN = P32; /紅外線一體化接收頭接收端sbit out1=P21;sbit out2=P22;sbit out3=P23;sbit ou

2、t4=P24;sbit out5=P25;sbit out6=P26;sbit out7=P27;sbit out8=P20;uchar IRTemp; /紅外線按鍵數(shù)據(jù)存放變量uchar IRCOM7=0;/存放紅外解碼后的32位數(shù)據(jù)void Delay_140us(uchar t) /延時(shí)140usuchar i,j;for(j=0; j<t; j+)for (i=0; i<27; i+) _nop_();void Delay_1ms(uint t) /延時(shí)1msuint i,j;for(i=0;i<t;i+)for(j=0;j<=100;j+)_nop_();vo

3、id OutsideInit(void) /設(shè)置外部中斷初始化EX0 = 1; /開(kāi)外部中斷0IT0 = 1; /負(fù)邊沿觸發(fā)EA = 1; /開(kāi)總中斷void IRReceive(void) interrupt 0 using 2 /設(shè)置中斷接收紅外編碼uchar i, j, count = 0;EX0 = 0; /關(guān)閉外部中斷1Delay_140us(20);if(IRIN = 1) /確認(rèn)紅外線信號(hào)出現(xiàn) EX0 = 1;return;while(!IRIN) /等IR變?yōu)楦唠娖?,跳過(guò)9ms的前導(dǎo)低電平信號(hào)。 Delay_140us(1); while(IRIN) /等IR變?yōu)榈碗娖剑^(guò)4

4、.5ms的前導(dǎo)高電平信號(hào)。 Delay_140us(1);for (i=0;i<4;i+) /收集四組數(shù)據(jù) for(j=0;j<8;j+) /每組數(shù)據(jù)有8位while (!IRIN) /等 IR 變?yōu)楦唠娖紻elay_140us(1);while(IRIN) /計(jì)算IR高電平時(shí)長(zhǎng) Delay_140us(1); count+; if(count >= 30)/計(jì)數(shù)過(guò)長(zhǎng)自動(dòng)離開(kāi)。EX0=1;return; IRCOMi = IRCOMi >> 1; /數(shù)據(jù)右移一位,最高位補(bǔ)"0"if(count >=6 ) IRCOMi = IRCOMi

5、| 0x80; /數(shù)據(jù)最高位或上"1"count = 0; if(IRCOM2!=IRCOM3) /不相等,則紅外遙控解碼錯(cuò)誤EX0=1;return; EX0 = 1; void Main(void) IRIN = 1; /接收端口初始化OutsideInit(); /初始化外部中斷while (1) if (IRCOM2=0x0c) /按1 out1=0; else out1=1;if (IRCOM2=0x18) /按2 out2=0; else out2=1;if (IRCOM2=0x5e) /按3 out3=0; else out3=1; if (IRCOM2=0x

6、08)/按4 out4=0; else out4=1; if (IRCOM2=0x1c)/按5 out5=0; else out5=1; if (IRCOM2=0x5a)/按6 out6=0; else out6=1; if (IRCOM2=0x42)/按7 out7=0; else out7=1; if (IRCOM2=0x52)/按8 out8=0; else out8=1; 電機(jī)驅(qū)動(dòng)#include <stc15.h>#include <intrins.h>#include <gpio.h>#include <595hc.h>#define

7、 unsigned char#define unsigned intuchar pwm=20;uchar pwmh=1;uchar conter=0;uchar m=1;bit sw=1;bit lr=0;sbit ksw=P10;sbit klr=P11;sbit kspu=P12;sbit kspd=P13;sbit m1=P14;sbit m2=P15;void Delay1ms() /11.0592MHz unsigned char i, j; _nop_(); _nop_(); _nop_(); i = 11; j = 190; do while (-j); while (-i);/

8、tms延時(shí)void Delayxms (uint t) uchar i; for(i-0;i<t;i+) Delay1ms();void Time0_inti(void) TMOD=0X02; TH0=56; TL0=56; ET0=1; EA=1; TR0=1;void Timer0_int()interrupt1 using 1 counter+; if(counter>pwmh) m=0; if (counter=pwmh) counter=0; m1=1; void main () gpio(); Time0_int(); while (1) if(ksw=0) Delay

9、xms(10); if (ksw=0) sw=sw; while (ksw=0)display(); if(klr=0) Delayxms(10); if (klr=0) lr=lr; while (klr=0)display(); if(kspu=0) Delayxms(10); if (kspu=0) pwmh+; if(pwmh=pwm) pwmh=pwm-1; while (kspu=0)display(); if (kspd=0) Delayxms(10); if (kspd=0) pwmh-; if (pwmh=0) pwmh=1; while (kspd=0)display();

10、 if (sw=0) m1=0; m2=0; Dis_buf0=13; Dis_buf1=13; Dis_buf2=13; Dis_buf3=13; Dis_buf4=13; Dis_buf5=13; Dis_buf6=13; Dis_buf7=13; if(sw=1) Dis_buf0=pwm%10; Dis_buf1=pwm/10; Dis_buf2=12; Dis_buf3=pwmh%10; Dis_buf4=pwm/10; Dis_buf5=12; Dis_buf6=12; if (lr=0) m1=0; m2=m; Dis_buf7=10; if (lr=1) m1=m; m2=0;

11、 Dis_buf7=11; display();超聲波避障#include <stc15.h>#include <intrins.h>#include <gpio.h>#define uchar unsigned char#define uint unsigned intsbit tri=P20;sbit rea=P21;sbit bell=P27;uchar count;bit bell_flag;void Delay12us()/11.0592MHzunsigned char i;_nop_();_nop_();_nop_();i = 30;while

12、(-i);/tms延時(shí)void Delayxms (uint t)uint i;for(i-0;i<t;i+)void init()tri=0;TMOD=0X10;TR1=0;TH1=0;TL1=0;uint test_distance()uint date;tri=1;Delay12us();tri=0;while (!rea)TR1=0;date=(uint)(TH1*256+TL1)/10*18;TH1=0;TL1=0;if (date<2000) bell_flag=0;else bell_flag=1;return date;void main ()uint distan

13、ce;gpio();init();while (1) distance=test_distance();dis_duf0=distance%10;dis_duf1=distance/10%10;dis_duf2=distance/100%10+17;dis_duf3=distance/1000%10;dis_duf4=distance/10000%10;display();if(bell_flag)bellbell;else bell=1;Delayxms(30);紅外尋跡#include <REGX52.H> /包含51單片機(jī)相關(guān)的頭文件sbit LeftLed=P20; /定義

14、前方左側(cè)指示燈端口sbit RightLed=P07; /定義前方右側(cè)指示燈端口sbit FontLled=P10;sbit LeftIR=P35; /定義前方左側(cè)紅外探頭端口sbit RightIR=P36; /定義前方右側(cè)紅外探頭端口sbit FontIR=P37; /定義前方正前方紅外探頭端口sbit M1A=P00; /定義左側(cè)電機(jī)驅(qū)動(dòng)A端sbit M1B=P01; /定義左側(cè)電機(jī)驅(qū)動(dòng)B端sbit M2A=P02; /定義右側(cè)電機(jī)驅(qū)動(dòng)A端sbit M2B=P03; /定義右側(cè)電機(jī)驅(qū)動(dòng)B端sbit B1=P04; /定義語(yǔ)音識(shí)識(shí)別傳感器端口sbit SB1=P06; /定義蜂鳴器端口vo

15、id tingzhi() M1A=0; /將M1電機(jī)A端初始化為0 M1B=0; /將M1電機(jī)B端初始化為0 M2A=0; /將M2電機(jī)A端初始化為0 M2B=0;void qianjin() M1A=1; M1B=0; M2A=1; M2B=0;void houtui() M1A=0; M1B=1; M2A=0; M2B=1;void zuozhuan() M1A=0; M1B=1; M2A=1; M2B=0;void youzhuan() M1A=1; M1B=0; M2A=0; M2B=1;void delay_nus(unsigned int i) /延時(shí):i>=12 ,i的最小

16、延時(shí)單12 us i=i/10; while(-i); void delay_nms(unsigned int n) /延時(shí)n ms n=n+1; while(-n) delay_nus(900); /延時(shí) 1ms,同時(shí)進(jìn)行補(bǔ)償 void ControlCar(unsigned char ConType) /定義電機(jī)控制子程序 tingzhi(); switch(ConType) /判斷用戶設(shè)定電機(jī)形式 case 1: /前進(jìn) /判斷用戶是否選擇形式1 qianjin(); break; case 2: /后退 /判斷用戶是否選擇形式2 houtui(); /M2電機(jī)反轉(zhuǎn) break; cas

17、e 3: /左轉(zhuǎn) /判斷用戶是否選擇形式3 zuozhuan(); /M2電機(jī)正轉(zhuǎn)break; case 4: /右轉(zhuǎn) /判斷用戶是否選擇形式4 youzhuan(); /M1電機(jī)正轉(zhuǎn) /M2電機(jī)反轉(zhuǎn)break; case 8: /停止 /判斷用戶是否選擇形式8 tingzhi();break; /退出當(dāng)前選擇 void main() /主程序入口 bit RunFlag=0; /定義小車運(yùn)行標(biāo)志位 /RunShow=0; /初始化顯示狀態(tài) ControlCar(8); /初始化小車運(yùn)行狀態(tài) while(1) /程序主循環(huán) Start: LeftLed=LeftIR; /前方左側(cè)指示燈指示出前方左側(cè)紅外探頭狀態(tài) RightLed=RightIR; /前方右側(cè)指示燈指示出前方右側(cè)紅外探頭狀態(tài) FontLled= FontIR; SB1=LeftIR; if(LeftIR = 0 && RightIR = 0) /三個(gè)紅外檢測(cè)到黑線,就前進(jìn) ControlCar(1); /左側(cè)沒(méi)有信號(hào)時(shí),開(kāi)始向右轉(zhuǎn)一定的角度 delay_nms (10); goto Nex

溫馨提示

  • 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)論