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

下載本文檔

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

文檔簡介

1、<p>  2015——2016學年第一學期</p><p>  《單片機原理及應用》</p><p><b>  課程設計報告</b></p><p>  題目 基于單片機的電子琴設計 </p><p>  班 級 </p><p>  姓 名

2、 </p><p>  學 號 </p><p>  指導老師 </p><p>  成 績 </p><p><b>  日 期 </b></p><p>  題目:計一個電子琴。利用所給鍵盤的1,2,3,4,5,6,

3、7,8八個鍵,能夠發(fā)出8個不同的音調(diào),并且要求按下按鍵發(fā)聲,松開延時一段時間停止,中間再按別的鍵則發(fā)另一音調(diào)的聲音</p><p><b>  目 錄</b></p><p>  1.課題設計目的及其意義1</p><p>  2.課題設計的任務及要求1</p><p>  3.系統(tǒng)總體方案及單元設計1</p

4、><p><b>  3.1總體設計1</b></p><p>  3.2 單片機的最小工作系統(tǒng)3</p><p>  3.2.1 時鐘電路3</p><p>  3.2.2復位電路3</p><p>  3.2.3 音頻放大電路4</p><p>  3.3 按鍵部

5、分設計5</p><p>  3.3.1操作鍵設計5</p><p>  3.3.2鍵盤設計5</p><p>  3.3.3 消除按鍵抖動6</p><p>  4.系統(tǒng)軟件設計7</p><p>  4.1 系統(tǒng)的軟件程序(C語言):7</p><p>  4.2 系統(tǒng)的軟件的調(diào)

6、試仿真10</p><p>  5.設計心得與體會12</p><p>  1.課題設計目的及其意義</p><p>  單片機(單片微型計算機)是大規(guī)模集成電路技術(shù)發(fā)展的產(chǎn)物,具有高性能、高速度、體積小、價格低廉、穩(wěn)定可靠等特點。單片機的應用相當廣泛,從平常的家用電器到航空航天系統(tǒng)和國防軍事、尖端武器都能找到它的身影。因此,單片機的開發(fā)應用已成為高科技和工程領(lǐng)

7、域的一項重大課題。</p><p>  音樂隨著人們的生活水平也逐步提高已經(jīng)成為了我們生活中很重要的一部分,在工作和學習之余,欣賞音樂不僅使身心得到放松,同時也提高人們的精神品質(zhì)和個人素養(yǎng)。當代,愛好音樂的年輕人越來越多,也有不少人自己練習彈奏樂器,作為業(yè)余愛好和一種放松的手段,鑒于一些樂器學習難度大需花費太多精力,且其價格太過于高昂,使得一部分有這種想法的人不得不放棄這種想法,而電子琴又是一種新型的鍵盤樂器,它

8、是現(xiàn)代電子科技與音樂結(jié)合的產(chǎn)物,價格相對便宜,能夠滿足一般愛好者的需求,因此,在現(xiàn)代音樂中扮演著重要的角色。 故簡易電子琴的研制具有一定的社會意義。</p><p>  2.課題設計的任務及要求</p><p>  我所選擇的的任務題目是:設計一個電子琴。利用所給鍵盤的1,2,3,4,5,6,7,8八個鍵,能夠發(fā)出8個不同的音調(diào),并且要求按下按鍵發(fā)聲,松開延時一段時間停止,中間再按別的鍵則

9、發(fā)另一音調(diào)的聲音</p><p>  a.首先按設計題目要求制訂方案。</p><p>  b.設計出硬件原理圖。</p><p><b>  c.編寫程序。</b></p><p>  d.用Proteus軟件進行系統(tǒng)仿真,直至正確地實現(xiàn)系統(tǒng)功能。</p><p>  本文的主要內(nèi)容是用AT89

