找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机驱动舵机源程序

[复制链接]
跳转到指定楼层
楼主
ID:297750 发表于 2018-3-27 14:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include <reg52.h>  

  2. sbit IN1 = P1^0;   
  3. sbit IN2 = P1^1;  
  4. sbit ENA = P1^2;  
  5. sbit IN3 = P1^3;  
  6. sbit IN4 = P1^4;  
  7. sbit ENB = P1^5;  

  8. sbit left1 = P0^0;  
  9. sbit left2 = P0^1;  
  10. sbit right1 = P0^2;  
  11. sbit right2 = P0^3;  

  12. unsigned char zkb1 = 0;  
  13. unsigned char zkb2 = 0;  
  14. unsigned char t = 0;  


  15. void init()  
  16. {  
  17.     EA = 1;  
  18.     TMOD |= 0x01;  
  19.     TH0 =(65536 - 100) / 256;  
  20.     TL0 = (65536 - 100)% 256;     
  21.     ET0 = 1;  
  22.     TR0 = 1;  
  23. }  

  24. void timer0() interrupt 1  
  25. {  

  26.     TH0 = (65536 - 100) / 256;  
  27.     TL0 = (65536 - 100) % 256;  

  28.     if(t < zkb1)  
  29.     {  
  30. //      if(t % 2 == 0)  
  31. //      {  
  32. //          ENA = 1;  
  33. //      }  
  34. //      else   
  35. //      {  
  36. //          ENA = 0;  
  37. //      }  
  38.         ENA = 1;  
  39.     }  
  40.     else   
  41.     {  
  42.         ENA = 0;  
  43.     }  
  44.     if(t < zkb2)  
  45.     {  
  46. //      if(t%2 == 0)  
  47. //      {  
  48. //          ENB = 1;  
  49. //      }  
  50. //      else   
  51. //      {  
  52. //          ENB = 0;  
  53. //      }  
  54.         ENB =1;  
  55.     }  
  56.     else   
  57.     {  
  58.         ENB = 0;  
  59.     }  
  60.     ++t;  
  61.     if(t >= 50)  
  62.     {  
  63.         t = 0;  
  64.     }  



  65. }  

  66. void turn_left1()  
  67. {  
  68.     zkb1 = 13;  
  69.     zkb2 = 0;  

  70. }  

  71. void turn_left2()  
  72. {  

  73.     zkb1 = 13;  
  74.     zkb2 = 0;  
  75. }  

  76. void turn_right1()  
  77. {  
  78.     zkb1 = 0;  
  79.     zkb2 = 13;  
  80. }  

  81. void turn_right2()  
  82. {  
  83.     zkb1 = 0;  
  84.     zkb2 = 13;  
  85. }  

  86. void qianjin()  
  87. {  
  88.     zkb1 = 8;  
  89.     zkb2 = 8;  
  90. }  
  91. void xunji()  
  92. {  
  93.     unsigned char flag;  
  94.     if((right2 == 0)&&(right1 == 0)&&(left1 == 0)&&(left2 == 0))  
  95.     {  
  96.         flag = 0;  
  97.     }  
  98.     if((right2 == 0)&&(right1 ==1)&&(left1 == 0)&&(left2 == 0))  
  99.     {  
  100.         flag = 1;  
  101.     }  
  102.     if((right2 == 0)&&(right1 == 0)&&(left1 == 1)&&(left2 == 0))  
  103.     {  
  104.         flag = 2;  
  105.     }  
  106.     if((right2 == 0)&&(right1 == 0)&&(left1 == 0)&&(left2 == 1))  
  107.     {  
  108.         flag = 3;  
  109.     }  
  110.     if((right2 == 1)&&(right1 == 0)&&(left1 == 0)&&(left2 == 0))  
  111.     {  
  112.         flag = 4;  
  113.     }  
  114.     switch(flag)  
  115.     {  
  116.         case 0:qianjin();break;  

  117.         case 1:turn_right1();break;  

  118.         case 2:turn_left1();break;  

  119.         case 3:turn_left2();break;  

  120.         case 4:turn_right2();break;  

  121.         default:qianjin();break;  
  122.     }  
  123. }  

  124. void main()  
  125. {  
  126.     init();  
  127. //  zkb1 = 40;  
  128. //  zkb2 = 30;  
  129.     IN1 = 0;  
  130.     IN2 = 1;  
  131.     IN3 = 0;  
  132.     IN4 = 1;  
  133.     while(1)  
  134.     {  

  135.             xunji();  

  136.     }  
  137. }  

复制代码


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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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