2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩28頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p><b>  課程設(shè)計</b></p><p>  題目:簡易數(shù)字信號發(fā)生器</p><p><b>  學(xué)院:電子工程學(xué)院</b></p><p>  專業(yè):光電信息科學(xué)與工程</p><p><b>  班級: </b></p><p&g

2、t;<b>  課程設(shè)計要求</b></p><p>  以msp430單片機為核心,通過一個DA(數(shù)字模擬)轉(zhuǎn)換芯片,將單片機輸出的方波、三角波、正弦波(數(shù)字信號)轉(zhuǎn)換為模擬信號輸出。提供芯片:msp430G2553/msp430f5529、DAC0832、REF102、LM384、OP07。</p><p><b>  1.基本要求</b>&

3、lt;/p><p> ?。?)供電電壓 VDD= 5V~12V;</p><p> ?。?)信號頻率:5~500Hz(可調(diào));</p><p> ?。?)輸出信號電壓可調(diào)范圍:≥0.5*VDD,直流偏移可調(diào):≥0.5*VDD; </p><p> ?。?)完成輸出信號切換;</p><p> ?。?)方波占空比:平滑可調(diào)2

4、0%~80%;</p><p> ?。?)通帶內(nèi)正弦波峰峰值穩(wěn)定度誤差:≤±10%(負載1K);</p><p> ?。?)提交設(shè)計報告。</p><p><b>  2.發(fā)揮部分</b></p><p>  信號頻率:5~2000Hz(可調(diào));</p><p>  多通道同時輸出同頻正

5、弦波,方波,三角波。(頻率可調(diào));</p><p>  輸出頻率與幅度可調(diào)的正弦波與余弦波,相位誤差≤±5度;</p><p><b>  自由發(fā)揮。</b></p><p><b>  系統(tǒng)硬件和軟件框圖</b></p><p><b>  系統(tǒng)硬件框圖</b>&l

6、t;/p><p><b>  圖1 系統(tǒng)硬件框圖</b></p><p><b>  軟件框圖</b></p><p><b>  圖2 系統(tǒng)軟件框圖</b></p><p>  各函數(shù)的作用和相互關(guān)系:</p><p>  在主函數(shù)中首先對系統(tǒng)的時鐘、I/

7、O口、定時器進行了初始化。初始化完畢,開啟總中斷。接著進入循環(huán)等待定時器中斷子程序的執(zhí)行。按鍵中斷函數(shù)主要對三個菜單按鍵的動作進行處理。這三個菜單按鍵可以實現(xiàn)波形的切換,頻率的加減,信號的使能輸出。在按鍵中斷函數(shù)中修改的信號頻率大小和波形的種類這兩個參數(shù)會被主函數(shù)和定時器中斷函數(shù)調(diào)用。</p><p><b>  硬件系統(tǒng)設(shè)計</b></p><p><b>

8、;  方案論證與選擇</b></p><p><b>  方案一:</b></p><p>  利用DAC0832的11號管腳做為信號輸出端,8號管腳輸入基準(zhǔn)電壓,將其輸出的電流信號再轉(zhuǎn)換為電壓信號進行檢測調(diào)試。</p><p><b>  方案二:</b></p><p>  利用DA

9、C0832的8號管腳做為信號輸出端,11號管腳輸入基準(zhǔn)電壓,其輸出直接為電壓信號,可以直接利用示波器進行檢測調(diào)試。</p><p>  綜上,方案二省去了電流信號轉(zhuǎn)電壓信號的過程,實行起來更加簡便。所以最終采用方案二。</p><p>  2、硬件電路系統(tǒng)設(shè)計</p><p>  系統(tǒng)主控部分采用MSP430G2452 LaunchPad開發(fā)板;外圍電路主要包括DA

10、C模塊、放大電路、電源及按鍵模塊。</p><p> ?。?)DAC模塊:DAC模塊采用的是DAC0832。 DAC0832 是8分辨率的D/A轉(zhuǎn)換集成芯片。與微處理器完全兼容。這個DA芯片以其價格低廉、接口簡單、轉(zhuǎn)換控制容易等優(yōu)點,在單片機應(yīng)用系統(tǒng)中得到廣泛的應(yīng)用。其主要特性如下:</p><p><b>  * 分辨率為8位;</b></p><

11、;p>  * 電流穩(wěn)定時間1us;</p><p>  * 可單緩沖、雙緩沖或直接數(shù)字輸入;</p><p>  * 只需在滿量程下調(diào)整其線性度;</p><p>  * 單一電源供電(+5V~+15V);</p><p>  * 低功耗,20mW</p><p><b>  其引腳功能如下:</

