標題: 51單片機用PWM控制電壓時,PWM的周期如何確定呢? [打印本頁]

作者: a8200232    時間: 2016-3-4 00:42
標題: 51單片機用PWM控制電壓時,PWM的周期如何確定呢?
做畢業(yè)設計中,希望各路大神指點

作者: Accordion    時間: 2016-3-4 09:10
用定時器做
作者: a8200232    時間: 2016-3-4 11:37
Accordion 發(fā)表于 2016-3-4 09:10
用定時器做

恩,我是不知道如何確定周期。比如我要得到原電壓的一半,那么高電平的頻率和低電平的頻率在一個周期內是相等的,關鍵是這個周期可以是500us 1ms 或者1s   ,這個周期如何確定呢?
作者: Accordion    時間: 2016-3-4 13:01
void timer0(void) interrupt 1 //using 2
{
   static uchar click=0;              /*中斷次數(shù)計數(shù)器變量*/
   TH0=T_TH0;                         /*恢復定時器初始值*/
   TL0=T_TL0;
   ++click;
   if (click>=100) click=0;

   /*當小于占空比值時輸出低電平,高于時是高電平,從而實現(xiàn)占空比的調整*/
   if (click<=PWM1)   P10=1;
   else  P10=0;
}

定時器時間*100就是PWM周期
作者: 51hei852    時間: 2016-3-4 15:46
本帖最后由 解放君 于 2016-3-4 15:47 編輯

設置定時器1MS 中斷一次  設置一個變量N M   每中斷一次N M自加一次   假設N=60 你復位管腳狀態(tài)  m>你設置的PWM  更新引腳狀態(tài)   

簡單的寫下 就是

{
  n++;
m++;
if(n==100)
{
    p0.1=0;
n=0;
m=0;
}

if(m<你設的pwm值)
{
    p0.1=1;
}
else
{
    p0.1=0;
}


設想一下  假設1ms 中斷一次 n+100次 就是100ms   假設你PWM設置的值為60  那個M 在小于60的時候  管腳是不是高電平 在60《m《100  的時候 管腳是不是為低電平   那么占空比 不就是60/100了嗎
作者: a8200232    時間: 2016-3-5 00:56
解放君 發(fā)表于 2016-3-4 15:46
設置定時器1MS 中斷一次  設置一個變量N M   每中斷一次N M自加一次   假設N=60 你復位管腳狀態(tài)  m>你設置 ...

懂了 謝謝
作者: a8200232    時間: 2016-3-5 00:56
Accordion 發(fā)表于 2016-3-4 13:01
void timer0(void) interrupt 1 //using 2
{
   static uchar click=0;              /*中斷次數(shù)計數(shù)器 ...

懂了 謝謝




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1