日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言小车程序,循迹小车程序C语言

發布時間:2023/12/31 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言小车程序,循迹小车程序C语言 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

/****************************************************************************

簡單尋跡程序:接法

EN1 EN2 PWM輸入端,本程序不輸入PWM,直接使插上跳線帽,使能輸出,這樣就能全速運行

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_2接四路尋跡模塊接口第一路輸出信號即中控板上面標記為OUT1

P3_3接四路尋跡模塊接口第二路輸出信號即中控板上面標記為OUT2

P3_4接四路尋跡模塊接口第三路輸出信號即中控板上面標記為OUT3

P3_5接四路尋跡模塊接口第四路輸出信號即中控板上面標記為OUT4

四路尋跡傳感器有信號(白線)為0 沒有信號(黑線)為1

四路尋跡傳感器電源+5V GND 取自于單片機板靠近液晶調節對比度的電源輸出接口

關于單片機電源:本店驅動模塊內帶LDO穩壓芯片,當電池輸入6V時時候可以輸出穩定的5V

分別在針腳標+5 與GND 。這個輸出電源可以作為單片機系統的供電電源。

****************************************************************************/

#include

#define Left_moto_pwm P3_6 //PWM輸出本尋跡小車不用

#define Right_moto_pwm P3_7 //PWM輸出本尋跡小車不用

#define Left_1_led P3_2 //P3_2接四路尋跡模塊接口第一路輸出信號即中控板上面標記為OUT1

#define Left_2_led P3_3 //P3_3接四路尋跡模塊接口第二路輸出信號即中控板上面標記為OUT2

#define Right_1_led P3_4 //P3_4接四路尋跡模塊接口第三路輸出信號即中控板上面標記為OUT3

#define Right_2_led P3_5 //P3_5接四路尋跡模塊接口第四路輸出信號即中控板上面標記為OUT4

#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 =1;// 左電機占空比10/40

unsigned char pwm_val_right =0;

unsigned char push_val_right=1;// 右電機占空比10/40

bit Right_moto_stop=1;

bit Left_moto_stop =1;

/************************************************************************/

//延時函數

void delay(unsigned int k)

{

unsigned int x,y;

for(x=0;x

for(y=0;y

}

/************************************************************************/

//前速前進

void run(void)

{

//push_val_left =4;

//push_val_right =4;

Left_moto_go ;

Right_moto_go ;

}

/************************************************************************/

/* PWM調制電機轉速 */

/************************************************************************/

/* 左電機調速 */

/*調節push_val_left的值改變電機轉速,占空比 */

void pwm_out_left_moto(void)

{

if(Left_moto_stop)

{

if(pwm_val_left

Left_moto_pwm=1;

else

Left_moto_pwm=0;

if(pwm_val_left>=10)

pwm_val_left=0;

}

else Left_moto_pwm=0;

}

/******************************************************************/

/* 右電機調速 */

void pwm_out_right_moto(void)

{

if(Right_moto_stop)

{

if(pwm_val_right

Right_moto_pwm=1;

else

Right_moto_pwm=0;

if(pwm_val_right>=10)

pwm_val_right=0;

}

else Right_moto_pwm=0;

}

/***************************************************/

/*TIMER0中斷服務子函數*/

void timer0()interrupt 1 using 2

{

TH0=0XF8; //1Ms定時

TL0=0X30;

pwm_val_left++;

pwm_val_right++;

pwm_out_left_moto();

pwm_out_right_moto();

}

/*********************************************************************/

/*--主函數--*/

void main(void)

{

TMOD=0X01;

TH0= 0XF8; //1ms定時

TL0= 0X30;

TR0= 1;

ET0= 1;

EA = 1;

delay(100);

run();

while(1) /*無限循環*/

{

//有信號為0 沒有信號為1

if(Left_2_led==0&&Right_1_led==0)

run();

else

{

if(Left_2_led==1&&Right_1_led==0) //右邊檢測到黑線

{

Left_moto_go; //左邊兩個電機正轉

Right_moto_back; //右邊兩

個電機反轉

}

if(Right_1_led==1&&Left_2_led==0) //左邊檢測到黑線

{

Right_moto_go; //右邊兩個電機正轉

Left_moto_back; //左邊兩個電機反式開始轉

}

}

}

}

總結

以上是生活随笔為你收集整理的c语言小车程序,循迹小车程序C语言的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。