标题:
单片机舵机控制程序
[打印本页]
作者:
李响
时间:
2020-10-9 09:14
标题:
单片机舵机控制程序
#include <reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit PWM_OUT=P0^0; //PWM输出口
u16 PWM_Value; //定义pwm值
u8 order=0;
void Delay(unsigned int s); //延时函数声明
u8 flag;
//舵机按键标志
void Delay(unsigned int s)
{
unsigned int i;
for(i=0; i<s; i++);
for(i=0; i<s; i++);
}
/*定时器初始化*/
void Init_Timer0()
{
TMOD=0x11;
TH1=(65536-1500)/256;
TL1=(65536-1500)%256;
EA = 1;
ET1= 1;
TR1 = 1;
PT1=1;
}
/*主函数*/
void main(void)
{
Delay(6000);
PWM_Value =101;
//pwm初值为1500
Init_Timer0();
while(1)
{
PWM_Value += 10;
Delay(1000);
//PWM_Value -= 1;
//Delay(1000);
}
}
/*****中断程序*******/
void timer0(void) interrupt 3
{
if(PWM_Value>=2500) //如果pwm的值大于2500
PWM_Value = 2500; //则保持在2500
if(PWM_Value<=100) //如果pwm的值小于500
PWM_Value=500; //则保持在500
switch(order)
{
case 1:PWM_OUT=1;
TH1=(65536-PWM_Value)>>8;
TL1=(u8)(65536-PWM_Value);
break;
case 2:PWM_OUT=0;
TH1=(65536-(5000-PWM_Value))>>8;
TL1=(u8)(65536-(5000-PWM_Value));
break;
case 3:
TH1=60536>>8;
TL1=(u8)60536;
break;
case 4:
TH1=60536>>8;
TL1=(u8)60536;
order=0;
break;
default: order=0;
break;
}
order++;
}
复制代码
舵机.zip
2020-10-9 09:14 上传
点击文件名下载附件
下载积分: 黑币 -5
30.78 KB, 下载次数: 16, 下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1