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

標(biāo)題: SPWM波在單片機(jī)上的實(shí)現(xiàn)與調(diào)節(jié)(基于MSP430F5529) [打印本頁]

作者: Lemon丶寧    時(shí)間: 2018-3-12 21:18
標(biāo)題: SPWM波在單片機(jī)上的實(shí)現(xiàn)與調(diào)節(jié)(基于MSP430F5529)
SPWM波的定義和生成方法在這里就不多說了,本文主要說SPWM波在單片機(jī)上的實(shí)現(xiàn),以及如何調(diào)節(jié)濾出后的正弦波的頻率及幅度。
先弄清楚SPWM在單片機(jī)上如何產(chǎn)生,比如你要輸出100HZ的SPWM正弦波,每個(gè)周期100個(gè)點(diǎn),則定時(shí)器B的中斷頻率為100*100=10K,用于載波(定時(shí)器A)的PWM頻率應(yīng)>=10K(這里我建議載波為1M,因?yàn)槎〞r(shí)器的配合問題會有+-1的誤差,所以載波盡量的大則濾出的正弦波的波形越好)。
通過軟件,你先得到100個(gè)點(diǎn)的正弦波采樣值,你可以用定時(shí)器A來產(chǎn)生1MHZ的PWM,然后用定時(shí)器B,做定時(shí)器中斷,10KHZ的頻率,每次中斷,就把一個(gè)采樣值賦值給定時(shí)器A的輸出通道:CCRx。然后不停的循環(huán),每中斷一百次,就輸出1個(gè)波。不停的循環(huán)就不停的輸出,那么PWM輸出端,經(jīng)過濾波后(外部濾波電路要找相關(guān)電路去設(shè)計(jì)),就是100HZ的正弦波了。
調(diào)節(jié)頻率要通過定時(shí)器B,公式:正弦波頻率*每個(gè)周期的點(diǎn)數(shù)=定時(shí)器B中斷頻率
調(diào)節(jié)幅度要依據(jù)載波中最大與最小占空比之差也即是調(diào)制深度,這個(gè)沒有公式……..
剩下的就要參考我給出的程序作出自己的理解吧,靠你們了,騷年們!


