找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机舵机驱动程序

[复制链接]
跳转到指定楼层
楼主
ID:334683 发表于 2018-5-21 10:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
51单片机舵机驱动。测试可用

单片机源程序如下:
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. sbit pwm=P1^1;     //pwm信号输出

  5. sbit K1=P1^3;                //模式一按键
  6. sbit K2=P1^4;                //模式二按键
  7. sbit K3=P1^5;                //模式三按键
  8. sbit K4=P1^6;                //模式四按键

  9. sbit LEDx1=P2^0;
  10. sbit LEDx2=P2^1;
  11. sbit LEDx3=P2^2;
  12. sbit LEDx4=P2^3;
  13. sbit LEDx5=P2^4;
  14. sbit LEDx6=P2^5;
  15. sbit LEDx7=P2^6;
  16. sbit LEDx8=P2^7;
  17. sbit LEDx9=P3^1;
  18. sbit LEDx10=P3^2;
  19. sbit LEDx11=P3^3;
  20. sbit LEDx12=P3^4;
  21. sbit LEDx13=P3^5;
  22. sbit LEDx14=P3^6;
  23. sbit LEDx15=P3^7;

  24. uchar count=0;         //次数标识
  25. uchar jd=120;                   //角度标识

  26. /*=========
  27. ms延时函数                       
  28. ===========*/
  29. void delay(uint x)
  30. {
  31.     uchar i,j;
  32.         for(i=x;i>0;i--)
  33.         for(j=115;j>0;j--);
  34. }

  35. /*==============
  36. 定时器初始化函数
  37. ================*/
  38. void Timer0_init()
  39. {
  40.    TMOD |= 0X01;   //定时器工作方式1
  41.    TH0=(65536-10)/256;           //装初值
  42.    TL0=(65536-10)%256;
  43.    EA=1;           //开总中断
  44.    ET0=1;          //开定时器0中断
  45.    TR0=1;                   //启动定时器                                                                  
  46. }                                                                                                                          

  47. /*======
  48. 中断函数
  49. ========*/
  50. void Timer0() interrupt 1
  51. {
  52.               TH0=(65536-10)/256;              //初值       
  53.        TL0=(65536-10)%256;
  54.            if(count<jd)                  //判断次数是否小于角度标识
  55.            pwm=1;                          //是,pwm输出高电平                                               
  56.            else
  57.            pwm=0;                          //否,pwm输出低电平
  58.            count++;                  //次数加1
  59. }

  60. /*===========                                                         
  61. 红外扫描函数                                                         
  62. =============*/                                  
  63. void LEDscan()
  64. {
  65. //======== X轴为1 ============
  66.          if(LEDx1==0)
  67.      {
  68.             jd=200;
  69.                 delay(10);
  70.                 //jd=120;
  71.                 //delay(5);
  72.          }
  73. //======== X轴为2 ============
  74.             if(LEDx2==0)
  75.      {
  76.             jd=189;
  77.                 delay(5);
  78.          }
  79. //======== X轴为3 ============
  80.             if(LEDx3==0)
  81.      {
  82.             jd=177;
  83.                 delay(5);
  84.           }
  85. //======== X轴为4 ============
  86.          if(LEDx4==0)
  87.      {
  88.             jd=166;       
  89.                 delay(5);
  90.          }
  91. //======== X轴为5 ============
  92.          if(LEDx5==0)
  93.      {
  94.                 jd=154;       
  95.                 delay(5);       
  96.          }
  97. //======== X轴为6 ============
  98.          if(LEDx6==0)
  99.      {
  100.             jd=143;
  101.                 delay(5);
  102.          }
  103. //======== X轴为7 ============
  104.          if(LEDx7==0)
  105.      {
  106.             jd=131;
  107.                 delay(5);
  108.          }
  109. //======== X轴为8 ============
  110.      if(LEDx8==0)
  111.      {
  112.             jd=120;
  113.                 delay(5);
  114.          }
  115. //======== X轴为9 ============
  116.          if(LEDx9==0)
  117.      {               
  118.             jd=110;
  119.                 delay(5);
  120.          }
  121. //======== X轴为10 ============
  122.          if(LEDx10==0)
  123.      {
  124.                 jd=100;
  125.                 delay(5);
  126.          }
  127. //======== X轴为11 ============
  128.          if(LEDx11==0)
  129.      {
  130.             jd=90;
  131.                 delay(5);
  132.          }
  133. //======== X轴为12 ============
  134.          if(LEDx12==0)
  135.      {
  136.             jd=80;
  137.                 delay(5);
  138.          }
  139. //======== X轴为13 ============
  140.          if(LEDx13==0)
  141.      {
  142.             jd=70;
  143.                 delay(1);
  144.          }
  145. //======== X轴为14 ============
  146.          if(LEDx14==0)
  147.      {
  148.             jd=60;
  149.                 delay(1);
  150.          }
  151. //======== X轴为15 ============
  152.          if(LEDx15==0)
  153.      {
  154.             jd=50;
  155.                 delay(1);
  156.          }
  157.   }                 
  158. /*===========                                                         
  159. 按键扫描函数                                                         
  160. =============*/
  161. void KEYscan()
  162. {
  163.      if(K1==0)
  164.          {
  165.             delay(10);
  166.                 LEDscan();
  167.             delay(10);
  168.                 jd=60;
  169.                 delay(5);
  170.                 if(LEDx1==0)
  171.                 {
  172.                   jd=50;
  173.                   delay(5);
  174.                 }
  175.                 if(LEDx2==0)
  176.                 {
  177.                   jd=70;
  178.                   delay(5);
  179.                 }
  180.                 if(LEDx3==0)
  181.                 {
  182.                   jd=120;
  183.                   delay(5);
  184.                 }
  185.                 if(LEDx4==0)
  186.                 {
  187.                   jd=100;
  188.                   delay(5);
  189.                 }
  190.                 if(LEDx5==0)
  191.                 {
  192.                   jd=90;
  193.                   delay(5);
  194.                 }
  195.                 if(LEDx6==0)
  196.                 {
  197.                   jd=80;
  198.                   delay(5);
  199.                 }
  200.                 if(LEDx7==0)
  201.                 {
  202.                   jd=70;
  203.                   delay(5);
  204.                 }
  205.                 while(LEDx3==0 && LEDx2==1 && LEDx4==1);
  206.                 delay(1000);
  207.          }
  208.      if(K2==0)
  209.          {
  210.                 jd=200;
  211.                 LEDscan();
  212.          }
  213.          if(K3==0)
  214.          {
  215.             jd=200;
  216.                 delay(1);
  217.         if(LEDx2==0)
  218.                 {
  219.                    jd=165;       
  220.                    delay(5);
  221.                 }
  222.                 if(LEDx3==0)
  223.                 {
  224.                    jd=154;       
  225.                    delay(5);
  226.                 }
  227.                 if(LEDx4==0)
  228.                 {
  229.                    jd=143;       
  230.                    delay(5);
  231.                 }
  232.                 if(LEDx5==0)
  233.                 {
  234.                    jd=135;       
  235.                    delay(5);
  236.                 }
  237.                 if(LEDx6==0)
  238.                 {
  239.                    jd=110;       
  240.                    delay(5);
  241.                 }
  242.                 if(LEDx7==0)
  243.                 {
  244.                    jd=131;       
  245.                    delay(5);
  246.                 }
  247.                 if(LEDx8==0)
  248.                 {
  249.                    jd=120;       
  250.                    delay(5);
  251.                 }
  252.                 if(LEDx9==0)
  253.                 {
  254.                    jd=112;       
  255.                    delay(5);
  256.                 }
  257.                 if(LEDx10==0)
  258.                 {
  259.                    jd=103;       
  260.                    delay(5);
  261.                 }
  262.                 if(LEDx11==0)
  263.                 {
  264.                    jd=95;       
  265.                    delay(5);
  266.                 }
  267.                 if(LEDx12==0)
  268.                 {
  269.                    jd=85;       
  270.                    delay(5);
  271.                 }
  272.                 while(LEDx8==0 && LEDx7==1 && LEDx9==1);
  273.                 delay(3000);
  274.                  LEDscan();
  275.            }
  276.            if(K4==0)
  277.                 {
  278.                    jd=200;
  279.                    delay(5);
  280.                    LEDscan();
  281.                    delay(100);
  282.                    jd=200;
  283.                    delay(5);
  284.                    if(LEDx9==0)
  285.                    {
  286.                        jd=80;
  287.                            delay(5);
  288.                    }
  289.                    if(LEDx10==0)
  290.                    {
  291.                       jd=110;
  292.                           delay(5);
  293.                    }
  294.                   
  295.                    if(LEDx11==0)
  296.                    {
  297.                       jd=133;
  298.                           delay(5);
  299.                    }
  300.                    if(LEDx12==0)
  301.                    {
  302.                       jd=130;
  303.                           delay(5);
  304.                    }
  305.                    if(LEDx13==0)
  306.                    {
  307.                       jd=120;
  308.                           delay(5);
  309.                    }
  310.                    if(LEDx14==0)
  311.                    {
  312.                       jd=100;
  313.                           delay(5);
  314.                    }
  315.                    if(LEDx15==0)
  316.                    {
  317.                       jd=80;
  318.                           delay(5);
  319.                    }
  320.                    while(LEDx13==0&& LEDx14==1 && LEDx12==1);
  321.                    delay(1000);
  322.                 }
  323. }          
  324. /*=====
  325. 主函数
  326. =======*/         
  327. void main()
  328. {  
  329.    Timer0_init();
  330.    while(1)
  331.    {  
  332.           LEDscan();
  333.           KEYscan();
  334.    }
  335. }  
复制代码

所有资料51hei提供下载:
舵机1.zip (32.87 KB, 下载次数: 23)


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

使用道具 举报

沙发
ID:335855 发表于 2018-5-22 18:33 | 只看该作者
请问这个舵机控制电路是啥啊
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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