畢業(yè)設(shè)計(jì)--音樂演奏器設(shè)計(jì)_第1頁
已閱讀1頁,還剩26頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  畢業(yè)設(shè)計(jì)</b></p><p>  題目 音樂演奏器設(shè)計(jì)</p><p>  2010年10月30日</p><p><b>  音樂演奏器設(shè)計(jì)</b></p><p>  摘要:本次設(shè)計(jì)的遠(yuǎn)程音樂演奏器是日新月異的電子技術(shù)的產(chǎn)物,該演奏器電路主要由ATMEG32

2、、PT2262對(duì)數(shù)據(jù)進(jìn)行編碼,送入發(fā)射模塊F05C,通過天線發(fā)射出去;接收模塊J04E則是將收到的信號(hào)進(jìn)行調(diào)解,然后送人解碼器PT2272解碼,解碼出數(shù)據(jù)。最后送入功放發(fā)出美妙的音樂。經(jīng)測試音階頻率、功放、存儲(chǔ)并重放等各項(xiàng)性能指標(biāo)均達(dá)到設(shè)計(jì)要求。</p><p>  關(guān)鍵詞:遠(yuǎn)程音樂器;編碼器;解碼器;發(fā)射模塊;接收模塊</p><p><b>  目錄</b><

3、;/p><p><b>  摘要1</b></p><p><b>  目錄2</b></p><p><b>  緒論3</b></p><p><b>  1.系統(tǒng)設(shè)計(jì)3</b></p><p>  1.1 總體設(shè)計(jì)方案的論

4、證與比較3</p><p>  2.單元硬件電路設(shè)計(jì)4</p><p>  2.1 功率放大電路4</p><p>  2.2 無線數(shù)據(jù)收發(fā)電路5</p><p><b>  3.軟件設(shè)計(jì)6</b></p><p>  3.1 接收部分程序設(shè)計(jì)6</p><p>

5、;  3.2 發(fā)射部分程序設(shè)計(jì)7</p><p><b>  4.系統(tǒng)測試7</b></p><p>  4.1 測試使用的儀器7</p><p>  4.2 指標(biāo)測試和測試結(jié)果7</p><p>  4.2.2 功率放大器額定功率測試8</p><p>  4.2.3 帶寬及距離測試

6、8</p><p><b>  結(jié)論8</b></p><p><b>  致謝9</b></p><p><b>  參考文獻(xiàn)9</b></p><p><b>  附錄A10</b></p><p><b> 

7、 附錄B11</b></p><p><b>  附錄C14</b></p><p><b>  緒論</b></p><p>  傳統(tǒng)的音樂演奏器是通過線互相連接的,所以設(shè)計(jì)一款新型的無線音樂演奏器變得非常有價(jià)值。音樂演奏器由主系統(tǒng)和從系統(tǒng)兩大部分組成。</p><p><b

8、>  1、系統(tǒng)設(shè)計(jì)</b></p><p>  1.1總體設(shè)計(jì)方案的論證與比較</p><p> ?。?)音樂演奏器設(shè)計(jì)方案一</p><p>  音樂演奏器設(shè)計(jì)方案一如圖1-1所示。系統(tǒng)主要以ATMEGA8和ATMEGA32單片機(jī)為核心并外接一些外圍單元電路。ATMEGA8和ATMEGA32是基于增強(qiáng)的ARV RISC結(jié)構(gòu)的低功耗CMOS微控制器

9、,由于其先進(jìn)的指令集以及單時(shí)鐘周期指令執(zhí)行時(shí)間,從而可以緩減系統(tǒng)在功耗和處理速度之間的矛盾。其價(jià)格僅與低檔單片機(jī)相當(dāng),在加上ARV單片機(jī)的系統(tǒng)內(nèi)可編程特性,使得無需購買昂貴的仿真器和編程器也可進(jìn)行單片機(jī)嵌入式系統(tǒng)的設(shè)計(jì)和開發(fā)。</p><p>  圖1-1 ATMEGA構(gòu)成的演奏器結(jié)構(gòu)框圖</p><p>  (2)音樂演奏器方案二</p><p>  音樂演奏器設(shè)

