單片機課程設計_第1頁
單片機課程設計_第2頁
單片機課程設計_第3頁
單片機課程設計_第4頁
單片機課程設計_第5頁
已閱讀5頁,還剩20頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、河南理工大學單片機應用與仿真訓練設計報告題目:基于單片機的電子琴設計姓 名: 吳章艷 方世巍 學 號: 310808010403 310808010409 專業班級: 電氣0804班 指導老師: 劉 巍 所在學院: 電氣工程與自動化學院 2011年7月 1日摘要本設計是利用AT89S52單片機來對電子琴的主體部分進行設計,主要運用了AT89S52單片機的定時、中斷功能。定時器可以發出不同頻率的脈沖,不同頻率的脈沖經喇叭驅動電路放大后,就會發出不同音調。以STC89C52單片機為核心控制元件,與鍵盤、揚聲器等部件組成核心模塊設計電子琴。定時器按設計的定時參數產生中斷,這一次中斷發出脈沖低電平,下

2、一次取反發出脈沖高電平,由于定時參數不同,就發出不同頻率的脈沖。本制作中巧妙地利用了單片機的定時器,讓定時器中斷一次就改變喇叭的狀態一次,即形成矩形方波頻率信號,每個頻率信號對應不同的音階,再分別由對應的按鍵控制,當相應的按鍵按下后便可產生相應的音調。首先設計電子琴的硬件電路和軟件部分,設計中應用中斷系統和定時/計數原理控制演奏器發聲,對音樂發生所必須確定的音符和節拍分別用程序語言實現,然后利用電路仿真軟件Proteus進行仿真,完善電子琴的軟硬件設計,最后進行軟硬件的調試運行,最終實現了電子琴的基本功能。電子琴能夠為教師在進行現代音樂、電子音樂、電腦音樂的教學時,提供更為快捷、簡便、有效的教

3、學手段。該設計為未來進一步實現高性能電子琴產品奠定一定的基礎,這對提高音樂教學質量具有重要意義。關鍵詞:AT89S52單片機、按鍵、揚聲器、電子琴目錄1 概述31.1電子琴設計背景31.2 設計目的及內容32 系統總體方案及硬件設計42.1系統總體結構圖42.2 系統硬件設計42.2.1 元件簡介42.2.2 AT89S52模塊電路82.2.3 鍵盤掃描模塊電路92.2.4 數碼管顯示模塊電路102.2.5 聲音輸出部分模塊113 軟件設計123.1音樂相關知識123.2如何用單片機實現音樂的節拍123.3如何用單片機產生音頻脈沖133.4系統總體功能流程圖144 Proteus軟件仿真165

4、 課程設計體會17參考文獻18附錄 電子琴程序清單191 概述1.1電子琴設計背景電子琴音色優美,音域較寬,和聲豐富,表現力及其豐富。它可模仿多種音色,還可隨意配上類似打擊樂音響的節拍伴奏,適合于演奏節奏性較強的現代音樂。它還能夠作為獨奏樂器出現,具有鮮明的時代特色,深受廣大音樂愛好者的喜愛,又是我國廣大中小學生學習音樂的重要工具,而且電子琴容易制作,價格便宜,有很好的市場前景。隨著科技的不斷發展,電子產品也在不斷地進步。現在的電子產品越來越接近智能化,性能也精益求精。現階段,單片機發展日益成熟,而且發展迅猛,以單片機為核心部件的電子琴將會比以555定時器為核心部件電子琴的性能更加穩定,而且依

5、靠單片機強大的編程功能更容易實現電子琴各音節所對應頻率的產生,可以隨意彈奏想要表達的音樂,而且制作簡單,成本低所以此設計具有很現實的意義。1.2 設計目的及內容本設計的目的主要是復習并運用我們所學的單片機知識,同時通過本次設計能夠對電子電路以及作圖軟件等方面的知識有進一步的認識和掌握:熟悉AT89S52單片機的內部結構和功能,合理利用其功能實現簡單設計,能夠完成相關軟件編程設計工作,掌握一般的簡單電子電路的設計方法。本次設計的主要內容是利用運用單片機的定時、中斷功能編程設計出具有發出以C調為標準音Dou、Ruai、Mi、Fa、Sou、La、Si和高音Dou八個音的功能并通過16個按鍵控制彈奏出

