3443浏览
查看: 3443|回复: 5

(原创)STC12C5A60S2 51单片机舵机控制器 不用PWM!

[复制链接]
本帖最后由 一只小学生 于 2021-6-14 14:13 编辑

舵机一个周期是20ms
一个周期中有0.5~2.5ms高电平
(原创)STC12C5A60S2 51单片机舵机控制器 不用PWM!图1
所以我们可以控制高电平的时间来控制舵机

程序用keil编译
(原创)STC12C5A60S2 51单片机舵机控制器 不用PWM!图2
hex文件在“ABC”里 用STC-isp烧写进51单片机
  1. #include <STC12C5A60S2.h>
  2. /*******************************************************************************************************************************************************
  3. 编写人:一只小学生
  4. 舵机控制器:舵机接P0.0    按键1接P2.0     按键2接P2.1     12M晶振
  5. *******************************************************************************************************************************************************/
  6. sbit dj=P0^0;
  7. void Dela (unsigned int a){                  //0.1ms延迟函数
  8.         unsigned int i;
  9.         while( --a != 0){
  10.                 for(i = 0; i < 60; i++);
  11.         }
  12. }
  13. void Delay (unsigned int ad){             //1ms延迟函数
  14.         unsigned int i;
  15.         while( --ad != 0){
  16.                 for(i = 0; i < 600; i++);
  17.         }
  18. }
  19. void DJ(unsigned int q){               //舵机函数(需配合0.1ms延迟函数)
  20.       dj = 1;
  21.       Dela (q);
  22.           dj = 0;
  23.           Dela (200-q);
  24.          
  25. }
  26. void main (void){
  27.   unsigned int a = 15;
  28.   P2M0 = 0xff;
  29.   P2M1 = 0xff;
  30.   while(1){
  31.     DJ (a);
  32.     if (P2 ^ 1 == 1){
  33.       Delay (20);
  34.       if (P2 ^ 1 == 1){
  35.                   if (a !=5){
  36.                     if(a != 25){
  37.             a--;
  38.                          }
  39.                   }
  40.       }
  41.     }
  42.     if (P2 ^ 0 == 1){
  43.       Delay (20);
  44.       if (P2 ^ 0 == 1){
  45.         if (a != 5){
  46.                     if(a != 25){
  47.             a++;
  48.                          }
  49.                   }
  50.       }
  51.     }
  52.     if (a == 5){
  53.            a++;
  54.          }
  55.          if (a == 25){
  56.            a--;
  57.          }
  58.   }
  59. }
复制代码
下载附件51单片机舵机.zip

一只小学生  中级技师
 楼主|

发表于 2021-6-14 13:51:41

呀!板块放错了
回复

使用道具 举报

一只小学生  中级技师
 楼主|

发表于 2021-6-14 14:19:50

下周末再来(周三周四升学考)
回复

使用道具 举报

ZJHER  学徒

发表于 2021-6-14 19:54:01

您好我想问一下STC12C5A60S2程序烧录不了咋办
我是用USB-TTL的一个下载器连接单片机
但用stc-isp下载程序的时候一直在找单片机
回复

使用道具 举报

一只小学生  中级技师
 楼主|

发表于 2021-6-14 20:02:47

ZJHER 发表于 2021-6-14 19:54
您好我想问一下STC12C5A60S2程序烧录不了咋办
我是用USB-TTL的一个下载器连接单片机
但用stc-isp下载程序的 ...

1.tx   rx插的对不对
2.单片机是不是上回下载的时候没有使用内部晶振   如果是那么接一个外部晶振
3.把P1.0P1.1接地
回复

使用道具 举报

一只小学生  中级技师
 楼主|

发表于 2021-6-14 20:14:09

单片机tx接USB-TTL的rx
单片机rx接USB-TTL的tx

回复

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail