資源簡(jiǎn)介
用51單片機(jī)控制舵機(jī),按鍵實(shí)現(xiàn)左轉(zhuǎn)、右轉(zhuǎn)及歸位,程序風(fēng)格采用 化為公司 標(biāo)準(zhǔn),整潔易讀。
代碼片段和文件信息
/***********************************************************
版權(quán)所有 :河池學(xué)院創(chuàng)新實(shí)訓(xùn)中心(2/3),劉歡(1/3)
程序功能 :舵機(jī)控制
生成日期 :2009年10月30日?星期五
作 者 :劉歡
聯(lián)系方式??:(QQ)281638360??(MSN)sundayboy@live.cn
說(shuō) 明 :51單片機(jī)控制舵機(jī),按鍵實(shí)現(xiàn)左轉(zhuǎn)、右轉(zhuǎn)及歸位
????????????占用定時(shí)/計(jì)數(shù)器1
************************************************************/
#include?
#define?Stop?0????//宏定義,停止
#define?Left?1 ??//宏定義,左轉(zhuǎn)
#define?Right?2 ??//宏定義,右轉(zhuǎn)
sbit?ControlPort?=?P1^0;??//舵機(jī)信號(hào)端口
sbit?KeyLeft?=?P1^1; ??//左轉(zhuǎn)按鍵端口
sbit?KeyRight?=?P1^2; ??//右轉(zhuǎn)按鍵端口
sbit?KeyStop?=?P1^3; ??//歸位按鍵端口
unsigned?char?TimeOutCounter?=?0LeftOrRight?=?0;??//TimeOutCounter:定時(shí)器溢出計(jì)數(shù) ??LeftOrRight:舵機(jī)左右旋轉(zhuǎn)標(biāo)志
void?InitialTimer?(?void?) ?
{
????TMOD=0x10;???//定時(shí)/計(jì)數(shù)器1工作于方式1
????TH1?=?(?65535?-?500?)?/?256; ??//0.25ms
TL1?=?(?65535?-?500?)?%?256;
????EA=1;????????//開(kāi)總中斷
????ET1=1;???????//允許定時(shí)/計(jì)數(shù)器1?中斷
????TR1=1;???????//啟動(dòng)定時(shí)/計(jì)數(shù)器1?中斷
}
void?ControlLeftOrRight?(?void?)???//控制舵機(jī)函數(shù)
{
if(?KeyStop?==?0?)
{
while?(?!KeyStop?); ???//使標(biāo)志等于Stop(0),在中斷函數(shù)中將用到
LeftOrRight?=?Stop;
}
if(?KeyLeft?==?0?)
{
while?(?!KeyLeft?); ???//使標(biāo)志等于Left(1),在中斷函數(shù)中將用到
LeftOrRight?=?Left;
}
if(?KeyRight?==?0?)
{
while?(?!KeyRight?);???//使標(biāo)志等于Right(2),在中斷函數(shù)中將用到
LeftOrRight?=?Right;
}
}
void?main?(?void?) ?//主函數(shù)
{
????InitialTimer();
for(;;)
{
ControlLeftOrRight();
}
}
void?Timer1?(?void?)?interrupt?3??//定時(shí)器中斷函數(shù)
{
????TH1?=?(?65535?-?500?)?/?256;
TL1?=?(?65535?-?500?)?%?256;
TimeOutCounter?++;
switch?(?LeftOrRight?)
{
case?0?: ??//為0時(shí),舵機(jī)歸位,脈寬1.5ms
{
if(?TimeOutCounter?<=?6?)
{
ControlPort?=?1;
}
else?
{
ControlPort?=?0;
}
break;
}
case?1?:?????//為1時(shí),舵機(jī)左轉(zhuǎn),脈寬1ms(理論值),實(shí)際可以調(diào)試得出
{
if(?TimeOutCounter?<=?2?)
{
ControlPort?=?1;
}
else?
{
ControlPort?=?0;
}
break;
}
case?2?:???//為2時(shí),舵機(jī)右轉(zhuǎn),脈寬2ms(理論值),實(shí)際可以調(diào)試得出
{
if(?TimeOutCounter?<=?10?)
{
ControlPort?=?1;
}
else?
{
ControlPort?=?0;
}
break;
}
default?:?break;
}
if(?TimeOutCounter?==?80?) ?//周期20ms(理論值),比較可靠,最好不要修改
{
TimeOutCounter?=?0;
}
}
?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----
?????文件???????6376??2009-10-30?22:30??舵機(jī)控制\STARTUP.A51
?????文件??????10722??2009-10-30?22:30??舵機(jī)控制\STARTUP.LST
?????文件????????750??2009-10-30?22:30??舵機(jī)控制\STARTUP.OBJ
?????文件???????4044??2009-10-30?22:30??舵機(jī)控制\SteeringEngineControl
?????文件???????2481??2009-10-30?22:30??舵機(jī)控制\SteeringEngineControl.c
?????文件????????869??2009-10-30?22:30??舵機(jī)控制\SteeringEngineControl.hex
?????文件?????????90??2009-10-30?22:30??舵機(jī)控制\SteeringEngineControl.lnp
?????文件???????6201??2009-10-30?22:30??舵機(jī)控制\SteeringEngineControl.LST
?????文件???????8242??2009-10-30?22:30??舵機(jī)控制\SteeringEngineControl.M51
?????文件???????3920??2009-10-30?22:30??舵機(jī)控制\SteeringEngineControl.OBJ
?????文件???????1062??2009-10-30?22:31??舵機(jī)控制\SteeringEngineControl.Opt
?????文件????????430??2009-10-30?22:31??舵機(jī)控制\SteeringEngineControl.plg
?????文件???????2207??2009-10-30?20:53??舵機(jī)控制\SteeringEngineControl.Uv2
????.......??????1060??2009-10-30?22:30??舵機(jī)控制\SteeringEngineControl_Opt.Bak
?????文件???????2206??2009-10-30?20:49??舵機(jī)控制\SteeringEngineControl_Uv2.Bak
?????目錄??????????0??2009-10-30?22:31??舵機(jī)控制
-----------?---------??----------?-----??----
????????????????50660????????????????????16
評(píng)論
共有 條評(píng)論