12、b></p><p>  * D0~D7:8位數(shù)據(jù)輸入線,TTL電平,有效時間應(yīng)大于90ns(否則鎖存器的數(shù)據(jù)會出錯);</p><p>  * ILE:數(shù)據(jù)鎖存允許控制信號輸入線,高電平有效;</p><p>  * CS:片選信號輸入線(選通數(shù)據(jù)鎖存器),低電平有效;</p><p>  * WR1:數(shù)據(jù)鎖存器寫選通輸入線,負脈沖(

13、脈寬應(yīng)大于500ns)有效。由ILE、CS、WR1的邏輯組合產(chǎn)生LE1,當(dāng)LE1為高電平時,數(shù)據(jù)鎖存器狀態(tài)隨輸入數(shù)據(jù)線變換,LE1的負跳變時將輸入數(shù)據(jù)鎖存;</p><p>  * XFER:數(shù)據(jù)傳輸控制信號輸入線,低電平有效,負脈沖(脈寬應(yīng)大于500ns)有效;</p><p>  * WR2:DAC寄存器選通輸入線,負脈沖(脈寬應(yīng)大于500ns)有效。由WR2、XFER的邏輯組合產(chǎn)生L

14、E2,當(dāng)LE2為高電平時,DAC寄存器的輸出隨寄存器的輸入而變化,LE2的負跳變時將數(shù)據(jù)鎖存器的內(nèi)容打入DAC寄存器并開始D/A轉(zhuǎn)換。</p><p>  * IOUT1:電流輸出端1,其值隨DAC寄存器的內(nèi)容線性變化;</p><p>  * IOUT2:電流輸出端2,其值與IOUT1值之和為一常數(shù);</p><p>  * Rfb:反饋信號輸入線,改變Rfb端外

15、接電阻值可調(diào)整轉(zhuǎn)換滿量程精度;</p><p>  * Vcc:電源輸入端,Vcc的范圍為+5V~+15V;</p><p>  * VREF:基準(zhǔn)電壓輸入線,VREF的范圍為-10V~+10V;</p><p>  * AGND:模擬信號地;</p><p>  * DGND:數(shù)字信號地。</p><p>  DAC

16、電路原理圖如下:</p><p> ?。?)放大模塊:放大電路模塊只要采用的是LM358運算放大器。LM358內(nèi)部包括有兩個獨立的、高增益、內(nèi)部頻率補償?shù)碾p運算放大器,適合于電源電壓范圍很寬的單電源使用,也適用于雙電源工作模式。</p><p><b>  其主要特性如下:</b></p><p>  * 內(nèi)部頻率補償 </p>

17、<p>  * 直流電壓增益高(約100dB) </p><p>  * 單位增益頻帶寬(約1MHz) </p><p>  * 源電壓范圍寬:單電源(3—30V); 雙電源(±1.5一±15V) </p><p>  * 低功耗電流,適合于電池供電;低輸入偏流 </p><p>  * 低輸入失調(diào)電壓和

18、失調(diào)電流 </p><p>  * 共模輸入電壓范圍寬,包括接地 </p><p>  * 差模輸入電壓范圍寬,等于電源電壓范圍 </p><p>  我們采用的是單電源同相放大。同時為了給信號加入偏置電壓,采用了加法器的設(shè)計。</p><p>  LM358引腳圖及引腳功能如圖所示。</p><p>  放大電

19、路原理圖如下:</p><p> ?。?)電源模塊:實驗中用到的電壓主要有12V,5V,3.5V</p><p> ?、?2V:12V電壓主要是給DAC0832,REF102以及LM358提供工作電壓,其來源是由穩(wěn)壓電源直接產(chǎn)生的。</p><p>  ②5V:5V電壓主要是做為基準(zhǔn)電壓源,其產(chǎn)生來源是REF102與運放OP07搭建產(chǎn)生的。</p>&

20、lt;p><b>  其電路圖如圖所示</b></p><p> ?、?.5V:其作用主要是給DAC0832的19管腳置于高電平。其來源是msp430G2553的VCC管腳產(chǎn)生的。</p><p><b>  總電路原理圖</b></p><p><b>  4、焊接的萬能板</b></p

21、><p><b>  軟件系統(tǒng)設(shè)計</b></p><p><b>  1、程序主流程</b></p><p>  如圖8所示為程序主流程圖:</p><p><b>  2、程序設(shè)計</b></p><p>  系統(tǒng)程序主要分為以下幾個模塊:初始化程序、主