10、C51單片機為核心控制元件,設計一個簡單的電子琴。以單片機作為主控核心,與鍵盤、蜂鳴器等模塊組成核心主控制模塊,在主控模塊上設有8個按鍵。定時器按設置的定時參數(shù)產(chǎn)生中斷,由于定時參數(shù)不同,就會發(fā)出不同頻率的脈沖,不同頻率的脈沖經(jīng)喇叭驅(qū)動電路放大濾波后,就會發(fā)出不同音調(diào)。</p><p>  先根據(jù)要求設計硬件電路和編寫相應的程序,然后進行仿真調(diào)試,最后細心焊接硬件電路圖,將程序烤入芯片中,最終達到設計目的。本系統(tǒng)

11、運行穩(wěn)定,其優(yōu)點是硬件電路簡單,軟件功能完善,控制系統(tǒng)可靠,性價比較高等,具有一定的實用和參考價值。</p><p>  3.系統(tǒng)總體方案及單元設計</p><p><b>  3.1總體設計</b></p><p>  實現(xiàn)本次設計的方案有多種,下面比較說明一下最佳方案的選擇。</p><p>  方案一:采用單個的邏

12、輯器件組合</p><p>  音樂是有由不同的音階組成的,而不同的音階又是由不同的頻率發(fā)出的,那么利用不同的頻率,就可以發(fā)出不同的音樂了。</p><p>  我們知道計數(shù)器8253可以產(chǎn)生任意頻率的方波頻率信號,因此,我們只要把一首歌曲的音階對應頻率與計數(shù)器的頻率對應起來就可通過計數(shù)器產(chǎn)生音樂了。根據(jù)本實驗要求,采用8279將鍵掃得到的鍵值通過查表得到相應的8253的頻率值,將從825

13、3得到相對應的按鍵彈奏信號經(jīng)過LM386進行放大,再用喇叭輸出,就實現(xiàn)了簡易電子琴的基本功能,也就完成了實驗的要求。</p><p>  方案二:采用AT89S51單片機作為主控芯片,設置鍵盤、蜂鳴器等外圍器件,另外還用到一些簡單器件如:三極管、電阻、獨立按鍵等。利用按鍵實現(xiàn)音符和音調(diào)的輸入;用三極管實現(xiàn)低音頻功率放大;最后用蜂鳴器發(fā)音。</p><p><b>  兩種方案的比

14、較:</b></p><p>  方案一采用單個的邏輯器件組合實現(xiàn)。這樣雖然比較直觀,邏輯器件分工鮮明,思路也比清晰,一目了然,但是由于元器件種類、個數(shù)繁多,而過于復雜的硬件電路也容易引起系統(tǒng)的精度不高、體積過大等不利因素。例如七個不同的音符是由七個不同的頻率來控制發(fā)出的,所用儀器之多顯而易見。方案二與方案一相比,主控芯片采用AT89S51單片機,它是大規(guī)模集成電路技術(shù)發(fā)展的產(chǎn)物,具有高性能、高速度、

15、體積小、價格低廉、穩(wěn)定可靠、應用廣泛的特點。同時具有強大的控制功能和靈活的編程實現(xiàn)特性,由于本設計主要用于人們娛樂方面,因此在設計上盡量使其安全以及簡單易操作。而第三種方案具有經(jīng)濟可行性、技術(shù)可行性、實物應用性。</p><p>  綜上所述,本次課程設計采用第二種方案。</p><p><b>  系統(tǒng)流程圖</b></p><p>  3.

16、2 單片機的最小工作系統(tǒng)</p><p>  單片機加上適當?shù)耐鈬骷蛻贸绦?,?gòu)成的應用系統(tǒng)稱為最小系統(tǒng)。3.2.1 時鐘電路 </p><p>  單片機內(nèi)部具有一個高增益反相放大器,用于構(gòu)成振蕩器。通常在引腳XTALl和XTAL2跨接石英晶體和兩個補償電容構(gòu)成自激振蕩器,結(jié)構(gòu)圖2 中X1、C1、C2??梢愿鶕?jù)情況選擇6MHz、12MHz或24MHz等頻率的石英晶體,補償電容通常選

