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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

沒有PWM效果?用STC官方的示范程序,用的stc15W204S單片機

[復制鏈接]
跳轉到指定樓層
樓主
ID:590194 發表于 2022-5-7 17:21 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
__REG52_H__中也添加了
sfr P1M0        =   0x92;   //0000,0000 端口1模式寄存器0
sfr P1M1        =   0x91;   //0000,0000 端口1模式寄存器1         

可是測試的時候P1.4并沒有PWM效果.接的是LED燈用的NMOS驅動

單片機源程序如下:
/*------------------------------------------------------------------*/
/* --- STC MCU International Limited -------------------------------*/
/* --- STC 1T Series MCU RC Demo -----------------------------------*/
/* If you want to use the program or the program referenced in the  */
/* article, please specify in which data and procedures from STC    */
/*------------------------------------------------------------------*/

#include    <reg52.h>
/*************  功能說明    **************

本程序演示使用定時器做軟件PWM。

定時器0做16位自動重裝,中斷,從T0CLKO高速輸出PWM。

本例程是使用STC15F/L系列MCU的定時器T0做模擬PWM的例程。

PWM可以是任意的量程。但是由于軟件重裝需要一點時間,所以PWM占空比最小為32T/周期,最大為(周期-32T)/周期, T為時鐘周期。

PWM頻率為周期的倒數。假如周期為6000, 使用24MHZ的主頻,則PWM頻率為4000HZ。

******************************************/

#define     MAIN_Fosc       24000000UL      //定義主時鐘

#define     PWM_DUTY        6000            //定義PWM的周期,數值為時鐘周期數,假如使用24.576MHZ的主頻,則PWM頻率為6000HZ。

#define     PWM_HIGH_MIN    32              //限制PWM輸出的最小占空比。用戶請勿修改。
#define     PWM_HIGH_MAX    (PWM_DUTY-PWM_HIGH_MIN) //限制PWM輸出的最大占空比。用戶請勿修改。

typedef     unsigned char   u8;
typedef     unsigned int    u16;
typedef     unsigned long   u32;

sfr P3M1  = 0xB1;   //P3M1.n,P3M0.n     =00--->Standard,    01--->push-pull
sfr P3M0  = 0xB2;   //                  =10--->pure input,  11--->open drain
sfr AUXR  = 0x8E;
sfr INT_CLKO = 0x8F;

//sbit    P_PWM = P3^5;       //定義PWM輸出引腳。
sbit  P_PWM = P1^4;       //定義PWM輸出引腳。STC15W204S

u16     pwm;                //定義PWM輸出高電平的時間的變量。用戶操作PWM的變量。

u16     PWM_high,PWM_low;   //中間變量,用戶請勿修改。

void    delay_ms(unsigned char ms);
void    LoadPWM(u16 i);


/******************** 主函數**************************/
void main(void)
{
    P_PWM = 0;
//    P3M1 &= ~(1 << 5);  //P3.5 設置為推挽輸出
//    P3M0 |=  (1 << 5);

  P1M1 &= ~(1 << 4);  //P1.4 設置為推挽輸出   STC15W204S
  P1M0 |=  (1 << 4);

    TR0 = 0;        //停止計數
    ET0 = 1;        //允許中斷
    PT0 = 1;        //高優先級中斷
    TMOD &= ~0x03;  //工作模式,0: 16位自動重裝
    AUXR |=  0x80;  //1T
    TMOD &= ~0x04;  //定時
    INT_CLKO |=  0x01;  //輸出時鐘

    TH0 = 0;
    TL0 = 0;
    TR0 = 1;    //開始運行

    EA = 1;

    pwm = PWM_DUTY / 10;    //給PWM一個初值,這里為10%占空比
    LoadPWM(pwm);           //計算PWM重裝值


    while (1)
    {
        while(pwm < (PWM_HIGH_MAX-8))
        {
            pwm += 8;       //PWM逐漸加到最大
            LoadPWM(pwm);
            delay_ms(8);
        }
        while(pwm > (PWM_HIGH_MIN+8))
        {
            pwm -= 8;   //PWM逐漸減到最小
            LoadPWM(pwm);
            delay_ms(8);
        }
    }
}


//========================================================================
// 函數: void  delay_ms(unsigned char ms)
// 描述: 延時函數。
// 參數: ms,要延時的ms數, 這里只支持1~255ms. 自動適應主時鐘.
// 返回: none.
// 版本: VER1.0
// 日期: 2013-4-1
// 備注:
//========================================================================
void  delay_ms(unsigned char ms)
{
     unsigned int i;
     do{
          i = MAIN_Fosc / 13000;
          while(--i)    ;
     }while(--ms);
}

/**************** 計算PWM重裝值函數 *******************/
void    LoadPWM(u16 i)
{
    u16 j;

    if(i > PWM_HIGH_MAX)        i = PWM_HIGH_MAX;   //如果寫入大于最大占空比數據,則強制為最大占空比。
    if(i < PWM_HIGH_MIN)        i = PWM_HIGH_MIN;   //如果寫入小于最小占空比數據,則強制為最小占空比。
    j = 65536UL - PWM_DUTY + i; //計算PWM低電平時間
    i = 65536UL - i;            //計算PWM高電平時間
    EA = 0;
    PWM_high = i;   //裝載PWM高電平時間
    PWM_low  = j;   //裝載PWM低電平時間
    EA = 1;
}

