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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機pwm程序如何把頻率改變為30khz左右?

[復制鏈接]
跳轉到指定樓層
樓主
ID:753525 發表于 2021-5-1 17:43 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
先說聲謝謝,我是新手現碰到問題是占空比可以調節,頻率太低只有400hz,能否把頻率提升到30khz左右,

單片機程序如下:
#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;
        }

   }
  }
}           

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

使用道具 舉報

沙發
ID:900082 發表于 2021-5-2 11:55 來自觸屏版 | 只看該作者
for(n=0;n<5000;n++);這句用來延時的,試試更改5000這個值。我也是小白,期待大佬指點和樓主共師兄習。
回復

使用道具 舉報

板凳
ID:319585 發表于 2021-5-2 13:12 來自觸屏版 | 只看該作者
樓主首先你的單片機主頻多少?然后你要求的pwm分辨率多少?頻率高了分辨率就會降低。另外部分電機如果pwm頻率高了,會導致電流過大,功耗增加。
回復

使用道具 舉報

地板
ID:889094 發表于 2021-5-2 23:28 | 只看該作者
中斷函數中不要數到100了,可以數到10,就快了10倍了,當然,你的SCALE也要變變
回復

使用道具 舉報

5#
ID:753525 發表于 2021-5-3 10:22 | 只看該作者
birdzhyli 發表于 2021-5-2 23:28
中斷函數中不要數到100了,可以數到10,就快了10倍了,當然,你的SCALE也要變變

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

使用道具 舉報

6#
ID:465763 發表于 2021-5-4 15:24 | 只看該作者
你這個是模擬的PWM,頻率做不高的,要用專門帶PWM輸出的單 片機
回復

使用道具 舉報

7#
ID:753525 發表于 2021-5-5 09:50 | 只看該作者
lujinlun 發表于 2021-5-4 15:24
你這個是模擬的PWM,頻率做不高的,要用專門帶PWM輸出的單 片機

謝謝指點
回復

使用道具 舉報

8#
ID:889094 發表于 2021-5-6 18:09 來自觸屏版 | 只看該作者
本帖最后由 birdzhyli 于 2021-5-6 19:36 編輯

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

使用道具 舉報

9#
ID:889094 發表于 2021-5-6 18:09 來自觸屏版 | 只看該作者
如果是自帶pwm的單片機只要看手冊例程就可以了
回復

使用道具 舉報

10#
ID:160500 發表于 2021-5-6 18:56 | 只看該作者
51做這個軟件PWM有點難,可以使用帶PWM模式的定時器。
回復

使用道具 舉報

11#
ID:889094 發表于 2021-5-6 19:20 | 只看該作者
你的mcu的interrupt5是timer2,估計要比較好的,我的89C52和12C5A都沒有timer2,我的12C5A的中斷5是ADC模數轉換中斷,想要弄明白是怎么回事,你的程序看著應該是管用的,你需要把芯片和手冊弄明白,把程序自己捋順了,看明白了自然就會了
回復

使用道具 舉報

12#
ID:753525 發表于 2021-5-7 08:54 | 只看該作者
birdzhyli 發表于 2021-5-6 19:20
你的mcu的interrupt5是timer2,估計要比較好的,我的89C52和12C5A都沒有timer2,我的12C5A的中斷5是ADC模數 ...

謝謝,我再努力,是在不行就用2個定時器。
回復

使用道具 舉報

13#
ID:57657 發表于 2021-5-7 10:29 | 只看該作者
30Khz的軟件PWM,晶振沒有百十來Mhz就不要想了。
回復

使用道具 舉報

14#
ID:753525 發表于 2021-5-14 08:51 | 只看該作者
謝謝各位大師的指點,關于單片機pwm程序如何把頻率改變為30khz左右?的問題已解決
回復

使用道具 舉報

15#
ID:879348 發表于 2021-5-14 08:58 | 只看該作者
必須要集成pwm外設的單片機,而且STC51的pwm也是不能設置任意準確頻率
回復

使用道具 舉報

16#
ID:280000 發表于 2021-5-25 20:17 | 只看該作者
需要修改定時器的頻率和自動重裝載值
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区福利视频 | 天天激情综合 | 91日日| 成人午夜免费视频 | 天天躁日日躁aaaa视频 | 欧美精品久久 | 一区二区三区在线免费观看视频 | 国产成人免费在线 | 久久精品亚洲精品国产欧美kt∨ | 精品久久久久久亚洲综合网 | 中文字幕在线免费观看 | 国产成人一区二区三区 | 久久久久久久久久久蜜桃 | 视频一区二区中文字幕日韩 | 特黄一级| 九九久久国产 | 国内精品久久精品 | 国产区在线视频 | 中文字幕日韩欧美一区二区三区 | 狠狠骚 | 色花av| 宅男伊人 | 看一级毛片 | 日韩在线看片 | 黄网站免费在线观看 | 人人干人人舔 | 欧美午夜精品久久久久久浪潮 | 免费黄色网址视频 | 精品久久99 | 综合自拍 | 日韩三级电影一区二区 | 日日天天| 久草在线青青草 | 天天曰夜夜操 | 91精品在线播放 | 日本一区不卡 | 极品在线| 91久久精品一区二区二区 | 天天拍天天射 | 色综合九九 | 精品三级在线观看 |