22、程序、輸出程序和中斷函數(shù)。</p><p><b>  2.1初始化程序</b></p><p>  初始化程序主要完成的引腳的配置</p><p>  void IO_init(void)</p><p><b>  {</b></p><p>  P1DIR=0xf0;&

23、lt;/p><p>  P1REN |=BIT1+BIT2+BIT3;</p><p>  P1IE |=0x0E;</p><p>  P1IES|=0x0E;</p><p>  P2DIR=0x0f; //P2的低四位作為輸出</p><p><b>  }</b></p>&

24、lt;p><b>  2.2主程序</b></p><p>  主程序要負責(zé)總體程序管理功能以及AD使能。</p><p>  int main(void)</p><p><b>  {</b></p><p>  // Stop watchdog timer to prevent time

25、 out reset</p><p>  WDTCTL = WDTPW + WDTHOLD;</p><p>  IO_init();</p><p>  DCO_init();</p><p>  ADC_init();</p><p>  _enable_interrupts();</p><p

26、>  Timer_A0_init();</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  ADC10CTL0 |= ENC + ADC10SC;</p><p><b>  }</b></p>

27、<p>  //return 0;</p><p><b>  }</b></p><p>  2.3 按鍵中斷程序</p><p>  主要完成按鍵的讀取,以及相應(yīng)的輸出量賦值。</p><p>  #pragma vector = PORT1_VECTOR</p><p>  __i

28、nterrupt void PORT1_ISR(void)</p><p><b>  {</b></p><p>  //-----啟用Port1事件檢測函數(shù)-----</p><p>  P1_IODect();//檢測通過,則會調(diào)用事件處理函數(shù)</p><p>  P1IFG=0;

29、 //退出中斷前必須手動清除IO口中斷標(biāo)志</p><p><b>  }</b></p><p>  void P1_IODect(void)</p><p><b>  {</b></p><p>  unsigned int Push_Key=0;&l

30、t;/p><p>  //-----排除輸出IO的干擾后,鎖定唯一被觸發(fā)的中斷標(biāo)志位-----</p><p>  Push_Key=P1IFG&(~P1DIR);</p><p>  //-----延時一段時間,避開機械抖動區(qū)域-----</p><p>  __delay_cycles(10000);//消抖延時<

31、/p><p>  //----判斷按鍵狀態(tài)是否與延時前一致-----</p><p>  if((P1IN&Push_Key)==0) //如果該次按鍵確實有效</p><p><b>  {</b></p><p>  //----判斷具體哪個IO被按下,調(diào)用該IO的事件處理函數(shù)

32、-----</p><p>  switch(Push_Key){</p><p>  // case BIT0:P10_Onclick();break;</p><p>  case BIT1:</p><p><b>  {</b></p><p>  WaveSelect+=5;&l

33、t;/p><p><b>  tt=1;</b></p><p>  switch(WaveSelect)</p><p><b>  {</b></p><p>  case 5: break;</p><p>  case 10: break;</p>&

34、lt;p>  case 15: break;</p><p>  // case 20: break;</p><p>  default: WaveSelect=5;break;</p><p><b>  }</b></p><p>  };break;</p><p>  ca

35、se BIT2:</p><p><b>  {</b></p><p><b>  if(tt==1)</b></p><p><b>  {</b></p><p>  num=num+1;</p><p>  Tccr0=keynum[num];&

36、lt;/p><p><b>  }</b></p><p>  if(num==100)num=1;</p><p><b>  }break;</b></p><p>  case BIT3:</p><p><b>  {</b></p>

37、<p><b>  if(tt==1)</b></p><p><b>  {</b></p><p>  num=num-1;</p><p>  Tccr0=keynum[num];</p><p><b>  }</b></p><p&g

38、t;  if(num==0)num=99;</p><p><b>  }</b></p><p><b>  break;</b></p><p>  default:break;//任何情況下均加上default</p><p><b>  }</b>

39、</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  2.4輸出程序</b></p><p>  使用TimerA0計數(shù)器進行輸出使能</p><p>  #pragma vector =TIMER

40、0_A0_VECTOR</p><p>  __interrupt void Timer_A0(void) //CCIFG中斷被響應(yīng)后,該標(biāo)志位自動清零</p><p><b>  {</b></p><p>  if(WaveSelect==5)</p><p><b&

41、gt;  {</b></p><p><b>  if(j<200)</b></p><p><b>  {</b></p><p>  write_dac(sindata[j]) ; //正弦波產(chǎn)生</p><p><b>  //j

42、++;</b></p><p><b>  j+=4;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  j=0;</b></p><p>  TA

43、0CCR0 =Tccr0;</p><p><b>  }</b></p><p>  if(WaveSelect==10)</p><p><b>  {</b></p><p>  if(ttcout==0)</p><p><b>  {</b>&

44、lt;/p><p>  if(tcoutm<200)</p><p><b>  {</b></p><p>  write_dac(tcoutm) ; //三角波產(chǎn)生上升段</p><p>  tcoutm = tcoutm+8;</p><p><b&

45、gt;  }</b></p><p><b>  else</b></p><p><b>  ttcout=1;</b></p><p>  TA0CCR0 =Tccr0;</p><p><b>  }</b></p><p>  if(

46、ttcout==1)</p><p><b>  {</b></p><p>  if(tcoutm>0)</p><p><b>  {</b></p><p>  write_dac(tcoutm) ; //三角波產(chǎn)生下降段</p><p

47、>  tcoutm = tcoutm-8;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  ttcout=0;</b></p><p>  TA0CCR0 =Tccr0;</p><p&

48、gt;<b>  }</b></p><p><b>  }</b></p><p>  if(WaveSelect==15)</p><p><b>  {</b></p><p>  if(ttcout==0)</p><p><b>  

49、{</b></p><p>  if(tcoutn<h_time)</p><p><b>  {</b></p><p>  write_dac(high) ; //方波產(chǎn)生上升段</p><p>  tcoutn+=4;</p><p>&

50、lt;b>  }</b></p><p><b>  else</b></p><p><b>  ttcout=1;</b></p><p>  TA0CCR0 =Tccr0;</p><p><b>  }</b></p><p>

51、  if(ttcout==1)</p><p><b>  {</b></p><p>  if(tcoutn<200)</p><p><b>  {</b></p><p>  write_dac(low) ; //方波產(chǎn)生下降段</p>&

52、lt;p>  tcoutn+=4;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  tcoutn=0;</b></p><p><b>  ttcout=0;</b></p>

53、;<p>  TA0CCR0 =Tccr0;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  3、各模塊之間關(guān)系</b></p>

54、<p><b>  實現(xiàn)功能說明</b></p><p><b>  1、實現(xiàn)的基本要求</b></p><p>  (1)供電電壓 VDD= 5V~12V;</p><p>  (2)信號頻率:5~500Hz(可調(diào));</p><p> ?。?)輸出信號電壓可調(diào)范圍:≥0.5*VDD,

55、直流偏移可調(diào):≥0.5*VDD; </p><p> ?。?)完成輸出信號切換;</p><p> ?。?)方波占空比:平滑可調(diào)20%~80%;</p><p> ?。?)通帶內(nèi)正弦波峰峰值穩(wěn)定度誤差:≤±10%(負載1K);</p><p><b>  2、實現(xiàn)的提高要求</b></p><

56、;p>  信號頻率:5~2000Hz(可調(diào));</p><p>  自由發(fā)揮,實現(xiàn)了頻率的平滑可調(diào)。</p><p><b>  程序調(diào)試與運行結(jié)果</b></p><p><b>  1、切換波形</b></p><p>  產(chǎn)生的正弦波,三角波,方波,鋸齒波。如圖:</p>

57、<p><b>  2、頻率范圍可調(diào)</b></p><p>  輸出頻率范圍5~2000Hz可調(diào)。如圖:</p><p>  3、輸出信號范圍與直流偏置可調(diào)范圍</p><p>  輸出信號電壓可調(diào)范圍:> 0.5Vdd</p><p>  直流偏移可調(diào):> 0.5Vdd</p>&

58、lt;p><b>  4、方波占空比可調(diào)</b></p><p>  平滑可調(diào)20%~80%</p><p><b>  故障及問題分析</b></p><p>  1、程序燒制后,將單片機連接到電路中后,波形不穩(wěn)定,只有當(dāng)按住P 1.3鍵時,波形才會穩(wěn)定。</p><p>  解決方法:經(jīng)過

59、幾次的不斷程序調(diào)試后,問題一直存在。后來我們單獨搭了個外設(shè)按鍵來代替P 1.3按鍵,發(fā)現(xiàn)是因為單片機的P 1.3按鍵出了故障,從而導(dǎo)致波形無法穩(wěn)定。</p><p>  2、正弦波頻率無法達到500 Hz以上。</p><p>  解決方法:經(jīng)過查詢各種資料以及不斷的學(xué)習(xí),發(fā)現(xiàn)是我們在程序中所取的采樣點過多,從而導(dǎo)致波形頻率無法繼續(xù)上升。從而通過減少采樣點的個數(shù),使得最后波形頻率達到了20

60、00 Hz。</p><p>  3、給波形添加直流偏置時遇到的阻礙。</p><p>  解決方法:為了給正弦波添加直流偏置我們采用了加法器。但對于負載電阻的選取遇到了一定的麻煩。若電阻過小,會導(dǎo)致直流偏置改變非常小,要想達到預(yù)想的直流偏置大小,只能加入非常大的電壓,這對電路是非常不利的。若負載電阻過大,雖然能滿足直流偏置的要求,但電路的放大倍數(shù)會非常小,甚至?xí)?dǎo)致波形反而縮小。所以通過

61、我們不斷的調(diào)試,最后發(fā)現(xiàn)當(dāng)負載電阻為33K時不僅滿足波形的放大,也滿足直流偏置的要求。</p><p>  本次課程設(shè)計中的創(chuàng)新點</p><p>  本次課程設(shè)計我們采用了全新的電路設(shè)計,利用了DAC0832直接輸出電壓值,省去了將電流轉(zhuǎn)換為電壓的步驟,不僅電路更加簡便,波形輸出也更加穩(wěn)定。在電路的焊接,調(diào)試上也更加簡單。</p><p>  也是在老師的鼓勵下,

62、使我們的電路從一開始的設(shè)計上就獨辟蹊徑,在后續(xù)的實驗中也順利地能完成此次課程設(shè)計。</p><p><b>  總結(jié)與反思</b></p><p>  此次課程設(shè)計綜合了我們在大學(xué)本科學(xué)習(xí)到的很多知識,包括微機原理與接口技術(shù),程序設(shè)計語言,模擬電子電路,數(shù)字電子電路等,不僅是對大學(xué)知識的綜合考驗,也是對于大學(xué)本科所學(xué)知識的一次深層次運用,加強了我們對于知識更加系統(tǒng),更

63、加深入的理解與運用。</p><p>  在對于電路的設(shè)計方面,也是考驗和鍛煉我們?nèi)W(xué)會怎么閱讀器件的說明手冊,怎么從中去篩選我們所需的重要信息。也使得我們更加具備了專業(yè)所需的基礎(chǔ)本領(lǐng)。在電路的焊接方面,也是對于焊接技術(shù)的再次鍛煉。</p><p>  通過此次課程設(shè)計,收獲頗多,無論是對于學(xué)習(xí)還是對于生活都是一次收獲。對于電路的分模塊調(diào)試,分模塊焊接;對于代碼的不斷調(diào)試修改,電路的不斷改

64、進,都是我們從中得到的進步與收獲。</p><p>  但此次課程設(shè)計仍舊存在一些遺憾,比如我們沒有完成波形的三路同時輸出。我們也將繼續(xù)反思,繼續(xù)學(xué)習(xí)。</p><p>  同時也感謝老師在整個過程中對于我們的支持和鼓勵,使我們順利地完成了此次課程設(shè)計。</p><p><b>  附源代碼:</b></p><p>&

65、lt;b>  /*</b></p><p><b>  * main.c</b></p><p><b>  */</b></p><p>  #include <msp430g2553.h></p><p>  #include <in430.h><

66、/p><p>  #define uint unsigned int</p><p>  #define uchar unsigned char</p><p>  #define ulong unsigned long</p><p>  #define SID BIT4</p><p>  #define SCLK

67、BIT3</p><p>  //#define CS BIT5</p><p>  //#define CS_SET P2OUT|=BIT4</p><p>  //#define CS_CLC P2OUT&=~BIT4</p><p>  //#define WR_SET P2OUT|=BIT5</p><

68、p>  //#define WR_CLC P2OUT&=~BIT5</p><p><b>  uint i=0;</b></p><p><b>  uint k=0;</b></p><p><b>  uint j=0;</b></p><p>  uint

69、 tt=0;</p><p>  uint Tccr0=160; //待定</p><p>  uint data0;</p><p>  uchar tcout=0;</p><p>  uchar tcoutm=0;</p><p>  uchar tcoutn=0;</p><p> 

70、 uchar high=255;</p><p>  uchar low=0;</p><p>  uint ttcout=0;</p><p>  uint num=89;</p><p>  uint data=0;</p><p>  uint h_time=100;</p><p>  

71、//uint h_fre=167;</p><p>  uint WaveSelect=5;</p><p>  ulong a=0;</p><p>  uint keynum[100]={</p><p>  50000,16000,8000,5333,4000,3200,2667,2286,2000,1778,1600,1455<

72、/p><p>  ,1333,1231,1143,1067,1000,889,842,800,762,727,696,667</p><p>  ,640,615,593,571,552,516,500,485,471,457,432,421</p><p>  ,410,400,390,381,372,364,356,348,340,333,327,320,314,3

73、08</p><p>  ,302,296,291,281,276,271,267,262,258,254,250,246,242</p><p>  ,239,235,232,229,225,222,219,216,213,211,208,203,200</p><p>  ,198,195,193,190,188,186,182,180,178,176,172,

74、170</p><p>  ,168,167,165,163,162,155,150,145,134,130,126,115};</p><p><b>  //延時程序</b></p><p>  #define CPU_F ((double)16000000)</p><p>  #define delay_us(x

75、) __delay_cycles((long)(CPU_F*(double)x/1000000.0))</p><p>  #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))</p><p>  //static unsigned char temp=0xaa; //定時

