|
0.png (58.24 KB, 下載次數(shù): 88)
下載附件
2016-5-8 19:46 上傳
全部資料(壓縮包)下載:
自動(dòng)往返小車程序0411定稿.rar
(142.65 KB, 下載次數(shù): 93)
2016-5-8 19:48 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
還是吐槽下電設(shè)賽題出的不嚴(yán)謹(jǐn),我們做的B題,軸流風(fēng)機(jī)這個(gè)坑啊,買(mǎi)了好多個(gè),最后發(fā)現(xiàn)都不好用,主要是響應(yīng)太慢,從通電到滿速需要10s。關(guān)鍵我們還在西南地區(qū),順豐都要一天多才能到。換了無(wú)刷電機(jī)(無(wú)刷確實(shí)比軸流風(fēng)機(jī)好控制的多)+槳。
回到正題吧,這個(gè)是01年的題,用的主控是51,然后L298N做電機(jī)驅(qū)動(dòng)。加了超聲波控制小車和墻壁的距離,當(dāng)時(shí)做的只是簡(jiǎn)單控制,沒(méi)加PID。使用nokia5110顯示速度和時(shí)間,51單片機(jī)用這個(gè)顯示屏還是比較方便的,換了STM32之后用OLED更舒服
0.png (57.7 KB, 下載次數(shù): 88)
下載附件
2016-5-8 19:45 上傳
主程序如下:
- #include <reg52.h>
- #include <init.h>
- #include <interrupt.h>
- #include <turn.h>
- #include <control.h>
- #include <delay.h>
- //#include <speed.h>
- #include <nokia_5110.h>
- #include <display.h>
- #include <ultrasonic.h>
- //#include <uart.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define ulong unsigned long
- typedef unsigned char BYTE;
- sbit light=P3^7; //探頭中
- sbit enle1=P2^0;//使能端左,前輪
- sbit enle2=P2^1;//左后
- sbit enri1=P2^2;//使能端右,前輪
- sbit enri2=P2^3;//右后
- sbit Trig=P2^6;// 定義HC-SR04發(fā)送端
- sbit Echo=P2^7;//定義HC-SR04接收端
- uchar right;//pwm右邊
- uchar left;//pwm左邊
- uchar pwm_time;
- uint timer;//總計(jì)時(shí),單位是10ms
- uchar time_c;//timec -- timecounter
- uchar line_counter;//計(jì)量通過(guò)黑線數(shù)目
- uchar black;//標(biāo)記是否通過(guò)黑線
- uchar circle;//計(jì)量輪圈轉(zhuǎn)動(dòng)圈數(shù)
- uint w_hole;//wheel hole 計(jì)量輪子洞洞數(shù)目
- uint distance;
- uint usonic_time,usonic_flag=0;
- float usonic_s;
- //BYTE bu_F[3];
- //BYTE wan,qian,bai,shi,ge;
- /*************
- 主函數(shù)
- **************/
- void main()
- {
- init();
- straight_full();
- // time_display();
- // delay_ms(500);
- // distance_display();
- // delay_ms(500);
- while(1){
- time_display(timer,0);
- // time_display(timer,3);
- // time_display(timer,2);
- distance =circle*20.72+w_hole*1.18;
- distance_display();
- // lenth();
- // zitai();
- control();
- zitai();
- }
- }
- /*void T0_timer0 () interrupt 1 //定時(shí)器0,PWM,記錄時(shí)間
- {
- //pwm();
- timer++;
-
- TH0=(65536-10000)/256;//1ms???? 12M
- TL0=(65536-10000)%256; //????
- }*/
復(fù)制代碼
|
|