6、音樂的電子琴。它包括放大電路,時鐘電路、復位電路以及鍵盤接口電路四部分。2 系統總體方案及硬件設計2.1系統總體結構圖本設計是利用AT89S52單片機來對電子琴的主體部分進行設計,主要運用了AT89S52單片機的定時、中斷功能。定時器可以發出不同頻率的脈沖,不同頻率的脈沖經喇叭驅動電路放大后,就會發出不同音調。以STC89C52單片機為核心控制元件,與鍵盤、揚聲器等部件組成核心模塊設計電子琴。其系統結構圖如圖2-1:鍵盤掃描AT89S52數碼管顯示揚聲器播放音樂電源部分圖2-12.2 系統硬件設計2.2.1 元件簡介(1)AT89S52AT89S52是一個低電壓、高性能CMOS 8位單片機,片

7、內含8k bytes的可反復擦寫的Flash只讀程序存儲器和256 bytes的隨機存取數據存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術生產,兼容標準MCS-51指令系統,片內置通用8位中央處理器和Flash存儲單元,AT89S52單片機在電子行業中有著廣泛的應用。其PDIP封裝芯片如圖2-2所示:圖2-2 AT89S52 PDIP封裝芯片AT89S52為8位通用微處理器,其管腳圖如圖2-3所示,主要管腳有:XTAL1(19 腳)和XTAL2(18 腳)為振蕩器輸入輸出端口,外接12MHz 晶振。RST/Vpd(9 腳)為復位輸入端口,外接電阻電容組成的復位電路。VCC(

8、40 腳)和VSS(20 腳)為供電端口,分別接+5V電源的正負端。P0-P3 為可編程通用I/O 腳,其功能用途由軟件定義。 圖2-3 AT89S52 PDIP封裝芯片管腳圖P0 口是一組8 位漏極開路型雙向I/O 口, 也即地址/數據總線復用口。在訪問外部數據存儲器或程序存儲器時,這組口線分時轉換地址(低8 位)和數據總線復用,在訪問期間激活內部上拉電阻。在Flash 編程時,P0 口接收指令字節,而在程序校驗時,輸出指令字節,校驗時,要求外接上拉電阻。 P1 是一個帶內部上拉電阻的8 位雙向I/O 口。與AT89C51 不同之處是,P1.0 和P1.1 還可分別作為定時/計數器2 的外部

9、計數輸入(P1.0/T2)和輸入(P1.1/T2EX)。 Flash 編程和程序校驗期間,P1 接收低8 位地址。 P2 是一個帶有內部上拉電阻的8 位雙向I/O 口,在訪問外部程序存儲器或16 位地址的外部數據存儲器(例如執行MOVX DPTR 指令)時,P2 口送出高8 位地址數據。在訪問8 位地址的外部數據存儲器(如執行MOVX RI 指令)時,P2 口輸出P2 鎖存器的內容。 Flash 編程或校驗時,P2亦接收高位地址和一些控制信號。 P3 口是一組帶有內部上拉電阻的8 位雙向I/O 口。P3 口除了作為一般的I/O 口線外,更重要的用途是它的第二功能,P3 口還接收一些用于Flas

10、h 閃速存儲器編程和程序校驗的控制信號。 RST:復位輸入。當振蕩器工作時,RST引腳出現兩個機器周期以上高電平將使單片機復位。 ALE/PROG:當訪問外部程序存儲器或數據存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8 位字 節。一般情況下,ALE 仍以時鐘振蕩頻率的1/6 輸出固定的脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當訪問外部數據存儲器時將跳過一個ALE 脈沖。 PSEN:程序儲存允許(PSEN)輸出是外部程序存儲器的讀選通信號,當AT89C52 由外部程序存儲器取指令(或數據)時,每個機器周期兩次PSEN 有效,即輸出兩個脈沖。在此期間,當訪問外部數

11、據存儲器,將跳過兩次PSEN信號。 EA/VPP:外部訪問允許。欲使CPU 僅訪問外部程序存儲器(地址為0000HFFFFH),EA 端必須保持低電平(接地)。如EA端為高電平(接Vcc端),CPU 則執行內部程序存儲器中的指令。 XTAL1:振蕩器反相放大器的及內部時鐘發生器的輸入端。 XTAL2:振蕩器反相放大器的輸出端。(2)LED數碼管本設計的顯示電路采用一個兩位共陰LED數碼管顯示,LED(Light-Emitting Diode)是一種外加電壓從而流過電流并發出可見光的器件。LED是屬于電流控制器件,使用時必須加限流電阻。LED有單個LED和八段LED之分,也有共陰和共陽兩種。常用