76、器</p><p>  uchar sindata[64]={71.18,77.29,83.29,89.11,94.70,100.00,104.97,109.55,113.70,</p><p>  117.38,120.56,123.20,125.29,126.79,127.70,128.00,127.70,126.79,125.29,123.20,</p><p&g

77、t;  120.56,117.38,113.70,109.55,104.97,100.00,94.70,89.11,83.29,77.29,71.18,65.00,</p><p>  58.82,52.71,46.71,40.89,35.30,30.00,25.03,20.45,16.30,12.62,9.44,6.80,4.71,3.21,</p><p>  2.30,2.00,2.

78、30,3.21,4.71,6.80,9.44,12.62,16.30,20.45,25.03,30.00,35.30,40.89,46.71,52.71,58.82,65.00};</p><p>  /*{66.98,68.96,70.93,72.90,74.86,76.81,78.74,80.67,82.58,84.47,86.34,88.19,</p><p>  90.02,91.

79、82,93.60,95.35,97.07,98.76,100.41,102.03,103.61,105.16,106.66,108.13,109.55,</p><p>  110.93,112.26,113.54,114.78,115.97,117.11,118.19,119.23,120.21,121.13,122.00,122.82,123.58,</p><p>  124.28,

80、124.92,125.50,126.02,126.48,126.88,127.22,127.50,127.72,127.88,127.97,128.00,127.97,</p><p>  127.88,127.72,127.50,127.22,126.88,126.48,126.02,125.50,124.92,124.28,123.58,122.82,122.00,</p><p> 

81、 121.13,120.21,119.23,118.19,117.11,115.97,114.78,113.54,112.26,110.93,109.55,108.13,106.66,</p><p>  105.16,103.61,102.03,100.41,98.76,97.07,95.35,93.60,91.82,90.02,88.19,86.34,84.47,82.58,</p><p

82、>  80.67,78.74,76.81,74.86,72.90,70.93,68.96,66.98,65.00,63.02,61.04,59.07,57.10,55.14,53.19,</p><p>  51.26,49.33,47.42,45.53,43.66,41.81,39.98,38.18,36.40,34.65,32.93,31.24,29.59,27.97,26.39,24.84,</

83、p><p>  23.34,21.87,20.45,19.07,17.74,16.46,15.22,14.03,12.89,11.81,10.77,9.79,8.87,8.00,7.18,6.42,5.72,</p><p>  5.08,4.50,3.98,3.52,3.12,2.78,2.50,2.28,2.12,2.03,2.00,2.03,2.12,2.28,2.50,2.78,3.1

84、2,3.52,3.98,</p><p>  4.50,5.08,5.72,6.42,7.18,8.00,8.87,9.79,10.77,11.81,12.89,14.03,15.22,16.46,17.74,19.07,20.45,21.87,</p><p>  23.34,24.84,26.39,27.97,29.59,31.24,32.93,34.65,36.40,38.18,39

85、.98,41.81,43.66,45.53,47.42,</p><p>  49.33,51.26,53.19,55.14,57.10,59.07,61.04,63.02,65.00</p><p><b>  };*/</b></p><p>  uchar count[200]={</p><p>  0x00,0

86、x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,</p><p>  0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x2

87、8,</p><p>  0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c,</p><p>  0x3d,0x3e,0x3f,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x

88、4b,0x4c,0x4d,0x4e,0x4f,0x50,</p><p>  0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f,0x60,0x61,0x62,0x63,0x64,</p><p>  0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0

89、x6e,0x6f,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,</p><p>  0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7f,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,</p><p>  0x8d,0x8e,0x8f,0x90,

90、0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,0xa0,</p><p>  0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,</p><p

91、>  0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf,0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,</p><p><b>  };</b></p><p>  void P1_IODect(void);</p><p>  /*******

92、*********************************************/</p><p><b>  //IO初始化</b></p><p>  /****************************************************/</p><p>  void IO_init(void)</p&

