分享個測障小車制作,帶有完整的設計報告,proteus仿真及源代碼
具有紅外測障,角度測量功能
0.png (43.14 KB, 下載次數: 87)
下載附件
2017-4-19 04:14 上傳
0.png (50.11 KB, 下載次數: 81)
下載附件
2017-4-19 04:16 上傳
避障部分采用紅外線發射和接受原理。鐵片檢測采用電感式接近開關LJ18A3-8-Z/BX檢測,產生的高低電平信號經過處理后,完成相應的記錄數目,驅動蜂鳴器發聲。黑帶尋跡依*安裝在車底部左右兩個光敏二極管對管來對地面反射光感應。尋光設計在小車前端安裝3路(左、中、右)光敏電阻對光源信號采集,模擬信號經過ADC0809轉化為數字信號送到MCU處理。記程通過在車輪上安裝小磁塊,再用霍爾管感應產生計數脈沖。記時由軟件實現,顯示采用普通七段LED。此系統比較靈活,采用軟件方法來解決復雜的硬件電路部分,使系統硬件簡潔化,各類功能易于實現。
0.png (20.41 KB, 下載次數: 79)
下載附件
2017-4-19 04:18 上傳
單片機部分源碼:
- #include<reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- //uchar code LED[4]={0xdc,0xe3,0x9c,0xce};
-
- uchar jianhao _at_ 0x40;
- uchar code LCD[]={0x20,0x5e,0x76,0x54,0x42};
- sbit SH_CP=P2^2; //595
- sbit ST_CP=P2^3;
- sbit DS=P2^4;
- sbit ACC7=ACC^7;
- sbit RS=P2^5; //Lcd
- sbit RW=P2^6;
- sbit E =P2^7;
- sbit p31=P3^1;
- sbit p32=P3^2;
- //中斷接收
- void inter0(void) interrupt 0
- {
- #pragma asm
- PUSH ACC
- PUSH PSW
- CLR EX0
- JNB P3.1, READ1
- READOUT0:SETB EX0
- SETB EA
- POP PSW
- POP ACC
- RETI
- READ1: CLR A
- MOV DPH, A
- MOV DPL, A
- HARD1: JB P3.1,HARD11
- INC DPTR
- NOP
- NOP
- AJMP HARD1
- HARD11: MOV A,DPH
- JZ READOUT0
- CLR A
- READ11: INC A
- READ12: JNB P3.1,READ12
- MOV R1,#06H
- READ13: JNB P3.1,READ11
- MOV R5,#255
- DJNZ R5,$
- DJNZ R1,READ13
- // DEC A
- MOV 40H,A
- LJMP READOUT0
- #pragma endasm
- }
- void Delay_1ms(uint j)
- { uchar i=0;
- for(;j>0;j--)
- for(i=0;i<125;i++);
- }
- void delay(uchar t, uchar i)
- { for(;t>0;t--)
- { for(;i>0;i--); }
- }
- void sent(unsigned char dat)
- { uchar i;
- ACC=dat;
- for(i=8;i>0;i--)
- { ST_CP=0;
- DS=ACC7;
- SH_CP=0;
- ACC=ACC<<1;
- SH_CP=1;
- }
- delay(1,3);
- ST_CP=1;
- }
- void lcdwd(uchar da)
- { RS=1;
- RW=0;
- E=1;
- sent(da);
- delay(1,100);
- E=0;
- }
- void lcdwc(uchar c)
- { RS=0;
- RW=0;
- E=1;
- sent(c);
- delay(1,100);
- E=0;
- }
- void lcdinit()
- { delay(15,125);
- lcdwc(0x38);
- delay(5,125);
- lcdwc(0x38);
- delay(5,125);
- lcdwc(0x38);
- delay(5,125);
- lcdwc(0x08);
- lcdwc(0x01);
- lcdwc(0x06);
- lcdwc(0x0c);
- }
- void WriteString(uchar *s,uchar a,uchar b)//字符串由N個單字字符組成
- { for(;*s!=0;s++)
- { lcdwc(0x80+(a++)+0x40*b);//地址
- lcdwd(*s); //數據
- }
- }
- void display()
- {uchar s1[4],*ps;
- s1[0]='y';
- s1[1]='k';
- s1[2]=' ';
- s1[3]=LCD[jianhao];
- ps=&s1;
- WriteString(ps,0,0);}
- //主程序
- void main()
- {
- IE=0;EX0=1;EA=1; lcdinit();//jianhao=0;
- for(;;)
- {
- display();
- }
- }
復制代碼
0.png (53.85 KB, 下載次數: 78)
下載附件
2017-4-19 04:13 上傳
完整的設計報告和其他資料下載:
測障測角小車.rar
(126.75 KB, 下載次數: 21)
2017-4-17 19:50 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|