请选择 进入手机版 | 继续访问电脑版

 找回密码
 立即注册

扫一扫,访问微社区

搜索
查看: 76|回复: 0

舵机测试程序

[复制链接]

3

主题

91

帖子

281

积分

中级会员

Rank: 3Rank: 3

积分
281
发表于 2019-6-12 15:11:10 | 显示全部楼层 |阅读模式
按键控制舵机转向
按下k1时舵机正转45°角 k2反转45°,到最大值停止
  1. #include "reg52.h"

  2. sbit pwm =P3^7 ;          //PWM信号输出
  3. sbit jia =P0^4;           //角度增加按键检测IO口
  4. sbit jian =P0^5;           //角度减少按键检测IO口

  5. unsigned char jd;         //角度标识
  6. unsigned char count;      //0.5ms次数标识

  7. void delay(unsigned char i)//延时
  8. {
  9.   unsigned char j,k;
  10.   for(j=i;j>0;j--)
  11.     for(k=125;k>0;k--);
  12. }

  13. void Time0_Init()          //定时器初始化
  14. {
  15. TMOD = 0x01;           //定时器0工作在方式1   
  16. IE   = 0x82;
  17. TH0  = 0xfe;
  18. TL0  = 0x33;     //11.0592MZ晶振,0.5ms
  19. TR0=1;                 //定时器开始
  20. }

  21. void Time0_Int() interrupt 1 //中断程序
  22. {
  23. TH0  = 0xfe;             //重新赋值
  24. TL0  = 0x33;
  25.     if(count< jd)              //判断0.5ms次数是否小于角度标识
  26.       pwm=1;                  //确实小于,PWM输出高电平
  27.     else
  28.       pwm=0;                  //大于则输出低电平
  29.     count=(count+1);          //0.5ms次数加1
  30.     count=count%40;     //次数始终保持为40 即保持周期为20ms
  31. }

  32. void keyscan()              //按键扫描
  33. {
  34.    if(jia==0)               //角度增加按键是否按下
  35.   {
  36.     delay(10);              //按下延时,消抖
  37.     if(jia==0)              //确实按下
  38.      {
  39.       jd++;                 //角度标识加1
  40.       count=0;              //按键按下 则20ms周期从新开始
  41.       if(jd==6)
  42.         jd=5;               //已经是180度,则保持
  43.       while(jia==0);        //等待按键放开
  44.      }
  45.   }
  46.   if(jian==0)                //角度减小按键是否按下
  47.   {
  48.     delay(10);
  49.     if(jian==0)
  50.      {
  51.       jd--;                 //角度标识减1
  52.       count=0;
  53.       if(jd==0)
  54.         jd=1;               //已经是0度,则保持
  55.       while(jian==0);
  56.      }
  57.   }
  58. }
  59. void main()
  60. {
  61. jd=1;
  62. count=0;
  63. Time0_Init();              
  64. while(1)
  65. {
  66.   keyscan();               //按键扫描   
  67. }
  68. }
复制代码


本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|51开发板专区 STM32开发板专区 PLC工控专区 PLC学习机专区 ( 粤ICP备18101765号 )

GMT+8, 2019-6-25 20:53 , Processed in 0.172509 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表