五线舵机驱动程序_51单片机舵机驱动源程序

本文介绍了如何使用51单片机编写五线舵机驱动程序,通过定时器0初始化设置产生0.5ms的PWM信号,并通过中断程序控制舵机转动。程序中包含了角度增加和减少的按键控制逻辑,但注释掉了这部分代码。
摘要由CSDN通过智能技术生成

#include

unsigned char count;      //0.5ms次数标识

sbit pwm =P1^0 ;          //PWM信号输出

sbit jia =P2^4;           //角度增加按键检测IO口

sbit jian =P2^5;           //角度减少按键检测IO口

unsigned char jd;         //角度标识

sbit pwm1 =P0^0 ;          //PWM信号输出给示波器,检测PWM波用

void delay(unsigned char i)//延时

{

unsigned char j,k;

for(j=i;j>0;j--)

for(k=125;k>0;k--);

}

void Time0_Init()          //定时器0初始化

{

//定时器0装初值 用示波器检测后,11.0592MHZ晶振 定时0.5ms进入中断 装初值如下

TH0  = (65536-445)/256;

TL0  = (65536-445)%256;

TMOD = 0x01;    //定时器0工作在方式1

IE = 0x82;        //IE=0x82=1000 0010 等价于 EA=1 开总中断  ET0=1 开定时器0中断

TR0=1;          //开定时器0

}

void Time0_Int() interrupt 1 //中断程序

{

//重装初值

TH0  = (65536-445)/256;

TL0  = (65536-445)%256;

if(count< jd)

{

pwm=1;                  //确实小于,PWM输出高电平

pwm1=pwm;              //接示波器用的io口,观测PWM波形用            }        //判断0.5ms次数是否小于角度标识

//pwm=1;                  //确实小于,PWM输出高电平

else

{

pwm=0;                  //确实小于,PWM输出高电平

pwm1=pwm;             //接示波器用的io口,观测PWM波形用        }

//  pwm=0;                  //大于则输出低电平

count=(count+1);          //0.5ms次数加1

count=count%40;     //次数始终保持为40 即保持周期为20ms

}

//此注销掉部分为通过按键控制舵机转动的程序,功能为通过jia按键控制正转,

//通过jian按键控制反转

/*void keyscan()              //按键扫描

{

if(jia==0)               //角度增加按键是否按下

{

delay(10);              //按下延时,消抖

if(jia==0)              //确实按下

{

jd++;                 //角度标识加1

count=0;              //按键按下 则20ms周期从新开始

if(jd==6)

jd=5;               //已经是180度,则保持

while(jia==0);        //等待按键放开

}

}

if(jian==0)                //角度减小按键是否按下

{

delay(10);

if(jian==0)

{

jd--;                 //角度标识减1

count=0;

if(jd==0)

jd=1;               //已经是0度,则保持

while(jan==0);

}

}

}*/

void main()

{

//上电,舵机自动正反转

//应注意每次步进是延时函数delay参数的设置,此处延时函数参数设置的并不理想

while(1)

{

for(jd=1;jd<6;jd++)

{

count=0;

Time0_Init();

delay(50000000);

}

delay(50000000);

for(jd=6;jd>0;jd--)

{

count=0;

Time0_Init();

delay(50000000);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值