欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
關于頻率可調節的pwm,各位大師 不知道我描述的你們能看懂不
[打印本頁]
作者:
不將就123
時間:
2021-9-2 11:25
標題:
關于頻率可調節的pwm,各位大師 不知道我描述的你們能看懂不
2.png
(6.08 KB, 下載次數: 26)
下載附件
2021-9-2 11:23 上傳
第一圖是一個正常輸出的波形
1.png
(16.88 KB, 下載次數: 51)
下載附件
2021-9-2 11:23 上傳
第二 這個波形是需要經過調制后需要 單片機最后輸出的波形 請問這個波形該怎么輸出 中間密集的那分怎么變換 占空比都是一樣的 只是頻率變化了
我是這樣弄的 但是不行 我設置了一個參考波形 參考波形的占空比就是圖中的密集部分 這個參考波形我是通過PCA產生的波形 然后通過外部觸發中斷INT0來實現 下降沿觸發 上升下降都無法 但是最后得不到這個波形 而且進入中斷以后 main函數中的程序就不能正常運行了 無法退出中斷
請問還有什么方法可以實現 這樣的波形 這個波形的 頻率是可以調節的 可以在不同時刻調節不一樣的頻率 但是最后我要得到這個波形
現在調節頻率這些我都弄好了 就差最后這一步了 有沒有高手給我說一下
可以用ADC合成嗎 通過一個控制PWM來實現
作者:
xuyaqi
時間:
2021-9-2 13:52
用不同定時中斷輸出高低電平實現。
作者:
鄭漢松
時間:
2021-9-2 13:56
是不是只有兩種頻率?我看占空比都是50%,沒必要用PWM了,搞個定時器就行
作者:
wulin
時間:
2021-9-2 14:29
本帖最后由 wulin 于 2021-9-7 08:36 編輯
最簡單的方法是用定時器,按需要的脈沖寬度和變化周期做一個數組,定時器中斷函數按序從數組中取值作重載值即可。示例如下:是一個按正弦規律變化的PWM波形。
#include <reg51.h>
sbit PWM=P1^0;
unsigned char code K_Sine[256]={
0x00,0x01,0x03,0x04,0x06,0x07,0x09,0x0a,0x0c,0x0d,0x0f,0x10,
0x12,0x13,0x15,0x16,0x18,0x19,0x1b,0x1c,0x1e,0x1f,0x21,0x22,
0x24,0x25,0x27,0x28,0x2a,0x2b,0x2d,0x2e,0x2f,0x31,0x32,0x34,
0x35,0x36,0x38,0x39,0x3b,0x3c,0x3d,0x3f,0x40,0x41,0x43,0x44,
0x45,0x47,0x48,0x49,0x4a,0x4c,0x4d,0x4e,0x4f,0x50,0x52,0x53,
0x54,0x55,0x56,0x57,0x58,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f,0x60,
0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x67,0x68,0x69,0x6a,0x6b,
0x6c,0x6d,0x6d,0x6e,0x6f,0x70,0x70,0x71,0x72,0x72,0x73,0x74,
0x74,0x75,0x76,0x76,0x77,0x77,0x78,0x78,0x79,0x79,0x7a,0x7a,
0x7b,0x7b,0x7b,0x7c,0x7c,0x7d,0x7d,0x7d,0x7d,0x7e,0x7e,0x7e,
0x7e,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7d,0x7b,0x7a,
0x78,0x77,0x75,0x74,0x72,0x71,0x6f,0x6e,0x6c,0x6b,0x69,0x68,
0x66,0x65,0x63,0x62,0x60,0x5f,0x5d,0x5c,0x5a,0x59,0x57,0x56,
0x54,0x53,0x51,0x50,0x4f,0x4d,0x4c,0x4a,0x49,0x48,0x46,0x45,
0x43,0x42,0x41,0x3f,0x3e,0x3d,0x3b,0x3a,0x39,0x37,0x36,0x35,
0x34,0x32,0x31,0x30,0x2f,0x2e,0x2c,0x2b,0x2a,0x29,0x28,0x27,
0x26,0x24,0x23,0x22,0x21,0x20,0x1f,0x1e,0x1d,0x1c,0x1b,0x1a,
0x19,0x18,0x17,0x17,0x16,0x15,0x14,0x13,0x12,0x11,0x11,0x10,
0x0f,0x0e,0x0d,0x0c,0x0c,0x0b,0x0a,0x0a,0x09,0x09,0x08,0x08,
0x07,0x07,0x05,0x05,0x04,0x04,0x04,0x03,0x03,0x03,0x02,0x02,
0x02,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00}; //kindred sine wave
void InitTimer0(void)
{
TMOD = 0x01;
TH0 = 0xff;
TL0 = 0x00;
EA = 1;
ET0 = 1;
TR0 = 1;
}
void main(void)
{
InitTimer0();
while(1);
}
void Timer0Interrupt(void) interrupt 1
{
static unsigned char i;
PWM=~PWM;
TH0 = 0xff;
TL0 = K_Sine[i];
i++;
}
復制代碼
作者:
xianfajushi
時間:
2021-9-2 14:37
看圖疑似倍頻有2種方法1改變定時器初值2不變定時器初值修改計數值
作者:
188610329
時間:
2021-9-2 14:49
思路是:定時器確定切換波頻率的周期,改寫PWM定時器,PWM只管輸出就完了。
其實頻占比都是50%的話,壓根不用PWM,直接用T0CLK_OUT就可以了。
作者:
lkc8210
時間:
2021-9-2 15:04
由圖看出高頻是低頻的一倍
PCA不懂,如果頻率不高可以用定時器軟件模擬
void timer1_int (void) interrupt 3
{
static uchar i = 0;
TL1 = 0x18; //設置定時初始值1ms@12.000MHz 12T
TH1 = 0xFC; //設置定時初始值1ms@12.000MHz 12T
if(HLF_Sel)//0 = Low Feq, 1 = High Feq
{
S_Out = i%2;//0=0,1=1,2=0,3=1
}
else
{
S_Out = i>1;//0=0,1=0,2=1,3=1
}
if(++i==4)
{
i=0;
}
}
復制代碼
作者:
光說不練
時間:
2021-9-2 15:55
參考單片機電子琴發聲原理。高音叨是中音叨兩倍頻。
作者:
不將就123
時間:
2021-9-2 23:55
非常感謝大家的回復
我按照你們的思路在搞一下
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1