|
#include<reg52.h>
unsigned char pow_left_var = 170; //左電機(jī)占空比為0~170 0最快
unsigned char pow_right_var = 170;//右電機(jī)占空比為0~170 0最快
unsigned char pow_t;//周期
#define uint unsigned int
#define uchar unsigned char
/*獨(dú)立按鍵位定義*/
//sbit key_s3 = P3^1;
//sbit key_s4 = P3^2;
sbit IN1 = P1^2; //為1 左電機(jī)反轉(zhuǎn)
sbit IN2 = P1^3; //為1 左電機(jī)正轉(zhuǎn)
sbit IN3 = P1^6; //為1 右電機(jī)正轉(zhuǎn)
sbit IN4 = P1^7; //為1 右電機(jī)反轉(zhuǎn)
sbit EN1 = P1^4; //為1 左電機(jī)使能
sbit EN2 = P1^5; //為1 右電機(jī)使能
sbit left_led1 = P3^3; //左尋跡信號(hào) 為1時(shí)識(shí)別到黑線 為0沒有識(shí)別到黑線
sbit right_led1 = P3^2;//右尋跡信號(hào) 為1時(shí)識(shí)別到黑線 為0沒有識(shí)別到黑線
#define left_motor_en EN1 = 1 //左電機(jī)使能
#define left_motor_stops EN1 = 0 //停止左電機(jī)使能
#define right_motor_en EN1 = 1 //右電機(jī)使能
#define right_motor_stops EN1 = 0 //停止右電機(jī)使能
#define left_motor_go IN1 = 0 , IN2 = 1 //左電機(jī)正轉(zhuǎn)
#define left_motor_back IN1 = 1 , IN2 = 0 //左電機(jī)反轉(zhuǎn)
#define right_motor_go IN4 = 0 , IN3 = 1 //右電機(jī)正轉(zhuǎn)
#define right_motor_back IN4 = 1 IN3 = 0 //右電機(jī)反轉(zhuǎn)
void left() //左轉(zhuǎn)
{
left_motor_stops;//停止左電機(jī)使能
right_motor_en; //右電機(jī)使能
right_motor_go; //右電機(jī)正轉(zhuǎn)
}
void right() //右轉(zhuǎn)
{
right_motor_stops;//停止右電機(jī)使能
left_motor_en; //左電機(jī)使能
left_motor_go; //左電機(jī)正轉(zhuǎn)
}
void forward() //小車前進(jìn)
{
right_motor_en; //右電機(jī)使能
left_motor_en; //左電機(jī)使能
right_motor_go; //右電機(jī)正轉(zhuǎn)
left_motor_go; //左電機(jī)正轉(zhuǎn)
}
void dsqzd()//定時(shí)器初始化
{
EA = 1; //開總中斷
TR0 = 1;//允許啟動(dòng)定時(shí)器0中斷
TMOD = 0X02;//8位重裝模式
TH0 = 240; //11.0892M晶振下占空比為256 頻率100HZ
TL0 = 240;
ET0 = 1;//啟動(dòng)定時(shí)器0
}
void timer0() interrupt 1 //定時(shí)器0中斷
{
pow_t++;
if(pow_t == 255)
{
pow_t = EN1 = EN2 = 0; //左右使能為0
}
if(pow_left_var == pow_t)
{
EN1 = 1; //左電機(jī)使能
}
if(pow_right_var == pow_t)
{
EN2 = 1; //右電機(jī)使能
}
}
void main()
{
while(1)
{
if(left_led1 == 1 && right_led1 == 1) //左右都在黑線上
forward();//前進(jìn)
if(left_led1 == 1 && right_led1 == 0) //右邊在黑線上
left(); //左轉(zhuǎn)
if(left_led1 == 0 && right_led1 == 1) //左邊在黑線上
right(); //右轉(zhuǎn)
}
}
|
評(píng)分
-
查看全部評(píng)分
|