标题:
一个stc89c52单片机按键控制舵机程序分享
[打印本页]
作者:
shenlong
时间:
2017-12-4 20:20
标题:
一个stc89c52单片机按键控制舵机程序分享
做了一个stc89c52开发板的按键控制舵机程序
希望对学习舵机的同学有小帮助
0.png
(9.07 KB, 下载次数: 34)
下载附件
2017-12-4 23:18 上传
0.5ms--------------0度;
1.0ms------------45度;
1.5ms------------90度;
2.0ms-----------135度;
2.5ms-----------180度;
单片机源程序如下:
#include<reg52.h>
#define unchar unsigned char
unsigned char count; //0.5ms次数标识
unsigned char jd=0;
sbit pwm1 = P2^1;
unsigned char flag=1;
unsigned char flag1=1;
sbit key1=P3^1;
//void delayms(unsigned int t)
//{
// int i = 0;
// for(;t>0;t--);
// for(i=110;i>0;i--);
//
//}
void Time0_Init() //定时器初始化
{
TMOD = 0x01; //定时器0工作在方式1
TH0 = (65535-500)/256;
TL0 = (65535-500)%256; //12MZ晶振,0.5ms
EA=1; //总中断打开
ET0=1; //定时器中断打开
TR0=1; //定时器开关打开
}
void Time0_Int() interrupt 1
{
static int t=0;
t++;
TH0 = (65535-500)/256; //重新赋值
TL0 = (65535-500)%256;
if(count< jd) //判断0.5ms次数是否小于角度标识
{
pwm1=1; //确实小于,PWM输出高电平
}
else
{
pwm1=0; //大于则输出低电平
}
count++;//(count+1); //0.5ms次数加1
if(count>=40)
count=0;
//count=count%40; //次数始终保持为40 即保持周期为20ms
// if(t<2000)
// {
// jd=4;
// }
// else if(t<4000)
// {
// jd=1;
// }
// else
// t=0;
}
unsigned char count; //0.5ms次数标识
void keyscan() //按键扫描
{
if(key1==0&&flag1)
{
flag=!flag;
flag1=0;
}else if(key1) flag1=1;
}
void main()
{
count=0;
Time0_Init();
while(1)
{
keyscan();
if(flag)
{
jd=4;
}
else
jd=1;
}
}
复制代码
所有资料51hei提供下载:
舵机学习.zip
(42.78 KB, 下载次数: 100)
2017-12-4 20:19 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
REALLIFE
时间:
2018-6-29 10:44
支持------
作者:
ABCD丁
时间:
2018-7-4 16:27
我想问一下那个角度标识是什么作用啊
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1