找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于3路舵机居中左转右转,要正确选择单片机型号和晶振型号

[复制链接]
跳转到指定楼层
楼主
ID:79544 发表于 2015-7-25 20:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. /****************************************************
  2. 功能:正确的3路舵机控制左,右,归中,程序
  3.         单片机:STC89C52
  4.         晶振:11.0592M
  5.         作者:苏义江
  6.         时间:2014-3-5
  7.         可以通过按键和传感器控制
  8. *****************************************************/
  9. //#include<12c5a.h>
  10. #include<reg52.h>
  11. //#define uchar unsigned char
  12. //#define uint unsigned int
  13. //#define moto_pwm  P1_4  //PWM输出脚控制舵机

  14. sbit moto_pwm=P1^0;//PWM输出脚控制舵机
  15. sbit moto_pwm1=P1^1;//PWM输出脚控制舵机
  16. sbit moto_pwm2=P1^2;//PWM输出脚控制舵机

  17. sbit xiaocheting=P1^3;//按键控制
  18. sbit xiaochehouti=P1^4;
  19. sbit xiaocheqianjin=P1^5;

  20. uchar pwm_lefr=0;//定义 定时器自加1变量
  21. uchar pwm_lefr1=0;//定义 定时器自加1变量
  22. uchar pwm_lefr2=0;//定义 定时器自加1变量
  23. uchar duojiguizhong=12;//舵机归中1.5ms
  24. uchar duojiguizhong1=12;//舵机归中1.5ms
  25. uchar duojiguizhong2=12;//舵机归中1.5ms


  26. void pwmmaic()//产生PWM
  27. {
  28.         if(pwm_lefr<=duojiguizhong)
  29.        
  30.                 moto_pwm=1;
  31.                 else
  32.                 moto_pwm=0;
  33.                 if(pwm_lefr>=200)
  34.                 pwm_lefr=0;       
  35. if(pwm_lefr1<=duojiguizhong1)
  36.        
  37.                 moto_pwm1=1;
  38.                 else
  39.                 moto_pwm1=0;
  40.                 if(pwm_lefr1>=200)
  41.                 pwm_lefr1=0;       
  42. if(pwm_lefr2<=duojiguizhong2)
  43.        
  44.                 moto_pwm2=1;
  45.                 else
  46.                 moto_pwm2=0;
  47.                 if(pwm_lefr2>=200)
  48.                 pwm_lefr2=0;       
  49. }
  50. void time1() interrupt 3
  51. {
  52. //        TH1=0XFf;//100us的赋值11.0592M
  53. //        TL1=0XAE;
  54.         TH1=(65536-60)/256;//100us的赋值
  55.         TL1=(65536-60)%256;
  56.         pwm_lefr++;
  57.         pwm_lefr1++;
  58.         pwm_lefr2++;
  59.         pwmmaic();
  60. }
  61. void inttime()
  62. {
  63. //        TMOD=0X10;
  64.         TMOD=0X11;
  65.         TH1=(65536-60)/256;//100us的赋值12M
  66.         TL1=(65536-60)%256;
  67. //        TH1=0XFf;//100us的赋值11.0592M
  68. //        TL1=0XAE;
  69.         ET1=1;
  70.         TR1=1;
  71.         EA=1;
  72. }
  73. void delay(uint z)
  74. {
  75.         uint x,y;
  76.         for(x=z;x>0;x--)
  77.         for(y=240;y>0;y--);
  78. }
  79. void main()
  80. {
  81.         duojiguizhong=12;
  82.         duojiguizhong1=12;
  83.         duojiguizhong2=12;
  84.         inttime();
  85.         while(1)
  86.         {
  87.                 if(xiaocheting==0)       
  88.                 {
  89.                         delay(10);
  90.                         if(xiaocheting==0)       
  91.                         {
  92.                                 duojiguizhong=4;
  93.                                 delay(2000);

  94.                                 duojiguizhong1=6;
  95.                                 delay(1000);

  96.                                 duojiguizhong=14;
  97.                                 delay(2000);

  98.                                 duojiguizhong1=14;
  99.                                 delay(2000);

  100.                                 while(xiaocheting==0);
  101.                                 duojiguizhong=12;//归中
  102.                                 delay(2000);
  103.                          }
  104.                          
  105.                 }
  106.        

  107.         }
  108. }
复制代码


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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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