標(biāo)題:
單片機(jī)尋聲小車源程序
[打印本頁]
作者:
礦泉水小強(qiáng)
時(shí)間:
2018-4-13 21:05
標(biāo)題:
單片機(jī)尋聲小車源程序
單片機(jī)源程序如下:
#include<reg52.h>
typedef unsigned int uint;
typedef unsigned char uchar;
int a=0;
sbit IN1=P1^0; //定義電機(jī)驅(qū)動(dòng)信號(hào)輸出端
sbit IN2=P1^1; //定義電機(jī)驅(qū)動(dòng)信號(hào)輸出端
sbit IN3=P1^2; //定義電機(jī)驅(qū)動(dòng)信號(hào)輸出端
sbit IN4=P1^3; //定義電機(jī)驅(qū)動(dòng)信號(hào)輸出端
sbit IN5=P1^4; //定義電機(jī)驅(qū)動(dòng)信號(hào)輸出端
sbit IN6=P1^5; //定義電機(jī)驅(qū)動(dòng)信號(hào)輸出端
sbit IN7=P1^6; //定義電機(jī)驅(qū)動(dòng)信號(hào)輸出端
sbit IN8=P1^7; //定義電機(jī)驅(qū)動(dòng)信號(hào)輸出端
sbit out1=P3^2;//定義尋聲模塊信號(hào)左輸入端 //可有可無中斷自動(dòng)觸發(fā)
sbit out2=P3^3;//定義尋聲模塊信號(hào)右輸入端
char L_pwm,R_pwm,t;
void L_qian()
{
IN1=1;
IN2=0;
IN3=1;
IN4=0;
}
void R_qian()
{
IN5=1;
IN6=0;
IN7=1;
IN8=0;
}
void L_ting()
{
IN1=0;
IN2=0;
IN3=0;
IN4=0;
}
void R_ting()
{
IN5=0;
IN6=0;
IN7=0;
IN8=0;
}
void L_hou()
{
IN1=0;
IN2=1;
IN3=0;
IN4=1;
}
void R_hou()
{
IN5=0;
IN6=1;
IN7=0;
IN8=1;
}
void zuozhuan()interrupt 0
{
if(a==0)
{ L_pwm=0;R_pwm=40;a=1;}
else a=0;
}
void youzhuan()interrupt 2
{
if(a==0)
{ L_pwm=40;R_pwm=0;a=1;}
else a=0;
}
void timer0() interrupt 1
{ TH1 = 0x0FE;
TL1 = 0x33;
if(L_pwm>=0)if(t<L_pwm) L_qian(); //當(dāng)L_pwm為0時(shí)根據(jù)我們的思維:電機(jī)不應(yīng)該轉(zhuǎn)。將0代入左邊
else L_ting(); //L_pwm,發(fā)現(xiàn)不管t取0~39范圍內(nèi)何值時(shí),都不會(huì)執(zhí)行L_qian(),
else if(t<~L_pwm) L_hou(); //當(dāng)L_pwm為0時(shí)根據(jù)我們的思維:電機(jī)不應(yīng)該轉(zhuǎn)。將0代入左邊
else L_ting(); //L_pwm,發(fā)現(xiàn)不管t取0~39范圍內(nèi)何值時(shí),都不會(huì)執(zhí)行L_qian(),
if(R_pwm>=0)if(t<R_pwm) R_qian(); //當(dāng)L_pwm為0時(shí)根據(jù)我們的思維:電機(jī)不應(yīng)該轉(zhuǎn)。將0代入左邊
else R_ting(); //L_pwm,發(fā)現(xiàn)不管t取0~39范圍內(nèi)何值時(shí),都不會(huì)執(zhí)行L_qian(),
else if(t<~R_pwm) R_hou(); //當(dāng)L_pwm為0時(shí)根據(jù)我們的思維:電機(jī)不應(yīng)該轉(zhuǎn)。將0代入左邊
else R_ting(); //L_pwm,發(fā)現(xiàn)不管t取0~39范圍內(nèi)何值時(shí),都不會(huì)執(zhí)行L_qian(),
t++;
t%=40;//使每個(gè)pwm周期內(nèi)t的取值都是0~39變化
}
復(fù)制代碼
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1