久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4034|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

寫了一個(gè)pwm控制sg90舵機(jī)轉(zhuǎn)角的程序但是不知道哪里不對,請大佬們幫忙看下

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
還有漢字標(biāo)注的哪里不對請指正一下,
  1. #include<reg52.h>

  2. sbit PWM=P1^0;
  3. int FX;  //方向

  4. int a,b,c; //a周期,b占空比,c低電平

  5. void dingshiqi()
  6. {
  7.         TH1=0xFF;
  8.         TL1=0xFF;
  9.         TMOD|=0x01;
  10.         EA=1;
  11.         TR1=1;
  12.         ET1=1;
  13. }

  14. void main()
  15. {
  16.         dingshiqi();
  17.         while(1)
  18.         {
  19.                 if(a==2000)
  20.                 {
  21.                         a=0;
  22.                 }
  23.                 if (b==1000)
  24.                 {
  25.                         FX=0;       
  26.                 }
  27.                 if(b==0)
  28.                 {
  29.                         FX=1;
  30.                 }
  31.                 if(c>1000)
  32.                 {
  33.                         c=0;
  34.                         if(FX==1)
  35.                         {
  36.                                 b++;
  37.                         }
  38.                         if(FX==0)
  39.                         {
  40.                                 b--;
  41.                         }
  42.                 }
  43.                 if(b<c)
  44.                 {
  45.                         PWM=1;
  46.                 }
  47.                 else
  48.                 {
  49.                         PWM=0;
  50.                 }
  51.         }
  52. }

  53. void zhongduan() interrupt 3
  54. {
  55.         TH1=0xFF;
  56.         TL1=0xFF;
  57.         a++;
  58.         b++;       
  59. }
復(fù)制代碼

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:164602 發(fā)表于 2018-4-20 08:29 | 只看該作者
好像你的程序是一個(gè)固定的PWM啊,這不對嘛。
舵機(jī)是針對不同的PWM轉(zhuǎn)到對應(yīng)的角度,你的程序只有一個(gè)PWM,則轉(zhuǎn)動(dòng)到相應(yīng)位置,就不會(huì)動(dòng)了。
我有個(gè)試驗(yàn)程序,你可以看看,參考一下。#include<reg51.h>

#define GPIO_KEY P1//矩陣鍵盤

sbit DJ=P2^7;//SG90舵機(jī)的數(shù)據(jù)口

unsigned char KeyValue,GT,DT;
bit KeyState;

void KeyDown();
void DJZD (void);
void Delay10ms(unsigned int c)
{
    unsigned char a,b;
    for(c;c>0;c--)
    {
                for(b=44;b>0;b--)
                {
                        for (a=112;a>0;a--)
                        {
                        }
                }
        }
}


void main(void)//主函數(shù)
{
        KeyState=0;
        GT=30;DT=350;DJ=1;
        Delay10ms(1);
        DJ=0;
        while (1)//主循環(huán)
        {
                KeyDown();
                 if(KeyState==1)
                {
                        switch (KeyValue)
                        {
                                case (0):GT=10;DT=390;DJZD ();break;//轉(zhuǎn)動(dòng)到0度
                                case (2):GT=20;DT=380;DJZD ();break;//轉(zhuǎn)動(dòng)到45度
                                case (4):GT=30;DT=370;DJZD ();break;//轉(zhuǎn)動(dòng)到90度
                                case (6):GT=40;DT=360;DJZD ();break;//轉(zhuǎn)動(dòng)到135度
                                case (8):GT=50;DT=350;DJZD ();break;//轉(zhuǎn)動(dòng)到180度
                        }                       
                        KeyState=0;
                }
        }
}
void DJZD (void)
{
        unsigned char i;
        for (i=0;i<75;i++)
        {
                DJ=1;
                Delay50us(GT);
                DJ=0;                  
                Delay50us(DT);
        }
        DJ=0;
}

void KeyDown(void)
{
        unsigned char a=0;
        GPIO_KEY=0x0f;
        if(GPIO_KEY!=0x0f)
        {
                Delay10ms(1);
                if(GPIO_KEY!=0x0f)
                {
                        KeyState=1;
                        switch(GPIO_KEY)
                        {
                                case(0X07):        KeyValue=0;break;
                                case(0X0b):        KeyValue=1;break;
                                case(0X0d): KeyValue=2;break;
                                case(0X0e):        KeyValue=3;break;
                        }
                        GPIO_KEY=0Xf0;
                        switch(GPIO_KEY)
                        {
                                case(0X70):        KeyValue=KeyValue;break;
                                case(0Xb0):        KeyValue=KeyValue+4;break;
                                case(0Xd0): KeyValue=KeyValue+8;break;
                                case(0Xe0):        KeyValue=KeyValue+12;break;
                        }
                        for (a=0;(a<25)&&(GPIO_KEY!=0xf0);a++)
                        {
                                Delay10ms(1);
                        }
                }
        }
}


