欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4006|回復(fù): 15
收起左側(cè)

單片機(jī)pwm程序如何把頻率改變?yōu)?0khz左右?

[復(fù)制鏈接]
ID:753525 發(fā)表于 2021-5-1 17:43 | 顯示全部樓層 |閱讀模式
先說聲謝謝,我是新手現(xiàn)碰到問題是占空比可以調(diào)節(jié),頻率太低只有400hz,能否把頻率提升到30khz左右,

單片機(jī)程序如下:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sfr T2MOD=0xc9;
sbit pwm=P1^0;
sbit k1=P3^2;
sbit k2=P3^3;
uchar scale=50;
void timer2() interrupt 5
{
static uchar tt;
TF2=0;
tt++;
if(tt==100)
{
  tt=0;
  pwm=0;
  }
  if(tt==scale)
  pwm=1;
}

void main()
{
uint n;
RCAP2H=0xff;
RCAP2L=0xfa;
T2CON=0;
T2MOD=0;
TR2=1;
ET2=1;
EA=1;
while(1)
{
  if(k1==0)
  {
   for(n=0;n<5000;n++);
   if(k1==0)
   scale++;
   if(scale==51)
   {
    pwm=0;
        scale=50;
   }                                                         
  }
  if(k2==0)
  {
   for(n=0;n<5000;n++);
   if(k2==0)
   scale--;
   if(scale==20)
   {
    pwm=1;
        scale=21;
        }

   }
  }
}           

回復(fù)

使用道具 舉報(bào)

ID:900082 發(fā)表于 2021-5-2 11:55 來自觸屏版 | 顯示全部樓層
for(n=0;n<5000;n++);這句用來延時(shí)的,試試更改5000這個(gè)值。我也是小白,期待大佬指點(diǎn)和樓主共師兄習(xí)。
回復(fù)

使用道具 舉報(bào)

ID:319585 發(fā)表于 2021-5-2 13:12 來自觸屏版 | 顯示全部樓層
樓主首先你的單片機(jī)主頻多少?然后你要求的pwm分辨率多少?頻率高了分辨率就會(huì)降低。另外部分電機(jī)如果pwm頻率高了,會(huì)導(dǎo)致電流過大,功耗增加。
回復(fù)

使用道具 舉報(bào)

ID:889094 發(fā)表于 2021-5-2 23:28 | 顯示全部樓層
中斷函數(shù)中不要數(shù)到100了,可以數(shù)到10,就快了10倍了,當(dāng)然,你的SCALE也要變變
回復(fù)

使用道具 舉報(bào)

ID:753525 發(fā)表于 2021-5-3 10:22 | 顯示全部樓層
birdzhyli 發(fā)表于 2021-5-2 23:28
中斷函數(shù)中不要數(shù)到100了,可以數(shù)到10,就快了10倍了,當(dāng)然,你的SCALE也要變變

你好,你方法思路是正確的,能達(dá)到4khz,可是還是達(dá)不到我要求頻率,我沒辦法了,你有這方面程序嗎,教教我。
回復(fù)

使用道具 舉報(bào)

ID:465763 發(fā)表于 2021-5-4 15:24 | 顯示全部樓層
你這個(gè)是模擬的PWM,頻率做不高的,要用專門帶PWM輸出的單 片機(jī)
回復(fù)

使用道具 舉報(bào)

ID:753525 發(fā)表于 2021-5-5 09:50 | 顯示全部樓層
lujinlun 發(fā)表于 2021-5-4 15:24
你這個(gè)是模擬的PWM,頻率做不高的,要用專門帶PWM輸出的單 片機(jī)

謝謝指點(diǎn)
回復(fù)

使用道具 舉報(bào)

ID:889094 發(fā)表于 2021-5-6 18:09 來自觸屏版 | 顯示全部樓層
本帖最后由 birdzhyli 于 2021-5-6 19:36 編輯

你的晶振和單片機(jī)是1t還是12t,1khz是1ms1次,10khz是100us一次,30khz是要33us一次,如果是12t11。0592m晶振就一個(gè)指令好像大約是1us,所以你要確定自己?jiǎn)纹瑱C(jī)夠使,然后指令能夠在相應(yīng)的時(shí)間里執(zhí)行完畢。如果30Khz,也就是最多執(zhí)行33指令,否則上一個(gè)中斷沒有處理完下一次中斷時(shí)間又到了,程序估計(jì)會(huì)亂,我沒遇到過,不知道會(huì)是什么情況。而33個(gè)指令按我的感覺應(yīng)該是幾行就占完了,就算沒有占完,頻繁中斷,主程序估計(jì)也就干不成啥了,當(dāng)然如果本身就是為了輸出PWM的話,主程序也就不重要了
回復(fù)

使用道具 舉報(bào)

ID:889094 發(fā)表于 2021-5-6 18:09 來自觸屏版 | 顯示全部樓層
如果是自帶pwm的單片機(jī)只要看手冊(cè)例程就可以了
回復(fù)

使用道具 舉報(bào)

ID:160500 發(fā)表于 2021-5-6 18:56 | 顯示全部樓層
51做這個(gè)軟件PWM有點(diǎn)難,可以使用帶PWM模式的定時(shí)器。
回復(fù)

使用道具 舉報(bào)

ID:889094 發(fā)表于 2021-5-6 19:20 | 顯示全部樓層
你的mcu的interrupt5是timer2,估計(jì)要比較好的,我的89C52和12C5A都沒有timer2,我的12C5A的中斷5是ADC模數(shù)轉(zhuǎn)換中斷,想要弄明白是怎么回事,你的程序看著應(yīng)該是管用的,你需要把芯片和手冊(cè)弄明白,把程序自己捋順了,看明白了自然就會(huì)了
回復(fù)

使用道具 舉報(bào)

ID:753525 發(fā)表于 2021-5-7 08:54 | 顯示全部樓層
birdzhyli 發(fā)表于 2021-5-6 19:20
你的mcu的interrupt5是timer2,估計(jì)要比較好的,我的89C52和12C5A都沒有timer2,我的12C5A的中斷5是ADC模數(shù) ...

謝謝,我再努力,是在不行就用2個(gè)定時(shí)器。
回復(fù)

使用道具 舉報(bào)

ID:57657 發(fā)表于 2021-5-7 10:29 | 顯示全部樓層
30Khz的軟件PWM,晶振沒有百十來Mhz就不要想了。
回復(fù)

使用道具 舉報(bào)

ID:753525 發(fā)表于 2021-5-14 08:51 | 顯示全部樓層
謝謝各位大師的指點(diǎn),關(guān)于單片機(jī)pwm程序如何把頻率改變?yōu)?0khz左右?的問題已解決
回復(fù)

使用道具 舉報(bào)

ID:879348 發(fā)表于 2021-5-14 08:58 | 顯示全部樓層
必須要集成pwm外設(shè)的單片機(jī),而且STC51的pwm也是不能設(shè)置任意準(zhǔn)確頻率
回復(fù)

使用道具 舉報(bào)

ID:280000 發(fā)表于 2021-5-25 20:17 | 顯示全部樓層
需要修改定時(shí)器的頻率和自動(dòng)重裝載值
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表