10、計(jì)方案二圖1-2所示。系統(tǒng)主要以AT89C51單片機(jī)為核心并外接一些外圍單元電路。ATMEL的AT89C51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了靈活性高且價(jià)廉的方案。極限工作頻率是24M,同時(shí)支持并行寫入。</p><p>  圖1-2 AT89C51構(gòu)成的演奏器結(jié)構(gòu)框圖</p><p>  經(jīng)上述方案論證與比較,AVR單片機(jī)比AT89C51在運(yùn)行速度、程序燒寫優(yōu)越,還有價(jià)格相當(dāng)

11、,故本系統(tǒng)采用方案一。</p><p>  2、單元硬件電路設(shè)計(jì)</p><p><b>  2.1功率放大電路</b></p><p>  功率放大電路采用TDA2030高保真集成功率放大芯片來設(shè)計(jì),如圖2-1所示。器輸出功率大于10W。VD1、VD2是保護(hù)二極管,RP是音量調(diào)節(jié)電位器,R2、R3決定了該電路交流負(fù)反饋的強(qiáng)弱閉環(huán)增益。該電路閉

12、環(huán)增益為(R2+R3)/R2=(0.68+22)/0.68=33.3倍,C4、C5為電源高頻旁路電容,防止電路產(chǎn)生自激震蕩。C2起隔直流作用,以使電路直流為100%負(fù)反饋。靜態(tài)工作點(diǎn)穩(wěn)定性好。</p><p>  圖2-1功率放大電路圖</p><p>  2.2無線電數(shù)據(jù)收發(fā)電路</p><p>  如圖2-2所示。單片機(jī)將4位并行數(shù)據(jù)輸出至編碼器PT2262,P

13、T2262對(duì)4位并行數(shù)據(jù)進(jìn)行編碼,轉(zhuǎn)換成串行信號(hào)送人發(fā)射模塊F05C,通過天線發(fā)射出去;接收模塊則是將收到的信號(hào)進(jìn)行解調(diào),然后送人解碼器PT2272,解碼出4位并行數(shù)據(jù)。采用了專用發(fā)射模塊F05C和接收模塊J04E,該對(duì)模塊是專為這種編碼電路無線傳輸而設(shè)計(jì)的低速傳輸模塊。該模塊采用SMT樹脂封裝,體積小巧,工作在315MHz頻率上,可以長時(shí)間連續(xù)發(fā)送和接收。發(fā)射模塊F05C采用聲表諧振器穩(wěn)頻,頻率一致性好,免調(diào)試,特別適合多發(fā)一收無線遙

14、控及數(shù)據(jù)傳輸系統(tǒng)。</p><p>  圖2-2無線電數(shù)據(jù)收發(fā)電路</p><p><b>  3、軟件設(shè)計(jì)</b></p><p>  采用C編寫程序比匯編語言更符合人們的思考習(xí)慣,開發(fā)者可以擺脫與硬件無必要的接觸,更專心的考慮功能和算法而不是考慮一些細(xì)節(jié)問題,這樣就減少了開發(fā)和調(diào)試時(shí)間。C語言具有良好的程序語言結(jié)構(gòu),適用于模塊化程序設(shè)計(jì),又

15、便于整個(gè)程序的管理,還可增強(qiáng)可讀性和移植性。程序分為接收部分和發(fā)射部分。</p><p>  3.1接收部分程序設(shè)計(jì)</p><p>  圖3-1接收部分程序框圖</p><p>  3.2發(fā)射部分程序設(shè)計(jì)</p><p>  圖3-2發(fā)射部分程序框圖</p><p><b>  4、系統(tǒng)測試</b&g

