pwm呼吸燈原理及程序分享

2021-01-09 電子發燒友
PWM

PulseWidthModulation脈衝寬度調製,簡稱PWM。

PWM(脈衝寬度調製)對模擬信號電平進行數字編碼的方法,計算機只能輸出0或5V的數字電壓值而不能輸出模擬電壓,而我們如果想獲得一個模擬電壓值,則需通過使用高解析度計數器,改變方波的佔空比來對一個模擬信號的電平進行編碼。

仍輸出數位訊號,因為滿幅值的直流供電只有5V(1)和0V(0)兩種。電壓是以一種連接(1)或斷開(0)的重複脈衝序列被夾到模擬負載上去的,連接即是直流供電輸出,斷開即是直流供電斷開。通過對連接和斷開時間的控制,只要帶寬足夠,可以輸出任意不大於最大電壓值的模擬電壓。

51單片機的Timer

用的單片機是STC89C52,其內部有3個16位Timer,分別為T/C0,T/C1,T/C2,通過配置相關寄存器即可實現Timer的功能控制。

控制PWM需要用到定時器來生成不同佔空比的波形,採用定時器中斷的方式。

相關寄存器:

1.IE寄存器

2. TCON寄存器

3. TMOD寄存器

控制Timer0/1的工作方式

4. Timer0/1計數寄存器

TL0

TL1

TH0

TH1

當定時開啟後,TL0(TL1)自動跟隨機器周期加一。當TL0(TL1)滿了後,自動清零同時向TH0(TH1)進一位,不需要手動操作。

而當TL0(TL1)和TH0(TH1)都滿了以後,此時如果定時中斷和總中斷都已經打開,那麼就會發生溢出中斷,同時這兩個寄存器清零。

運用PWM完成呼吸燈硬體電路

程序設計:

unsigned char PWM_COUNT; //計數

unsigned int HUXI_COUNT; //佔空比更新時間

unsigned char PWM_VLAUE; //佔空比比對值

bit direc_flag; //佔空比更新方向

void timer0_init()

{ TMOD=0x02; //模式設置,00010000,定時器0,工作於模式2(M1=1,M0=0)

TH0=0x47; //定時器溢出值設置,每隔200us發起一次中斷。

TL0=0X47; TR0=1; //定時器0開始計時

ET0=1; //開定時器0中斷

EA=1; //開總中斷

PWM_COUNT =0; }

void time0() interrupt 1

