單片機實驗報告(基于51單片機)_第1頁
單片機實驗報告(基于51單片機)_第2頁
單片機實驗報告(基于51單片機)_第3頁
單片機實驗報告(基于51單片機)_第4頁
單片機實驗報告(基于51單片機)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)專心-專注-專業(yè)精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè) 濱江學院 微機原理與接口技術(shù)綜合實驗報告 題 目 簡易電子琴設計 學 號 學生姓名 王興江 院 系 濱江學院專 業(yè)指導教師二一二 年 月 日 TOC o 1-3 h z u 【摘要】由于音樂是許多不同的音階組成的,而每個音階對應著不同的頻率,這樣我們就可以利用單片定時/計數(shù)器T產(chǎn)生不同的頻率的組合,從而構(gòu)成音樂。本次設計實現(xiàn)的大體功能:當系統(tǒng)掃描到鍵盤上有鍵子被按下,則快速檢測出是那一個鍵子,然后單片機的定時就會發(fā)出相應的音調(diào)。定時器被啟動,發(fā)出一定頻率的脈沖,該頻率

2、的脈沖通過P3串口并驅(qū)動喇叭發(fā)音。同時鍵值顯示在LED顯示器上?!娟P鍵詞】 單片機 電子琴 AT89C51一、引言1.1 電子琴設計的背景隨著電子科技的飛速發(fā)展,電子技術(shù)正在逐漸改善著人們的學習、生活、工作,因此開發(fā)本系統(tǒng)希望能夠給人們多帶來一點生活上的樂趣?;诋斍笆袌錾系耐婢呤袌鲂枨罅看?,其中電子琴就是一個很好的應用方面。單片機技術(shù)使我們可以利用軟硬件實現(xiàn)電子琴的功能,從而實現(xiàn)電子琴的微型化,可以用作玩具琴、音樂轉(zhuǎn)盤以及音樂童車等等。并且可以進行一定的功能擴展。鑒于傳統(tǒng)電子琴可以用鍵盤上的“k0”到“k16”鍵演奏從低So到高DO等16個音,從而可以用來彈奏喜歡的樂曲。1.2 電子琴設計的

3、意義該設計具有以下優(yōu)點:(1)可以隨意彈奏想要表達的音樂;(2)制作簡單,成本低。 (3)比傳統(tǒng)電子琴功能更完善。1.3 電子琴設計的目標由于本設計主要用于人們娛樂方面,因此在設計上盡量使其安全以及簡單易操作。其次,在這次設計可行性上進行分析如下:1、經(jīng)濟可行性:所謂經(jīng)濟可行性,即在這次設計上需要投入資金的多少,由于課程設計是提高我們的動手能力以及資金有限。因此在經(jīng)濟上必須能夠承受,比較理想化的對于我們課程設計來說是不可行的。通過分析后,無論是在器件價格或是常見度上均是可行的。2、技術(shù)可行性:技術(shù)可行性主要是分析技術(shù)條件上是否能夠順利開展并完成課程設計的主要問題,硬件、軟件能否滿足設計者的需要

4、等。通過分析各種軟件環(huán)境,硬件仿真環(huán)境等均已經(jīng)具備。綜上所述,本系統(tǒng)設計目標已經(jīng)明確,在經(jīng)濟與技術(shù)上均可行,因此本系統(tǒng)的開發(fā)是完全可行的。二系統(tǒng)整體設計1.設計任務基于MCS系列單片機AT89C51。設計一個簡易電子琴2.功能描述1)利用所給鍵盤的1,2,3,4,5,6,7,8八鍵,能夠發(fā)出8個不同的音符。2)并且要求按下按鍵發(fā)聲,松開延時一段時間停止,中間再按別的鍵則發(fā)出另一音符的聲音。3)使用LED數(shù)碼管顯示8個不同的音調(diào)。4)如果在一個按下的鍵發(fā)聲的同時有另一鍵被按下,前面鍵的發(fā)音停止,轉(zhuǎn)到后按的鍵的發(fā)音。5)增加變調(diào)鈕“UP1”,“UP2”,“DN1”,“DN2”,在按下“08”音符時