16、t;</p><p>  4.1測試使用的儀器</p><p>  示波器、函數(shù)信號(hào)發(fā)生器、數(shù)字式萬用表、頻率計(jì)</p><p>  4.2指標(biāo)測試和測試結(jié)果</p><p>  4.2.1音節(jié)頻率準(zhǔn)確度測試</p><p>  采用頻率計(jì)測量準(zhǔn)確度,表4.2.1為記錄表格。式4.2.1為頻率準(zhǔn)確度的計(jì)算公式。<

17、/p><p><b> ?。?.2.1)</b></p><p>  式中,A為頻率準(zhǔn)確度,為標(biāo)準(zhǔn)頻率,為被測頻率。</p><p>  表4.2.1音階頻率準(zhǔn)確度記錄表</p><p>  4.2.2功率放大器額定功率測試</p><p>  由示波器觀察其輸出波形。功放輸入端輸入頻率為1KHz,峰

18、峰值為200mv的正弦波,額定功率可達(dá)3.54W。式4.2.2為額定功率的計(jì)算公式。</p><p><b>  (4.2.2) </b></p><p>  4.2.3帶寬及距離測試</p><p>  帶寬檢測采用函數(shù)信號(hào)發(fā)生器把輸出信號(hào)接在功放輸入端,示波器接在喇叭兩端,經(jīng)測試,功率放大器帶寬在大于50Hz~5000Hz輸出信號(hào)無明顯失真

19、,達(dá)到設(shè)計(jì)要求。</p><p>  距離測試:經(jīng)實(shí)際測試,在距離6m處,接收部分能清晰地收到發(fā)射部分發(fā)出的信號(hào)。</p><p><b>  結(jié)論</b></p><p>  本次設(shè)計(jì)主要由發(fā)射和接收兩大部分組成。由于采用單片機(jī)編程使得音階的頻率準(zhǔn)確性大大提高,還采用發(fā)光二極管來指示使得工作狀態(tài)簡單明了。本作品達(dá)到的要求和技術(shù)指標(biāo)如下:<

20、;/p><p>  (1)無線鍵盤控制功能,距離>5m;</p><p>  (2)樂曲的音階于12個(gè)音階內(nèi),C調(diào)、節(jié)拍頻率1Hz;</p><p> ?。?)一次演奏后可以存儲(chǔ)并重放;</p><p>  (4)音階準(zhǔn)確,隨機(jī)抽測一點(diǎn)頻率,頻率誤差均達(dá);</p><p> ?。?)功率放大器滿足以下要求:</

21、p><p> ?、兕~定功率大于2W(負(fù)載電阻8的情況下);</p><p> ?、趲挻笥?0Hz~5000Hz(負(fù)載電阻8的情況下);</p><p>  ③在額定功率及帶寬范圍內(nèi)用示波器觀察無明顯失真。</p><p> ?。?)功率放大器失真度<5%(1000Hz時(shí),滿功率輸出);</p><p><b&

22、gt;  致謝</b></p><p>  畢業(yè)設(shè)計(jì)得以完成,要感謝的人實(shí)在太多了,首先要感謝我的指導(dǎo)老師**,因?yàn)樵O(shè)計(jì)是在**老師的悉心指導(dǎo)下完成的,傾注了**老師大量的心血。**老師還指導(dǎo)我的論文的寫作的方向和構(gòu)架,并對(duì)本論文進(jìn)行逐字批閱,指正出其中錯(cuò)誤之處,使我有了思考的方向,他循循善誘的教導(dǎo)和不拘一格的思路給予我無盡的啟迪,他一絲不茍的作風(fēng),將一直是我學(xué)習(xí)的榜樣。**老師要指導(dǎo)很多同學(xué)的論文,