12、的七段顯示器的結構如圖2-4圖a所示。發光二極管的陽極連在一起的稱為共陽極顯示器(如圖b所示),陰極連在一起的稱為共陰極顯示器(如圖c所示)。1位顯示器由八個發光二極管組成,其中七個發光二極管a-g控制七個筆畫(段)的亮或暗,另一個控制一個小數點的亮和暗,這種筆畫式的七段顯示器能顯示的字符較少,字符的開頭有些失真,但控制簡單,使用方便。此外,要畫出電路圖,首先還要搞清楚他的引腳圖的分布,在了解了正確的引腳圖后才能進行正確的字型段碼編碼。才能顯示出正確的數字來。 (a)外形 (b)共陽極 (C)共陰極圖2-4 數碼管引腳(3)LM386簡介LM386是一種音頻集成功放,具有自身功耗低、電壓增益可

13、調整、電源電壓范圍大、外接元件少和總諧波失真小等優點,廣泛應用于錄音機和收音機之中。圖2-5 LM386內部電路原理圖LM386內部電路原理圖如圖2-5所示。與通用型集成運放相類似,它是一個三級放大電路。 第一級為差分放大電路,T1和T3、T2和T4分別構成復合管,作為差分放大電路的放大管;T5和T6組成鏡像電流源作為T1和T2的有源負載;T3和T4信號從管的基極輸入,從T2管的集電極輸出,為雙端輸入單端輸出差分電路。使用鏡像電流源作為差分放大電路有源負載,可使單端輸出電路的增益近似等于雙端輸出電容的增益。 第二級為共射放大電路,T7為放大管,恒流源作有源負載,以增大放大倍數。 第三級中的T8

14、和T9管復合成PNP型管,與NPN型管T10構成準互補輸出級。二極管D1和D2為輸出級提供合適的偏置電壓,可以消除交越失真。 引腳2為反相輸入端,引腳3為同相輸入端。電路由單電源供電,故為OTL電路。輸出端(引腳5)應外接輸出電容后再接負載。電阻R7從輸出端連接到T2的發射極,形成反饋通路,并與R5和R6構成反饋網絡,從而引入了深度電壓串聯負反饋,使整個電路具有穩定的電壓增益。圖2-6 LM386引腳圖LM386的外形和引腳的排列如圖2-6所示。引腳2為反相輸入端,3為同相輸入端;引腳5為輸出端;引腳6和4分別為電源和地;引腳1和8為電壓增益設定端;使用時在引腳7和地之間接旁路電容,通常取10

15、F。 查LM386的電源電壓4-12V或5-18V(LM386N-4);靜態消耗電流為4mA;電壓增益為20-200dB;在1、8腳開路時,帶寬為300KHz;輸入阻抗為50K;音頻功率0.5W。盡管LM386的應用非常簡單,但稍不注意,特別是器件上電、斷電瞬間,甚至工作穩定后,一些操作(如插拔音頻插頭、旋音量調節鈕)都會帶來的瞬態沖擊,在輸出喇叭上會產生非常討厭的噪聲。2.2.2 AT89S52模塊電路AT89S52單片機主程序模塊通過對鍵盤掃描程序信號的讀取,再通過對應的表,取出數碼管顯示編碼和定時器初始值以產生不同的聲音信號。在這一過程中,對數碼管編碼是直接賦值,對聲音信號則是通過中斷程

16、序進行控制。其原理電路圖如圖2-7:圖2-7 AT89S52模塊電路原理圖2.2.3 鍵盤掃描模塊電路對鍵盤掃描電路的掃描方式有行掃描法和線反轉法,在此次程序編寫中,采用行掃描法,通過在P20-P23上循環送出0掃描信號,P24-P27輸入按鍵上的高低電平信息給單片機,經處理程序,判斷出是哪個開關按下,并送主程序以實現不同功能,其電路原理圖如圖2-8:圖2-8 鍵盤掃描模塊電路原理圖2.2.4 數碼管顯示模塊電路數碼管顯示模塊核心是共陰級數碼管,通過來自單片機I/O口的電平高低來點亮和熄滅數碼管上的發光二極管,通過單片機送來的數碼管顯示編碼可以在數碼管上顯示數字和字符,使應用人員可以很容易的理