5、,變調(diào)鍵,產(chǎn)生相應的變調(diào),使用LED數(shù)碼管顯示變調(diào)情況。6)其它功能3.軟硬件描述該課題主要由軟件及其硬件兩個基本部分共同完成。硬件主要部分:4x4矩陣式鍵盤(主要用于音符的輸入以及變調(diào)的鍵值輸入,其與單片機的P0口連接). MCS51-AT89單片機芯片. 兩位LED數(shù)碼管顯示器.以及一些基本外圍電路。軟件主要部分:運用c語言進行相應的編程,其主要包括控制按鍵掃描程序,發(fā)聲主程序,以及顯示程序。4.模塊描述總體方案:本系統(tǒng)采用單片機AT89C51為電子琴的控制核心,系統(tǒng)主要包括播放模塊.按鍵控制模塊以及顯示模塊。電路設計總體框圖AT89C51矩陣式按鍵輸入電路LED數(shù)碼管揚聲器電源時鐘電路2

6、步驟:根據(jù)設計題目的具體要求及題目的設計提示,利用Proteus軟件來畫原理圖(硬件)。利用Keil軟件進行程序的編寫,執(zhí)行,及仿真。從而生成HEX文件調(diào)將HEX文件導入原理圖的AT89C51中進行仿真試并實現(xiàn)相應的功能三 . 硬件電路設計及描述總體原理圖:1 4x4矩陣鍵盤控制模塊其與單片機的具體連接方式如下:(1)矩陣式鍵盤的結(jié)構(gòu)與工作原理在中按鍵數(shù)量較多時,為了減少I/O口的占用,通常將按鍵排列成形式,如圖所示。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。這樣,一個端口P1就可以構(gòu)成4*4=16個按鍵。矩陣式結(jié)構(gòu)的鍵盤顯然比直接法要復雜一些,識別也要復

7、雜一些,上圖中,列線通過電阻接正電源,并將行線所接的單片機的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當按鍵沒有按下時,所有的輸入端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會被拉低,這樣,通過讀入輸入線的狀態(tài)就可得知是否有鍵按下了。具體的識別及方法如下所述。 (2)矩陣式鍵盤的按鍵識別方法行掃描法 行掃描法又稱為逐行(或列)掃描查詢法,是一種最常用的按鍵識別方法,如上圖所示鍵盤,介紹過程如下。 a.判斷鍵盤中有無鍵按下 將全部行線置低電平,然后檢測列線的狀態(tài)。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個

8、按鍵之中。若所有列線均為高電平,則鍵盤中無鍵按下。 b.判斷閉合鍵所在的位置 在確認有鍵按下后,即可進入確定具體閉合鍵的過程。其方法是:依次將行線置為低電平,即在置某根行線為低電平時,其它線為高電平。在確定某根行線位置為低電平后,再逐行檢測各列線的電平狀態(tài)。若某列為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵。 程序掃描法就是調(diào)用鍵盤掃描程序,查詢鍵盤并給予處理的方法。 1)查詢是否有鍵盤按下2)延時去除抖動3)確定下來按鍵所在的行. 列位置具體框圖如下開始判斷是否有鍵按下?確定按下哪個鍵否是確定鍵值調(diào)用顯示程序調(diào)用發(fā)聲程序2. 發(fā)聲模塊揚聲器與單片機的連接方式如圖揚聲器連接在P3

9、.0口,當有鍵盤按下時候,單片機會通過程序調(diào)用相應鍵值,由P3.0輸出對應的頻率信號,從而驅(qū)動揚聲器發(fā)聲。具體框圖如下:P3.0檢測到頻率信號揚聲器發(fā)聲驅(qū)動3. 顯示模塊2位LED數(shù)碼管與單片機的連接圖圖中:1、2是公共端,控制位碼,控制那個數(shù)碼管亮(左右),如果是共陰的則接低電平,若為供陽的則相反。,a-g、dp是控制斷碼,控制9個二極管的亮暗,可以直接接51的輸出口(P0要加上拉電阻),如果是共陰的則接高電平來使數(shù)碼管亮,若為供陽的則相反。用8位碼控制,用16進制表示!二極管從最上面順時針分別為a,b,c,d,e,f中間橫線為g,點為dp。4 設計的核心部件及其外圍基本電路AT89C51簡