23、加上本來就有的教學(xué)任務(wù),工作之大可想而知,但在一次次的回稿中,精確到每一個(gè)字的批改給了我深刻的印象,使我在論文之外明白了做學(xué)問所應(yīng)有的態(tài)度。在此,謹(jǐn)向**老師表示崇高的敬意和衷心的感謝!設(shè)計(jì)的順利完成,還離不開**同學(xué)的幫助,另外,還要感謝在大學(xué)期間所有傳授我知識(shí)的老師,是你們的悉心教導(dǎo)使我有了良好的專業(yè)課知識(shí),感謝所有給我?guī)椭睦蠋?,謝謝你們!</p><p><b>  參考文獻(xiàn)</b>

24、</p><p> ?。?)曾令琴,模擬電子技術(shù)[M],北京:人民郵電出版社,2008。</p><p> ?。?)張靖武,單片機(jī)系統(tǒng)的PROTEUS設(shè)計(jì)與仿真[M],北京:電子工業(yè)出版社,2007。</p><p> ?。?)付曉光,單片機(jī)原理與實(shí)用技術(shù)[J],北京:清華大學(xué)出版社;北方交通出版社,2004。</p><p> ?。?)葉建

25、波,余志強(qiáng).EDA技術(shù)[M].北京 :清華大學(xué)出版社;北京交通大學(xué)出版社,2005。</p><p> ?。?)黃志瑋,全國大學(xué)生電子設(shè)計(jì)競賽技能訓(xùn)練[M].北京:北京航天大學(xué)出版社,2007。</p><p>  附錄A 主要元器件清單</p><p><b>  附錄B 電路原理圖</b></p><p><b

26、>  圖B1 主系統(tǒng)</b></p><p><b>  圖B2 從系統(tǒng)</b></p><p>  圖B3 功率放大電路</p><p>  圖B4 功放電源電路</p><p><b>  附錄 C程序</b></p><p><b>  從系

27、統(tǒng)程序</b></p><p>  #include <iom8v.h></p><p>  #include <macros.h></p><p>  #include <delay.h></p><p>  #pragma interrupt_handler timer2_isr:4<

28、/p><p>  #define TD_PORT PORDTD</p><p>  #define RD_PORT PIND</p><p>  #define TD_EN_ON PORDTB &=0XEF</p><p>  #define TD_EN_OFF PORDTB |=0X10</p&g

29、t;<p>  #define RD_FLAG PINB &0X08</p><p>  #define ledA_ON PORTC |=(0X01<<5)</p><p>  #define ledA_OFF PORTC &=~(0X01<<5)</p><p>  #define

30、 ledB_ON PORTC |=(0X01<<4)</p><p>  #define ledB_OFF PORTC &=~(0X01<<4)</p><p>  #define ledC_ON PORTC =(0X01<<3)</p><p>  #define ledC_OFF PO

31、RTC &=~(0X01<<3)</p><p>  #define ledD1_ON PORTC |=(0X01<<2)</p><p>  #define ledD1_OFF PORTC &=~(0X01<<2)</p><p>  #define SD_TIME 0X01</p&

32、gt;<p><b>  //頻率基數(shù)</b></p><p>  const unsigned int Fre_Data[11]={</p><p>  18208,16216,14447,13636,12149,10823,10216,9100,8108,7224,6818};</p><p>  //volatile uns

33、ingned char</p><p>  volatile unsingned char Sound_Delay;</p><p>  volatile unsingned char Sound_Data;</p><p>  volatile unsingned char Led_Flag;</p><p><b>  //CT