單片機(jī)源程序如下:
  1. /*===========================================================================
  2. *  Name        :   PWM.h
  3. *  Function    :
  4. *  Created on  :   2019年12月5日
  5. *  Author      :   Laptop
  6. *===========================================================================*/
  7. #include "SPWM.h"

  8. /*============================================================================
  9. * 功能   :   產(chǎn)生單路SPWM波
  10. * 輸入   :   無
  11. * 輸出   :   P1.4
  12. * 注意   :   定時(shí)器也為TA1.1;載波頻率為126.26K;;默認(rèn)正弦頻率為100HZ,幅度未知
  13. *============================================================================*/
  14. //初始化1路
  15. void SPWM_1Way_Init(void)
  16. {
  17.     P1SEL |=BIT4;
  18.     P1DIR |=BIT4;
  19.     //P1DS |=BIT4;                              //全力驅(qū)動
  20.     P1OUT &=~BIT4;
  21.     spwm_i=0;
  22.     TA0CCR0 =198;                               //載波126.26KHZ
  23.     TA0CCR3 =Lab1[spwm_i];
  24.     TA0CCTL3 =OUTMOD_7;
  25.     TA0CTL =TASSEL_2+MC_1+TACLR;                //選擇時(shí)鐘為SMCLK,UP模式

  26.     P2SEL |=BIT0;
  27.     P2DIR |=BIT0;
  28.     P2OUT &=~BIT0;
  29.     TA1CCR0 =2499;                              //25000000/(100*100)=2500:100Hz,100個(gè)點(diǎn):10KHZ(時(shí)間不太準(zhǔn)我做了些補(bǔ)償)
  30.     TA1CTL =TASSEL_2+MC_1+TACLR;                //選擇時(shí)鐘為SMCLK,UP模式
  31.     TA1CTL  |= TAIE;                            //開啟中斷

  32.     __enable_interrupt();                       //開啟總中斷
  33. }

  34. //輸出1路
  35. void SPWM_1Way_Set_Freq(unsigned int freq)
  36. {
  37.     unsigned long freq_num;
  38.     freq_num=250000/(freq)-1;
  39.     TA1CCR0 =freq_num;
  40. }

  41. /*================================================================================
  42. * 功能   :   輸出兩路SPWM波,相位可調(diào)
  43. * 輸入   :   無
  44. * 輸出   :    P1.4,P1.5
  45. * 注意   :   定時(shí)器也為TA1.1;載波頻率為126.26K;;默認(rèn)正弦頻率為100HZ,幅度未知
  46. *================================================================================*/
  47. //初始化2路
  48. void SPWM_2Way_Init(void)
  49. {
  50.     P1SEL |=BIT4+BIT5;
  51.     P1DIR |=BIT4+BIT5;
  52.     //P1DS |=BIT4+BIT5;                         //全力驅(qū)動
  53.     P1OUT &=~BIT4+BIT5;
  54.     spwm_i=0;
  55.     spwm_j=50;                                  //控制相位
  56.     TA0CCR0 =198;                               //載波126.26KHZ
  57.     TA0CCR3 =Lab1[spwm_i];
  58.     TA0CCR4 =Lab1[spwm_j];
  59.     TA0CCTL3 =OUTMOD_7;
  60.     TA0CCTL4 =OUTMOD_7;
  61.     TA0CTL =TASSEL_2+MC_1+TACLR;                //選擇時(shí)鐘為SMCLK,UP模式

  62.     P2SEL |=BIT0;
  63.     P2DIR |=BIT0;
  64.     P2OUT &=~BIT0;
  65.     TA1CCR0 =2499;                              //25000000/(100*100)=2500:100Hz,100個(gè)點(diǎn):10KHZ
  66.     TA1CTL =TASSEL_2+MC_1+TACLR;                //選擇時(shí)鐘為SMCLK,UP模式
  67.     TA1CTL  |= TAIE;                            //開啟中斷

  68.     __enable_interrupt();                       //開啟總中斷
  69. }

  70. //輸出2路
  71. void SPWM_2Way_Set_Freq(unsigned int freq)
  72. {
  73.     unsigned long freq_num;
  74.     freq_num=250000/(freq)-1;
  75.     TA1CCR0 =freq_num;
  76. }

  77. /*===============================================================
  78. * 功能   :   中斷函數(shù),改變SPWM中占空比寄存器的值
  79. * 輸入   :   無
  80. * 輸出   :   無
  81. * 注意   :   為0時(shí)雙路輸出,為1時(shí)單路輸出
  82. *===============================================================*/
  83. #if 0
  84. #pragma vector=TIMER1_A1_VECTOR
  85. __interrupt void TimerA1(void)
  86. {
  87.     TA0CCR3 =Lab1[spwm_i++];
  88.     if(spwm_i==100)spwm_i=0;
  89.     TA1IV=0;                                        //GPIO的單獨(dú)中斷會自動清零,可TIMER的不會,所以要軟件清零;!!
  90. ……………………

  91. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
SPWM_01.zip (65.89 KB, 下載次數(shù): 105)





作者: wgsjjj    時(shí)間: 2018-3-13 13:53
不錯(cuò)不錯(cuò),值得學(xué)習(xí)
作者: 媽媽mm    時(shí)間: 2018-3-14 21:47
很不錯(cuò)呀,值得學(xué)習(xí)

作者: 小猴子安來寧    時(shí)間: 2018-7-22 15:50
可以的

作者: 732116010    時(shí)間: 2019-7-31 14:26
感謝!!
作者: 飛飛飛.    時(shí)間: 2021-7-20 10:44
有調(diào)出來波的嗎




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 中国黄色在线视频 | 中文字幕在线中文 | 亚洲成人精品 | 日韩在线免费视频 | 久久久精品网站 | 亚洲国产欧美一区二区三区久久 | 亚洲精品一区二区在线观看 | 99av成人精品国语自产拍 | 伊人超碰 | 亚洲国产精品一区二区第一页 | 天天天天操 | 91小视频在线 | a视频在线观看 | 一区二区电影 | 三级特黄特色视频 | 盗摄精品av一区二区三区 | 久久久精品网 | 欧美成人精品一区二区三区 | 国产一区二区三区在线看 | 国产午夜精品视频 | 久久久91精品国产一区二区精品 | 毛片com | 国产在视频一区二区三区吞精 | 羞羞视频一区二区 | 免费视频二区 | 国产区视频在线观看 | 精品视频在线一区 | 欧美成年视频 | 精品视频免费 | 日本三级在线网站 | 亚洲成av片人久久久 | 国产在线观看免费 | 亚洲日本视频 | av在线一区二区三区 | 国产日韩一区二区 | 日本中出视频 | 精品国产乱码一区二区三 | 久久久www成人免费无遮挡大片 | 国产一级片免费视频 | 蜜臀久久99精品久久久久久宅男 | 欧美黄视频 |