包括電路設計,一些論文還有調試程序
程序適用單片機
這些程序都可以用ATMEL公司的, AT89C51 C52
AT89S51 S52
可以用STC公司的, STC89C51
STC89C52
請初學的朋友注意,不要再問你這些程序是不是只能用在51上面的,不能用在52上面。
程序調試步驟
1.在裝好車后,一步一步來,先把驅動模塊與單片機控制板連接好。其它不接,下載程序1 - 程序4 看小車前進后退是否正常。如果正常
再往下一步。不要在全部安裝好后,就直接測試下面的一些比較復雜的應用的程序!
關于KEIL打少開頭文件問題
關于KEIL打少開頭文件問題!
很多朋友反應你的程序是不是不能用呀,編譯通不過呀,我們用的KEIL UV3
如果編譯少文件的話請把AT89X51.H AT89X52.H這個頭文件放到
X:\Keil\C51\INC
注意X為安裝盤,安裝不同位置不同找到對應的就行
單片機源程序如下:
- /****************************************************************************
- 簡單尋跡程序:接法
-
- EN1 EN2 PWM輸入端,本程序不使用這二個,直接使插上跳線帽,使能輸出,這樣就能全速運行
- PWM采用轉向端輸出PWM法來使小車,調速運行,原理,驅動端IN1=0 IN2=1 的時候全速前進 ,IN1=0,IN2=0時電機停止
- 當給IN2一個,占空比信號時,IN1=0 (IN2=0或IN2=1)之間切換,就是前進與停止之間切換,占空比調節其速度
-
- P1_0 P1_1 接IN1 IN2 當 P1_0=1,P1_1=0; 時左上電機正轉 左上電機接驅動板子輸出端(藍色端子OUT1 OUT2)
- P1_0 P1_1 接IN1 IN2 當 P1_0=0,P1_1=1; 時左上電機反轉
- P1_0 P1_1 接IN1 IN2 當 P1_0=0,P1_1=0; 時左上電機停轉
- P1_2 P1_3 接IN3 IN4 當 P1_2=1,P1_3=0; 時左下電機正轉 左下電機接驅動板子輸出端(藍色端子OUT3 OUT4)
- P1_2 P1_3 接IN3 IN4 當 P1_2=0,P1_3=1; 時左下電機反轉
- P1_2 P1_3 接IN3 IN4 當 P1_2=0,P1_3=0; 時左下電機停轉
- P1_4 P1_5 接IN5 IN6 當 P1_4=1,P1_5=0; 時右上電機正轉 右上電機接驅動板子輸出端(藍色端子OUT5 OUT6)
- P1_4 P1_5 接IN5 IN6 當 P1_4=0,P1_5=1; 時右上電機反轉
- P1_4 P1_5 接IN5 IN6 當 P1_4=0,P1_5=0; 時右上電機停轉
- P1_6 P1_7 接IN7 IN8 當 P1_6=1,P1_7=0; 時右下電機正轉 右下電機接驅動板子輸出端(藍色端子OUT7 OUT8)
- P1_6 P1_7 接IN7 IN8 當 P1_6=0,P1_7=1; 時右下電機反轉
- P1_6 P1_7 接IN7 IN8 當 P1_6=0,P1_7=0; 時右下電機停轉
-
- P3_4接四路尋跡模塊接口第一路輸出信號即中控板上面標記為OUT1
- P3_5接四路尋跡模塊接口第二路輸出信號即中控板上面標記為OUT2
- P3_6接四路尋跡模塊接口第三路輸出信號即中控板上面標記為OUT3
- P3_7接四路尋跡模塊接口第四路輸出信號即中控板上面標記為OUT4
- 四路尋跡傳感器有信號(白線)為0 沒有信號(黑線)為1
- 四路尋跡傳感器電源+5V GND 取自于單片機板靠近液晶調節對比度的電源輸出接口
-
- 關于單片機電源:本店驅動模塊內帶LDO穩壓芯片,當電池輸入6V時時候可以輸出穩定的5V
- 分別在針腳標+5 與GND 。這個輸出電源可以作為單片機系統的供電電源。
- ****************************************************************************/
-
-
- #include<AT89x51.H>
- #define Left_1_led P3_4 //P3_4接四路尋跡模塊接口第一路輸出信號即中控板上面標記為OUT1
- #define Left_2_led P3_5 //P3_5接四路尋跡模塊接口第二路輸出信號即中控板上面標記為OUT2
- #define Right_1_led P3_6 //P3_6接四路尋跡模塊接口第三路輸出信號即中控板上面標記為OUT3
- #define Right_2_led P3_7 //P3_7接四路尋跡模塊接口第四路輸出信號即中控板上面標記為OUT4
- #define Left_moto_pwm P1_1 //PWM信號端
- #define Left_moto_pwm1 P1_3
-
- #define Right_moto_pwm P1_5
- #define Right_moto_pwm1 P1_7
-
- #define Left_moto_go {P1_0=1,P1_1=0,P1_2=1,P1_3=0;} //左邊兩個電機向前走
- #define Left_moto_back {P1_0=0,P1_1=1,P1_2=0,P1_3=1;} //左邊兩個電機向后轉
- #define Left_moto_Stop {P1_0=0,P1_1=0,P1_2=0,P1_3=0;} //左邊兩個電機停轉
- #define Right_moto_go {P1_4=1,P1_5=0,P1_6=1,P1_7=0;} //右邊兩個電機向前走
- #define Right_moto_back {P1_4=0,P1_5=1,P1_6=0,P1_7=1;} //右邊兩個電機向前走
- #define Right_moto_Stop {P1_4=0,P1_5=0,P1_6=0,P1_7=0;} //右邊兩個電機停轉
- unsigned char pwm_val_left =0;//變量定義
- unsigned char push_val_left =0;// 左電機占空比N/10
- unsigned char pwm_val_right =0;
- unsigned char push_val_right=0;// 右電機占空比N/10
- bit Right_moto_stop=1;
- bit Left_moto_stop =1;
- unsigned int time=0;
-
- /************************************************************************/
- //延時函數
- void delay(unsigned int k)
- {
- unsigned int x,y;
- for(x=0;x<k;x++)
- for(y=0;y<2000;y++);
- }
- /************************************************************************/
- //前速前進
- void run(void)
- {
- push_val_left=7; //速度調節變量 0-9。。。9最小,0最大
- push_val_right=7;
- Left_moto_go ; //左電機往前走
- Right_moto_go ; //右電機往前走
- }
- //前速后退
- void backrun(void)
- {
- push_val_left=3; //速度調節變量 0-9。。。0最小,1最大
- push_val_right=3;
- Left_moto_back ; //左電機往前走
- Right_moto_back ; //右電機往前走
- }
- //左轉
- void leftrun(void)
- {
-
- Left_moto_back ; //左電機往前走
- Right_moto_go ; //右電機往前走
- }
- //右轉
- void rightrun(void)
- {
-
- Left_moto_go ; //左電機往前走
- Right_moto_back ; //右電機往前走
- }
- /************************************************************************/
- /* PWM調制電機轉速 */
- /************************************************************************/
- /* 左電機調速 */
- /*調節push_val_left的值改變電機轉速,占空比 */
- void pwm_out_left_moto(void)
- {
- if(Left_moto_stop)
- {
- if(pwm_val_left<=push_val_left)
- {
- Left_moto_pwm=1;
- Left_moto_pwm1=1;
- }
- else
- {
- Left_moto_pwm=0;
- Left_moto_pwm1=0;
- }
- if(pwm_val_left>=10)
- pwm_val_left=0;
- }
- else
- {
- Left_moto_pwm=0;
- Left_moto_pwm1=0;
- }
- }
- /******************************************************************/
- /* 右電機調速 */
- void pwm_out_right_moto(void)
- {
- if(Right_moto_stop)
- {
- if(pwm_val_right<=push_val_right)
- {
- Right_moto_pwm=1;
- Right_moto_pwm1=1;
- }
- else
- {
- Right_moto_pwm=0;
- Right_moto_pwm1=0;
- }
- if(pwm_val_right>=10)
- pwm_val_right=0;
- }
- else
- {
- Right_moto_pwm=0;
- Right_moto_pwm1=0;
- }
- }
-
- /***************************************************/
- ///*TIMER0中斷服務子函數產生PWM信號*/
- void timer0()interrupt 1 using 2
- {
- TH0=0XFc; //1Ms定時
- TL0=0X18;
- time++;
- pwm_val_left++;
- pwm_val_right++;
- pwm_out_left_moto();
- pwm_out_right_moto();
- }
- /*********************************************************************/
- /*--主函數--*/
- void main(void)
- {
- TMOD=0X01;
- TH0= 0XFc; //1ms定時
- TL0= 0X18;
- TR0= 1;
- ET0= 1;
- EA = 1;
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
5.小車配套程序.rar
(1.08 MB, 下載次數: 694)
2018-8-20 13:35 上傳
點擊文件名下載附件
|