{ PWM_COUNT++; HUXI_COUNT++;

if(PWM_COUNT == PWM_VLAUE) //判斷是否到了點亮LED的時候

LED = 1; //點亮LED

if(PWM_COUNT == 10) //當前周期結束

{ LED = 0; //熄滅LED

PWM_COUNT = 0; //重新計時 }

if((HUXI_COUNT == 600) && (direc_flag == 0)) { //佔空比增加10%

HUXI_COUNT = 0;

PWM_VLAUE++; if(PWM_VLAUE == 9) //佔空比更改方向

direc_flag = 1;

}

if((HUXI_COUNT == 600) && (direc_flag == 1))

{ //佔空比減少10%

HUXI_COUNT = 0;

PWM_VLAUE--;

if(PWM_VLAUE == 1) //佔空比更改方向

direc_flag = 0;

}

}

void main()

{ HUXI_COUNT = 0;

PWM_COUNT = 0;

PWM_VLAUE = 5;

direc_flag = 0;

LED = 1; //默認LED熄滅

timer0_init(); //定時器0初始化

while(1);

}

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • 利用PWM原理,實現呼吸燈功能
    這種自帶有PWM輸出的功能模塊在程序設計更簡便,同時數據更精確。如下圖,一般的IO口都會標明這個GPIO是否是PWM口; STM32單片機就是標識如下形式:TIMx_CHy這樣的形式,下圖中所示的PWM引腳即佔用TIM1的通道1。
  • PWM(脈寬調製)——LED特效呼吸燈設計
    LED特效呼吸燈原理  採用pwm的方式,在固定的頻率下,採用佔空比的方式來實現LED亮度的變化。佔空比為0,LED燈不亮,佔空比為100%,則LED燈最亮。所以將佔空比從0到100%,再從100%到0不斷變化,就可以實現LED燈實現特效呼吸。  設計思路、框圖    變亮:當cnt2 < cnt3時為高電平,反之為低電平。
  • 呼吸燈原理(非PWM實現方式)
    1.呼吸燈原理分析:模擬人體呼吸,吸氣和呼氣各佔1.5S,人眼的圖像滯留時間0.04s(1/24幀畫面),按最快0.04s算,就是40ms。亮0.02S,滅0.02s,人眼看到的應該是一直亮(可以實驗)。2.呼吸燈程序設計:就是改變這40ms中,亮和滅所佔的百分比(40ms相對不柔和,20ms效果柔和)。
  • 脈寬調製原理- -PWM原理
    趕緊跟隨小編來了解一下脈寬調製原理吧~本文引用地址:http://www.eepw.com.cn/article/278262.htm一、脈寬調製原理- -簡介  脈寬調製技術,全稱為脈衝寬度調製,英文名稱為Pulse Width Modulation,簡寫為PWM,是一種利用微處理器來完成對模擬電路控制的一種技術,其具有操作簡單、靈活性好、反應速度快等諸多特點,現已在通信、測量、功率變換
  • PWM原理
    pwm原理  3. PWM乘法運算電路及工作原理介紹 pwm相關文章:pwm是什麼
  • PWM在ARM Linux中的原理和蜂鳴器驅動實例開發
    蜂鳴器的種類和工作原理 蜂鳴器主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類型。 壓電式蜂鳴器主要由多諧振蕩器、壓電蜂鳴片、阻抗匹配器及共鳴箱、外殼等組成。有的壓電式蜂鳴器外殼上還裝有發光二極體。多諧振蕩器由電晶體或集成電路構成。
  • 基於STC89C52RC的PWM呼吸燈
    設計思路(1)使用兩個定時器,T0用於PWM波翻轉,T1用於調整佔空比,均採用16位計時模式,因為51單片機在此模式下不能自動重裝初值,因此需要在每一次觸發中斷後手動重裝初值,為了不造成太大誤差,重裝初值程序需要寫在中斷最前面
  • arduino從零開始(4)PWM與呼吸燈
    你將了解脈衝寬度調試(PWM)的原理你將使用PWM製作一個呼吸燈的效果脈衝寬度調試PWM,也就是脈衝寬度調製,用於將一段信號編碼為脈衝信號(方波信號)。是在數字電路中 達到 模擬輸出效果的一種手段。即:使用數字控制產生佔空比不同的方波(一個不停在開與關之間切換的信號)來控制模擬輸出。我們要在數字電路中輸出模擬信號,就可以使用PWM技術實現。
  • 基於PIC16F84的兩組PWM輸出的實例源程序
    PIC16F84產生兩組PWM輸出的實例源程序本文引用地址:http://www.eepw.com.cn/article/171049.htm;*************************************************
  • 單片機中PWM的原理與控制程序
    PWM 在單片機中的應用是非常廣泛的,它的基本原理很簡單,但往往應用於不同場合上意義也不完全一樣
  • 周末來看三個優秀案例——Funpack第二期精彩分享之四
    周末,Funpack第二期的第四篇精彩分享,我們一次送出三個優秀案例。其他的精彩視頻也在陸續上傳到「精彩分享」,大家跳轉過去就能觀看。
  • 你足夠了解pwm嗎?搞清楚pwm控制技術
    pwm是現代重要技術之一,在各種電子設備中,均存在pwm的身影。在往期文章中,小編對pwm原理、pwm佔空比、pwm頻率均有所介紹。為增進大家對pwm的認識,本文將對pwm控制技術予以闡述。如果你對pwm抑或本文即將介紹的內容具有興趣,不妨繼續往下閱讀哦。
  • PWM是什麼
    根據衝量相等效果相同的原理,PWM波形和正弦半波是等效的。對於正弦的負半周,也可以用同樣的方法得到PWM波形。  在PWM波形中,各脈衝的幅值是相等的,要改變等效輸出正弦波的幅值時,只要按同一比例係數改變各脈衝的寬度即可,因此在交-直-交變頻器中,PWM逆變電路輸出的脈衝電壓就是直流側電壓的幅值。
  • Arduino呼吸燈實驗
    在Ardiuno第一個程序:點亮LED燈 中,我們通過Arduino控制LED燈的亮滅,現在,我們製作一個Arduino呼吸燈,使得LED燈的亮度逐漸變化
  • MSP430F149 TimerA 輸出pwm信號 C程序代碼
    MSP430F149 TimerA 輸出pwm信號 注意其中寄存器設置與pwm信號輸出引腳的對應關係 P1.2-TA1,TACCR1
  • 通過pwm方式控制電機-L298N-Java版本
    實際上在精度要求不是非常高的情況下,普通引腳也可以通過軟體模擬來控制電機,實現pwm一樣的功能。https://www.zhihu.com/question/50074435/answer/140589620 三.程序
  • 基於雙PWM控制永磁直驅風電變流器的研究
    永磁直驅風電機組併網變流器在國內的研究還時間不長,本文對永磁直驅風電機組雙pwm控制併網變流器的原理、拓撲結構、控制策略進行了研究,並進行搭建試驗平臺進行了相應的試驗,達到了預定的效果。2 雙pwm變流器系統拓撲原理  本文採用的永磁直驅雙pwm風電變流器的拓撲結構如下:  如圖1所示,電機側變流器採用三相igbt橋,通過pwm控制實現整流,電網側變流器也採用三相igbt橋,通過pwm控制實現逆變,兩個變流器中間直流母線加電容器作為直流支撐,這一拓撲結構解決了採用二極體整流橋具有的非線性特性、導致整流器輸入側電流波形畸變的缺點
  • 雙PWM變頻器及應用技術研究
    它的理論基礎基於坐標變換原理, 把三相輸出交流電從三相靜止坐標系變換到兩相靜止ab 軸系下再變換到旋轉dq 軸系, 空間矢量的變換如圖1 所示, 其中旋轉坐標系跟隨電網電壓相角θ 以w 速度進行旋轉。 pwm相關文章:pwm原理
  • LabVIEW + Arduino之流水式呼吸燈
    )的流水式呼吸燈效果怎麼實現。     一般要改變一盞LED的亮度,我們首先會想到去改變施加在LED兩端的電壓,由於Arduino Uno沒有真實的AO(模擬輸出), 所以我們這裡要通過PWM(脈衝寬度調製,具體原理直接百度啦
  • 呼吸燈原理及設計電路詳解
    廣告說到呼吸燈的設計,也許大家最先想到的就是蘋果。