/********************* Timer0中斷函數************************/
void timer0_int (void) interrupt 1
{
    if(P_PWM)
    {
        TH0 = (u8)(PWM_low >> 8);   //如果是輸出高電平,則裝載低電平時間。
        TL0 = (u8)PWM_low;
    }
    else
    {
        TH0 = (u8)(PWM_high >> 8);  //如果是輸出低電平,則裝載高電平時間。
        TL0 = (u8)PWM_high;
    }
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:230742 發表于 2022-5-7 22:28 | 只看該作者
官方的程序好像是硬件PWM ,你這是想用軟件PWM
這也不搭啊。
我也是來學習的。
回復

使用道具 舉報

板凳
ID:624769 發表于 2022-5-7 23:06 | 只看該作者
    INT_CLKO |=  0x01;  //輸出時鐘
永遠是 1/2 的占空比, 你只有放在 定時器中斷里面 改變 IO的 高低電平,才能控制 占空比。光用 INT_CLKO 是沒用的。
回復

使用道具 舉報

地板
ID:213173 發表于 2022-5-8 07:10 | 只看該作者
經測試STC官方的示例程序是有效的,樓主所做的改動沒有看出不妥,建議檢查硬件電路。P1.4推挽模式驅動一個LED無需放大器,LED串聯1K電阻即可。
回復

使用道具 舉報

5#
ID:584814 發表于 2022-5-8 09:43 | 只看該作者
從經驗上來看,可以懷疑官方的硬件沒廣告吹的那么牛13,但懷疑官家的DEMO就呵呵了。
建議查例程是否適用你的芯片,查硬件連接是否例規。
回復

使用道具 舉報

6#
ID:123289 發表于 2022-5-9 14:37 | 只看該作者
一再強調學會查手冊。
回復

使用道具 舉報

7#
ID:491577 發表于 2022-5-9 15:54 | 只看該作者
樓主是怎么判斷PWM沒有效果,是LEN不亮還是一直亮,單片機用的是5v,還是3.3v,NMOS管什么型號,耐壓多少。單片機與NMOS之間接多大電阻,如果是3.3v電壓有可能推不動NMOS管,MOS管不是那么好推動的,改NPN三極管比較好。
回復

使用道具 舉報

8#
ID:590194 發表于 2022-5-10 09:28 | 只看該作者
hhh402 發表于 2022-5-9 15:54
樓主是怎么判斷PWM沒有效果,是LEN不亮還是一直亮,單片機用的是5v,還是3.3v,NMOS管什么型號,耐壓多少。 ...

芯片用的是5V供電,NMOS 用的是AO3400,程序用的是推免,因為測試,所以LED就用了1個燈珠,常亮.并沒有一閃一閃的
回復

使用道具 舉報

9#
ID:590194 發表于 2022-5-10 09:33 | 只看該作者
yzwzfyz 發表于 2022-5-9 14:37
一再強調學會查手冊。

手冊我看了,P1.4,即定時器的輸出口,是可以作為模擬PWM輸出的.請問,我哪里疏忽了?
回復

使用道具 舉報

10#
ID:590194 發表于 2022-5-10 09:36 | 只看該作者
wulin 發表于 2022-5-8 07:10
經測試STC官方的示例程序是有效的,樓主所做的改動沒有看出不妥,建議檢查硬件電路。P1.4推挽模式驅動一個L ...

對把,我覺得也沒有什么不對的地方,我用簡單的IO測試了這個口,是可以用推挽來驅動LED的通和斷,芯片應該沒問題啊..所以問問大神..
回復

使用道具 舉報

11#
ID:279411 發表于 2022-5-10 10:32 | 只看該作者
為啥你的TH0和TL0是0?
回復

使用道具 舉報

12#
ID:590194 發表于 2022-5-10 11:34 | 只看該作者
qq631946386 發表于 2022-5-10 10:32
為啥你的TH0和TL0是0?

我理解的是,在timer0_int執行前,強制0,防止數據錯誤.
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 不用播放器看的av | 伊人国产精品 | 亚洲国产精品日韩av不卡在线 | 日本久草 | 亚洲一区二区三区 | 日本中文字幕在线视频 | 欧美日韩在线播放 | 成人在线播放 | 亚洲视频观看 | 久久久夜| 久久精品久久精品久久精品 | 亚洲国产精品久久久久婷婷老年 | 青青久草 | 中文字幕亚洲无线 | 国产视频91在线 | 国产一区在线看 | 亚洲高清视频在线 | 久久久av | 国产精品久久久精品 | 国产精品免费在线 | 三级视频久久 | 久久久久久久一区二区三区 | 日韩精品免费在线观看 | 插插插干干干 | 欧美xxxx网站 | 国产99小视频 | 四虎成人精品永久免费av九九 | 夜夜爽夜夜操 | .国产精品成人自产拍在线观看6 | 在线亚州 | 国产精品亚洲一区二区三区在线 | 亚洲高清一区二区三区 | 在线观看国产视频 | 日韩aⅴ视频 | 好姑娘高清在线观看电影 | 国产成人99久久亚洲综合精品 | 国产成人精品免费视频大全最热 | 99精品久久久| 伊人最新网址 | 久久久五月天 | 欧美日韩一卡二卡 |