17、解按鍵按下所對應的音符。圖2-9 數碼管顯示模塊電路原理圖2.2.5 聲音輸出部分模塊 由于單片機驅動能力不夠,在處理音符信號時,需加功率放大裝置,因LM386芯片具有低功耗、高增益的特點,這合適單片機低功耗輸出,所以加裝LM386音頻信號放大器對信號進行放大。圖2-10 聲音輸出模塊電路原理圖3 軟件設計本軟件設計關鍵是要實現一種由單片機控制的簡單音樂發生器,它由16個音節組成的的鍵盤,用戶可以根據樂譜在鍵盤上進行演奏,音樂發生器會根據用戶的彈奏,通過揚聲器將音樂播放出來。3.1音樂相關知識樂音聽起來有的高,有的低,這就叫音高,音高是由發音物體振動頻率的高低決定的,頻率高聲音就高,頻率低,聲

18、音就低,不同音調的樂音是用C、D、E、F、G、A、B表示的,這7個字母就是樂音的音名,它們一般依次唱成DO、RE、MI、FA、SO、LA、SI,這是唱曲時樂音的發音,所以叫唱名。音持續時間的長短即時值,一般用拍數表示,休止符表示暫停發音。一首音樂是由許多不同的音符組成的,而每個音符對應著不同的頻率,這樣就可以利用不同頻率的組合,加以與拍數對應的延時,構成音樂。3.2如何用單片機實現音樂的節拍除了音符以外,節拍也是音樂的關鍵組成部分。節拍實際上就是音持續時間的長短,在單片機系統中可以用延時來實現,如果1/4拍的延時是0.4秒,則1拍的延時是1.6秒,只要知道1/4拍的延時時間,其余的節拍延時時間

19、就是它的陪數。如果單片機要自己播放音樂,那么必須在程序設計中考慮到節拍的設置,由于本例實現的音樂發生器是由用戶通過鍵盤輸入彈奏樂曲的,所以節拍由用戶掌握,不由程序控制。對于不同的曲調我們也可以用單片機的另外一個定時/計數器來完成。音樂的音拍,一個節拍為單位(C調)具體如下表:表3-1 音樂節拍表曲調值DELAY曲調值DELAY調4/4125ms調4/462ms調3/4187ms調3/494ms調2/4250ms調2/4125ms3.3如何用單片機產生音頻脈沖了解音樂的一些基本知識后可知,產生不同頻率的音頻脈沖即能產生音樂,對于單片機而言,產生不同頻率有脈沖非常方便,可以利用它的定時/計數器來產

20、生這樣的方波頻率信號,因此,需要弄清楚音樂中的音符和對應的頻率,以及單片機定時計數的關系。在本實驗中,單片機工作于12MHZ時鐘頻率,使用其定時/計數器T0,工作模式為1,改變計數值TH0和TL0可以產生不同頻率的脈沖信號,在此情況下,C調的各音符頻率與計數值T的對照如下表:表3-2 音符頻率與計數值T的對照表音符頻率(HZ)計數值(T值)音符頻率(HZ)計數值(T值)低1DO26263628#4FA#74064860#1DO#27763737中5SO78464898低2RE29463835#5SO#83194934#2RE#31163928中6LA88064968低3MI33064021#6

21、LA#93264994低4FA34964103中7SI96865030#4FA#37064185低1DO104665058低SO39264260#1DO#110965085#5SO#41564331高2RE117565110低6LA44064400#2RE#124565134#6LA#46664463高3MI131865157低7SI49464524高4FA139765178中1DO52364580#4FA#149065198#1DO#55464633高5SO156865217中2RE58764633#5SO#166165235#2RE#62264884高6LA176065252中3MI659

22、64732#6LA#186565268中4FA69864820高7SI196765283T的值決定了TH0和TL0的值,其關系為:TH0=T/256,TL0=T%2563.4系統總體功能流程圖N定時器初始化數碼管顯示0主程序開始循環檢測按鍵Y數碼管顯示揚聲器出聲按鍵子程序流程圖如下:K9鍵按下K10鍵按下K11鍵按下K12鍵按下K13鍵按下K14鍵按下K15鍵按下數碼管顯示4并播放fa的中音數碼管顯示5并播放so的中音數碼管顯示6,并播放la的中音K16鍵按下數碼管顯示7,并播放si的中音數碼管顯示A,并播放do的高音數碼管顯示B,并播放re的高音數碼管顯示C,并播放mi的高音數碼管顯示D,并