17、擇22pF左右的瓷片電容。</p><p>  3.2.2復位電路 </p><p>  單片機小系統(tǒng)常采用上電自動復位和手動按鍵復位兩種方式實現(xiàn)系統(tǒng)的復位操作。上電復位要求接通電源后,自動實現(xiàn)復位操作。手動復位要求在電源接通的條件下,在單片機運行期間,用按鈕開關(guān)操作使單片機復位。其結(jié)構(gòu)如下圖。上電自動復位通過電容C3充電來實現(xiàn)。</p><p>  3.2.3 音

18、頻放大電路</p><p>  使用PNP管來放大,其中發(fā)射極接5V電源,集電極接喇叭,電路中的電容是用來隔離直流電用的。</p><p>  PNP管放大原理:當PNP管的VC<VB<VE時,使得集電結(jié)反偏,發(fā)射結(jié)正偏時,管子的發(fā)射極電流流入管子,基極電流和集電極電流流出管子,且集電極電流跟基極電流之間成β關(guān)系,三極電流滿足IE=IB+IC=IB(1+β·IB)。即

19、,基極電流可以控制集電極電流,這種控制作用就稱為管子的放大作用。</p><p><b>  不同頻率的實現(xiàn):</b></p><p>  若要產(chǎn)生音頻脈沖,只要算出某一音頻的周期(1/頻率),再將此周期除以2,即為半周期的時間。利用定時器計時半周期時間,每當計時終止后就將P1.0反相,然后重復計時再反相。就可在P1.0引腳上得到此頻率的脈沖。利用AT89C51的內(nèi)部

20、定時器使其工作計數(shù)器模式(MODE1)下,改變計數(shù)值TH0及TL0以產(chǎn)生不同頻率的方法產(chǎn)生不同音階。</p><p>  例如:TH0=(65536-640)/256;</p><p>  TL0=(65536-640)%256;</p><p>  通過改變里面640的數(shù)值就可以改變其頻率。</p><p>  3.3 按鍵部分設計<

21、;/p><p>  3.3.1操作鍵設計</p><p>  常用的按鍵有三種:機械觸點式按鍵、導電橡膠式和柔性按鍵(又稱觸摸式鍵盤)。  機械觸點式按鍵是利用機械彈性使鍵復位,手感明顯,連線清晰,工藝簡單,適合單件制造。但是觸點處易侵入灰塵而導致接觸不良,體積相對較大。  導電橡膠按鍵是利用橡膠的彈性來復位,通過壓制的方法把面板上所有的按鍵制成一塊

22、,體積小,裝配方便,適合批量生產(chǎn)。但是時間長了,橡膠老化而使彈力下降,同時易侵入灰塵。  柔性按鍵是近年來迅速發(fā)展的一種新型按鍵,可以分為凸球型和平面型兩種。柔性按鍵最大特點是防塵、防潮、耐蝕,外形美觀,裝嵌方便。而且外形和面板的布局、色彩、鍵距可按照整機的要求來設計。</p><p>  但是由于客觀條件與經(jīng)濟能力有限,本系統(tǒng)采用機械觸點式按鍵。</p><p>&

23、lt;b>  3.3.2鍵盤設計</b></p><p>  鍵盤在單片機應用系統(tǒng)中是一個關(guān)鍵的部件,它能實現(xiàn)向計算機輸入數(shù)據(jù),傳送命令等功能,是人工干預計算機的主要手段。</p><p>  鍵盤可以分為2類:獨立連接式鍵盤和矩陣式鍵盤。</p><p><b>  (1)矩陣式鍵盤</b></p><p

24、>  單片機系統(tǒng)中,若按鍵較多時,通常采用矩陣式(也稱行列式)鍵盤。矩陣式鍵盤由行線和列線組成,按鍵位于行、列線的交叉點上。顯然,在按鍵數(shù)量較多時,矩陣式鍵盤較之獨立式按鍵鍵盤要節(jié)省很多I/O口。</p><p>  矩陣式鍵盤中,行、列線分別連接到按鍵開關(guān)的兩端,行線通過上拉電阻接到+5V上.當無鍵按下時,行線處于高電平狀態(tài);當有鍵按下時,行、列線將導通,此時,行線電平將由與此行線相連的列線電平?jīng)Q定。這是