34、C</b></p><p>  void time1_init(void)</p><p><b>  {</b></p><p>  TIMSK=0X01;</p><p>  TCNT1=0X00;</p><p>  TCCRIA=OXOO;//OxO1 b通道,OX40 a通道

35、,0X50 兩通道</p><p>  TCCR1B=0X08;//0x09 啟動(dòng)</p><p>  OCR1A=0XFFFF;</p><p>  OCR1B=0XFFFF; </p><p><b>  }</b></p><p><b>  //10ms</b><

36、;/p><p>  void time2_init(void)</p><p><b>  {</b></p><p>  TIMSK=0X08;</p><p>  TCCR2=0X0F;//1024</p><p><b>  OCR2=117;</b></p>

37、<p><b>  }</b></p><p>  //time2 中斷</p><p>  void timer2_isr(void)</p><p><b>  {</b></p><p>  if(Sound_Delay)</p><p><b>

38、  {</b></p><p>  Sound_Delay--;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  //完成 </b></p><p>  void port_ini

39、t(void)</p><p><b>  {</b></p><p>  PORT=0x00;</p><p>  DDRD=0x0F;</p><p>  PORTB=0x10;</p><p>  DDRB=0x16;</p><p>  PORTC=0x00;<

40、;/p><p>  DDRC=0x3F;</p><p><b>  }</b></p><p>  void reg_init(void)</p><p><b>  {</b></p><p>  Sound_Delay=0X00;</p><p> 

41、 Led_Flag=0x00;</p><p>  Sound_Data=0x00;</p><p><b>  }</b></p><p>  void read_data(void)</p><p><b>  {</b></p><p>  unsingned char

42、 rd_temp;</p><p>  if(RD_FLAG)</p><p><b>  {</b></p><p><b>  LedD1_ON;</b></p><p>  rd_temp=RD_PORT;</p><p>  rd_temp &=0xf0;&l

43、t;/p><p>  rd_temp=(rd_temp>>4);</p><p>  if(rd_temp==0x01)</p><p><b>  {</b></p><p><b>  LedA_ON;</b></p><p><b>  LedB_OF

44、F;</b></p><p><b>  LedC_OFF;</b></p><p>  Led_Flag=0x01;</p><p><b>  }</b></p><p>  if(rd_temp==0x02)</p><p><b>  {<

45、/b></p><p><b>  LedB_ON;</b></p><p><b>  LedA_OFF;</b></p><p><b>  LedC_OFF;</b></p><p>  Led_Flag=0x02;</p><p><

46、b>  }</b></p><p>  if(rd_temp==0x03)</p><p><b>  {</b></p><p><b>  LedC_ON;</b></p><p><b>  LedB_OFF;</b></p><p&

47、gt;<b>  LedA_OFF;</b></p><p>  Led_Flag=0x03;</p><p><b>  }</b></p><p>  if(rd_temp==0x04)</p><p><b>  {</b></p><p><

48、;b>  }</b></p><p>  if(rd_temp>=0x05)</p><p><b>  {</b></p><p>  Sound_Delay=SD_TIME;</p><p>  if(Sound_Data !=rd_temp)</p><p>  So

49、und_Data=rd_temp;</p><p>  TCCR1A=0X00;</p><p>  TCCR1B=0X08;</p><p>  TCNT1=0X00;</p><p>  OCR1A=Fre_Data[Sound_Data-0X05];</p><p>  TCCR1A=0X40;</p>

50、;<p>  TCCR1B=0X09;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p&g

51、t;<b>  {</b></p><p>  LedD1_OFF;</p><p>  if(Sound_Delay==0x00)</p><p><b>  {</b></p><p>  TCCR1A=0X00;</p><p>  TCCR1B=0X08;</p

52、><p>  TCNT1=0X00;</p><p>  Sound_Data=0x00;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  v

53、oid main(void)</p><p><b>  {</b></p><p>  port_init();</p><p>  reg_init();</p><p>  time1_init();</p><p>  time2_init();</p><p>&

54、lt;b>  SEI();</b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  read_data();</p><p><b>  }</b></p><p>&l

55、t;b>  }</b></p><p><b>  //主系統(tǒng)程序:</b></p><p>  #include <iom32v.h></p><p>  #include <macros.h></p><p>  #inculde <delay.h></p&

56、gt;<p>  #pragma interrupt_handler timer2_isr:5</p><p>  #define TD_PORT PORT</p><p>  #define RD_PORT PINC</p><p>  #define TD_EN_ON PORTA &=0XBF</p>&

57、lt;p>  #define TD_EN_OFF PORTA |=0X40</p><p>  #define TD_FLAG PINA & 0X40</p><p>  #define KevHigh PIND </p><p>  #define KeyLow PINB</p><p>  #

58、define Key1 0X3DFF</p><p>  #define Key2 OX3F7F</p><p>  #define Key3 OX3FDF</p><p>  volatile unsingned int Sound_Long;</p><p>  volatile unsingne

59、d int Sound_Cut;</p><p>  volatile unsingned char Mold;</p><p>  volatile unsingned char Run_Flag;</p><p>  volatile unsingned char Time2_Cut;</p><p>  volatile unsingn

60、ed char Key_Sure;</p><p>  volatile unsingned char Key_Cur;</p><p>  volatile unsingned char Now_Data;</p><p>  volatile unsingned char Led_Time;</p><p>  const unsign

61、ed int Sound_key[11]={</p><p>  0x1FFF,0x2FFF,OX37FF,0x3BFF,0X3EFF,</p><p>  0x3FBF,0X3FEF,0X3FF7,0X3FFB,0x3FFD,</p><p><b>  0x3FFF</b></p><p><b>  };

62、</b></p><p><b>  //10ms</b></p><p>  void time2_init(void)</p><p><b>  {</b></p><p>  TIMSK=0X80;</p><p>  TCCR2=0X0F;//1024&

63、lt;/p><p><b>  OCR2=117;</b></p><p><b>  }</b></p><p>  void eep_write(unsigned int Address, unsigned char Data)</p><p><b>  {</b></

64、p><p>  while(EECR & (1<<EEWE));</p><p>  EEAR=Address;</p><p>  EEDR=Data;</p><p>  EECR |=(1<<EEMWE);</p><p>  EECR |=(1<<EEWE);</p

65、><p><b>  }</b></p><p>  unsingned char eep_read(unsigned int Address)</p><p><b>  {</b></p><p>  while(EECR &(1<<EEWE));</p><

66、p>  EEAR=Address;</p><p>  EECR |=(1<<EERE);</p><p>  return EEDR;</p><p><b>  }</b></p><p>  //time2 中斷</p><p>  void timer2_isr(void

67、)</p><p><b>  {</b></p><p>  unsigned int TItemp;</p><p>  unsigned int TItemp2;</p><p>  Key_Sure=0x01;</p><p>  Time2_Cut++;</p><p

68、>  if(Time2_Cut>=0x0a)</p><p><b>  {</b></p><p>  Time2_Cut=0x00;</p><p>  if(Sound_Long <500)</p><p><b>  {</b></p><p>  

69、TItemp2=Sound_Long+4;</p><p>  eep_write(TItemp2,Now_Data);</p><p>  Sound_Long ++;</p><p><b>  }</b></p><p><b>  else</b></p><p>&

70、lt;b>  {</b></p><p>  Sound_Long=0x00;</p><p>  Sound_Cut=0x00;</p><p>  Run_Flag=0x00;</p><p><b>  }</b></p><p><b>  }</b>

71、;</p><p>  if((Mold==0x03)&&(Run_Flag))</p><p><b>  {</b></p><p>  if(Sound_Long >Sound_Cut)</p><p><b>  {</b></p><p>  

72、TItemp2=Sound_Cut_cut+4;</p><p>  TItemp=eep_read(TItemp2);</p><p>  if((TItemp>=0x10)&&(TItemp<=0x05))</p><p><b>  {</b></p><p>  TItemp=0x00

73、;</p><p><b>  }</b></p><p>  TD_EN_OFF;</p><p>  TD_PORT &=0xF0;</p><p>  TD_PORT |=TItemp;</p><p><b>  TD_EN_ON;</b></p>

74、<p>  delay_nms(5);</p><p>  TD_EN_OFF;</p><p>  Sound_Cut ++;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {<

75、;/b></p><p>  Sound_Long=0x00;</p><p>  Sound_Cut=0x00;</p><p>  Run_Flag=0x00;</p><p><b>  }</b></p><p><b>  }</b></p>&

76、lt;p><b>  }</b></p><p><b>  }</b></p><p><b>  //完成</b></p><p>  void port_init(void)</p><p><b>  {</b></p><

77、;p>  PORT=0x00;</p><p>  DDRC=0x0F;</p><p>  PORTA=0x40;</p><p>  DDRA=0x7F;</p><p>  PORTB=0xFF;</p><p>  DDRB=0x00;</p><p>  PORTD=0x3F;&

78、lt;/p><p>  DDRD=0x00;</p><p><b>  }</b></p><p>  void reg_init(void)</p><p><b>  {</b></p><p>  Sound_Long=0x00;</p><p>

79、  Sound_Cut=0X00;</p><p>  Mold=0X01;</p><p>  Run_Flag=0X00;</p><p>  Time2_Cut=0X00;</p><p>  Key_Sure=0x00;</p><p>  Key_Cur=0x00;</p><p> 

80、 Key_Data=0x3FFF;</p><p>  Now_Data=0x00;</p><p><b>  }</b></p><p>  void Online_Out(void)</p><p><b>  {</b></p><p>  if((TD_FlAG))

81、==0)</p><p><b>  {</b></p><p>  TD_EN_OFF;</p><p>  delay nus(10);</p><p>  TD_PORT &=0xF0;</p><p>  TD_PORT |=Mold;</p><p>&l

82、t;b>  TD_EN_ON;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void Key_Find(void)</p><p><b>  {</b></p><p>

83、  unsigned int KF_Temp;</p><p>  unsigned char KF_Temp;</p><p>  KF_Temp=KeyHigh & 0x3f;</p><p>  KF_temp|=KeyLow;</p><p>  if(KF_Temp !=0x3fff)</p><p>

84、;<b>  {</b></p><p>  if(KF_Temp==Key_Data)</p><p><b>  {</b></p><p>  Key_Cur ++;</p><p>  if(Key_Cur>=0x08)</p><p><b>  {

85、</b></p><p>  Key_Cur=0x04;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b>

86、;</p><p>  Key_Data=KF_Temp;</p><p>  Key_Cur=0x00;</p><p><b>  }</b></p><p>  if((KF_Temp==KEY1)&&(Key_Cur==0x04))//KEY1</p><p><b&

87、gt;  {</b></p><p>  if((Mold==0x02)&&(Run_Flag))</p><p><b>  {</b></p><p>  KF_Temp2=Sound_Long&0xFF;</p><p>  eep_write(0x02,KF_Temp2);&l

88、t;/p><p>  KF_Temp2=(Sound_Long>>8);</p><p>  eep_write(0x01,KF_Temp2);</p><p><b>  }</b></p><p>  Sound_Long=0x00;</p><p>  Sound_Cut=0x00;

89、</p><p>  Run_Flag=0X00;</p><p>  Mold=0X01;</p><p>  TD_EN_OFF;</p><p>  delay_nus(10);</p><p>  TD_PORT&=0xF0;</p><p>  TD_PORT |=0X01;&

90、lt;/p><p><b>  TD_EN_ON;</b></p><p>  Now_Data=0x00;</p><p><b>  }</b></p><p>  if((KF_Temp==KEY2)&&(Key_Cur==0x04))//KEY2</p><p

91、><b>  {</b></p><p>  Sound_Long=0x00;</p><p>  Sound_Cut=0x00;</p><p>  eep_write(0x01,0x00); </p><p>  eep_write(0x02,0x00);</p><p>  ee

92、p_write(0x03,0x00);</p><p>  TD_EN_OFF;</p><p>  delay_nus(10);</p><p>  TD_PORT &=0xF0;</p><p>  TD_PORT |=0X02;</p><p><b>  TD_EN_ON;</b>

93、</p><p>  Mold=0X02;</p><p>  Run_Flag=0X01;</p><p>  Now_Data=0x00;</p><p><b>  }</b></p><p>  if((KF_Temp==KEY3)&&(Key_Cur==0x04))//K

94、EY3</p><p><b>  {</b></p><p>  if((Mold==0x02)&&(Run_Flag))</p><p><b>  {</b></p><p>  KF_Temp2=Sound_Long&0xFF;</p><p>

95、;  eep_write(0x02,KF_Temp2);</p><p>  KF_Temp2=(Sound_long>>8);</p><p>  eep_write(0x01,KF_Temp2);</p><p><b>  }</b></p><p>  Sound_Long=eep_read(0x01

96、);</p><p>  Sound_Long=(Sound_Long<<8);</p><p>  Sound_Long=eep_read(0x02);</p><p>  Sound_Cut=0x00;</p><p>  TD_EN_OFF;</p><p>  delay_nus(10);</

97、p><p>  TD_PORT&=0xF0;</p><p>  TD_PORT|=0x03;</p><p><b>  TD_EN_ON;</b></p><p>  if((Sound_Long>0)&&(Sound_Long<511))</p><p>&l

98、t;b>  {</b></p><p>  Run_Flag=0x00;</p><p><b>  }</b></p><p>  Mold=0X03;</p><p>  Now_Data=0x00;</p><p><b>  }</b></p&

99、gt;<p>  if((Mold)==0x01)||((Mold==0X02)&&(Run_Flag==0X01)))</p><p><b>  {</b></p><p>  for(KF_Temp2=0X00;KF_Temp2<11;KF_Temp2++)</p><p><b>  {&l

100、t;/b></p><p>  if(KF_Temp==Sound_Key[KF_Temp2])</p><p><b>  {</b></p><p>  TD_EN_OFF;</p><p>  delay_nus(10);</p><p>  Now_Data=KF_Temp2+0x0

101、5;</p><p>  TD_PORT |=Now_Data;</p><p><b>  TD_EN_ON;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b

102、></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  Key_Data=0x3fff;</p><p>  Key_Cur=0x00;</p>

103、;<p><b>  {</b></p><p>  TD_EN_OFF;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  v

104、oid LED(void)</p><p><b>  {</b></p><p>  PORTA&=0XF0;</p><p>  PORTA|=(1<<(Mold-1));</p><p>  if((TD_FLAG)==0)</p><p><b>  {<

105、;/b></p><p>  PORT |=(1<<3);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  PORTA &=0xf

106、7;</p><p><b>  }</b></p><p>  if(Run_Flag)</p><p><b>  {</b></p><p>  if(Led_Time >5)</p><p><b>  {</b></p>&

107、lt;p>  Led_Time=0x00;</p><p>  if(Mold==2)</p><p><b>  {</b></p><p>  PORT^=0X10;</p><p><b>  }</b></p><p><b>  else</b

108、></p><p><b>  {</b></p><p>  PORT &=0XEF;</p><p><b>  }</b></p><p>  if(Mold==3)</p><p><b>  {</b></p>&l

109、t;p>  PORT^=0X20;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  PORTA &=0XDF;</p><p><b&g

110、t;  }</b></p><p><b>  }</b></p><p>  Led_Time ++;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void main(void)<

111、;/p><p><b>  {</b></p><p>  port_init();</p><p>  reg_init();</p><p>  time2_init();</p><p><b>  SEI();</b></p><p><b&

112、gt;  while(1)</b></p><p><b>  {</b></p><p>  Key_Sure=0x00;</p><p>  Key_Find();</p><p><b>  LED();</b></p><p><b>  }&l

溫馨提示

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

評(píng)論

0/150

提交評(píng)論