标题:
按键控制舵机的单片机源程序
[打印本页]
作者:
yqqing
时间:
2017-12-20 01:39
标题:
按键控制舵机的单片机源程序
代码在压缩文件
仿真只需按照代码中的接口连接舵机
单片机源程序如下:
#include <reg52.h> //头文件
#define uchar unsigned char //宏定义无符号字符型
#define uint unsigned int //宏定义无符号整型
uint b; //中断值
uint N=0; //占空比计数值
uint X=8; //初始角度值 (取值范2~15)
uchar key_up;
uchar key_down;
/*************************************************************************/
sbit P2_2=P2^2;//角度加
sbit P2_3=P2^3;//角度减
sbit PWM=P1^0;//PWM输出 (舵机控制端)
/*************************************************************************/
void get_key(void)//按/韬?
{
while(P2_2==0)//按键加计数标志
{key_up=1;
}
while(P2_3==0)//按键减计数标志
{key_down=1;
}
}
/*************************************************************************/
void timer0( ) interrupt 1 //定时器0工作方式1
{
TH0=0xff; //重装计数初值
TL0=0x38; //重装计数初值
b++;
get_key();
if (key_up==1)
{
if(X!=15)//判断是否计数到9999
{
X=X+1;//加一
key_up=0;
}
}
if (key_down==1)
{
if(X!=2)//判断是否计数到0
{
X=X-1;//减一
key_down=0;
}
}
}
/*************************************************************************/
void main()
{
TMOD=0X01; //定时器中断0
TH0=0xff; //重装计数初值
TL0=0x38; //重装计数初值
EA=1; //开CPU中断
ET0=1; //开T/C0中断
TR0=1;
while(1) //无限循环
{
PWM=1; //输出PWM正
while(1)
{
b=0;
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
keil.rar
(24.38 KB, 下载次数: 35)
2017-12-20 01:39 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
sosppo
时间:
2017-12-20 03:40
只有上下舵,计数方式,难道芯片是51,不是52吗?可你的初始启动用的52芯片应该是带了计时器的,用计数方式并无法使其自动化。还有电路图啦!大哥,你只给个运行脚本,并无法反映出来什么啊!起码拍一张哪怕是万能电路板做的控制器照片啊!鬼晓得引脚的排序方式。
作者:
sosppo
时间:
2017-12-20 03:49
位引脚p2-2==p2.2你怎么运行这样的位p2^2==t1,不好吗?表达式t1==0,难道就不能计数?还要添
作者:
sosppo
时间:
2017-12-20 04:26
还有我记得中段信号位于p3.3~p3.4引脚吧?而ea的定义没有描述指向该引脚方向啊!还有,全手动,计数按键,当上键处于高频状态时,x+1上键则为低频,为什么不直接引用以计时方式来代替舵方向啦?这样不就不用按键了吗?还有舵偏移角度的量是多少,在这上面并没有一个最大值的说明啊?难道可以360度旋转的舵。还有15*16+15为16进制运算最后转进制之后,算倒序,得出来的到底是多少引脚的零和游戏啦!类型uint为8难道上键为8度,次数啦,非x==15,只能按15次,也就是说15*8为120度的120度,240度。你能给看下实体模型不!将近一个圆周长的3分之2,这样角度的舵你准备装哪里,装船上吗?那么大角度的舵船早就翻了。你能给看下实体运行的演示视频吗?还有电路图,以及实体模型运行演示。这里面还少了一大堆感应元器件,比如舵的水平运动感应水的温度,深度,以及活水
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1