




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、單片機產(chǎn)生正弦波一 要求采用單片機map430g2553和運算放大器lmv358產(chǎn)生正弦波,周期1秒。二 思路可通過單片機產(chǎn)生PWM,調(diào)節(jié)參數(shù)寄存器的值,產(chǎn)生不同占空比的PWM信號。若占空比的變化規(guī)律是正弦的,則濾波后可得到所需正弦波形。其中,PWM(Pulse Width Modulation)控制脈沖寬度調(diào)制技術是通過對一系列脈沖的寬度進行調(diào)制,來等效地獲得所需要波形(含形狀和幅值)。圖1為用PWM波代替正弦半波的例子。(單片機輸出圖1b,濾波后得到圖1a)圖1 用PWM波代替正弦半波推薦精選三 實踐1 PWM周期計算正弦波周期1秒,需要采用多少個周期的PWM信號去表示?數(shù)目過少,則波形不
2、完整(極端狀況只有1個周期的PWM);數(shù)目過多,則增加了單片機的計算量,并對速度有要求。這里取N=200個。則PWM信號的周期為T=1/200秒=5毫秒。2 PWM參數(shù)計算PWM由定時器TimerA產(chǎn)生,參數(shù)主要包括:定時器時鐘,周期計數(shù),高電平計數(shù)三個。l 定時器時鐘:定時器時鐘來源有4個,兩個內(nèi)部的(輔助時鐘ACLK、子系統(tǒng)主時鐘SMCLK),兩個外部的。這里采用內(nèi)部時鐘。沒有外部晶體時,ACLK由內(nèi)部時鐘源VLOCLK(低頻時鐘源,12K赫茲)產(chǎn)生,SMCLK由內(nèi)部數(shù)字時鐘DCOCLK(默認1M赫茲)產(chǎn)生。這里建議采用較高頻率的。部分代碼如下:BCSCTL1 |= DIVA_0; / A
3、CLK = VLOBCSCTL2 |= SELM_0 + DIVM_0 + DIVS_0; / MCLK = DCO, SMCLK = DCO/ Configure TimerATACTL = TASSEL1 +MC_1; / Source: SMCLK, UP mode其中,ACLK可配置成VLOCLK的1,2,4,8分頻,這里設置為1分頻,即ACLK = VLO;第二行中,SELM_0的作用是選擇MCLK的時鐘源為DCOCLK,DIVM_0設置為MCLK = DCO,DIVS_0設置為SMCLK = DCO(默認時鐘源)。TASSEL1將定時器時鐘設置為SMCLK(若為TASSEL0則選擇
4、ACLK),且未分頻。模式選擇MC_1為上升模式。采用上述方法設置定時器時鐘 = SMCLK = DCO = 1M赫茲。l 周期計數(shù):上升模式表明定時器由0遞增到一個上限值CCR0。CCR0需設置。因為周期T=1/200秒,而定時器時鐘 = SMCLK = DCO = 1M赫茲,定時器周期t=1微秒,所以CCR0=T/t=5000,即5毫秒。l 高電平計數(shù):定時器由0遞增到一個上限值CCR0過程中,需設置脈寬CCR1。并且K= CCR1/ CCR0的數(shù)值每個周期(5毫秒)都變化一次,變化趨勢滿足正弦變化,200個5毫秒構成一個正弦變化周期。為獲得CCR1值,在matlab中輸入:t=0:pi/
5、100:2*pi;k=(sin(t)+1)/2;CCR1=round(4999*k);可獲得201個CCR1值。上式中,第一行設置了201個數(shù),均勻分布在0-2pi 之間,第一個和最后一個分別對應0弧度和2pi弧度;第二行計算201個正弦值,偏置為0.5,全幅度為1的正弦波幅度,如圖2所示:推薦精選圖2偏置為0.5,全幅度為1的正弦波幅度第三行計算CCR1值,為k與CCR0(這里是5000)的乘積,并取了四舍五入(round函數(shù))。為將數(shù)據(jù)導出,便于單片機編程,在matlab中添加:fid = fopen('exp.txt','w');fprintf(fid,&
6、#39;%d,',CCR1);fclose(fid);則在matlab工作目錄中生成了帶逗號的連續(xù)CCR1值。復制到程序中,定義一個數(shù)組temp200,其數(shù)值為matlab生成的數(shù)值。3 PWM實現(xiàn)流程程序包含兩個中斷,一個是定時器到達上限CCR0(這里是4999)時發(fā)出中斷,并在中斷服務程序中將輸出置1,另一個是到達中間值CCR1(0至4999)時發(fā)出中斷,并在中斷服務程序中將輸出置0??紤]到同時發(fā)出中斷時,會有中斷嵌套問題、以及優(yōu)先級問題,所以在當CCR1需置為4999時,手動置為4998。軟件流程如圖3所示。推薦精選圖3 軟件流程圖程序為:/*/ LaunchPad Lab4 -
7、 Timer Toggle P1.6,/ MSP430G2553/ -/ /| XIN|-/ | | |/ -|RST XOUT|-/ | |/ | P1.6|->LED/*#include <msp430g2553.h>推薦精選short temp200=2500,2578,2656,2735,2813,2891,2968,3045,3121,3197,3272,3346,3420,3492,3564,3634,3704,3772,3839,3904,3969,4031,4093,4152,4211,4267,4322,4374,4425,4474,4522,4567,46
8、10,4651,4690,4727,4761,4793,4823,4851,4877,4900,4920,4939,4955,4968,4979,4988,4994,4998,4999,4998,4994,4988,4979,4968,4955,4939,4920,4900,4877,4851,4823,4793,4761,4727,4690,4651,4610,4567,4522,4474,4425,4374,4322,4267,4211,4152,4093,4031,3969,3904,3839,3772,3704,3634,3564,3492,3420,3346,3272,3197,31
9、21,3045,2968,2891,2813,2735,2656,2578,2500,2421,2343,2264,2186,2108,2031,1954,1878,1802,1727,1653,1579,1507,1435,1365,1295,1227,1160,1095,1030,968,906,847,788,732,677,625,574,525,477,432,389,348,309,272,238,206,176,148,122,99,79,60,44,31,20,11,5,1,0,1,5,11,20,31,44,60,79,99,122,148,176,206,238,272,3
10、09,348,389,432,477,525,574,625,677,732,788,847,906,968,1030,1095,1160,1227,1295,1365,1435,1507,1579,1653,1727,1802,1878,1954,2031,2108,2186,2264,2343,2421;int i=0;void main(void)WDTCTL = WDTPW + WDTHOLD; / Stop watchdog timerif (CALBC1_1MHZ =0xFF | CALDCO_1MHZ = 0xFF)while(1); / If calibration const
11、ants erased, trap CPU!BCSCTL1 = CALBC1_1MHZ; / Set rangeDCOCTL = CALDCO_1MHZ; / Set DCO step + modulationBCSCTL3 |= LFXT1S_2; / LFXT1 = VLOP1DIR = 0x40; / P1.6 output (green LED)P1OUT = 0; / LED offIFG1 &= OFIFG; / Clear OSCFault flag推薦精選BCSCTL1 |= DIVA_0; / ACLK = VLOBCSCTL2 |= SELM_0 + DIVM_0
12、+ DIVS_0; / MCLK = DCO, SMCLK = DCO/ Configure TimerATACTL = TASSEL1 +MC_1; / Source: ACLK, UP modeCCR0 = 5000;/Timer count 5100CCR1 = 2500;/Timer count 100CCTL0 = CCIE; /CCR0 interrupt enabledCCTL1 = CCIE; /CCR1 interrupt enabled_BIS_SR(GIE);for(;);/ Timer A0 interrupt service routine#pragma vector
13、=TIMER0_A0_VECTOR_interrupt void Timer_A0 (void)P1OUT |= BIT6; / P1.6 output Highif(i=199)i=0;elsei+;if(tempi=4999)CCR1=4998;elseCCR1=tempi;/ Timer A1 Interrupt Vector (TA0IV) handler#pragma vector=TIMER0_A1_VECTOR_interrupt void Timer_A1(void)switch( TA0IV )推薦精選case 2: P1OUT &= BIT6; / P1.6 output Low break;case 10: break; 4 輸出濾波輸出運放采用lmv358。其管腳如下圖4所示:圖4 358管腳示意圖采用壓控電壓源二階低通濾波電路。(參考模擬電子技術基礎,第三版,童詩白、華成英 主編,7.4.2節(jié),352頁)。其電路圖如圖5所示:圖5 壓控電壓源二階低通濾波電路 通帶增益:Avp=1+R4/R3傳遞函數(shù):所需設計的濾波器輸出為1赫茲的正弦波,放大倍數(shù)為1,所以設置
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國超市合同范本
- 醫(yī)療診所股轉(zhuǎn)讓合同范本
- 保留期限合同范本
- 債務免除合同范例
- 公司樓房合同范本
- 制作加工合同范本模板
- 印尼外來投資合同范本
- 勞務和貨運合同范本
- 企業(yè)和銀行借款合同范本
- 農(nóng)村住宅房租賃合同范本
- 人工智能對輿情管理的價值
- 地理-河南省部分重點高中九師聯(lián)盟2024-2025學年高三下學期2月開學考試試題和答案
- 老年護理相關法律法規(guī)
- 《陶瓷工藝技術》課件
- 變更強制措施的申請書
- 供電所安全演講
- 深度學習架構創(chuàng)新-深度研究
- 供應鏈韌性提升與風險防范-深度研究
- 基層醫(yī)療衛(wèi)生服務能力提升考核試卷
- 化工原理完整(天大版)課件
- 2025年江蘇連云港市贛榆城市建設發(fā)展集團有限公司招聘筆試參考題庫附帶答案詳解
評論
0/150
提交評論