舵机控制C程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
key_stime_ok=0;
timeT_counter=0;
control_signal=0;//hight_votage*0.1ms到
}
}
/*********************************************
名称:键盘扫描
功能:在按键稳定期内判断键值,并返回键值
**********************************************/
key_value=0;
key_state=0;//如果按键释放,转换到按键初始态
}
break;
}
returnkey_return;//返回键值
}
/*********************************************
名ห้องสมุดไป่ตู้:按键处理
功能:
**********************************************/
TH0=0xFF;//定时器装初值
TL0=0xA3;
TR0=1;//启动定时器0
}
/**********************************************
定时器0中断服务函数
***********************************************/
voidtimer0(void)interrupt1using0
hight_votage=25;
break;
default:
break;
}
}
//LED显示函数
voiddiplay()
{
if(hight_votage>=5&&hight_votage<=7)P1=0xFD;//1灯亮,舵机接近或到达右转极限位置
if(hight_votage>7&&hight_votage<=10)P1=0xFB;//2灯亮
ucharkeyscan(void)
{
staticcharkey_state=0;
staticcharkey_value=0;
ucharkey_press,key_return=0;
key_press=turn_left&turn_right;//读按键I/O电平
switch(key_state)
{
{
TH0=0xFF;
TL0=0xA3;//定时器0重新装入数值
if(++key_stime_counter>=200)
{
key_stime_counter=0;
control_signal=1;
key_stime_ok=1;//20ms到
timeT_counter=0;
}
if(key_stime_ok&&(++timeT_counter>=hight_votage))
*/
sbitcontrol_signal=P0^0;
sbitturn_left=P3^4;
sbitturn_right=P3^5;
/*****************************************************************
名称:定时器0初始化
功能:20ms定时,11.0592M晶振
case0://按键初始态
if(key_press==0)key_state=1;//键被按下,但需要确认是否是干扰
break;
case1://按键确认态
if(key_press==0)//如有键按下则不是干扰,判断键值
{
if(turn_left==0)//判断是哪一个按键被按下
key_value=1;//按键较多时可采用switch选择结构
if(hight_votage>10&&hight_votage<=13)P1=0xF7;//3灯亮
if(hight_votage>13&&hight_votage<=16)P1=0xEF;//4灯亮,舵机到达中间位置
if(hight_votage>16&&hight_votage<=19)P1=0xDF;//5灯亮
初值20ms
初值0.1ms
*****************************************************************/
voidTimerInit()
{
control_signal=0;
TMOD=0x01;//设置定时器0为工作方式1
EA=1;//开总中断
ET0=1;//定时器0中断允许
{
key_operation();
diplay();
}
}
elseif(turn_right==0)
key_value=2;
else
key_value=0;
key_state=2;//状态转换到键释放态
}
else
key_state=0;//按键已抬起,属于干扰,转换到按键初始态
break;
case2:
if(key_press==1)
{
key_return=key_value;//按键释放后再输出键值,如果按下键就输出则可省略key_value
舵机控制C程序
#include<reg51.h>
#defineucharunsignedchar
#defineuintunsignedint
/*
变量定义
*/
ucharkey_stime_counter,hight_votage=15,timeT_counter;
bitkey_stime_ok;
/*
引脚定义
if(hight_votage>19&&hight_votage<=22)P1=0xBF;//6灯亮
if(hight_votage>22&&hight_votage<=25)P1=0x7F;//7灯亮,舵机接近或到达左转极限位置
}
/*主程序*/
voidmain(void)
{
TimerInit();
while(1)
voidkey_operation(void)
{
switch(keyscan())//根据键值不同,执行不同的内容
{
case1:
hight_votage-=1;
if(hight_votage<5)
hight_votage=5;
break;
case2:
hight_votage+=1;
if(hight_votage>25)
相关文档
最新文档