25、識別按鍵是否按下的關(guān)鍵。</p><p>  (2)獨立連接式鍵盤</p><p>  獨立式按鍵是直接用I/O口線構(gòu)成的單個按鍵電路,其特點是每個按鍵單獨占用一根I/O口線,每個按鍵的工作不會影響其它I/O口線的狀態(tài)。獨立式按鍵電路配置靈活,軟件結(jié)構(gòu)簡單,但每個按鍵必須占用一根I/O口線,然而,在按鍵較多時,I/O口線浪費較大,不宜采用。</p><p>  獨立

26、式按鍵軟件常采用查詢式結(jié)構(gòu)。先逐位查詢每根I/O口線的輸入狀態(tài),如某一根I/O口線輸入為低電平,則可確認該I/O口線所對應的按鍵已按下,然后,再轉(zhuǎn)向該鍵的功能處理程序。</p><p>  由于本程序較為簡單,為了使用方便及節(jié)省資源,選擇獨立式鍵盤。下圖為獨立式鍵盤電路圖:</p><p>  3.3.3 消除按鍵抖動</p><p>  鍵盤編程中主要考慮去抖動的

27、問題。</p><p>  當測試表明有鍵被按下之后,緊接著就進行去抖動處理。因為鍵是機械開關(guān)結(jié)構(gòu),由于機械觸點的彈性及電壓突跳等原因,在觸點閉合或斷開的瞬間會出現(xiàn)電壓抖動。為保證鍵識別的準確,在電壓信號抖動的情況下不能進行行狀態(tài)輸入。為此需進行去抖動處理。去抖動有硬件和軟件兩種方法。硬件方法就是加去抖動電路,從根本上避免抖動的產(chǎn)生。軟件消抖,在第一次檢測到有鍵按下時,執(zhí)行一段延時程序之后,再檢測此按鍵,如果第二

28、次檢測結(jié)果仍為按下狀態(tài),CPU便確認此按鍵己按下,消除了抖動。</p><p><b>  4.系統(tǒng)軟件設計</b></p><p>  4.1 系統(tǒng)的軟件程序(C語言):</p><p><b>  源程序代碼:</b></p><p>  #include<reg52.h></

29、p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  sbit k1=P2^0;</p><p>  sbit k2=P2^1;</p><p>  sbit k3=P2^2;</p><p&g

30、t;  sbit k4=P2^3;</p><p>  sbit k5=P2^4;</p><p>  sbit k6=P2^5;</p><p>  sbit k7=P2^6;</p><p>  sbit k8=P2^7;</p><p>  sbit d1=P3^7;</p><p>  

31、uchar x,y;</p><p>  static char number;</p><p>  void delay1ms(unsigned int i) //1ms基準延時程序</p><p><b>  {</b></p><p>  unsigned char j;</p><p&g

