找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3172|回复: 3
收起左侧

按键控制舵机的单片机源程序

[复制链接]
ID:252498 发表于 2017-12-20 01:39 | 显示全部楼层 |阅读模式
代码在压缩文件
仿真只需按照代码中的接口连接舵机

单片机源程序如下:
  1.             
  2. #include <reg52.h>             //头文件
  3. #define uchar unsigned char           //宏定义无符号字符型
  4. #define uint  unsigned  int           //宏定义无符号整型

  5. uint b;                //中断值
  6. uint N=0;                //占空比计数值
  7. uint X=8;                //初始角度值  (取值范2~15)


  8. uchar key_up;
  9. uchar key_down;
  10. /*************************************************************************/
  11. sbit P2_2=P2^2;//角度加
  12. sbit P2_3=P2^3;//角度减
  13. sbit PWM=P1^0;//PWM输出          (舵机控制端)
  14. /*************************************************************************/
  15. void get_key(void)//按/韬?

  16. {
  17. while(P2_2==0)//按键加计数标志
  18. {key_up=1;
  19. }
  20. while(P2_3==0)//按键减计数标志
  21. {key_down=1;
  22. }
  23. }
  24. /*************************************************************************/
  25. void timer0( ) interrupt 1 //定时器0工作方式1
  26. {
  27. TH0=0xff;          //重装计数初值
  28. TL0=0x38;          //重装计数初值
  29. b++;
  30. get_key();
  31. if (key_up==1)
  32.        {
  33.            if(X!=15)//判断是否计数到9999
  34.               {
  35.                X=X+1;//加一
  36.                key_up=0;
  37.                            }
  38.         }
  39. if (key_down==1)
  40.        {
  41.             if(X!=2)//判断是否计数到0
  42.               {
  43.                    X=X-1;//减一
  44.                key_down=0;
  45.                }
  46.         }
  47. }
  48. /*************************************************************************/
  49. void main()
  50. {
  51. TMOD=0X01;          //定时器中断0
  52. TH0=0xff;          //重装计数初值
  53. TL0=0x38;          //重装计数初值
  54. EA=1;                                  //开CPU中断
  55. ET0=1;                                  //开T/C0中断
  56. TR0=1;
  57. while(1)                           //无限循环
  58.         {
  59. PWM=1;                   //输出PWM正
  60. while(1)
  61. {
  62. b=0;
  63. ……………………

  64. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
keil.rar (24.38 KB, 下载次数: 35)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:247545 发表于 2017-12-20 03:40 来自手机 | 显示全部楼层
只有上下舵,计数方式,难道芯片是51,不是52吗?可你的初始启动用的52芯片应该是带了计时器的,用计数方式并无法使其自动化。还有电路图啦!大哥,你只给个运行脚本,并无法反映出来什么啊!起码拍一张哪怕是万能电路板做的控制器照片啊!鬼晓得引脚的排序方式。
回复

使用道具 举报

ID:247545 发表于 2017-12-20 03:49 来自手机 | 显示全部楼层
位引脚p2-2==p2.2你怎么运行这样的位p2^2==t1,不好吗?表达式t1==0,难道就不能计数?还要添
回复

使用道具 举报

ID:247545 发表于 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,这样角度的舵你准备装哪里,装船上吗?那么大角度的舵船早就翻了。你能给看下实体运行的演示视频吗?还有电路图,以及实体模型运行演示。这里面还少了一大堆感应元器件,比如舵的水平运动感应水的温度,深度,以及活水
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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