资源简介

用51单片机控制舵机,周期为20ms,我的程序尽量写得简单易懂了,可以通过串口发送1、2、3、4分别控制舵机的不同工作状态。1右转,2左转,3回到初始位置,4自由转动:不断地左转和右转

资源截图

代码片段和文件信息

#include
#define uchar unsigned char
uchar count;
sbit pwm=P0^0; //PWM信号输出口
uchar jia=1; //角度增加按键检测I/O口
uchar jan=1; //角度减少按键检测I/O口
uchar jd; //角度标识
uchar a;
uchar i;
uchar flag;
void delay(uchar z)
{
uchar xy;
for(x=125;x>0;x--)
for(y=z;y>0;y--);
}
void Com_Init()
{
TMOD=0x21; //T1工作于方式1
TH1=0xfd; //设置波特率为9600
TL1=0xfd;
TR1=1;   //启动T1
REN=1; //允许串行口接收
SM0=0; //串口工作方式1
SM1=1;
EA=1;  //开放所有中断
ES=1; //允许串行口中断
}
void Time0_Init()  //定时器初始化
{
// TMOD=0x01; //定时器0工作在方式1
IE=0x82;
TH0=0xff;
TL0=0xa3;   //11.0592MHz晶振,0.1ms
TR0=1;    //定时器开始
}
void Time0_Int() interrupt 1
{
TH0=0xff;
TL0=0xa3;
if(count pwm=1;   //确实小于,pwm输出高电平
else
pwm=0;  //大于则输出低电平
count=(count+1);  //0.5ms次数加1
count=count%40;  //次数始终保持为40即保持周期为20ms
}

void main()
{
jd=12;
count=0;
Time0_Init();
Com_Init();
while(1)
{

if(flag==4)
{
do
{
if(flag != 4)
break;

jd=5;
count=0;
delay(500);

  for(i=1;i<=14;i++)
{
if(flag != 4)
  break;

jd++;
count=0;
if(jd==20)
jd=19; //已经是180度,则保持
delay(500);
if(i==14)
{

for(i=1;i<=14;i++)
{
if(flag != 4)
  break;
jd--;
count=0;
if(jd==4)
jd=5;   //已经是0度,则保持
delay(500);
}
}
}
}while(flag!=4);

}
}

}
void ser() interrupt 4
{
if(RI==0) return;
ES=0;   //关闭口中断
RI=0; //清除口接收标志位
a=SBUF; //读取字符
flag=a;
ES=1; //允许串口中断
P2 = ~P2;
if(flag==1)
{
jd++;
count=0; //按键按下 则20ms周期从新开始
if(jd==20)
jd=19; //已经是180度,则保持

}
if(flag==2)
{
jd--;
count=0;
if(jd==4)
jd=5;   //已经是0度,则保持
}
if(flag==3)
{

jd=12;
count=0;


}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       7199  2010-08-29 23:32  串口控制舵机\串口控制舵机.LST

     文件       2099  2010-08-30 00:10  串口控制舵机\串口控制舵机.c

     文件       1348  2010-08-29 23:32  串口控制舵机\串口控制舵机.hex

     文件         41  2010-08-29 23:32  串口控制舵机\串口控制舵机.lnp

     文件       6232  2010-08-29 23:32  串口控制舵机\串口控制舵机.OBJ

     文件       8462  2010-08-29 23:32  串口控制舵机\串口控制舵机.M51

     文件        996  2010-08-30 00:10  串口控制舵机\串口控制舵机.Opt

     文件       5404  2010-08-29 23:32  串口控制舵机\串口控制舵机

     文件        199  2010-08-30 00:10  串口控制舵机\串口控制舵机.plg

     文件       2160  2010-08-27 00:34  串口控制舵机\串口控制舵机.Uv2

     文件          0  2010-08-26 09:53  串口控制舵机\串口控制舵机_Uv2.Bak

    .......       994  2010-08-29 23:34  串口控制舵机\串口控制舵机_Opt.Bak

     目录          0  2010-08-29 19:52  串口控制舵机

----------- ---------  ---------- -----  ----

                35134                    13


评论

共有 条评论