10、介AT89C51是一種帶4K字節(jié)FLASH(FPEROMFlash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱。AT89C2051是一種帶2K字節(jié)閃存可編程可擦除的單片機。單片機的可擦除只讀存儲器可以反復擦除1000次。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C單片機為很多提供了一種靈活性高且價廉的方案。外

11、形及引腳排列VCC:供電電壓。 GND:接地。 P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P0口的管腳第一次寫1時,被定義為輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。 P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。 P2

12、口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。 P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被

13、內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。 P3口也可作為AT89C51的一些特殊功能口,口管腳 備選功能 P3.0 RXD(串行輸入口) P3.1 TXD(串行輸出口) P3.2 /INT0(外部中斷0) P3.3 /INT1(外部中斷1) P3.4 T0(記時器0外部輸入) P3.5 T1(記時器1外部輸入) P3.6 /WR(外部數(shù)據(jù)存儲器寫選通) P3.7 /RD(外部數(shù)據(jù)存儲器讀選通) P3口同時為閃爍編程和編程校驗接收一些控制信號。 RST:復位輸入。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。 AL

14、E/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。 /PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪

15、問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。 /EA/VPP:當/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。 XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。 XTAL2:來自反向振蕩器的輸出。四. 軟件設計思想及流程在程序中根據(jù)相應的音符只做一個頻率表,當單片機檢測到鍵值的時候,主程序?qū)⒆詣诱{(diào)用表格中的程序,發(fā)出相應的信號驅(qū)動揚聲器發(fā)聲,同時LED數(shù)碼管顯示其鍵值

16、(音調(diào))。本設計的題目包括,按鍵程序,主程序等幾個部分組成。具體流程圖如下:執(zhí)行程序掃描P1外接的鍵盤程序調(diào)用主程序發(fā)聲顯示返回開始是否有按鍵按下?YN放開按鍵五硬件的調(diào)試過程及調(diào)試方法1)由于本次設計并沒有進行實際硬件的實做,所以我們本次對硬件的調(diào)試過程僅僅局限于電路圖的修改調(diào)試。一開始仿照題目進行畫圖仿真,我們并沒得到相應的結(jié)果。2)對于軟件我們便是不斷檢查并修改C程序,從而形成合格的HEX文件。驅(qū)動單片機實現(xiàn)相應的功能。六重要程序及源代碼/*程序功能 : 對44矩陣鍵盤進行掃描,顯示鍵值和輸出聲音*/ #include #include #define uint unsigned int

17、 #define uchar unsigned charsbit SPK = P30; /P3.0外接揚聲器uint FreqTemp;unsigned int code Key= 0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71;unsigned int code Freqtab = /定時半周期的初始值 64021,64103,64260,64400, /低音3 4 5 6 64524,64580,64684,64777, /低音7,中音1 2 3

18、64820,64898,64968,65030, /中音4 5 6 7 65058,65110,65157,65178; /高音1 2 3 4/* * 函數(shù)功能 : 用掃描法讀 P1 外接 44 鍵盤* 函數(shù)返回 : 按下鍵:返回015、如無鍵按下:返回0*/ uchar Keyscan(void) uchar i, j, temp, Buffer4 = 0 xfe, 0 xfd, 0 xfb, 0 xf7; for(j = 0; j 4 ; j+) /循環(huán)四次,掃描四行 P1 = Bufferj; /在低四位分別輸出一個低電平 temp = 0 x80; /計劃先讀出P1.7位 for(i

19、= 0; i = 1; /換右邊一位 return 16; /沒有鍵按下就返回16作為誤判動作 /* * 名稱: Display(uchar k) * 功能:顯示鍵值(音調(diào)或者音符)* 輸入: k (鍵盤數(shù)值) * 輸出: P0口輸出七段碼,P2口輸出位選碼(根據(jù)要求這里只輸出一位)*/ void Display(uchar k) P0 = Keyk;/* * 主函數(shù) */ void Main(void) uchar Key_Value = 16, Key_Temp1, Key_Temp2;/讀出的鍵值 TMOD = 0 x01; /T0定時方式1 ET0 = 1; /允許T0中斷 EX0 =

20、 1; /允許X0中斷 EA = 1; while(1) TR0 = 0; /暫不發(fā)音 Key_Temp1 = Keyscan(); /讀入按鍵 if(Key_Temp1 != 16) /有鍵按下 Display(Key_Value); /顯示鍵值、延時消抖 Key_Temp2 = Keyscan(); /再讀一次 if (Key_Temp1 = Key_Temp2) /兩次相等 Key_Value = Key_Temp1; /就確認下來 FreqTemp = FreqtabKey_Value; /根據(jù)鍵值,取出定時半周期的初始值 Display(Key_Value); /顯示 TR0 = 1; /啟動定時器,發(fā)音 whi

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論