欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
單片機(jī)初學(xué)者剛剛開(kāi)始做尋跡小車(chē)
[打印本頁(yè)]
作者:
Bobby9912
時(shí)間:
2019-4-22 22:57
標(biāo)題:
單片機(jī)初學(xué)者剛剛開(kāi)始做尋跡小車(chē)
寫(xiě)了一半的程序
#include<AT89X52.H> //包含51單片機(jī)頭文件,內(nèi)部有各種寄存器定義
#include<QH_PWM.H> //包含HL-1藍(lán)牙智能小車(chē)驅(qū)動(dòng)IO口定義等函數(shù)
//主函數(shù)
unsigned char pwm_val_left =0;//變量定義
unsigned char pwm_val_right =0;
unsigned char push_val_left =5;// 左電機(jī)占空比 N/20
unsigned char push_val_right=5;// 右電機(jī)占空比 N/20
bit Right_PWM_ON=1; //右電機(jī) PWM 開(kāi)關(guān)
bit Left_PWM_ON =1; //左電機(jī) PWM 開(kāi)關(guān)
void main(void)
{
sbit IN1=P1^2;
sbit IN2=P1^3;
sbit IN3=P1^4;
sbit IN4=P1^5;
sbit Left_1_led=P3^5; //定義前方左側(cè)紅外探頭端口
sbit Right_1_led=P3^6; //定義前方右側(cè)紅外探頭端口
unsigned char i;
P1=0X00; //關(guān)電機(jī)
TMOD=0X01;
TH0= 0XFc; //1ms定時(shí)
TL0= 0X18;
TR0= 1;
ET0= 1;
EA = 1; //開(kāi)總中斷
while(1) //無(wú)限循環(huán)
{
//有信號(hào)為0 沒(méi)有信號(hào)為1
if(Left_1_led==0&&Right_1_led==0)
run(); //調(diào)用前進(jìn)函數(shù)
else
{
if(Left_1_led==1&&Right_1_led==0) //左邊檢測(cè)到黑線(xiàn)
{
leftrun(); //調(diào)用小車(chē)左轉(zhuǎn) 函數(shù)
}
if(Right_1_led==1&&Left_1_led==0) //右邊檢測(cè)到黑線(xiàn)
{
rightrun(); //調(diào)用小車(chē)右轉(zhuǎn) 函數(shù)
}
if(Right_1_led==1&&Left_1_led==1) //懸空狀態(tài) 避懸崖
{
stop(); //調(diào)用小車(chē)停止
}
}
}
}
void run() //電機(jī)前進(jìn)
{
push_val_left=5; //速度調(diào)節(jié)變量 0-20。。。0 最小,20 最大
push_val_right=5;
IN1=1;
IN2=0;
IN3=1;
IN4=0;
}
void leftrvn() //電機(jī)左轉(zhuǎn)彎
{
push_val_left=5; //速度調(diào)節(jié)變量 0-20。。。0 最小,20 最大
push_val_right=5;
IN1=0;
IN2=1;
IN3=1;
IN4=0;
}
void righturn() //電機(jī)右轉(zhuǎn)彎
{
push_val_left=5; //速度調(diào)節(jié)變量 0-20。。。0 最小,20 最大
push_val_right=5;
IN1=1;
IN2=0;
IN3=0;
IN4=1;
}
void stop() //電機(jī)停止
{
push_val_left=5; //速度調(diào)節(jié)變量 0-20。。。0 最小,20 最大
push_val_right=5;
IN1=0;
IN2=0;
IN3=0;
IN4=0;
}
// 左電機(jī)調(diào)速
/*調(diào)節(jié) push_val_left 的值改變電機(jī)轉(zhuǎn)速,占空比*/
void pwm_out_left_moto(void)
{
if(Left_PWM_ON)
{
if(pwm_val_left<=push_val_left)
{
EN1=1;
}
else
{
EN1=0;
}
if(pwm_val_left>=20)
pwm_val_left=0;
}
else
{
EN1=0; //若未開(kāi)啟 PWM 則 EN1=0 左電機(jī) 停止
}
}
/* 右電機(jī)調(diào)速 */
void pwm_out_right_moto(void)
{
if(Right_PWM_ON)
{
if(pwm_val_right<=push_val_right) //20ms 內(nèi) 電 平 信 號(hào) 111 111
0000 0000 0000 00
{
EN2=1; //占空比 6:20
}
else
{
EN2=0;
}
if(pwm_val_right>=20)
pwm_val_right=0;
}
else
{
EN2=0; //若未開(kāi)啟 PWM 則 EN2=0 右電機(jī) 停止
}
}
//TIMER0 中斷服務(wù)子函數(shù)產(chǎn)生 PWM 信號(hào)
void timer0()interrupt 1 using 2
{
TH0=0XFC; //1Ms 定時(shí)
TL0=0X66;
pwm_val_left++; //pwm jishi suanzi jia 1
pwm_val_right++; //you pwm jishi suanzi jia 1
pwm_out_left_moto(); //chansheng zuodianji EN pwm xinhao
pwm_out_right_moto(); //chansheng youdianji EN pwm xinhao
}
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1