0.png (58.24 KB, 下載次數: 88)
下載附件
2016-5-8 19:46 上傳
全部資料(壓縮包)下載:
自動往返小車程序0411定稿.rar
(142.65 KB, 下載次數: 93)
2016-5-8 19:48 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
還是吐槽下電設賽題出的不嚴謹,我們做的B題,軸流風機這個坑啊,買了好多個,最后發現都不好用,主要是響應太慢,從通電到滿速需要10s。關鍵我們還在西南地區,順豐都要一天多才能到。換了無刷電機(無刷確實比軸流風機好控制的多)+槳。
回到正題吧,這個是01年的題,用的主控是51,然后L298N做電機驅動。加了超聲波控制小車和墻壁的距離,當時做的只是簡單控制,沒加PID。使用nokia5110顯示速度和時間,51單片機用這個顯示屏還是比較方便的,換了STM32之后用OLED更舒服
0.png (57.7 KB, 下載次數: 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發送端
- sbit Echo=P2^7;//定義HC-SR04接收端
- uchar right;//pwm右邊
- uchar left;//pwm左邊
- uchar pwm_time;
- uint timer;//總計時,單位是10ms
- uchar time_c;//timec -- timecounter
- uchar line_counter;//計量通過黑線數目
- uchar black;//標記是否通過黑線
- uchar circle;//計量輪圈轉動圈數
- uint w_hole;//wheel hole 計量輪子洞洞數目
- uint distance;
- uint usonic_time,usonic_flag=0;
- float usonic_s;
- //BYTE bu_F[3];
- //BYTE wan,qian,bai,shi,ge;
- /*************
- 主函數
- **************/
- 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 //定時器0,PWM,記錄時間
- {
- //pwm();
- timer++;
-
- TH0=(65536-10000)/256;//1ms???? 12M
- TL0=(65536-10000)%256; //????
- }*/
復制代碼
|