做四轴的话还是建议采用ARM,国外有个关于四轴的开源网站可以参考。
了解舵机信号可以参考 百度文库搜:航模舵机控制原详解
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
/*
变量定义
*/
uchar key_stime_counter,hight_votage=15,timeT_counter
bit key_stime_ok
/*
引脚定义
*/
sbit control_signal=P0^0
sbit turn_left=P3^4
sbit turn_right=P3^5
/*****************************************************************
名称:定时器0初始化
功能:20ms定时,11.0592M晶振
初值=65536-11059200*0.02/12=65536-18432=47104=0xB800 20ms
初值=65536-11059200*0.0001/12=65536-92.16=64430=0xFFA3 0.1ms
*****************************************************************/
void TimerInit()
{
control_signal=0
TMOD=0x01 //设置定时器0为工作方式1
EA=1 //开总中断
ET0=1 //定时器0中断允许
TH0 = 0xFF //定时器装初值
TL0 = 0xA3
TR0=1 //启动定时器0
}
/**********************************************
定时器0中断服务函数
***********************************************/
void timer0(void) interrupt 1 using 0
{
TH0=0xFF
TL0=0xA3//定时器0重新装入数值
if (++key_stime_counter>=200)
{
key_stime_counter=0
control_signal=1
key_stime_ok = 1 // 20ms到
timeT_counter=0
}
if (key_stime_ok&&(++timeT_counter>=hight_votage))
{
key_stime_ok=0
timeT_counter=0
control_signal=0 // hight_votage*0.1ms到
}
}
/*********************************************
名称丛差:键盘扫描
功能:在按键稳定期内判断键值,并返回键值
**********************************************/
uchar keyscan(void)
{
static char key_state = 0
static char key_value = 0
uchar key_press, key_return = 0
key_press=turn_left&turn_right//读按键I/O电平
switch (key_state)
{
case 0 : // 按键初始态
if (key_press==0) key_state = 1// 键被按下猜郑陵,但需要确认是否是干扰
break
case 1 : // 按键确认态
if (key_press==0)//如有键按下则不是干扰,判断键值
{
if(turn_left==0) //判断是哪一个按键被按下
key_value=1 //按键较多时可采用switch选择结构
else if(turn_right==0)
key_value=2
else
key_value=0
key_state = 2// 状态转换到键释放态
}
else
key_state = 0// 按键已抬起,属于干扰,转换到按键初始态
break
case 2 :
if (key_press==1)
{
key_return=key_value//按键释放后再输出键值,如果按下键就输出则可省略key_value
key_value=0
key_state = 0//如果按键释放,转换到按键初始态
}
break
}
return key_return//返回键值
}
/*********************************************
名称:按键处理
功能:
**********************************************/
void key_operation(void)
{
switch (keyscan()) //根据键值不同,执行不同的内容
{
case 1:
hight_votage-=1
if(hight_votage<5)
hight_votage=5
break
case 2:
hight_votage+=1
if(hight_votage>25)
hight_votage=25
break
default :
break
}
}
//LED显示函数
void diplay()
{
if(hight_votage>=5&&hight_votage<=7) P1=0xFD //1灯亮,舵机接近或到达右转极限位置
if(hight_votage>7&&hight_votage<=10) P1=0xFB //2灯亮
if(hight_votage>10&&hight_votage<=13) P1=0xF7 //3灯亮
if(hight_votage>13&&hight_votage<=16) P1=0xEF //4灯亮,舵机到达中间位置
if(hight_votage>16&&hight_votage<=19) P1=0xDF //5灯亮
if(hight_votage>19&&hight_votage<=22) P1=0xBF //6灯亮
if(hight_votage>22&&hight_votage<=25) P1=0x7F //7灯亮,舵机接近或到达左转极限位置
}
/*主程序*/
void main(void)
{
TimerInit()
while(1)
{
key_operation()
diplay()
}
}
以上代码我也是在网上下来的没做测试(现在在玩STM32。51的东西都收拾起来了)可以供你参
问题一:直流有刷电机调速 最简单的方法,接触式交流调压器加你的AC220--DC250
问题二:有一12V的直流电机怎么实现调速啊 用NE555 控制占空比
问题三:直流有刷电动机怎样控制速度 最好能有详细明了的电路图和叙述 小型永磁电机,通常可采用PWM方式进行调速,利用MOS管或IGBT组成H桥电路,搜一下H桥电路有很多答案,通过改变其导通时间实现。
问题四:36伏有刷直流电机怎么用电阻调速 直接串联电阻来调速是不合理的,可以利用调节大功率三极管基极偏置电阻,使串联在其集电极上的电机得到不同的电流来改变速度。
问题橘滑五:48V直流有刷电机没有调速是什么原因 你好:
――1、电动车有刷电动机失控(全速行驶、不能慢速),应该是控制器内的功率三极管击穿的表现:不受控。
――2、控制器的功率三极管击穿,电瓶电压就会全压加到电动机上,所以出现失控的现象。你应该检查、更换控制器的功率管。
问题六:直流调速电动机有哪几种调速方法 直流电机基本调速方式有三种。分别是:串电阻调速,降压调速,弱磁调速。
问题七:直流电机怎样利用电阻调速我想要详细点的能否在详细 就是利用直流电机与电阻串联,改变电阻的阻值也就改变了电路中的电流,达到调速的目的直流电机利用电阻调速是最简单的调速电路
降电流以减小电功率销丛的输出来调速,降电压。
现在已不用电阻调速了,用可控硅无级调速或用变频调速用电阻
小功率直流电机,供电回路中串联一个可变电阻,即可实现调速功能。当然,可变电阻的功率要足够大。
问题八:直流'有刷电机'和'无刷电机'都可以通过PWM较为精确灵敏地调速和开关吗?控制效果有无差异? wenku.baidu/...0GpplO
有刷的找不着
问题九:微型直流电机有那几种调速的方法圆斗腊? 直流电机的调速方法一是调节电枢电压,二是调节励磁电流,
而常见的微型直流电机,其磁场都是固定的,不可调的永磁体,
所以只好调节电枢电压,要说有那几种调节电枢电压方法,常用的一是可控硅调压法,再就是脉宽调制法(PWM)。
问题十:我的电机是48v1.5kw有刷直流电机,供电电源是48v的蓄电池,如果要调速该用什么样的调速器, 调速器应该选用48V1500--2000瓦的有刷电机调速器。
江淮S2电机程序刷入步骤:1、首先,将下载好的驱动程序软件安装在笔记本电脑上,并连接好电机控制器与电机;
2、将电机控制器接上汽车电源,将电机控制器与电脑连接,打开电机程序软件;
3、打开软件后,点击程序列表,找到江淮S2电机程历掘序,点击下载按钮;
4、在下载界面中,配置好控制器的型号、地址等参数,并确认下载;
5、等待几分钟,程序刷入完成,断开笔记本电脑与电机控制禅烂袜器的连接,江淮S2电机程序刷入完成。贺激
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)