93、gt;<p><b>  {</b></p><p>  P1DIR=0xf0;</p><p>  P1REN |=BIT1+BIT2+BIT3;</p><p>  P1IE |=0x0E;</p><p>  P1IES|=0x0E;</p><p>  P2DIR=0x0f;

94、 //P2的低四位作為輸出</p><p><b>  }</b></p><p>  /****************************************************/</p><p><b>  //時鐘初始化</b></p><p>  /************

95、****************************************/</p><p>  void DCO_init(void)</p><p><b>  {</b></p><p>  BCSCTL1 = CALBC1_16MHZ; //設(shè)定cpu時鐘DCO頻率為16MHz</p><p>  DCO

96、CTL = CALDCO_16MHZ;</p><p>  BCSCTL2|=SELM_1+DIVM_0; //SMCLK選擇16MHz,不分頻</p><p>  BCSCTL2&=~SELS;</p><p><b>  }</b></p><p>  /*************************

97、***************************/</p><p><b>  //ADC初始化</b></p><p>  /****************************************************/</p><p>  void ADC_init(void)</p><p>&l

98、t;b>  {</b></p><p>  /*ADC10CTL0=ADC10SHT_2 + ADC10ON + ADC10IE;</p><p>  ADC10CTL1=INCH_0; //通道2</p><p>  ADC10CTL0 |=ENC; //使能*/</p>

99、<p>  ADC10CTL0&=~ENC;</p><p>  ADC10CTL0 |= ADC10ON +ADC10SHT_0 + SREF_0 +ADC10IE;</p><p>  ADC10CTL1 |= INCH_0+CONSEQ_0;</p><p>  ADC10AE0|=0x00;</p><p>  /

100、/ADC10CTL0 |= ENC + ADC10SC;</p><p><b>  _EINT();</b></p><p><b>  }</b></p><p>  /****************************************************/</p><p>&

101、lt;b>  //定時器A初始化</b></p><p>  /****************************************************/</p><p>  void Timer_A0_init(void)</p><p><b>  {</b></p><p>  T

102、A0CTL|=TASSEL_2+MC_1; //TA時鐘源選擇SMCLK,連續(xù)增計數(shù)模式</p><p>  TA0CCR0=167;</p><p>  TA0CCTL0|=CCIE; //打開 比較模塊0中斷</p><p><b>

103、;  _EINT();</b></p><p><b>  }</b></p><p>  /****************************************************/</p><p>  //ADC中斷服務(wù)程序</p><p>  /*********************

104、*******************************/</p><p>  #pragma vector=ADC10_VECTOR</p><p>  __interrupt void ADC10(void)</p><p><b>  {</b></p><p>  data0=ADC10MEM;

105、 //獲取外部輸入的電壓</p><p><b>  /*</b></p><p>  if(100<data0<600)</p><p><b>  {</b></p><p>  data=(uint)(data0/2-5

106、0);</p><p>  h_time=180-data;</p><p><b>  }*/</b></p><p>  h_time=data0*15/128+40;</p><p>  //TA0CCR0=data0*45+115;</p><p><b>  }</b&g