32、t;  while(i--)</p><p>  for(j=0;j<115 ;j++); </p><p><b>  }</b></p><p>  void init()</p><p><b>  {</b></p><p>  TMOD |= 0x01

33、;TMOD |= 0x10;//配置T0和T1 定時器工作方式1</p><p>  TH1 = 0x3c;</p><p>  TL1 = 0xb0;</p><p>  IE = 0X8a;//開啟總中斷和定時器0 及定時器1的中斷</p><p><b>  } </b></p>

34、;<p>  void main()</p><p><b>  {</b></p><p><b>  init();</b></p><p><b>  while(1)</b></p><p><b>  {</b></p>

35、<p><b>  if(k1==0)</b></p><p>  delay1ms(5);//消抖</p><p><b>  if(k1==0)</b></p><p><b>  {</b></p><p>  number = 0;</p>

36、<p>  x=(65536-200)/256;</p><p>  y=(65536-200)%256;</p><p>  TR0 = 1;//啟動定時器T0</p><p><b>  TR1 = 1;</b></p><p>  while(k1==0);</p><p>

37、;<b>  }</b></p><p><b>  if(k2==0)</b></p><p>  delay1ms(5);</p><p><b>  if(k2==0)</b></p><p>  {number = 0;</p><p>  x

38、=(65536-260)/256;</p><p>  y=(65536-260)%256;</p><p><b>  TR0 = 1;</b></p><p><b>  TR1 = 1;</b></p><p>  while(k2==0);</p><p><

39、;b>  }</b></p><p><b>  if(k3==0)</b></p><p>  delay1ms(5);</p><p><b>  if(k3==0)</b></p><p>  {number = 0;</p><p>  x=(65

40、536-320)/256;</p><p>  y=(65536-320)%256;</p><p><b>  TR0 = 1;</b></p><p><b>  TR1 = 1;</b></p><p>  while(k3==0);</p><p><b&g

41、t;  }</b></p><p><b>  if(k4==0)</b></p><p>  delay1ms(5);</p><p><b>  if(k4==0)</b></p><p>  {number = 0;</p><p>  x=(65536-

42、380)/256;</p><p>  y=(65536-380)%256;</p><p><b>  TR0 = 1;</b></p><p><b>  TR1 = 1;</b></p><p>  while(k4==0);</p><p><b>  

43、}</b></p><p><b>  if(k5==0)</b></p><p>  delay1ms(5);</p><p><b>  if(k5==0)</b></p><p>  {number = 0;</p><p>  x=(65536-430)

44、/256;</p><p>  y=(65536-430)%256;</p><p><b>  TR0 = 1;</b></p><p>  TR1 = 1; </p><p>  while(k5==0);</p><p><b>  }</b></p>

45、<p><b>  if(k6==0)</b></p><p>  delay1ms(5);</p><p><b>  if(k6==0)</b></p><p>  {number = 0;</p><p>  x=(65536-500)/256;</p><p&

46、gt;  y=(65536-500)%256;</p><p><b>  TR0 = 1;</b></p><p><b>  TR1 = 1;</b></p><p>  while(k6==0);</p><p><b>  }</b></p><p&

47、gt;<b>  if(k7==0)</b></p><p>  delay1ms(5);</p><p><b>  if(k7==0)</b></p><p>  {number = 0;</p><p>  x=(65536-580)/256;</p><p>  y

48、=(65536-580)%256;</p><p><b>  TR0 = 1;</b></p><p><b>  TR1 = 1;</b></p><p>  while(k7==0);</p><p><b>  }</b></p><p><

49、;b>  if(k8==0)</b></p><p>  delay1ms(5);</p><p><b>  if(k8==0)</b></p><p>  {number = 0;</p><p>  x=(65536-640)/256;</p><p>  y=(6553

50、6-640)%256;</p><p><b>  TR0 = 1;</b></p><p><b>  TR1 = 1;</b></p><p>  while(k8==0);</p><p>  } </p><p><b>  } </b

51、></p><p><b>  } </b></p><p>  void t0zd() interrupt 1 //定時器T0</p><p><b>  {</b></p><p>  TH0=x;</p><p><b>  TL0=

52、y;</b></p><p>  d1=~d1;//產(chǎn)生方波</p><p><b>  }</b></p><p>  void t1zd()interrupt 3//定時器T1</p><p><b>  { </b></p><p>  T

53、H1 =0x3c; </p><p>  TL1 =0xb0; //設定初值 50ms</p><p>  number ++;</p><p>  if(number >= 10)//0個50ms = 0.5s</p><p><b>  {</b></p><p&

54、gt;<b>  TR0 =0;</b></p><p>  TR1 =0;//時間到關(guān)閉定時器</p><p><b>  }</b></p><p><b>  } </b></p><p>  4.2 系統(tǒng)的軟件的調(diào)試仿真</p><p&

