版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 基于51單片機簡易電子琴設計</p><p><b> 摘 要</b></p><p> 隨著社會的發(fā)展進步,音樂逐漸成為我們生活中很重要的一部分,有人曾說喜歡音樂的人不會向惡。我們都會抽空欣賞世界名曲,作為對精神的洗禮。本論文設計一個基于單片機的簡易電子琴。我們對于電子琴如何實現(xiàn)其功能,如音色選擇、聲音強弱控制、節(jié)拍器、自動放音功能等等也
2、很好奇。</p><p> 電子琴是現(xiàn)代電子科技與音樂結合的產(chǎn)物,是一種新型的鍵盤樂器。它在現(xiàn)代音樂扮演著重要的角色,單片機具有強大的控制功能和靈活的編程實現(xiàn)特性,它已經(jīng)溶入現(xiàn)代人們的生活中,成為不可替代的一部分。本文的主要內容是用AT89S51單片機為核心控制元件,設計一個電子琴。以單片機作為主控核心,與鍵盤、揚聲器等模塊組成核心主控制模塊,在主控模塊上設有16個按鍵和揚聲器。本系統(tǒng)運行穩(wěn)定,其優(yōu)點是硬件電路
3、簡單,軟件功能完善,控制系統(tǒng)可靠,性價比較高等,具有一定的實用和參考價值。</p><p> 在電子行業(yè)高速發(fā)展的今天,單片機已經(jīng)廣泛的應用到了各個行業(yè)之中,其中也就包括了我所設計的娛樂項目,隨意的彈奏音樂并且伴著燈光的閃爍,這就是我所以利用89C51單片機所設計的聲光電子琴,聲光電子琴的設計理念完全是利用89c51單片機的功能的研究和理解以及延伸拓展。以下我會詳細介紹電路的設計和程序的編制過程。</p&
4、gt;<p> 關鍵詞:89c51單片機 電路 程序 </p><p><b> 目 錄</b></p><p><b> 目 錄II</b></p><p> 第一章 緒論- 1 -</p><p> 1.1 課題背景- 1 -</p><
5、p> 1.2 設計依據(jù)- 1 -</p><p> 第二章 系統(tǒng)方案設計及主控芯片介紹- 2 -</p><p> 2.1 系統(tǒng)基本設計思路- 2 -</p><p> 2.2 單元電路方案論證- 2 -</p><p> 2.2.1 控制器模塊- 2 -</p><p> 2.2.2 發(fā)聲
6、模塊- 2 -</p><p> 2.2.3 編程軟件模塊- 3 -</p><p> 2.2.4 最終方案- 3 -</p><p> 2.3 AT89C51單片機- 4 -</p><p> 第三章 硬件電路設計- 5 -</p><p> 3.1 最小系統(tǒng)設計- 5 -</p>
7、<p> 3.2 時鐘電路- 5 -</p><p> 3.3 復位電路- 6 -</p><p> 3.4 按鍵控制模塊- 6 -</p><p> 3.5 播放模塊- 7 -</p><p> 第四章 程序流程- 7 -</p><p> 4.1 程序流程圖- 7 -</p
8、><p> 4.2 重點程序分析- 8 -</p><p> 4.2.1 音階程序- 8 -</p><p> 結 論- 8 -</p><p> 參考文獻- 9 -</p><p> 致 謝- 10 -</p><p> 附錄 1 主要源程序- 11 -</p&g
9、t;<p> 附錄 2 原理圖- 18 -</p><p> 附錄 3 PCB板圖- 19 -</p><p> 附錄 4 實物圖- 20 -</p><p><b> 第一章 緒論</b></p><p><b> 1.1 課題背景</b></p>&l
10、t;p> 單片機因其體積小,功能強,價格低廉而得到廣泛應用,同時隨著我國經(jīng)濟的飛速發(fā)展,單片機在越來越多的領域得到了廣泛的應用,現(xiàn)在國內的單片機多用于電話,玩具和LCD等產(chǎn)品,預計在未來,利用單片機發(fā)明的產(chǎn)品會越來越多,作為一名應用電子的應屆畢業(yè)生來說,理解和掌握單片機的工作原理和使用技巧是必備的技能,基于這種考慮,我這次畢業(yè)設計的題目為簡易電子琴。</p><p> 我所設計的該產(chǎn)品時根據(jù)自身的興趣和
11、愛好所設計的,通過對傳統(tǒng)電子琴的認識和了解,知道了傳統(tǒng)的電子琴是利用單片機的匯編語言的編程來實現(xiàn)的,而且功能單一,只能彈奏而不能隨意的播放音樂,我所設計的產(chǎn)品是基于對89c51單片機的深入理解對傳統(tǒng)電子琴的小小的改革和創(chuàng)新,并且以簡單的C語言程序替代了復雜的匯編語言程序,聲和光是新電子琴的主題,我相信在聲光電子琴的不斷革新達到人們所需娛樂設備的標準的時候,電子琴會被投入到批量生產(chǎn)之中。單片微型計算機室大規(guī)模集成電路技術發(fā)展的產(chǎn)物,屬于第
12、四代電子計算機它具有高性能、高速度、體積小、價格低廉、穩(wěn)定可靠、應用廣泛的特點。他的應用必定導致傳統(tǒng)的控制技術從根本上發(fā)生變革。因此,單片機的開發(fā)應用已成為高科技和工程領域的一項重大課題。</p><p><b> 1.2 設計依據(jù)</b></p><p> 電子琴是現(xiàn)代電子科技與音樂結合的產(chǎn)物,是一種新型的鍵盤樂器。它在現(xiàn)代音樂扮演重要的角色,單片機具有強大的控
13、制功能和靈活的編程實現(xiàn)特性,它已經(jīng)溶入現(xiàn)代人們的生活中,成為不可替代的一部分。本文的主要內容是用AT89S52單片機為核心控制元件,設計一個電子琴。以單片機作為主控核心,與鍵盤揚聲器等模塊組成核心主控制模塊,在主控模塊上設有8個按鍵,和一個復位按鍵。</p><p> 主要對使用單片機設計簡易電子琴進行了分析,并介紹了基于單片機電子琴硬件的組成。利用單片機產(chǎn)生不同頻率來獲得我們要求的音階,最終可隨意彈奏要表達的
14、音符。并且分別從原理圖,主要芯片,個模塊原理及各莫奎的程序的調試來詳細闡述。</p><p> 一首音樂是許多不同的音階組成的,而每個音階對應著不同的頻率,這樣我們就可以利用不同的頻率的組合,構成我們想演奏的那首曲目。當然對于單片機來產(chǎn)生不同的頻率非常方便,我們可以利用單片機的定時/計數(shù)器T0來產(chǎn)生這樣的方波頻率信號,因此,我們只要把一首歌曲的音階對應頻率關系編寫正確就可以達到我們想要的曲目。</p>
15、;<p> 第二章 系統(tǒng)方案設計及主控芯片介紹</p><p> 2.1 系統(tǒng)基本設計思路</p><p> 此設計是在LED小燈上顯示燈光的變換,揚聲器播放彈奏的曲子。電路包括:鍵盤、單片機及LED顯示電路,聲音電路。</p><p> 2.1.1 各部分說明</p><p> ?。?)鍵盤用于彈奏音樂,八個按鍵8種音
16、符。</p><p> ?。?)單片機通過輸出各種電脈沖信號驅動控制各部分正常工作。</p><p> (3)單片機發(fā)送的信號分別經(jīng)過LED顯示電路通過譯碼最終在LED小燈和聲音電路通過揚聲器顯示出來。</p><p> 2.1.1系統(tǒng)工作過程</p><p> 單片機要產(chǎn)生音頻脈沖,主要處理過程是在CPU中完成的,CPU會隨時對音符輸
17、入信號進行讀取數(shù)據(jù)的操作。在讀取了相應的寄存器的值后,CPU將讀取的值進行處理,再通過I/O口把音樂通過揚聲器播放出來。</p><p> 2.2 單元電路方案論證</p><p> 根據(jù)設計要求,本系統(tǒng)主要由控制器模塊、顯示模塊和輸入模塊構成。為較好的實現(xiàn)各模塊的功能,我們分別設計了以下幾種方案并分別進行了論證。</p><p> 2.2.1 控制器模塊&l
18、t;/p><p> 方案1:采用凌陽系列單片機為系統(tǒng)的控制器</p><p> 凌陽系列單片機可以實現(xiàn)各種復雜的邏輯功能,模塊大,密度高,它將所有器件集成在一塊芯片上,減少了體積,提高了穩(wěn)定性。凌陽系列單片機提高了系統(tǒng)的處理速度,適合作為大規(guī)模實時系統(tǒng)的控制核心。</p><p> 方案2:采用51系列作為系統(tǒng)控制器</p><p> 單
19、片機算術運算功能強,軟件編程靈活、自由度大,可用軟件編程實現(xiàn)各種算法和邏輯控制。由于其功耗低、體積較小、技術成熟和成本低等優(yōu)點,在各個領域應用廣泛。而且抗干擾性能好。</p><p> 因51單片機價格比凌陽系列低得多,且本設計不需要很高的處理速度,從經(jīng)濟和方便使用角度考慮,本設計選擇了方案2。</p><p> 2.2.2 發(fā)聲模塊</p><p> 發(fā)聲模
20、塊是本設計的最主要的部分。</p><p> 基本方案:發(fā)生電路是這次設計電路中最重要的組成部分,他承載著把單片機所產(chǎn)生的聲音信號放大并輸出的重要作用,而我的設計中的發(fā)聲電路主要是由兩個CS9013組成。CS9013是一種小功率的放大管,屬于NPN型號三極管,而對三極管引腳的判斷有以下方法。</p><p> 1.判斷三極管的基極。對于NPN型號的三極管,用黑表筆接某一個電極,紅表筆分
21、別接另外兩個電極,若測量電阻值兩個都小,調換表筆后被測電阻值都較大,則可判斷第一次測量中黑表筆所接的是基極;如果測量值一大一小,相差很大,則第一次測量中黑表筆接的不是基極,應該更換其他電極重測。</p><p> 2.測量三極管發(fā)射極e和集電極c。三極管基極確定后,通過交換表筆,兩次測量e,c極間的電阻,如果兩次測量結果不相等,其中測得電阻值較小的一次為紅表筆的是e極黑表筆接的是c極。對于PNP型號的三極管,方
22、法與NPN的相似,只是紅黑表筆的作用相反,在測量e,c極間電阻時要注意,由于三極管的V(BR)CEO很小,很容易將發(fā)射結擊穿。</p><p> 當我們三極管的管腳判斷結束以后,我們就可以用兩個三極管構成一個達林頓結構。首先當單片機P1.0口輸出一個高電平,由兩個三極管構成的達林頓成能導通,導通后又能對電流又一定的放大作用,這樣傳到揚聲器時信號能讓我們聽的更清楚。</p><p> 2
23、.2.3 編程軟件模塊</p><p> 方案1:采用匯編語言編程</p><p> 匯編語言指令是用一些具有相應含義的助憶符來表達的,所以,它要比機器語言容易掌握和運用,但另一方面,它要直接使用CPU的資源,相對高級程序設計語言來說,它又顯得難掌握。</p><p> 方案2:采用C語言編程</p><p> C語言與其他高級語言相
24、比,具有運算符的豐富性、語法表述的靈活性、對軟硬件操作的兼容性、輸入輸出方式的新穎性等主要特征.深入分析研究這些特征,可以加深對C語言的認識;正確應用這些特征,可以靈活高效地解決各種實際問題.</p><p> 因為我在大學期間對匯編語言沒有深入的了解,而且在編程時一直用C語言,所以我選擇了方案2。</p><p> 2.2.4 最終方案</p><p> 經(jīng)
25、過反復論證,最終確定了如下方案:</p><p> ?。?)采用STC89C51單片機作為主控制器。</p><p> ?。?)采用達林頓效應使音樂信號放大</p><p> ?。?)采用C語言編程</p><p> 2.3 AT89C51單片機</p><p> AT89S51是一個低功耗,高性能CMOS 8位單
26、片機,片內含4k Bytes ISP(In-system programmable)的可反復擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術制造,兼容標準MCS -51指令系統(tǒng)及80C51引腳結構,芯片內集成了通用8位中央處理器和ISP Flash存儲單元,功能強大的微型計算機的AT89S51可為許多嵌入式控制應用系統(tǒng)提供高性價比的解決方案。 AT89S51具有如下特
27、點:40個引腳,4k Bytes Flash片內程序存儲器,128 bytes的隨機存取數(shù)據(jù)存儲器(RAM),32個外部雙向輸入/輸出(I/O)口,5個中斷優(yōu)先級2層中斷嵌套中斷,2個16位可編程定時計數(shù)器,2個 全雙工串行通信口,看門狗(WDT)電路,片內時鐘振蕩器。 AT89S51引腳圖 此外,AT89S51設計和配置了振蕩頻率
28、可為0Hz并可通過軟件設置省電模式??臻e模式下,CPU暫停工作,而RAM定時計數(shù)器,串行口,外中斷 系統(tǒng)可繼續(xù)工作,掉電模式凍結振蕩器而保存RAM的數(shù)據(jù),停止芯片其它功能</p><p> STC89C51是一種帶8K字節(jié)可編程可檫除只讀存儲器的低電壓、高性能COMOS8位微處理器,俗稱單片機。該器件采用ATMEL高密度非易失存儲器制造技術制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。</p>
29、;<p> 單片機引腳圖如圖所示</p><p> 圖1 STC89C51單片機引腳圖</p><p> 第三章 硬件電路設計</p><p> 3.1 最小系統(tǒng)設計</p><p> 最小系統(tǒng)包括單片機及其所需的必要的電源、時鐘、復位等部件,能使單片機始終處于正常的運行狀態(tài)。電源、時鐘等電路是使單片機能運行的必備條件
30、,可以將最小系統(tǒng)作為應用系統(tǒng)的核心部分,通過對其進行存儲器擴展、A/D擴展等,使單片機完成較復雜的功能。</p><p><b> 3.2 時鐘電路</b></p><p> STC89C51內部有一個用于構成振蕩器的高增益反相放大器,引腳RXD和TXD分別是此放大器的輸入端和輸出端。時鐘可以由內部方式產(chǎn)生或外部方式產(chǎn)生。內部時鐘在此不做詳細介紹。外部方式的時鐘電
31、路如圖3所示,RXD接地,TXD接外部振蕩器。對外部振蕩信號無特殊要求,只要求保證脈沖寬度,一般采用頻率在12MHz左右的方波信號。</p><p> 圖2 89c51內部時鐘電路</p><p><b> 3.3 復位電路</b></p><p> 當在89C51單片機的RST引腳引入高電平并保持2個機器周期時,單片機內部就執(zhí)行復位操作
32、(若該引腳持續(xù)保持高電平,單片機就處于循環(huán)復位狀態(tài))。</p><p> 復位電路通常采用上電自動復位和按鈕復位兩種方式。</p><p> 最簡單的上電自動復位電路中上電自動復位是通過外部復位電路的電容充放電來實現(xiàn)的。只要Vcc的上升時間不超過1ms,就可以實現(xiàn)自動上電復位。</p><p> 除了上電復位外,有時還需要按鍵手動復位。本設計就是用的按鍵手動復
33、位。按鍵手動復位有電平方式和脈沖方式兩種。其中電平復位是通過RST(9)端與電源Vcc接通而實現(xiàn)的。按鍵手動復位電路見圖4。時鐘頻率用11.0592MHZ時C取10uF,R取10kΩ。</p><p> 圖3 89C51 復位電路</p><p> 3.4 按鍵控制模塊</p><p> 電子琴設有11個按鍵,其中8個作為音符輸入。8個按鍵分別代表8個音符,包
34、括中音段的全部音符,通過軟硬件設計。另外3個分別是控制復位、流水燈的轉換、自動播放音樂。</p><p><b> 如下圖:</b></p><p><b> 3.5 播放模塊</b></p><p> 播放模塊是由2個三極管構成,三級管將信號放大,然后傳輸?shù)嚼?,喇叭它幾乎不存在噪聲,音響效果較好。</p&g
35、t;<p><b> 下圖是該模塊電路:</b></p><p><b> 第四章 程序流程</b></p><p><b> 4.1 程序流程圖</b></p><p> 該設計方案是通過按鍵隨意按下所要表達的音符,作為電平送給主體電路,中央處理器通過識別,解碼輸出音符,在揚聲
36、器中發(fā)出有效的聲音。通過這樣可以不斷的彈奏我們想要的音符或者是音調,電路由復位電路,指示燈電路,和功能按鍵電路組成,通過功能鍵可以選擇播放音樂或者彈奏音節(jié),硬件主要有下面幾個部分組成。</p><p> 4.2 重點程序分析</p><p> 4.2.1 音階程序</p><p> uchar code yinfu[]={0xfb,0xe9, //D
37、o</p><p> 0xfc,0x5c, //Re</p><p> 0xfc,0xc1, //Mi</p><p> 0xfc,0xef, //Fa</p><p> 0xfd,0x45, //So</p><p> 0xfd,0x92, //La<
38、/p><p> 0xfd,0xd0, //Si</p><p> 0xfd,0xee, //Do#</p><p> 0x00,0x00, //間隔</p><p><b> 4.2.2 </b></p><p><b> 結 論</b>&l
39、t;/p><p> 通過對自己在大學兩年時間里所學的知識的回顧,并充分發(fā)揮對所學知識的理解和對畢業(yè)設計的思考及書面表達能力,最終完成了本設計。這為自己今后進一步深化學習,積累了一定寶貴的經(jīng)驗。撰寫論文的過程也是專業(yè)知識的學習過程,它使我運用已有的專業(yè)基礎知識,對其進行設計,分析和解決一個理論問題或實際問題,把知識轉化為能力的實際訓練。培養(yǎng)了我運用所學知識解決實際問題的能力。將以調試好的程序燒進AT89S51芯片,再
40、放到電路板中,按下按鍵就可以發(fā)出相應的音。本次試驗通過制作電子琴,將幾個模塊換呢好的融合起來,對使用單片機設計簡易電子琴進行了分析,并接受了基于單片機電子期硬件組成。利用單片機產(chǎn)生不同頻率來獲得我們要求的音階,最終可隨意彈奏想要表達的音樂。說明一首音樂是許多不同的音階組成的,而每個音階對應著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構成我們所想要的音樂了,于是我們可以利用單片機的定時/計數(shù)器T0來產(chǎn)生這樣方波頻率信號,因此,我
41、們只要把一首歌曲的音階對應頻率關系弄正確即可,然后我們利用功放電路來將音樂聲音放大,同時同股溝顯示模塊來確知自己所彈的音符。</p><p> 通過這次實訓設計,我感覺收獲了很多:通過這次的單片機實訓,我加深了對單片機系列知識及其系統(tǒng)的認識。這個設計題目并不怎么新穎,但從中體現(xiàn)到了個系統(tǒng)開發(fā)設計的過程,足以讓我們受益匪淺。</p><p> 在這次的實訓中,讓我更進一步的提高了動手能力
42、,也重新復習了一次單片機的程序編程能力,在這期間,讓我更加深刻了體會到了匯編程序的思路,加強了對編程能力的理解和對相應資料的查閱。</p><p><b> 參考文獻</b></p><p> [1] 白熾貴編著.單片機C語言案例教程.北京:電子工業(yè)出版社,2011.1</p><p> [2] 周良權主編.模擬電子技術基礎.北京:高等教
43、育出版社,2005.6 </p><p> [3] 卜錫濱主編.數(shù)字電子技術.北京:中國水利水電出版社,2011.1 </p><p> [4] 李華.單片機C語言編程[M].北京:北京航空航天大學出版社,2005.8.1</p><p> [5] 徐愛鈞.單片機原理實用教程--基于Protrues虛擬仿真[M].北京:電子工業(yè)出版社.2009.1
44、 </p><p> [6] 李萍.AT89S51單片機、原理、開發(fā)與應用實例[M].北京:中國電力出版社.2008.7</p><p> [7] 張曄,王玉民等.單片機應用技術[M].北京:高等教育出版社.2006.3</p><p> [8] 付家才等.單片機控制工程實踐技術[M].北京:化學工業(yè)出版社.2004.5</p>&l
45、t;p> [9] 及力主編.電子CAD基于protel 99 SE.北京: 北京郵電大學出版社,2008</p><p> [10]徐紅升主編.電工基礎及實訓.北京:清華大學出版社,2009.5</p><p><b> 致 謝</b></p><p> 三年的讀書生活在這個季節(jié)即將劃上一個句號,而于我的人生卻只是一個逗號,我將
46、面對又一次征程的開始。三年的求學生涯在師長、親友的大力支持下,走得辛苦卻也收獲滿囊,在論文即將付梓之際,思緒萬千,心情久久不能平靜。 偉人、名人為我所崇拜,可是我更急切地要把我的敬意和贊美獻給一位平凡的人,我的導師。我不是您最出色的學生,而您卻是我最尊敬的李敏艷老師。您治學嚴謹,學識淵博,思想深邃,視野雄闊,為我營造了一種良好的精神氛圍。授人以魚不如授人以漁,置身其間,耳濡目染,潛移默化,使我不僅接受了全新的思想觀念,樹立了宏偉的學術目
47、標,領會了基本的思考方式,從論文題目的選定到論文寫作的指導,經(jīng)由您悉心的點撥,再經(jīng)思考后的領悟,常常讓我有“山重水復疑無路,柳暗花明又一村”。</p><p> 感謝我的爸爸媽媽,焉得諼草,言樹之背,養(yǎng)育之恩,無以回報,你們永遠健康快樂是我最大的心愿。在論文即將完成之際,我的心情無法平靜,從開始進入課題到論文的順利完成,有多少可敬的師長、同學、朋友給了我無言的幫助,在這里請接受我誠摯謝意!</p>
48、<p> 同時也感謝學院為我提供良好的做畢業(yè)設計的環(huán)境。</p><p> 最后再一次感謝所有在畢業(yè)設計中曾經(jīng)幫助過我的良師益友和同學,以及在設計中被我引用或參考的論著的作者。</p><p> 附錄 1 主要源程序</p><p> sfr P4=0xe8;//定義P4組I0口</p><p> #include<
49、;reg51.h></p><p> #define uint unsigned int</p><p> #define uchar unsigned char</p><p> sbit speaker=P1^4;//喇叭接30腳</p><p> sbit key1=P1^0;//流水燈按鍵(暫時)</p>
50、<p> sbit key2=P1^1;//播放音樂按鍵(暫定)</p><p> uchar a,b,num1,s1num,n1,n2;</p><p> char num;//定義num為可以負數(shù)</p><p> uchar code yinfu[]={0xfb,0xe9, //Do</p><p> 0x
51、fc,0x5c, //Re</p><p> 0xfc,0xc1, //Mi</p><p> 0xfc,0xef, //Fa</p><p> 0xfd,0x45, //So</p><p> 0xfd,0x92, //La</p><p> 0xfd,0x
52、d0, //Si</p><p> 0xfd,0xee, //Do#</p><p> 0x00,0x00, //間隔</p><p><b> };</b></p><p> uchar code shengri_tone[]={ 1,0,1,2,1,4,3,0, //生
53、日快樂音調</p><p> 1,0,1,2,1,5,4,0,</p><p> 1,0,1,8,6,4,3,2,0,</p><p> 7,0,7,6,4,5,4,0 //0代表不發(fā)聲,即停頓;數(shù)字即為音調</p><p><b> };</b></p><p> ucha
54、r code shengri_beat[]={ 24,1,24,48,48,48,72,5,//節(jié)拍</p><p> 24,1,24,48,48,48,72,5,</p><p> 24,1,24,48,48,48,48,72,5,</p><p> 24,1,24,48,48,48,72,5 //節(jié)拍,即tone表各音調的延時</p>
55、<p><b> };</b></p><p> uchar code ledtable[]={0x7f,0xbf,0xdf,0xef, //取反</p><p> 0xf7,0xfb,0xfd,0xfe};//P0組口的發(fā)光二極管代碼(焊接過程可能會相反,具體更改)</p><p> uchar code ledtabl
56、e2[]={0x7f,0xbf,0xdf,0xef, //取反</p><p> 0xf7,0xfb,0xfd,0xfe};//P2組口發(fā)光二極管代碼,相反!</p><p> void check_key();//改為P3組為按鍵</p><p> void keyscan();</p><p> void turn();//順時針
57、流動</p><p> void back();</p><p> void qianhou();</p><p> void dangshuang();</p><p> void delay(uint z);//延時函數(shù)聲明</p><p> void delay1(void);//聲明第二個延時函數(shù)&l
58、t;/p><p> void play1(void);//播放生日快樂</p><p> void main()</p><p><b> {</b></p><p> s1num=0;//流水燈種類標志</p><p><b> key1=1;</b></p&g
59、t;<p><b> key2=1;</b></p><p> TMOD=0x01;</p><p><b> TH0=a;</b></p><p><b> TL0=b;</b></p><p> ET0=1;//打開定時器,但是未允許中斷</p
60、><p><b> TR0=1;</b></p><p><b> while(1)</b></p><p><b> {</b></p><p> check_key();</p><p> keyscan();</p><p
61、><b> }</b></p><p><b> }</b></p><p> void time0() interrupt 1</p><p><b> {</b></p><p><b> TH0=a;</b></p>&
62、lt;p><b> TL0=b;</b></p><p> speaker=~speaker;</p><p><b> }</b></p><p> void check_key()</p><p><b> {</b></p><p>
63、; P3=0xff;//先賦給P2組口高電平</p><p> switch(P3)//按下一個鍵相應4個燈亮</p><p><b> {</b></p><p> case 0xfe:P0=0xee;P2=0x77;a=0xfb;b=0xe9;EA=1;break;//P0,P2組為發(fā)光二極管組</p><p&g
64、t; case 0xfd:P0=0xdd;P2=0xbb;a=0xfc;b=0x5c;EA=1;break;//注意:EA不能改為TR0</p><p> case 0xfb:P0=0xbb;P2=0xdd;a=0xfc;b=0xc1;EA=1;break;</p><p> case 0xf7:P0=0x77;P2=0xee;a=0xfc;b=0xef;EA=1;break;<
65、;/p><p> case 0xef:P0=0xee;P2=0x77;a=0xfd;b=0x45;EA=1;break;</p><p> case 0xdf:P0=0xdd;P2=0xbb;a=0xfd;b=0x92;EA=1;break;</p><p> case 0xbf:P0=0xbb;P2=0xdd;a=0xfd;b=0xd0;EA=1;break;&
66、lt;/p><p> case 0x7f:P0=0x77;P2=0xee;a=0xfd;b=0xee;EA=1;break;</p><p> default:EA=0;speaker=0;//P0=0xff;P2=0xff ; </p><p><b> }</b></p><p><b> }</
67、b></p><p> void delay(uint z)</p><p><b> {</b></p><p><b> uint x,y;</b></p><p> for(x=z;x>0;x--)</p><p> for(y=110;y>
68、0;y--);</p><p><b> }</b></p><p> void keyscan()</p><p><b> {</b></p><p> if(key1==0)</p><p><b> {</b></p>&
69、lt;p><b> delay(5);</b></p><p> if(key1==0)</p><p><b> {</b></p><p><b> s1num++;</b></p><p> while(!key1);</p><p&g
70、t; if(s1num==1)</p><p><b> {</b></p><p><b> turn();</b></p><p><b> }</b></p><p><b> }</b></p><p> if(
71、s1num==2)</p><p><b> {</b></p><p><b> back();</b></p><p><b> }</b></p><p> if(s1num==3)</p><p><b> {</b&g
72、t;</p><p> qianhou();</p><p><b> }</b></p><p> if(s1num==4)</p><p><b> {</b></p><p> dangshuang();</p><p><b&g
73、t; }</b></p><p> if(s1num==5)</p><p><b> s1num=1;</b></p><p><b> }</b></p><p> if(key2==0)</p><p><b> {</b>
74、</p><p><b> delay(5);</b></p><p> while(~key2);</p><p><b> play1();</b></p><p><b> }</b></p><p><b> }</b&
75、gt;</p><p> void delay1(void)//第二個延時函數(shù)</p><p><b> {</b></p><p> uchar n=15;</p><p> while(n--)</p><p><b> {</b></p><
76、;p><b> uchar i;</b></p><p> for(i=0;i<125;i++);</p><p><b> }</b></p><p><b> }</b></p><p> void play1(void)//播放生日快樂</p&
77、gt;<p><b> {</b></p><p> uchar m=0;</p><p> uchar s; </p><p> uchar c=1;</p><p><b> P0=0xaa;</b></p><p><b>
78、P2=0x55;</b></p><p><b> while(1)</b></p><p><b> {</b></p><p><b> EA=0;</b></p><p> c=shengri_tone[m];
79、 //取音符</p><p> s=shengri_beat[m]; //取節(jié)拍</p><p> a=yinfu[2*c-2]; </p><p> b=yinfu[2*c-1]; </p&g
80、t;<p><b> EA=1;</b></p><p> while(s--)</p><p><b> {</b></p><p><b> delay1();</b></p><p><b> P0=~P0;</b></
81、p><p><b> P2=~P2;</b></p><p><b> }</b></p><p><b> m++;</b></p><p> if(m>=33) return; //數(shù)值是shengri相關表中的元素數(shù)量
82、 </p><p><b> } </b></p><p><b> }</b></p><p> /*以下為N種流水燈流動花式*/</p><p> void turn()//流水燈順時針走動(5次)</p><p><b> {</b&g
83、t;</p><p> for(num1=0;num1<8;num1++)</p><p><b> {</b></p><p> for(num=0;num<8;num++)</p><p><b> {</b></p><p> P0=ledtabl
84、e[num];</p><p> delay(30);//時間暫定</p><p><b> }</b></p><p> P0=0xff;//之后關閉P1組</p><p> for(num=7;num>-1;num--)</p><p><b> {</b>
85、;</p><p> P2=ledtable2[num];</p><p> delay(30);</p><p><b> }</b></p><p> P2=0xff;//之后關閉P2組</p><p><b> }</b></p><p&g
86、t;<b> }</b></p><p> void back()//逆時針流動</p><p><b> {</b></p><p> for(num1=0;num1<8;num1++)</p><p><b> {</b></p><p&
87、gt; for(num=0;num<8;num++)</p><p><b> {</b></p><p> P2=ledtable[num];</p><p> delay(30);</p><p><b> }</b></p><p><b>
88、 P2=0xff;</b></p><p> for(num=7;num>-1;num--)</p><p><b> {</b></p><p> P0=ledtable2[num];</p><p> delay(30);</p><p><b> }&l
89、t;/b></p><p><b> P0=0xff;</b></p><p><b> }</b></p><p><b> }</b></p><p> void qianhou()//前后來回</p><p><b> {
90、</b></p><p> for(num1=0;num1<10;num1++)</p><p><b> {</b></p><p> for(num=0;num<8;num++)</p><p><b> {</b></p><p> P
91、0=ledtable[num];</p><p> P2=ledtable2[num];</p><p> delay(30);</p><p><b> }</b></p><p><b> P0=0xff;</b></p><p><b> P2=0x
92、ff;</b></p><p> for(num=7;num>-1;num--)</p><p><b> {</b></p><p> P0=ledtable[num];</p><p> P2=ledtable2[num];</p><p> delay(30);&
93、lt;/p><p><b> }</b></p><p><b> P0=0xff;</b></p><p><b> P2=0xff;</b></p><p><b> }</b></p><p><b> }&l
94、t;/b></p><p> void dangshuang()//單數(shù)雙數(shù)</p><p><b> {</b></p><p> for(num1=0;num1<15;num1++)</p><p><b> {</b></p><p><b&g
95、t; P0=0x55;</b></p><p><b> P2=0xaa;</b></p><p> delay(150);</p><p><b> P0=0xaa;</b></p><p><b> P2=0x55;</b></p>&l
96、t;p> delay(150);</p><p> } </p><p><b> }</b></p><p><b> 附錄 2 原理圖</b></p><p> 附錄 3 PCB板圖</p><p><b> 附錄 4 實物
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于51單片機簡易電子琴設計畢業(yè)論文
- 基于51單片機簡易電子琴設計
- 聲光電子琴仿真
- 基于51單片機的電子琴設計畢業(yè)論文
- 51單片機課程設計--簡易電子琴
- 基于單片機的簡易電子琴的設計畢業(yè)論文
- 基于51單片機的電子琴設計
- 基于單片機控制電子琴畢業(yè)論文
- 基于單片機控制電子琴畢業(yè)論文
- 電子琴課程設計--基于單片機的電子琴設計
- 基于51單片機的簡易電子琴設計說明
- 畢業(yè)設計(論文)基于單片機的簡易電子琴
- 聲光電子琴原件清單.doc
- 聲光電子琴-開題報告.doc
- 基于51單片機簡易電子琴的課程設計
- 基于51單片機的簡易電子琴設計說明
- 電子琴課程設計--基于單片機的電子琴設計
- 電子琴課程設計-- 基于單片機的電子琴設計
- 基于單片機的電子琴設計畢業(yè)論文
- 單片機課程設計--基于51單片機的簡易電子琴
評論
0/150
提交評論