23、播放fa的高階高音4 Proteus軟件仿真5 課程設計體會通過這次單片機課程設計,我不僅加深了對單片機理論的理解,將理論很好地應用到實際當中去,而且我還學會了如何去培養我們的創新精神,從而不斷地戰勝自己,超越自己。創新可以是在原有的基礎上進行改進,使之功能不斷完善,成為真己的東西。 課程設計是培養學生綜合運用所學知識發現、提出、分析和解決實際問題,鍛煉實踐能力的重要環節,是對學生實際工作能力的具體訓練和考察過程.隨著科學技術發展的日新日異,單片機已經成為當今計算機應用中空前活躍的領域, 在生活中可以說得是無處不在。因此作為二十一世紀的大學來說掌握單片機的開發技術是十分重要的。此次單片機課程設

24、計可以學到很多很多的的東西,不僅鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,遇到過各種各樣的問題,同時在設計的過程中發現了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,比如說不懂一些元器件的使用方法,對單片機匯編語言掌握得不好。通過這次課程設計之后,一定把以前所學過的知識重新溫故。這次課程設計終于順利完成了,在設

25、計中遇到了很多編程問題,最后在老師和同學的指導下,終于游逆而解。同時,在老師和同學那里我學得到很多實用的知識。在此,對給過我幫助的所有同學和各位指導老師表示忠心的感謝!參考文獻1. 余發山.單片機原理及應用技術M,中國礦業大學出版社,2003年12月版2. 白延敏.51單片機典型系統開發實例精講M,電子工業出版社,2009年1月版3. 賈立新.電子系統設計與實踐M,清華大學出版社,2008年2月版4. 李建忠.單片機原理及應用M,西安電子科技大學出版社,2002年5月底5.附錄 電子琴程序清單#include <reg52.H>unsigned char temp;unsigned

26、 char key;unsigned char i,j;unsigned char STH0;unsigned char STL0;unsigned int code tab=64021,64103,64260,64400, 64524,64580,64684,64777, 64820,64898,64968,65030, 65058,65110,65157,65178;unsigned char code LED_CODES= 0x3F,0x06,0x5B,0x4F,0x66,/0-4 0x6D,0x7D,0x07,0x7F,0x6F,/5-9 0x77,0x7C,0x39,0x5E,0x7

27、9,/A,b,C,d,E 0x71,0x76 ;sbit P1_0=P10;sbit P3_4=P34;sbit P3_5=P35;sbit P3_6=P36;sbit P3_7=P37;sbit P1_7=P17;sbit P1_6=P16;sbit P0_6=P06;void delay(unsigned int num ) /延時函數 while(num-); void display(unsigned int n)/雙數碼管動態顯示程序 unsigned char ge,shi; ge=n%10; shi=n/10; delay(20); P1_7=0; /開位選 P0=LED_COD

28、ESshi; /送碼值 delay(500); P1_7=1; /關位選 P1_6=0; /開位選 P0=LED_CODESge; delay(500); P1_6=1; void main(void) TMOD=0x01; /設置定時器0為定時模式 ET0=1; /開定時器0中斷 EA=1; /開總中斷 while(1) /*矩陣鍵盤掃描*/ P3=0xff; P3_4=0; temp=P3; temp=temp & 0x0f; if (temp!=0x0f) for(i=50;i>0;i-) /相當于延時一會,消除抖動 temp=P3; temp=temp & 0x0

29、f; if (temp!=0x0f) temp=P3; temp=temp & 0x0f; switch(temp) case 0x0e: key=0; break; case 0x0d: key=1; break; case 0x0b: key=2; break; case 0x07: key=3; break; temp=P3; P1_0=P1_0; STH0=tabkey/256; /送定時器初值來改變頻率 STL0=tabkey%256; TR0=1; temp=temp & 0x0f; while(temp!=0x0f) /按鍵釋放檢測 display(key); /

30、調用顯示程序,顯示按鍵編號 temp=P3; temp=temp & 0x0f; TR0=0; P3=0xff; P3_5=0; temp=P3; temp=temp & 0x0f; if (temp!=0x0f) for(i=50;i>0;i-) /相當于延時一會,消除抖動 temp=P3; temp=temp & 0x0f; if (temp!=0x0f) temp=P3; temp=temp & 0x0f; switch(temp) case 0x0e: key=4; break; case 0x0d: key=5; break; case 0x0b: key=6; break; case 0x07: key=7; break; temp=P3; P1_0=P1_0; STH0=tabkey/256;/送定時器初值來改變頻率 STL0=tabkey%256; TR0=1; temp=temp & 0x0f; while(temp!=0x0f)/按鍵釋放檢測 display(key);/調用顯示程序,顯示按鍵編號 temp=P3; temp=temp & 0x0f; TR0=0; P3=0xff; P3_6=0; temp=P3; temp=te

溫馨提示

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

評論

0/150

提交評論