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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3693|回復: 3
打印 上一主題 下一主題
收起左側

寫了一個單片機輸出PWM波控制電調的程序,但電機無法轉動,請問程序哪里不對呢?

[復制鏈接]
跳轉到指定樓層
樓主
想用單片機驅動電調控制推進器轉動,用的電調不需要設置行程,但需要進行中位啟動電調的頻率是50HZ,那周期就是確定的0.02s即20000us吧,中位啟動是指設置PWM波高電平時間為1500us嗎?








以下為源程序,占空比7.5%高電平時間為1500us,但無法啟動,請問是為什么呢?
#include <stc12c5a.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define uchar unsigned char
#define uint  unsigned int
/*用定時器T0來控制頻率,定時器T1來控制占空比*/
/*T0中斷讓一個IO口輸出高電平,T1讓IO口輸出低電平*/
/*改變T0初值就可以改變頻率,改變T1初值就可以改變占空比*/
/*機器周期為1us,設定頻率為50HZ,則周期為20ms
要定時20ms,設置中斷基準為0.02ms,中斷1000次為一個周期
0.02ms/1us=20,初始值65535-20+1=FFEC*/

sbit PWM=P2^1; //P21輸出PWM波   
uchar time;   //占空比

void main()
{
  TMOD=0x01;//打開定時器0,工作方式1:16位定時器
        TH0=0xff;       //
  TL0=0xec;
        EA=1;//開總中斷
        ET0=1;//開定時器0中斷
        TR0=1;//啟動定時器0
        while(1)
        {
        }
}

void time0() interrupt 1
{
  TR0=0;//定時器關閉
        TH0=0xff;       //
  TL0=0xec;
  TR0=1;//打開定時器
         time++;
         if(time>=1000)
                 time=0;
         if(time<=75)//占空比為7.5%,高電平時間1500us
                 PWM=1;
         else PWM=0;
}

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

使用道具 舉報

沙發
ID:390416 發表于 2021-1-8 14:35 | 只看該作者
很多小白不明白PWM怎么回事。只能說明你們看的教程沒講。我們人人學會單片機教程就講過。其實很簡單的。特分享CPU定時器模擬PWM輸出給你們
#include "STC89.H"                                        //頭文件包含
#include <intrins.h>                                //頭文件包含
typedef unsigned char u8;                        //重新定義數據類型名
typedef unsigned short u16;                        //重新定義數據類型名
typedef unsigned long u32;                        //重新定義數據類型名
sbit PWM_OUT=P2^1;        
u8 idata PWM_Write_Byte[3]=0;

//****************************祁緒電子 2020年5月***
// 定時器0初始化  晶振11059200,12T,輸出50Hz的PWM,占空比0~255
// 定時器初值為:256-(11059200÷12÷50Hz÷256) = 184 = 0xB8
void PWM_Init(void)
{
        TMOD &= 0xF0;                                        //配置定時器工作模式
        TMOD |= 0x02;                                        //配置定時器工作模式 8位自動重裝模式
    TL0 = 0xB8;;                    //定時器初值
    TH0 = 0xB8;                                //定時器重裝初值
    TR0 = 1;                        //啟動定時器0
    ET0=1;                                                         //允許定時器0申請中斷
        EA=1;                                                        //中斷總閘閉合
}
//****************************祁緒電子 2020年5月***
//定時器0的CPU處理函數,位置任意寫都行
void PWM_Display_timer0() interrupt 1
{
        
        static u8 pwm_t=0;                                 //局部變量,不丟失數據
        if(pwm_t<PWM_Write_Byte[0])
        {
                PWM_OUT=1;                                 
        }
        else PWM_OUT=0;
        pwm_t++;
}

//***************************祁緒電子 2020年5月***
// PWM 數模變換數據分配
void PWM_Allot()                                          
{
        static u8 kkk=0;        
        static u8 count=0;
        count++;
        if(count>100)
        {
                count=0;
                kkk++;
                PWM_Write_Byte[0]=kkk;        //kkk為占空比自動增加
                PWM_Write_Byte[1]=10;        
                PWM_Write_Byte[2]=10;
        }
}


void main()                                                        //主函數
{
        PWM_Init();
        while(1)                                                //主函數大循環
        {
                PWM_Allot();        
        }
}
回復

使用道具 舉報

板凳
ID:844772 發表于 2021-1-8 16:22 | 只看該作者
首先是:計時時間太短,你的寫法誤差太大,應使用自動重裝模式,中斷中只有一句:time++;并將判斷放到主程序,它到1000自然是一個周期嘛。如果能提高主頻就更好了。
其次是:電調不是你這么用的啊,電調驅動電機轉動需要兩個步驟:1先給電調最大油門,你會聽到“嗶嗶”;2“嗶嗶”后你再給電調最小油門,會聽到”嗶嗶畢“,然后是一聲較長的”畢“;3這時電調就準備好了,給一個1~2ms范圍內的油門就可以轉動了。你的程序都沒干這些事,轉不了啊。
回復

使用道具 舉報

地板
ID:796670 發表于 2021-1-8 16:48 | 只看該作者
glinfei 發表于 2021-1-8 16:22
首先是:計時時間太短,你的寫法誤差太大,應使用自動重裝模式,中斷中只有一句:time++;并將判斷放到主程 ...

這個最大最小油門就是最大最小行程吧?老板給的說明說不需要,只需要設置中間啟動
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品国产成人 | 久久中文一区二区 | 国产黄色小视频在线观看 | 狠狠干美女 | 亚洲国产精品久久久久 | 狠狠亚洲 | 久久99精品久久久久蜜桃tv | 毛片一级电影 | 国产高清在线观看 | 久色网 | 国产传媒| 欧美成人精品一区二区三区 | 欧美亚洲另类在线 | 欧美精品久久久 | 久久久久亚洲视频 | 国产中文原创 | 九九色综合 | 久草热在线 | 国产精品色婷婷久久58 | 日韩在线精品 | 亚洲综合小视频 | 亚洲精品久久久一区二区三区 | 国产人成精品一区二区三 | 久久亚洲春色中文字幕久久久 | 拍真实国产伦偷精品 | 中文字幕视频在线看 | 欧美日韩综合一区 | 欧美日韩午夜精品 | 青青激情网 | 激情视频中文字幕 | 狠狠婷婷综合久久久久久妖精 | 精品在线免费观看视频 | 国产精品视频一 | 成人乱人乱一区二区三区软件 | 成人欧美一区二区三区1314 | 91麻豆产精品久久久久久夏晴子 | 成年网站在线观看 | 综合久久久 | 欧美日韩国产三级 | 亚洲人a | 免费在线观看成人 |