找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2152|回复: 6
打印 上一主题 下一主题
收起左侧

舵机实物不成功,求大神帮忙看下代码

[复制链接]
跳转到指定楼层
楼主
疑问1舵机它不转。
  1. #include<reg51.h>

  2. #define uchar unsigned char           //宏定义无符号字符型
  3. #define uint  unsigned  int           //宏定义无符号整型
  4. uint b;                //中断值
  5. uint N=0;                //占空比计数值
  6. uint X=8;                                                   //初始角度值  (取值范2~15)
  7.                
  8. uchar key_up;
  9. uchar key_down;

  10. sbit P3_6=P3^6;//角度加30°
  11. sbit P3_7=P3^7;//角度减30°
  12. sbit PWM=P1^0;//输出


  13. void get_key()

  14. {
  15. while(P3_6==0)           //按键加按下
  16. {key_up=1;
  17. }
  18. while(P3_7==0)           //按键减按下
  19. {key_down=1;
  20. }
  21. }





  22. void timer0( ) interrupt 1 //定时器0工作方式1
  23. {
  24. TH0=0xFF;          //重装计数初值
  25. TL0=0x62;          //重装计数初值
  26. b++;
  27. get_key();


  28. if (key_up==1)
  29.        {
  30.            if(X!=11)//判断是否计数到9999
  31.               {
  32.                X=X+1;//加一
  33.                key_up=0;
  34.                            }
  35.         }
  36. if (key_down==1)
  37.        {
  38.             if(X!=5)//判断是否计数到0
  39.               {
  40.                    X=X-1;//减一
  41.                key_down=0;
  42.                }
  43.         }

  44. }





  45. void main()
  46. {
  47. TMOD=0X01;          //定时器中断0
  48. TH0=0xFF;          //重装计数初值
  49. TL0=0x62;          //重装计数初值
  50. EA=1;                                  //开CPU中断
  51. ET0=1;                                  //开T/C0中断
  52. TR0=1;

  53. while(1)                           //无限循环
  54. {


  55. PWM=1;                   //输出PWM正
  56. while(1)
  57. {
  58. b=0;
  59. while(!b);
  60. if (N==X)
  61. PWM=0;
  62. if (N==100)
  63. break;
  64. N++;

  65.           }
  66.             N=0;
  67.           }
  68. }
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:123289 发表于 2019-8-13 13:02 | 只看该作者
本帖最后由 yzwzfyz 于 2019-8-13 15:28 编辑

七窍通了六窍了。
回复

使用道具 举报

板凳
ID:505677 发表于 2019-8-13 16:26 | 只看该作者
我不知道你晶振多少,用keil调试了一下
[url=][/url]
[url=][/url]
  ,要不你把这个定时改改 调到20ms,如果能输出pwm,舵机接电和接地都没问题,你再换个舵机,还可以再把线检查一下,这个只能自己琢磨了,  实物做不成功是不是很绝望,哈哈    我在弄那个液晶1602的时候线接错了弄了半天,后来又发现显示错位,不知道为什么单片机一根连线不通换了就好了。

IMG_20190813_161603.jpg (2.58 MB, 下载次数: 48)

IMG_20190813_161603.jpg

屏幕截图(1).png (366.93 KB, 下载次数: 35)

屏幕截图(1).png
回复

使用道具 举报

地板
ID:492679 发表于 2019-8-13 16:46 | 只看该作者
emmm......我不知道你那个定时器中断是多少时间,而且,,,你按键连最基本的10ms消抖都没有。用51的IO口直接PWM输出的话,确实简单点。你可以检查下占空比是不是不够?建议你在调试的时候直接将PWM输出的占空比比例调大一点,这样下载后观察到的现象更明显,便于调试。
回复

使用道具 举报

5#
ID:515908 发表于 2019-8-13 21:06 | 只看该作者
32写  比较简单
回复

使用道具 举报

6#
ID:599517 发表于 2019-8-13 22:49 来自手机 | 只看该作者
在中断里面加点灯程序看中断工作了吗,在while里面分别加点灯程序看循环正常吗,根据我的经验判断,你这个情况应该飞到“溢出”中断区了
回复

使用道具 举报

7#
ID:542954 发表于 2019-8-14 11:12 | 只看该作者
按键不消抖的后果是你按了一次键,结果程序已经跑了不知道多少遍了,x的值并不是你所想的+1或-1,而是经过了无数次这样子的运算
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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