模吧

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

1392查看 | 8回复

舵机程序 可以用

[复制链接]
发表于 2018-6-18 16:41:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
#include<reg51.h>
unsigned char count; //记录0.5ms次数的变量
sbit pwm=P3^7; //PWM输出
sbit jia=P3^0; //角度增加按键
sbit jan=P3^1; //角度减少按键
unsigned char jd; //角度标记变量
void delay(unsigned char z)//延时函数
{
unsigned char x,y;
for(x=125;x>0;x--)
  for(y=z;y>0;y--);
}
void Time0_Init()  //定时器0的设定
{
TMOD=0x01;  //16位自动重装 工作方式1   T0
IE=0x82;
TH0=0xff;
TL0=0xa3;   //11.0592MHz定时0.5毫秒
TR0=1;    //计时开始
}
void Time0_Int() interrupt 1//中断程序
{
TH0=0xff;
TL0=0xa3;
if(count<jd)   
  pwm=1;   
else
  pwm=0;   
  count=(count+1);  //每进入中断程序一次 count变量的值+1
  count=count%40;  //20毫秒一个循环
}
void keyscan()   //按键扫描函数
{
if(jia==0) //判断增加按键是否按下
{
  delay(30);
  if(jia==0) //如果确实按下
  {
   jd++;
   count=0; //这句的功能:有按键按下后   才统计进入中断程序的次数
   if(jd==20)   //  舵机程序 可以用 舵机,51舵机控制程序,mg90s 舵机 作者:爪牙非非 9269 这句不懂,进入中断后,这么写会产生10毫秒的高电平?为什么要这么写呢? 亲  可以帮我解释下么
    jd=19;
    while(jia==0);
  }
}
if(jan==0)   
{
  delay(30);
  if(jan==0)
  {
   jd--;
   count=0;
   if(jd==4)
    jd=5;   
    while(jan==0);
  }
}
}
void main()
{
jd=12;        //还有这句,为什么jd的值要等于12啊?
count=0;
Time0_Init();
while(1)
{
  keyscan();  
}
}

发表于 2018-6-18 21:40:07 | 显示全部楼层
jd==20那表示最大角度是19,主函数里的jd=12表示舵机的初始角度
回复 支持 反对

使用道具 举报

发表于 2018-6-19 17:29:56 | 显示全部楼层
单片机的吗?不懂帮顶
舵机程序 可以用 舵机,51舵机控制程序,mg90s 舵机 作者:昶春斋 4893
回复 支持 反对

使用道具 举报

发表于 2018-6-19 17:32:36 | 显示全部楼层
顶楼主
回复 支持 反对

使用道具 举报

发表于 2020-2-23 09:44:39 | 显示全部楼层
   不懂单片  先顶起
回复 支持 反对

使用道具 举报

发表于 2020-2-24 18:18:35 | 显示全部楼层
不错 正好需要  顶起
回复 支持 反对

使用道具 举报

发表于 2021-2-14 21:19:17 | 显示全部楼层
刚好学习一波,顶起
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|关于模吧|APP下载|广告报价|小黑屋|手机版|企业会员|商城入驻|联系我们|模吧 ( 冀公网安备13080502000084号 )

© 2013-2020 Moz8.com 模吧,玩出精彩!