1.jpg (37.34 KB, 下載次數(shù): 31)

1.jpg
回復(fù)

使用道具 舉報(bào)

板凳
ID:290531 發(fā)表于 2018-4-20 15:01 | 只看該作者
HC6800-ES-V2.0 發(fā)表于 2018-4-20 08:29
好像你的程序是一個(gè)固定的PWM啊,這不對嘛。
舵機(jī)是針對不同的PWM轉(zhuǎn)到對應(yīng)的角度,你的程序只有一個(gè)PWM, ...

我拷了你的程序試了一下好像不行
回復(fù)

使用道具 舉報(bào)

地板
ID:290531 發(fā)表于 2018-4-20 19:22 | 只看該作者
  1. #include<reg52.h>

  2. sbit PWM=P2^0;

  3. int count;

  4. void zhongduankaiguan()
  5. {
  6.         EA=1;
  7.         TR1=1;
  8.         ET1=1;
  9.         TMOD|=0x01;
  10.         TH1=0xfe;
  11.         TL1=0x0c;          
  12. }
  13. void main()
  14. {
  15.    zhongduankaiguan();
  16.    if(count<=5)
  17.         {
  18.                 PWM=1;
  19.         }
  20.         else
  21.         {
  22.                 PWM=0;
  23.         }
  24. }

  25. void dingshiqi() interrupt 3
  26. {
  27.         TH1=0xfe;
  28.         TL1=0x0c;
  29.         TR1=0;
  30.         count++;
  31.         count=count%40;
  32. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

5#
ID:553625 發(fā)表于 2019-7-21 15:35 | 只看該作者
你的PWM信號(hào)是直接定義出來的嗎?
單片機(jī)產(chǎn)生PWM信號(hào)應(yīng)該是需要定時(shí)器中斷產(chǎn)生脈沖信號(hào)的
你這個(gè)思路好像不太對
回復(fù)

使用道具 舉報(bào)

6#
ID:505677 發(fā)表于 2019-7-21 21:50 | 只看該作者
本寶寶也是小白一枚,拿你的程序調(diào)試了
好像不能運(yùn)行  
所以按你的意思給你改了一下

  1. #include<reg52.h>

  2. sbit PWM=P2^0;

  3. int count;


  4. void zhongduankaiguan()
  5. {
  6.         EA=1;
  7.         TR1=1;
  8.         ET1=1;
  9.         TMOD|=0x01;
  10.         TH1=0xfe;
  11.         TL1=0x0c;         
  12. }
  13. void main()
  14. {
  15.    zhongduankaiguan();
  16.    count=1;
  17.    while(1)
  18.    {
  19.                            if(count<=5)
  20.                 {
  21.                         PWM=1;
  22.                 }
  23.                 else
  24.                 {
  25.                         PWM=0;
  26.                 }
  27.         }
  28. }

  29. void dingshiqi() interrupt 3
  30. {
  31.         TR1=0;
  32.                 TH1=0xfe;
  33.         TL1=0x0c;
  34.         TR1=1;
  35.         count++;
  36.                 if(count==40)count=1;
  37. }
復(fù)制代碼

這只能產(chǎn)生0.32ms   2.5ms固定的pwm波形
我最近也打算買個(gè)舵機(jī)玩,我好像記得淘寶買的舵機(jī)脈沖時(shí)基是20ms  這只有2.5ms哦,這能帶的動(dòng)么
仿真波形如下;

屏幕截圖(105).png (653.66 KB, 下載次數(shù): 29)

0.32ms

0.32ms

屏幕截圖(106).png (654.15 KB, 下載次數(shù): 27)

2.5ms

2.5ms
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲丝袜天堂 | 青青草视频网 | 91久久国产综合久久 | 国产亚洲一区二区三区在线观看 | 欧美日韩中文在线观看 | 日韩一区中文字幕 | 国产sm主人调教女m视频 | 国产一区二区三区精品久久久 | 欧美久久久久久久久 | 亚洲成人中文字幕 | 国产精品自拍啪啪 | 91精品国产美女在线观看 | 欧美精品一区二区三区蜜臀 | 亚洲性人人天天夜夜摸 | 国产精品久久久久久妇女6080 | 久久涩涩| 1区2区3区视频 | 日一区二区三区 | av免费网站在线 | 在线免费观看a级片 | 亚洲欧美综合 | 国产精品99久久久久久宅男 | 99re在线视频免费观看 | 亚洲欧美日韩精品久久亚洲区 | 天天搞天天操 | 成人精品区 | 国产ts人妖另类 | 亚洲精品一区在线观看 | 亚洲精品视频二区 | 国产乱码久久久久久一区二区 | 久久成人精品 | 看片wwwwwwwwwww | 四虎影视免费在线 | 亚洲成人蜜桃 | 国产日韩电影 | 欧美国产日韩在线观看成人 | 日韩一区在线播放 | 亚洲精品www. | 在线观看免费av网站 | 蜜桃精品视频在线 | 91观看 |