




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、山東建筑大學信息與電氣工程學院學院課程設計說明書山東建筑大學課 程 設 計 說 明 書題 目: 基于單片機的數(shù)字音樂盒課 程: 單片機原理及應用B課程設計院 (部): 信息與電氣工程學院專 業(yè): 電子信息工程班 級: 學生姓名: 學 號: 指導教師: 高煥兵 張君捧完成日期: 2013年6月I目 錄摘 要I1 設計目的22 設計要求23 設計內容33.1 設計原理33.2 方案設計33.3 電路各模塊說明43.4 器件選擇63.5系統(tǒng)設計83.6 軟件設計83.7 仿真調試及操作說明9總結與致謝10參考文獻11附錄12附錄一:基于單片機的數(shù)字音樂盒總電路圖12附錄二:音樂程序12摘 要20世紀
2、末,電子技術獲得了飛速的發(fā)展,在其推動下,現(xiàn)代電子產品幾乎滲透了社會的各個領域,基于單片機制作的電子式音樂盒,控制功能強大,可根據(jù)需要選歌,使用方便。所放歌曲的節(jié)奏可以根據(jù)需要進行設置,根據(jù)存儲容量的大小,可以盡可能多的存儲歌曲。本設計由由單片機AT80C51芯片和LCD顯示器為核心,輔以必要的電路,構成的一個單片機電子數(shù)字音樂盒。本設計采用4*4鍵盤,用Protel99來畫系統(tǒng)硬件圖,采用C語言進行編程,編程后利用KEIL C51來進行編譯,再生成的HEX文件裝入芯片中,采用proteus軟件來仿真,檢驗功能得以正常實現(xiàn)。關鍵詞:單片機;音樂盒;電路;播放01 設計目的單片機原理及應用是高校
3、工程專業(yè)的一門專業(yè)基礎課,該門課程具有很強的實踐性。通過課程的學習,使學生掌握基本概念、基本理論和基本技能。通過本次設計使同學們掌握對單片機的控制,實現(xiàn)自己編程,完成專業(yè)要求。2 設計要求1、利用I/O口產生一定頻率的方波,驅動蜂鳴器,發(fā)出不同的音調,從而演奏樂曲(最少儲存三首樂曲,每首不少于30秒)2、采用LCD顯示信息3、開機時有英文歡迎提示字符,播放時顯示歌曲序號(或名稱)4、可通過功能鍵選擇樂曲,暫停,播放 5、顯示樂曲播放時間或剩余時間3 設計內容3.1設計原理 設計原理:通過按鍵給單片機的P2口輸入低電平,進而利用程序來判斷是否執(zhí)行某一播放功能。而利用單片機的定時器0中斷來控制播放
4、樂曲。3.2 方案設計本實驗采用AT80S51單片機的I/O口產生一定頻率的方波,配合鍵盤系統(tǒng),時鐘電路,復位電路以及液晶顯示電路,驅動蜂鳴器,發(fā)出不同的音調,從而演奏樂曲。共有4樂曲,每首樂曲都由相應的按鍵控制,并且有開關鍵、暫停鍵、上一曲以及下一曲控制鍵。系統(tǒng)總體結構框圖電源電路晶振電路鍵盤電路復位電路蜂鳴器LCD液晶 AT80C51單片機3.3 電路各模塊說明3.3.1時鐘電路此系統(tǒng)的時鐘電路設計是采用內部方式,即是利用芯片內部的振蕩電路。利用12MHZ的晶振做外部時鐘;AT80C51中有一個用于構成內部振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別是該放大器的輸入端和輸出端。
5、這個放大器與作為反饋元件的片外石英晶體(陶瓷)諧振器一起構成自然振蕩器。外接石英晶體及電容C1、C2接在放大器的反饋回路中構成并聯(lián)振蕩電路。對外接電容C1,C2雖然沒有什么嚴格的要求,但電容容量的大小會輕微影響振蕩頻率的高低、振蕩器工作的穩(wěn)定性、起振的難易程序及溫度穩(wěn)定性。如果使用石英晶體,我們推薦電容使用30PF10PF(而如果使用陶瓷振蕩器建議選擇40PF10PF)。其電路圖如圖3-3-1所示圖3-3-13.3.2 復位電路51單片機的RST引腳是復位信號的輸入端,復位信號是高電平有效,其有效時間應持續(xù)24個振蕩脈沖周期(即二個機器周期)以上。一般有兩種復位方式:上電復位和手動復位。復位電
6、路圖如圖3-3-2所示。圖3-3-23.3.2 控制電路鍵盤接口電路如圖,本次設計中,按鍵有7個.鍵分別接于7根I/O線(P1口),各按鍵在實物連接上相互獨立,彼此的工作狀態(tài)互不影響,STC單片機自帶上拉電阻因此無需外接上拉電阻,用查詢法完成按鍵功能。其電路圖如圖3-3-2所示:圖3-3-23.3.3蜂鳴器電路:利用PNP管放大驅動?;鶚O接10K歐姆的電阻,發(fā)射極接蜂鳴器,集電極接電源。其電路圖如圖3-3-3所示:圖3-3-33.4 器件選擇3.4.1 80C51單片機簡介該系列單片機是采用高性能的靜態(tài)80C51 設計 由先進CMOS 工藝制造并帶有非易失性Flash 程序存儲器 全部支持12
7、 時鐘和6 時鐘操作 P89C51X2 和P89C52X2/54X2/58X2 分別包含128 字節(jié)和256 字節(jié)RAM 32 條I/O 口線 3 個16 位定時/計數(shù)器 6 輸入4 優(yōu)先級嵌套中斷結構 1 個串行I/O 口 可用于多機通信 I/O 擴展或全雙工UART以及片內振蕩器和時鐘電路。外形及引腳排列如圖3-4-1所示. 圖3-4-13.4.2 鍵盤 鍵盤在單片機應用系統(tǒng)中能實現(xiàn)向單片機輸入數(shù)據(jù),傳送命令等功能,是人工干預單片機的主要手段。(1)鍵盤輸入的特點鍵盤實質上是一級按鍵開關的集合。通常,鍵盤開關利用了機械觸點的合、斷作用。(2)按鍵的確認鍵的閉合與否,反映在行線輸出電壓上就呈
8、現(xiàn)高電平或低電平,如果高電平表示鍵斷開,低電平則表示鍵閉合,通過對行線電平高低狀態(tài)的檢測,便可確認按鍵按下與否。為了確保CPU對一次按鍵動作只確認一次按鍵有效,必須消除抖動的影響。(3)如何消除按鍵的抖動采用軟件來消除按鍵抖動的基本思想是:在一次檢測到有鍵按下時,該鍵所對應的行線為低電平,執(zhí)行一段延時10MS的子程序后,確認該行線電平是不否仍為低電平,如果仍為低電平,則確認為該行確實有鍵按下。當按鍵松開時,行線的低電平變?yōu)楦唠娖?,?zhí)行一段延時10MS的子程序后,檢測該行線為高電平,說明按鍵確實已經(jīng)松開。3.4.3 LCD液晶顯示1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字
9、、符號等的點陣型液晶模塊。它由若干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因為如此所以它不能很好地顯示圖形。1602LCD是指顯示的內容為16X2,即可以顯示兩行,每行16個字符液晶模塊(顯示字符和數(shù)字)。3.5系統(tǒng)設計其系統(tǒng)原理圖如附錄一所示。3.6軟件設計程序設計流程圖如圖3-6所示. 先從主程序開始,接著初始化變量及 LCD 接口,然后初始化方波發(fā)生器、晶振管,使 LCD 顯示信息,就進入了開機狀態(tài),等待動作選擇按鍵,包括播放鍵,暫停鍵,停止鍵,當然也可以選擇返回;加入選擇的是播放
10、鍵,LCD 上就會 -7-現(xiàn)實歌曲編號,與此同時演奏相應的樂曲,此時,你可以按上一曲或下一曲鍵,使其演奏上一個或者先一個樂曲。主程序流程圖 LCD顯示流程圖其程序代碼如附錄二所示。3.7 仿真調試及操作說明按照上面設計的電路在protel軟件內畫圖, 打開單片機軟件開發(fā)系統(tǒng)Keil,選擇80c51單片機,在其中編寫程序,運行生成一個后綴名為hex的文件,然后將該文件下載到protel中的AT80c51單片機中進行仿真,觀察實驗現(xiàn)象。仿真能實現(xiàn)播放音樂,按鍵選擇曲目,暫停,播放功能。仿真成功后,安裝好實驗板,然后將音樂程序下載到電路板內 ,觀察結果。能實現(xiàn)播放音樂,按鍵換曲等功能??偨Y與致謝一個
11、星期的摸索與實驗,雖然時間很短,但使我們不僅僅是對于單片機入門軟件與硬件的常用設計與功能,還使我們對于一項設計研究的制作過程所需要的詳細步驟和具體的實現(xiàn)方法的力度的掌握。當然在這次寶貴的設計活動中,經(jīng)驗才是對于我們最大的收獲,而且還增強了自身對未知問題以及對知識的深化認識的能力,用受益匪淺這個詞語來概括這次難忘的活動我覺得再合適不過了。但是,光是完成了作品還是不可以自我滿足的,在從一開始的時候就懷著將作品制作得更加人性化,更加令人滿意,更加地使功能完美又方便地被應用領域這個最終目的下,隨著對單片機這門學科的認識加深,到達了拓展的程度,我想這個目的將在不遠的時期內被實現(xiàn)。總之,這次設計從軟件編寫
12、、調試到軟硬件聯(lián)機調試,我們傾注了大量的時間和心血。真是曾經(jīng)為程序的編寫而冥思苦想過,曾經(jīng)為無法找出錯誤而郁悶苦惱過,也曾經(jīng)為某一功能不能實現(xiàn)而猶豫彷徨過,但最終我們完成設計了。至此完成課程設計,首先要感謝不畏辛辭的老師,通過老師的指導,使我增漲了單片機的知識。其次,還要感謝我的同學,在這次課程設計中,遇到了許多的困難,是通過詢問他們才解決的。 參考文獻1 徐崢穎編著.Protel99SE EDA 技術及應用M.北京機械工業(yè)出版社2005.2 三恒星科技.MCS-51單片機原理與應用實例M. 北京:電子工業(yè)出版社,2008.013 王為青,程國鋼.單片機Keil Cx51應用開發(fā)技術M. 北京
13、:人民郵電出版社,2007.024 邊春遠編著.MCS-51單片機應用開發(fā)實用子程序M.北京人民郵電出版社2005.5 黃智偉凌陽單片機課程設計指導M,北京:北京航空航天大學出版社,2006.11. 6 李廣弟,朱月秀,王秀山.單片機基礎M,北京:北京航空航天大學出版社,2001.7. 7 康華光模擬電子技術基礎第四版)M, 武漢:華中理工大學出版社,1999.附錄附錄一:基于單片機的數(shù)字音樂盒總電路圖附錄二:音樂程序#include #define uchar unsigned char#define uint unsigned intsbit BEEP = P14; /蜂鳴器sbit k0
14、=P20;sbit k1=P21;sbit k2=P22;sbit k3=P23;sbit k4=P24;sbit k5=P25;sbit k6=P26;uint code Tone_Delay_Table = 64021,64103,64260,64400,64524,64580,64684,64777, 64820,64898,64968,65030,65058,65110,65157,65178 ;uchar code Song1_Tone=1, 1, 5, 5, 6, 6, 5,4, 4, 3 ,3, 2, 2, 1,5, 5, 4, 4, 3, 3, 2, 5, 5, 4, 4, 3
15、, 3, 2,1,1, 5, 5, 6, 6 ,5,4 ,4, 3, 3, 2, 2, 1,0xff;uchar code Song1_Time=2,2,2,2,2,3,4,2,2,2,2,2,2,4,2,2,2,2,2,2,4,2,2,2,2,2,2,5,2,2,2,2,2,2,5,2,2,2,2,2,2,5,0xff;uchar code Song2_Tone=1,2,3,1,1,2,3,1,3,4,5,3,4,5, 5,6,5,4,3,1, 5,6,5,4,3,1 ,1,5,1,0xff;uchar code Song2_Time=2,2,3,2,2,2,3,2,2,2,2,2,2,2,
16、2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,0xff; uchar code Song3_Tone = 1,3,3,3,3,5,4,2,5,3,7,6,5,5,7,4,4,3,6,7,2,1,0xFF; uchar code Song3_Time = 2,1,1,2,1,1,1,2,1,1,3,2,1,1,2,4,1,1,2,1,1,1,0xFF; uchar code Song4_Tone = 8,9,2,3,7,6,2,3,10,11,1,2,3,1,2,3,3,4,5,6,5,3,5,6,5,3,5,3,2,1,1,2,3,0xFF; uchar code Son
17、g4_Time = 3,6,7,2,4,5,8,1,2,2,5,5,1,9,1,1,1,1,6,1,1,2,4,1,1,2,1,1,1,1,1,2,2,1,0xFF;uchar Song_Index = 0, Tone_Index = 0; /音樂片段索引,音符索引uchar *Song_Tone_Pointer, *Song_Time_Pointer; /音符指針,延時指針uchar i = 0; uchar j=0,k=0,m=0; /從當前數(shù)組中取音符的位置 void DelayMS(uint ms) /延時 uchar t; while(ms-) for (t = 0; t 120;
18、t+); void play0() /按鍵產生的INT0 ET0=1; TR0 = 0;k0=1; Song_Index = ( Song_Index + 1) % 4; /切換到下一音樂 switch (Song_Index) case 0: Song_Tone_Pointer = Song1_Tone; Song_Time_Pointer = Song1_Time; break; case 1: Song_Tone_Pointer = Song2_Tone; Song_Time_Pointer = Song2_Time; break; case 2: Song_Tone_Pointer =
19、 Song3_Tone; Song_Time_Pointer = Song3_Time; break;case 3: Song_Tone_Pointer = Song4_Tone; Song_Time_Pointer = Song4_Time; break; /從下一段音樂的第0個音符開始 i = 0; while (k0=1&k1=1&k2=1&k3=1&k4=1&k5=1&k6=1) Tone_Index = Song_Tone_Pointeri; if ( Tone_Index = 0xFF ) i = 0; DelayMS(2000); /每段音樂播放結束后停頓一段時間 continu
20、e; /繼續(xù)播放 TR0 = 1; DelayMS( Song_Time_Pointer Tone_Index * 240); TR0 = 0; i+; return; void play1() ET0=1; TR0 = 0;k1=1; Song_Index = ( Song_Index + 3) % 4; /切換到上一段音樂 switch (Song_Index) case 0: Song_Tone_Pointer = Song1_Tone; Song_Time_Pointer = Song1_Time; break; case 1: Song_Tone_Pointer = Song2_To
21、ne; Song_Time_Pointer = Song2_Time; break; case 2: Song_Tone_Pointer = Song3_Tone; Song_Time_Pointer = Song3_Time; break;case 3: Song_Tone_Pointer = Song4_Tone; Song_Time_Pointer = Song4_Time; break; i = 0; /從上一段音樂的第0個音符開始 while (k0=1&k1=1&k2=1&k3=1&k4=1&k5=1&k6=1) Tone_Index = Song_Tone_Pointeri; i
22、f ( Tone_Index = 0xFF ) i = 0; DelayMS(2000); /每段音樂播放結束后停頓一段時間 continue; /繼續(xù)播放 TR0 = 1; DelayMS( Song_Time_Pointer Tone_Index * 240); TR0 = 0; i+; return; void play2() m=!m; TR0 = 0;k2=1;if(m=0) j=1; TR0=0;ET0=0; if(m=1) ET0=1; k=1;if(j=1) /播放被暫停的音樂 switch (Song_Index) case 0: Song_Tone_Pointer = So
23、ng1_Tone; Song_Time_Pointer = Song1_Time; break; case 1: Song_Tone_Pointer = Song2_Tone; Song_Time_Pointer = Song2_Time; break; case 2: Song_Tone_Pointer = Song3_Tone; Song_Time_Pointer = Song3_Time; break;case 3: Song_Tone_Pointer = Song4_Tone; Song_Time_Pointer = Song4_Time; break; /從本一段音樂的第i個音符開始
24、 while (k0=1&k1=1&k2=1&k3=1&k4=1&k5=1&k6=1) Tone_Index = Song_Tone_Pointeri; if ( Tone_Index = 0xFF ) i = 0; DelayMS(2000); /每段音樂播放結束后停頓一段時間 Song_Index = ( Song_Index + 1) % 4; /播放下一首音樂 switch (Song_Index) case 0: Song_Tone_Pointer = Song1_Tone; Song_Time_Pointer = Song1_Time; break; case 1: Song_To
25、ne_Pointer = Song2_Tone; Song_Time_Pointer = Song2_Time; break; case 2: Song_Tone_Pointer = Song3_Tone; Song_Time_Pointer = Song3_Time; break;case 3: Song_Tone_Pointer = Song4_Tone; Song_Time_Pointer = Song4_Time; break;continue; TR0 = 1; DelayMS( Song_Time_Pointer Tone_Index * 240); TR0 = 0; i+; if
26、 (j=0)j=1; Song_Tone_Pointer = Song1_Tone; /開始播放音樂 Song_Time_Pointer = Song1_Time; i = 0; while (k0=1&k1=1&k2=1&k3=1&k4=1&k5=1&k6=1) Tone_Index = Song_Tone_Pointeri; if ( Tone_Index = 0xFF ) i = 0; DelayMS(2000); /每段音樂播放結束后停頓一段時間 Song_Index = ( Song_Index + 1) % 4; /播放下一段音樂 switch (Song_Index) case
27、0: Song_Tone_Pointer = Song1_Tone; Song_Time_Pointer = Song1_Time; break; case 1: Song_Tone_Pointer = Song2_Tone; Song_Time_Pointer = Song2_Time; break; case 2: Song_Tone_Pointer = Song3_Tone; Song_Time_Pointer = Song3_Time; break;case 3: Song_Tone_Pointer = Song4_Tone; Song_Time_Pointer = Song4_Tim
28、e; break; continue; TR0 = 1; DelayMS( Song_Time_Pointer Tone_Index * 240); TR0 = 0; i+; return; void play3() ET0=1; TR0 = 0; k3=1;/切換到第一段音樂 Song_Tone_Pointer = Song1_Tone; Song_Time_Pointer = Song1_Time; Song_Index=0; /從第一段音樂的第0個音符開始 i = 0; while (k0=1&k1=1&k2=1&k3=1&k4=1&k5=1&k6=1) Tone_Index = Son
29、g_Tone_Pointeri; if ( Tone_Index = 0xFF ) i = 0; DelayMS(2000); /每段音樂播放結束后停頓一段時間 continue; /繼續(xù)播放 TR0 = 1; DelayMS( Song_Time_Pointer Tone_Index * 240); TR0 = 0; i+; return; void play4() ET0=1; TR0 = 0;k4=1;Song_Tone_Pointer = Song2_Tone;/切換到第二段音樂 Song_Time_Pointer = Song2_Time; Song_Index=1 ; i=0; /
30、從第二段音樂的第0個音符開始 while (k0=1&k1=1&k2=1&k3=1&k4=1&k5=1&k6=1) Tone_Index = Song_Tone_Pointeri; if ( Tone_Index = 0xFF ) i = 0; DelayMS(2000); /每段音樂播放結束后停頓一段時間 continue; /繼續(xù)播放 TR0 = 1; DelayMS( Song_Time_Pointer Tone_Index * 240); TR0 = 0; i+; return; void play5() ET0=1; TR0 = 0;k5=1;Song_Tone_Pointer = Song3_Tone; /切換到第三段音樂 Song_Time_Pointer = Song3_Time; Song_Index=2; /從第三段音樂的第0個音符開始 i = 0; while (k0=1&k1=1&k2=1&k3=1&k4=1&k5=1&k6=1) Tone_Index = Song_Tone_Pointeri; if ( T
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電力設備購銷合同簽訂與電力設施維護服務合同
- 醫(yī)療康復護工定期雇傭合同樣本
- 股權轉讓協(xié)議工商變更與公司產業(yè)轉型升級合同
- 跨國公司部分股權收購與市場拓展合同
- 物業(yè)沙發(fā)清洗方案(3篇)
- DB23-T3006-2021-人工影響天氣地面作業(yè)安全事故現(xiàn)場處置與報告規(guī)范-黑龍江省
- DB23-T2911-2021-細綠萍種植及收獲技術規(guī)程-黑龍江省
- DB23-T2902-2021-冷季型草坪草混播種植技術規(guī)程-黑龍江省
- DB23-T2850-2021-公共視頻監(jiān)控系統(tǒng)建設規(guī)范-黑龍江省
- 培訓學習報銷管理制度
- 正規(guī)防水補漏合同模板
- 中建EPC項目報批報建工作操作指引
- 《言語治療技術》考試復習題庫(附答案)
- 《義務教育數(shù)學課程標準(2022年版)》初中內容解讀
- 氣壓傳動課件 項目八任務一 公共汽車門氣壓傳動系統(tǒng)
- 制鞋業(yè)鞋類產品設計與生產流程規(guī)范
- DB42-T 2275-2024 消防給水設施物聯(lián)網(wǎng)系統(tǒng)技術標準
- Unit4Friendsforever短文巧記單詞學習任務單高中英語
- 2024年春七年級地理下冊 第8章 第三節(jié) 俄羅斯教案 (新版)湘教版
- 1旅游概述《旅游學概論》省公開課一等獎全國示范課微課金獎課件
- DL∕T 5390-2014 發(fā)電廠和變電站照明設計技術規(guī)定
評論
0/150
提交評論