资源简介
51单片机舵机角度控制程序 ,定时器实现的角度控制程序。 内容为KIEL C程序文件
代码片段和文件信息
//只利用一个定时器 T0,定时时间为 0.5ms,定义一个角度标识,数值为 1、2、3、4、5,
//实现 0.5ms、1ms、1.5ms、2ms、2.5ms 高电平的输出,再定义一个变量,数值最大为 40,实现周期为 20ms。
//每次进入定时中断,判断此时的角度标识,进行
//相应的操作。比如此时为 5,则进入的前 5 次中断期间,信号输出为高电平,即为 2.5ms 的
//高电平。剩下的 35 次中断期间,信号输出为低电平,即为 17.5ms 的低电平。这样总的时间
//是 20ms,为一个周期。
//用51板上s1和s2按键
//用P1^7输出 PWM信号控制舵机
#include “reg52.h“
#define uchar unsigned char
unsigned char count; //0.5ms次数标识
sbit pwm =P1^7 ; //PWM信号输出
uchar jd=3;
void Time0_Init() //定时器初始化
{
TMOD = 0x01; //定时器0工作在方式1
IE= 0x82;
TH0= 0xfe;
TL0= 0x33; //11.0592MZ晶振,0.5ms
TR0=1; //定时器开始
}
void Time0_Int() interrupt 1 //中断程序
{
TH0 = 0xfe; //重新赋值
TL0 = 0x20;
if(count pwm=1; //确实小于,PWM输出高电平
else
pwm=0; //大于则输出低电平
count=(count+1); //0.5ms次数加1
count=count%40; //次数始终保持为40 即保持周期为20ms
}
void UA_initi()
{
SCON=0X50;
TMOD|=0X20;
TL1=0XFD;
TH1=0XFD;
TR1=1;
}
void delayms(uchar t)
{
uchar i;
while(t--)
for(i=0;i<122;i++);
}
void main()
{
Time0_Init();
UA_initi();
while(1)
{
jd=3;// delayms(20);ET0=0;
delayms(200);
delayms(200);
jd=5; // ET0=1;delayms(20);E0=0;
delayms(100);
delayms(200);
jd=1; // ET0=1;delayms(20);ET0=0;
delayms(100);
delayms(200);
jd=3; // ET0=1;delayms(20);ET0=0;
delayms(200);
delayms(200);
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-08-17 22:10 工程8(舵机)\
文件 3567 2012-12-13 13:00 工程8(舵机)\8
文件 887 2012-12-13 13:00 工程8(舵机)\8.hex
文件 37 2012-12-13 13:00 工程8(舵机)\8.lnp
文件 5758 2012-12-13 13:00 工程8(舵机)\8.M51
文件 165 2013-03-25 19:35 工程8(舵机)\8.plg
文件 72568 2013-03-25 19:35 工程8(舵机)\8.uvopt
文件 13223 2012-12-11 13:58 工程8(舵机)\8.uvproj
文件 55210 2012-12-13 15:03 工程8(舵机)\8_uvopt.bak
文件 0 2012-12-11 12:51 工程8(舵机)\8_uvproj.bak
文件 1806 2012-12-13 13:00 工程8(舵机)\MAIN.c
文件 3750 2012-12-13 13:00 工程8(舵机)\MAIN.LST
文件 3918 2012-12-13 13:00 工程8(舵机)\MAIN.OBJ
文件 6376 2009-05-07 14:37 工程8(舵机)\STARTUP.A51
评论
共有 条评论