55、gt;  Proteus的ISIS事一款Labcenter出品的電路分析實物仿真系統(tǒng),可仿真各種電路和IC,并支持單片機,元件庫齊全,使用方便,可以給我們做電路設計提供方便快捷的仿真效果,讓我們事半功倍。</p><p>  調(diào)試主要方法和技巧:通常一個調(diào)試程序應該具備至少四種性能:跟蹤、斷點、查看變量、更改數(shù)值。整個程序是一個主程序調(diào)用各個子程序?qū)崿F(xiàn)功能的過程,要使主程序和整個程序都能平穩(wěn)運行,各個模塊的子程序

56、的正確與平穩(wěn)運行必不可少,所以在軟件調(diào)試的最初階段就是把各個子程序模塊進行分別調(diào)試。</p><p>  在硬件電路制作完成并調(diào)試好后,便可將程序編譯好下載到單片機試運行。</p><p>  這里我們使用Proteus軟件進行仿真,加載編譯好的.HEX文件到單片機后,</p><p>  點擊運行按鈕即可,仿真電路圖如下:</p><p>

57、  結(jié)果分析:根據(jù)仿真結(jié)果可知,本次課程設計能夠準確并徹底的完成設計要求。利用P2接口所接的8個獨立鍵盤K1,K2,K3,K4,K5,K6,K7,K8,能夠發(fā)出8個不同音調(diào)的聲音,并且要求按下按鍵時發(fā)聲,松開延時一段時間停止,中間再按別的鍵則發(fā)另一音調(diào)的聲音。</p><p>  4.3 系統(tǒng)硬件調(diào)試</p><p>  通過硬件調(diào)試,編寫程序,燒入單片機內(nèi)部,運行結(jié)果與要求完全相符,只是

58、開發(fā)板用的單片機為STC89C52RC。如圖所示:</p><p><b>  5.設計心得與體會</b></p><p>  在為期一周的單片機課程設計中,我在增長知識、提高能力的同時,產(chǎn)生了很深的感觸。從初步定下方案到編出程序,從不斷的運行排錯到調(diào)試成功,在整個設計過程中,著實受益匪淺,不僅可以鞏固以前所學過的知識,而且學到了很多在書本上所沒有學到過的東西。<

59、;/p><p>  我懂得了理論與實際相結(jié)合是很重要的,眼高手低的現(xiàn)象常常難以避免。只有把所學的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能提高自己的實際動手能力和獨立思考的能力。</p><p>  在設計的過程中難免會遇到各種各樣的問題,但是在這重重困難之中我了解到自己的真實水平,并努力提高自己。同時我明白,對于想要成功的人來說更重要的不是知識或技能,而是克服困難的信心。實踐證明看似“

60、莫名其妙”的錯誤只要堅持嘗試必定有辦法解決,應靈活地從各方面找原因而不是一味歸咎于實驗儀器或軟件平臺。</p><p>  通過這次的課程設計作品的制作讓我對單片機的理論有了更加深入的了解,同時在具體的制作過程中我們發(fā)現(xiàn)現(xiàn)在書本上的知識與實際的應用存在著不小的差距,書本上的知識很多都是理想化后的結(jié)論,忽略了很多實際的因素,或者涉及的不全面,可在實際的應用時這些是不能被忽略的,我們不得不考慮這方的問題,這讓我們無法

61、根據(jù)書上的理論就輕易得到預想中的結(jié)果,有時結(jié)果甚至很差別很大。通過這次設計,我基本掌握了如何利用protues進行仿真,利用keil生成hex文件。通過開發(fā)板的設計和硬件搭建的過程,使我對51系單片機的接口有了更深層次的理解,熟悉了一些單片機常用的外圍電路引腳和連接方法。我熟悉了51系列單片機內(nèi)部的寄存器和編程規(guī)則,以及如何控制外圍電路??傊ㄟ^這次課程設計,我們都清楚明白了自己的能力有多深,想提高還得歸于多鍛煉,多動手,多向別人學習

溫馨提示

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

評論

0/150

提交評論