107、t;</p><p>  /****************************************************/</p><p><b>  //輸出程序</b></p><p>  /****************************************************/</p><

108、p>  void write_dac(uchar da)</p><p><b>  {</b></p><p>  P1OUT=da; //P1P2組合輸出</p><p><b>  P2OUT=da;</b></p><p>  delay_us(1);</

109、p><p><b>  }</b></p><p>  /****************************************************/</p><p>  //定時器中斷服務(wù)程序</p><p>  /***********************************************

110、*****/</p><p>  #pragma vector =TIMER0_A0_VECTOR</p><p>  __interrupt void Timer_A0(void) //CCIFG中斷被響應(yīng)后,該標(biāo)志位自動清零</p><p><b>  {</b></p><p

111、>  if(WaveSelect==5)</p><p><b>  {</b></p><p><b>  if(j<64)</b></p><p><b>  {</b></p><p>  write_dac(sindata[j]) ;

112、 //正弦波產(chǎn)生</p><p><b>  j++;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  j=0;</b></p><p>  TA

113、0CCR0 =Tccr0;</p><p><b>  }</b></p><p>  if(WaveSelect==10)</p><p><b>  {</b></p><p>  if(ttcout==0)</p><p><b>  {</b>&

114、lt;/p><p>  if(tcoutm<200)</p><p><b>  {</b></p><p>  write_dac(tcoutm) ; //三角波產(chǎn)生上升段</p><p>  tcoutm = tcoutm+2;</p><p><b&

115、gt;  }</b></p><p><b>  else</b></p><p><b>  ttcout=1;</b></p><p>  TA0CCR0 =Tccr0;</p><p><b>  }</b></p><p>  if(

116、ttcout==1)</p><p><b>  {</b></p><p>  if(tcoutm>0)</p><p><b>  {</b></p><p>  write_dac(tcoutm) ; //三角波產(chǎn)生下降段</p><p

117、>  tcoutm = tcoutm-2;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  ttcout=0;</b></p><p>  TA0CCR0 =Tccr0;</p><p&

118、gt;<b>  }</b></p><p><b>  }</b></p><p>  if(WaveSelect==15)</p><p><b>  {</b></p><p>  if(ttcout==0)</p><p><b>  

119、{</b></p><p>  if(tcoutn<h_time)</p><p><b>  {</b></p><p>  write_dac(high) ; //方波產(chǎn)生上升段</p><p><b>  tcoutn++;</b><

120、/p><p><b>  }</b></p><p><b>  else</b></p><p><b>  ttcout=1;</b></p><p>  TA0CCR0 =Tccr0;</p><p><b>  }</b><

121、;/p><p>  if(ttcout==1)</p><p><b>  {</b></p><p>  if(tcoutn<200)</p><p><b>  {</b></p><p>  write_dac(low) ; //方波

122、產(chǎn)生下降段</p><p><b>  tcoutn++;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  tcoutn=0;</b></p><p><

123、;b>  ttcout=0;</b></p><p>  TA0CCR0 =Tccr0;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  #pr

124、agma vector = PORT1_VECTOR</p><p>  __interrupt void PORT1_ISR(void)</p><p><b>  {</b></p><p>  //-----啟用Port1事件檢測函數(shù)-----</p><p>  P1_IODect();//檢測通

125、過,則會調(diào)用事件處理函數(shù)</p><p>  P1IFG=0; //退出中斷前必須手動清除IO口中斷標(biāo)志</p><p><b>  }</b></p><p>  /***********************************************************

126、*******************************************</p><p>  * 名 稱:P1_IODect()</p><p>  * 功 能:判斷具體引發(fā)中斷的IO,并調(diào)用相應(yīng)IO的中斷事件處理函數(shù)</p><p><b>  * 入口參數(shù):無</b></p><p&

127、gt;<b>  * 出口參數(shù):無</b></p><p>  * 說 明:該函數(shù)兼容所有8個IO的檢測,請根據(jù)實際輸入IO激活“檢測代碼”。</p><p>  * 本例中,僅有P1.3被用作輸入IO,所以其他7個IO的“檢測代碼”沒有被“激活”。</p><p>  * 范 例:無</p>

128、<p>  ******************************************************************************************************/</p><p>  void P1_IODect(void)</p><p><b>  {</b></p><p>

129、;  unsigned int Push_Key=0;</p><p>  //-----排除輸出IO的干擾后,鎖定唯一被觸發(fā)的中斷標(biāo)志位-----</p><p>  Push_Key=P1IFG&(~P1DIR);</p><p>  //-----延時一段時間,避開機械抖動區(qū)域-----</p><p>  __delay_cy

130、cles(10000);//消抖延時</p><p>  //----判斷按鍵狀態(tài)是否與延時前一致-----</p><p>  if((P1IN&Push_Key)==0) //如果該次按鍵確實有效</p><p><b>  {</b></p><p>  /

131、/----判斷具體哪個IO被按下,調(diào)用該IO的事件處理函數(shù)-----</p><p>  switch(Push_Key){</p><p>  // case BIT0:P10_Onclick();break;</p><p>  case BIT1:</p><p><b>  {</b></p>

132、<p>  WaveSelect+=5;</p><p><b>  tt=1;</b></p><p>  switch(WaveSelect)</p><p><b>  {</b></p><p>  case 5: break;</p><p>  

133、case 10: break;</p><p>  case 15: break;</p><p>  // case 20: break;</p><p>  default: WaveSelect=5;break;</p><p><b>  }</b></p><p>  };br

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論