




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、相信進(jìn)來的都是想學(xué)習(xí)和制作智能小車的,最近也在學(xué)習(xí)智能小車,我們的小車功能時紅外遙控小車,小車避障,小車尋跡?,F(xiàn)在將學(xué)習(xí)過程中所發(fā)現(xiàn)的一些比較好的代碼與大家分享,希望能對大家有所幫助。紅外遙控#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) /延時140usuchar i,j;for(j=0; j<t; j+)for (i=0; i<27; i+) _nop_();void Delay_1ms(uint t) /延時1msuint i,j;for(i=0;i<t;i+)for(j=0;j<=100;j+)_nop_();vo
3、id OutsideInit(void) /設(shè)置外部中斷初始化EX0 = 1; /開外部中斷0IT0 = 1; /負(fù)邊沿觸發(fā)EA = 1; /開總中斷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)紅外線信號出現(xiàn) EX0 = 1;return;while(!IRIN) /等IR變?yōu)楦唠娖剑^9ms的前導(dǎo)低電平信號。 Delay_140us(1); while(IRIN) /等IR變?yōu)榈碗娖剑^4
4、.5ms的前導(dǎ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高電平時長 Delay_140us(1); count+; if(count >= 30)/計(jì)數(shù)過長自動離開。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) /不相等,則紅外遙控解碼錯誤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ū)動#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延時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延時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ū)動A端sbit M1B=P01; /定義左側(cè)電機(jī)驅(qū)動B端sbit M2A=P02; /定義右側(cè)電機(jī)驅(qū)動A端sbit M2B=P03; /定義右側(cè)電機(jī)驅(qū)動B端sbit B1=P04; /定義語音識識別傳感器端口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) /延時:i>=12 ,i的最小
16、延時單12 us i=i/10; while(-i); void delay_nms(unsigned int n) /延時n ms n=n+1; while(-n) delay_nus(900); /延時 1ms,同時進(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) /三個紅外檢測到黑線,就前進(jìn) ControlCar(1); /左側(cè)沒有信號時,開始向右轉(zhuǎn)一定的角度 delay_nms (10); goto Nex
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 集體勞動合同范本2025年度(文化產(chǎn)業(yè)員工)
- 農(nóng)村公路養(yǎng)護(hù)管理合同(含交通安全設(shè)施維護(hù))
- 婦產(chǎn)科醫(yī)師培訓(xùn)計(jì)劃及內(nèi)容
- Unit 4 Drawing in the park Period 3 詞匯與語法過關(guān) 同步練習(xí)(含答案含聽力原文無音頻)
- 家長會學(xué)生主持發(fā)言稿
- 上海市業(yè)主總包分包合同
- 2024年公司勞動合同
- 2025年江西貨運(yùn)從業(yè)資格證考試模擬考試題庫答案大全
- IT支持與服務(wù)記錄表格
- 《語文古典詩詞鑒賞與創(chuàng)作指導(dǎo)》
- 體能訓(xùn)練概論(NSCA)
- 青島版三年級數(shù)學(xué)下冊《美麗的街景》教學(xué)課件7
- 液壓傳動全套ppt課件(完整版)
- 內(nèi)部控制五要素圖解
- 低壓電氣安全知識培訓(xùn)課件(35張PPT)
- COMSOL培訓(xùn)PPT課件
- 麗聲北極星分級繪本第一級下 Can You Play with Me?課件
- 工程數(shù)學(xué)線性代數(shù)第一章同濟(jì)第五版ppt課件
- 拖拉機(jī)出廠狀態(tài)特征表
- 入職登記表中英文
- 有效溝通(新)-溝通的重要性
評論
0/150
提交評論