找回密码
 立即注册

QQ登录

只需一步,快速开始

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

AT89S52单片机8按键8路舵机控制器源程序

[复制链接]
跳转到指定楼层
楼主
ID:41770 发表于 2018-1-16 16:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

单片机源程序如下:
  1. /*舵机控制程序

  2. 8路舵机控制器  

  3. 芯片:AT89S52

  4. 晶振:12MHz

  5. ===================================================================================*/

  6. #include<config.h>

  7. #define uint8  unsigned char

  8. #define uint16 unsigned int



  9. sbit key1=P3^2;

  10. sbit key2=P3^3;

  11. //PWM的输出端口

  12. sbit PWM_OUT0=P5^4;    //key1,key2

  13. sbit PWM_OUT1=P5^5;

  14. sbit PWM_OUT2=P0^2;

  15. sbit PWM_OUT3=P0^3;

  16. sbit PWM_OUT4=P0^4;

  17. sbit PWM_OUT5=P0^5;

  18. sbit PWM_OUT6=P0^6;

  19. sbit PWM_OUT7=P0^7;



  20. //PWM的数据值

  21. uint16 PWM_Value[8]={1500,1000,1500,1000,1750,2000,2500,2000}; uint8 order1;  //定时器扫描序列

  22. /*===================================================================================

  23.     定时器T0的中断服务程序

  24.     一个循环20MS  = 8*2.5ms

  25. =====================================================================================*/

  26. void timer0(void) interrupt 1 using 1

  27. {

  28. switch(order1)

  29. {

  30. case 1:  PWM_OUT0=1;

  31.           TH0=-PWM_Value[0]/256;

  32.           TL0=-PWM_Value[0]%256;

  33.           break;

  34. case 2:  PWM_OUT0=0;        

  35.           TH0=-(2700-PWM_Value[0])/256;

  36.           TL0=-(2700-PWM_Value[0])%256;

  37.           break;

  38. case 3:  PWM_OUT1=1;

  39.           TH0=-PWM_Value[1]/256;

  40.           TL0=-PWM_Value[1]%256;

  41.           break;

  42. case 4:  PWM_OUT1=0;

  43.           TH0=-(2700-PWM_Value[1])/256;

  44.           TL0=-(2700-PWM_Value[1])%256;

  45.           break;

  46. case 5:  PWM_OUT2=1;

  47.           TH0=-PWM_Value[2]/256;

  48.           TL0=-PWM_Value[2]%256;

  49.           break;

  50. case 6:  PWM_OUT2=0 ;

  51.           TH0=-(2700-PWM_Value[2])/256;

  52.           TL0=-(2700-PWM_Value[2])%256;

  53.           break;

  54. case 7:  PWM_OUT3=1;

  55.           TH0=-PWM_Value[3]/256;

  56.           TL0=-PWM_Value[3]%256;

  57.           break;

  58. case 8:  PWM_OUT3=0;

  59.           TH0=-(2700-PWM_Value[3])/256;

  60.           TL0=-(2700-PWM_Value[3])%256;

  61.           break;

  62. case 9:  PWM_OUT4=1;

  63.           TH0=-PWM_Value[4]/256;

  64.           TL0=-PWM_Value[4]%256;  
  65.                    break;

  66. case 10: PWM_OUT4=0;

  67.           TH0=-(2700-PWM_Value[4])/256;

  68.           TL0=-(2700-PWM_Value[4])%256;

  69.           break;

  70. case 11: PWM_OUT5=1;

  71.           TH0=-PWM_Value[5]/256;

  72.           TL0=-PWM_Value[5]%256;

  73.           break;

  74. case 12: PWM_OUT5=0;

  75.           TH0=-(2700-PWM_Value[5])/256;

  76.           TL0=-(2700-PWM_Value[5])%256;

  77.           break;

  78. case 13: PWM_OUT6=1;

  79.           TH0=-PWM_Value[6]/256;

  80.           TL0=-PWM_Value[6]%256;

  81.           break;

  82. case 14: PWM_OUT6=0;

  83.           TH0=-(2700-PWM_Value[6])/256;

  84.           TL0=-(2700-PWM_Value[6])%256;

  85.           break;

  86. case 15: PWM_OUT7=1;

  87.           TH0=-PWM_Value[7]/256;

  88.           TL0=-PWM_Value[7]%256;

  89.           break;

  90. case 16: PWM_OUT7=0;

  91.           order1=0;

  92.           TH0=-(2700-PWM_Value[7])/256;

  93.           TL0=-(2700-PWM_Value[7])%256;

  94.           order1=0;

  95.           break;

  96.           default : order1=0;

  97.     }

  98.     order1++;

  99. }

  100. /*===================================================================================

  101. 初始化中断   

  102. =====================================================================================*/

  103. void InitPWM(void)

  104. {

  105.    order1=1;

  106.    TMOD |=0x11;

  107.    TH0=-1500/256;    TL0=-1500%256;

  108.    EA=1;

  109.    EX0=0;

  110.    ET0=1; TR0=1;PT0=1;PX0=0;

  111. }



  112. void delay(void)

  113. {

  114.   uint16 i=100;

  115.   while(i--);

  116. }



  117. void main(void)

  118. {

  119. ……………………

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

所有资料51hei提供下载:
ok_8按键8路舵机控制器.rar (63.79 KB, 下载次数: 34)


评分

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

查看全部评分

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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