

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 課程設計(論文)說明書</p><p> 題 目:基于單片機的電子琴設計</p><p> 院 (系):信息與通信學院 </p><p> 專 業(yè):微電子學 </p><p> 學生姓名: </p><p&g
2、t; 學 號: </p><p> 指導教師: </p><p> 職 稱:副教授 </p><p> 2012年 12月 10日</p><p><b> 摘 要</b></p><p
3、> 隨著社會的發(fā)展進步,音樂逐漸成為我們生活中很重要的一部分,有人曾說喜歡音樂的人不會向惡。我們都會抽空欣賞世界名曲,作為對精神的洗禮。本論文設計一個基于單片機的簡易電子琴。我們對于電子琴如何實現其功能,如聲音強弱控制、節(jié)拍器、自動放音功能等等也很好奇。</p><p> 電子琴是現代電子科技與音樂結合的產物,是一種新型的鍵盤樂器。它在現代音樂扮演著重要的角色,單片機具有強大的控制功能和靈活的編程實現特
4、性,它已經溶入現代人們的生活中,成為不可替代的一部分。本文的主要內容是用AT89S52單片機為核心控制元件,設計一個電子琴。以單片機作為主控核心,與鍵盤、揚聲器等模塊組成核心主控制模塊,在主控模塊上設有16個按鍵和揚聲器。本系統(tǒng)運行穩(wěn)定,其優(yōu)點是硬件電路簡單,軟件功能完善,控制系統(tǒng)可靠,性價比較高等,具有一定的實用和參考價值。</p><p> 關鍵詞:AT89S52單片機;鍵盤;揚聲器;自動放音</p&
5、gt;<p><b> Abstract</b></p><p> With the development and progress of the society, the music has become a very important part of our lives, someone once said that people do not like the m
6、usic to the evil. We will be taking the time to enjoy the world famous, as the baptism of the spirit. This paper designed a simple microcontroller-based keyboard. How to achieve its function for the keyboard, such as the
7、 sound intensity control, metronome, automatic playback function is also very curious.</p><p> The keyboard is a product of modern electronic technology combined with music, is a new type of keyboard instru
8、ments. In modern music, it plays an important role, the microcontroller has a powerful control functions and flexible programming features, it has become an irreplaceable part of the integration into the life of modern p
9、eople. The main content of this paper is to design a keyboard with AT89S52 microcontroller as the core control elements. MCU as the master core, composed of a the core m</p><p> Key words:AT89S52 microcontr
10、oller; Keyboard; speakers; automatically playback</p><p><b> 目 錄</b></p><p><b> 引言1</b></p><p><b> 1 方案論證1</b></p><p> 1.1
11、 系統(tǒng)框圖1</p><p> 1.2 主要芯片介紹1</p><p> 1.2.1 AT89S52簡介1</p><p> 1.2.2主要功能特性2</p><p> 1.2.3 LM386內部電路2</p><p><b> 2 實現過程4</b></p>
12、<p> 2.1 4X4行列式鍵盤識別及顯示4</p><p> 3 程序設計內容5</p><p><b> 3.1 原理5</b></p><p> 3.2 程序流程圖7</p><p> 4 總結與展望8</p><p><b> 4.1全文總
13、結8</b></p><p><b> 4.2研究展望8</b></p><p><b> 5 結論8</b></p><p><b> 謝辭9</b></p><p><b> 參考文獻10</b></p>
14、<p><b> 附錄11</b></p><p><b> 引言</b></p><p> 單片微型計算機是大規(guī)模集成電路技術發(fā)展的產物,屬第四代電子計算機,它具有高性能、高速度、體積小、價格低廉、穩(wěn)定可靠、應用廣泛的特點。它的應用必定導致傳統(tǒng)的控制技術從根本上發(fā)生變革。因此,單片機的開發(fā)應用已成為高科技和工程領域的一項重大課
15、題。</p><p> 電子琴是現代電子科技與音樂結合的產物,是一種新型的鍵盤樂器。它在現代音樂扮演著重要的角色,單片機具有強大的控制功能和靈活的編程實現特性,它已經溶入現代人們的生活中,成為不可替代的一部分。本文的主要內容是用AT89S52單片機為核心控制元件,設計一個電子琴。以單片機作為主控核心,與鍵盤、揚聲器等模塊組成核心主控制模塊,在主控模塊上設有16個按鍵和揚聲器。</p><p&
16、gt; 本文主要對使用單片機設計簡易電子琴進行了分析,并介紹了基于單片機電子琴統(tǒng)硬件組成。利用單片機產生不同頻率來獲得我們要求的音階,最終可隨意彈奏想要表達的音樂。</p><p><b> 1 方案論證</b></p><p><b> 1.1 系統(tǒng)框圖</b></p><p><b> 圖1 系統(tǒng)
17、框圖</b></p><p> 1.2 主要芯片簡介</p><p> 1.2.1AT89S52簡介</p><p> 功能特性:AT89S52是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash 存儲器。使用Atmel 公司高密度非易失性存儲器技術制造,與工業(yè)80C51 產品指令和引腳完全兼容。片上Flash允許程序存儲器
18、在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應用系統(tǒng)提供高靈活、超有效的解決方案。 AT89S52具有以下標準功能:8k字節(jié)Flash,256字節(jié)RAM,32 位I/O 口線,看門狗定時器,2 個數據指針,三個16 位定時器/計數器,一個6向量2級中斷結構,全雙工串行口, 片內晶振及時鐘電路。另外,AT89S52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件
19、可選擇節(jié)電模式。空閑模式下,CPU 停止工作,允許RAM、定時器/計數器、串口、中斷繼續(xù)工作。掉電保護方式下,RAM內容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止。8 位微控制器 8K 字節(jié)在系統(tǒng)可編程 Flash AT89S52。</p><p> 圖2 AT89S52管腳圖</p><p> 1.2.2 主要功能特性</p><p&
20、gt; 與MCS-51單片機產品兼容;</p><p> 8K字節(jié)在系統(tǒng)可編程Flash存儲器;</p><p> 1000次擦寫周期;</p><p> 全靜態(tài)操作:0Hz~33Hz ;</p><p> 三級加密程序存儲器;</p><p> 32個可編程I/O口線;</p>&
21、lt;p> 三個16位定時器/計數器八個中斷源;</p><p> 全雙工UART串行通道、低功耗空閑和掉電模式;</p><p><b> 掉電后中斷可喚醒;</b></p><p><b> 看門狗定時器;</b></p><p><b> 雙數據指針;</b&g
22、t;</p><p><b> 掉電標識符。</b></p><p> 1.2.3 LM386內部電路</p><p> LM386是美國國家半導體公司生產的音頻功率放大器,主要應用于低電壓消費類產品。</p><p> LM386特性:靜態(tài)功耗低,約為4mA,可用于電池供電;工作電壓范圍寬,4V-12V或5V-
23、18V;外圍元件少;電壓增益可調,20-200;低失真度。</p><p> LM386是一種音頻集成功放,具有自身功耗低、電壓增益可調整、電源電壓范圍大、外接元件少和總諧波失真小等優(yōu)點,廣泛應用于錄音機和收音機之中。</p><p> 圖3 LM386內部電路原理圖</p><p> 與通用型集成運放相類似,它是一個三級放大電路。</p>&
24、lt;p> 第一級為差分放大電路,T1和T3、T2和T4分別構成復合管,作為差分放大電路的放大管;T5和T6組成鏡像電流源作為T1和T2的有源負載;T3和T4信號從管的基極輸入,從T2管的集電極輸出,為雙端輸入單端輸出差分電路。使用鏡像電流源作為差分放大電路有源負載,可使單端輸出電路的增益近似等于雙端輸出電容的增益。</p><p> 第二級為共射放大電路,T7為放大管,恒流源作有源負載,以增大放大倍數
25、。</p><p> 第三級中的T8和T9管復合成PNP型管,與NPN型管T10構成準互補輸出級。二極管D1和D2為輸出級提供合適的偏置電壓,可以消除交越失真。</p><p> 引腳2為反相輸入端,引腳3為同相輸入端。電路由單電源供電,故為OTL電路。輸出端(引腳5)應外接輸出電容后再接負載。</p><p> 電阻R7從輸出端連接到T2的發(fā)射極,形成反饋通
26、路,并與R5和R6構成反饋網絡,從而引入了深度電壓串聯(lián)負反饋,使整個電路具有穩(wěn)定的電壓增益。</p><p> 圖4 功放電路原理圖</p><p><b> 2 實現過程</b></p><p> 2.1 4X4行列式鍵盤識別及顯示</p><p> 組成鍵盤的按鍵有機械式、電容式、導電橡膠式、薄膜式多種,
27、但不管什么形式,其作用都是一個使電路接通與斷開的開關。目前微機系統(tǒng)中使用的鍵盤按其功能不同,通常可分為編碼鍵盤和非編碼鍵盤兩種基本類型。</p><p> 編碼鍵盤:鍵盤本身帶有實現接口主要功能所需的硬件電路。不僅能自動檢測被按下的鍵,并完成去抖動、防串鍵等功能,而且能提供與被按鍵功能對應的鍵碼(如ASCII碼)送往CPU。所以,編碼鍵盤接口簡單、使用方便。但由于硬件電路較復雜,因而價格較貴。</p>
28、;<p> 非編碼鍵盤:鍵盤只簡單地提供按鍵開關的行列矩陣。有關按鍵的識別、鍵碼的確定與輸入、去抖動等功能均由軟件完成。目前微機系統(tǒng)中,一般為了降低成本大多數采用非編碼鍵盤。</p><p> 鍵盤接口必須具有去抖動、防串鍵、按鍵識別和鍵碼產生4個基本功能:</p><p> 去抖動:每個按鍵在按下或松開時,都會產生短時間的抖動。抖動的持續(xù)時間與鍵的質量相關,一般為5—
29、20mm。所謂抖動是指在識別被按鍵是必須避開抖動狀態(tài),只有處在穩(wěn)定接通或穩(wěn)定斷開狀態(tài)才能保證識別正確無誤。去抖問題可通過軟件延時或硬件電路解決。</p><p> 防串鍵:防串鍵是為了解決多個鍵同時按下或者前一按鍵沒有釋放又有新的按鍵按下時產生的問題。常用的方法有雙鍵鎖定和N鍵輪回兩種方法。雙鍵鎖定,是當有兩個或兩個以上的按鍵按下時,只把最后釋放的鍵當作有效鍵并產生相應的鍵碼。N鍵輪回,是當檢測到有多個鍵被按下
30、時,能根據發(fā)現它們的順序依次產生相應鍵的鍵碼。</p><p> 被按鍵識別:如何識別被按鍵是接口解決的主要問題,一般可通過軟硬結合的方法完成。常用的方法有行掃描法和線反轉法兩種。行掃描法的基本思想是,由程序對鍵盤逐行掃描,通過檢測到的列輸出狀態(tài)來確定閉合鍵,為此,需要設置入口、輸出口一個,該方法在微機系統(tǒng)中被廣泛使用。線反轉法的基本思想是通過行列顛倒兩次掃描來識別閉合鍵,為此需要提供兩個可編程的雙向輸入/輸出
31、端口。</p><p> 鍵碼產生:為了從鍵的行列坐標編碼得到反映鍵功能的鍵碼,一般在內存區(qū)中建立一個鍵盤編碼表,通過查表獲得被按鍵的鍵碼。</p><p> 用AT89S52的并行口P0接4×4矩陣鍵盤,以P0.0-P0.3作輸入線,以P0.4-P0.7作輸出線。</p><p> 4×4矩陣鍵盤識別處理,每個按鍵有它的行值和列值,行值和
32、列值的組合就是識別這個按鍵的編碼。矩陣的行線和列線分別通過兩并行接口和CPU通信。每個按鍵的狀態(tài)同樣需變成數字量“0”和“1”,開關的一端(列線)通過電阻接VCC,而接地是通過程序輸出數字“0”實現的。</p><p> 鍵盤處理程序的任務是:確定有無鍵按下,判斷哪一個鍵按下,鍵的功能是什么;還要消除按鍵在閉合或斷開時的抖動。兩個并行口中,一個輸出掃描碼,使按鍵逐行動態(tài)接地,另一個并行口輸入按鍵狀態(tài),由行掃描值
33、和回饋信號共同形成鍵編碼而識別按鍵,通過軟件查表,查出該鍵的功能。電路圖如下:</p><p> 圖5 鍵盤電路原理圖</p><p><b> 3 程序設計內容</b></p><p><b> 3.1 原理</b></p><p> 一首音樂是許多不同的音階組成的,而每個音階對應著不
34、同的頻率,這樣我們就可以利用不同的頻率的組合,即可構成我們所想要的音樂了,當然對于單片機來產生不同的頻率非常方便,我們可以利用單片機的定時/計數器T0來產生這樣方波頻率信號,因此,我們只要把一首歌曲的音階對應頻率關系正確即可。</p><p> 若要產生音頻脈沖,只要算出某一音頻的周期(1/頻率),再將此周期除以2,即為半周期的時間。利用定時器計時半周期時間,每當計時終止后就將P1.0反相,然后重復計時再反相。
35、就可在P1.0引腳上得到此頻率的脈沖。</p><p> 利用AT89S52的內部定時器使其工作計數器模式(MODE1)下,改變計數值TH0及TL0以產生不同頻率的方法產生不同音階,例如,頻率為523Hz,其周期T=1/523=1912μs,因此只要令計數器計時956μs/1μs=956,每計數956次時將I/O反相,就可得到中音DO(523Hz)。</p><p> 計數脈沖值與頻率
36、的關系式是:</p><p><b> N=fi÷2÷fr</b></p><p> 式中,N是計數值;fi是機器頻率(晶體振蕩器為12MHz時,其頻率為1MHz);fr是想要產生的頻率。</p><p> 其計數初值T的求法如下:</p><p> T=65536-N=65536-fi
37、47;2÷fr</p><p> 例如:設K=65536,fi=1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音DO(1046Hz)的計數值。</p><p> T=65536-N=65536-fi÷2÷fr=65536-1000000÷2÷fr=65536-500000/fr</p><p>
38、 低音DO的T=65536-500000/262=63627</p><p> 中音DO的T=65536-500000/523=64580</p><p> 高音DO的T=65536-500000/1046=65059</p><p> 單片機12MHZ晶振,高中低音符與計數T0相關的計數值如表1所示:</p><p><b>
39、; 表1 音符頻率表</b></p><p> 我們要為這個音符建立一個表格,單片機通過查表的方式來獲得相應的數據,低音0-19之間,中音在20-39之間,高音在40-59之間。TABLE1: DW 64021,64103,64260,64400 </p><p> DW 64524,64580,64684,64777 </p><p> D
40、W 64820,64898,64968,65030 </p><p> DW 65058,65110,65157,65178</p><p> 音樂的音拍,一個節(jié)拍為單位(C調),如表2所示:</p><p><b> 表2 曲調值表</b></p><p> 琴鍵處理程序,根據檢測到得按鍵值,查詢音律表,給計
41、時器賦值,發(fā)出相應頻率的聲音。對音調的控制:根據不同的按鍵,對定時器T1送入不同的初值,調節(jié)T1的溢出時間,這樣就可以輸出不同音調頻率的方波。不同音調下各個音階的定時器。</p><p><b> 3.2 程序流程圖</b></p><p><b> 圖6 程序流程圖</b></p><p><b> 4
42、 總結與展望</b></p><p><b> 4.1 全文總結</b></p><p> 通過這次課程設計,我弄懂了不少課本上的知識,還擴展了一些課本沒有的知識。</p><p> 首先在課程設計剛開始的調研階段,我學會了怎么通過各種方式查詢相關的資料。通過對這些資料的學習,我大致了解了單片機的發(fā)展現狀以及未來的發(fā)展趨勢,
43、認識到目前單片機方面的各種各樣的發(fā)展,和它們之間的競爭。了解了單片機方面的先進技術,這些都為我的未來的學習指明了方向。</p><p> 我的課程設計主要涉及硬件和軟件兩方面的內容,通過這些我的硬件和軟件開發(fā)能力都獲得了提高。首先硬件方面,基本了解了電子產品的開發(fā)流程和所要做的工作。在軟件方面,因為程序的編寫是我的弱項,所以我是先從網上找來類似的程序模板,然后借助各方面的資料對程序的每一步進行分析,按我的需求進
44、行修改,最終才得到我現在的程序方案。</p><p><b> 4.2 研究展望</b></p><p> 微型計算機的出現和大量使用將人類社會帶入一個新的時代,單片微型計算機(簡稱單片機)在其中扮演著十分重要的角色。雖然它沒有常見的PC那樣大的體積和重量,不會在辦公桌或控制臺上占據一個顯要的位置,但它就像小小的螺絲釘一樣,鑲嵌在人們工作、生活中需要計算、控制、測
45、量等智能活動的各個角落。自20世紀70年代問世以來,單片機以其體積小、可靠性高、控制功能強、使用方便、性能價格比高、容易產品化等特點,在智能儀表、機電一體化、實時控制、分布式多機系統(tǒng)、家用電器等各個領域得到了廣泛應用,對各個行業(yè)的技術改造和產品的更新?lián)Q代起著重要的推動作用,對人們生活質量的提高產生了深刻的影響。作為21世紀的工科大學生,學好單片機,一方面可以加深對計算機原理和結構的認識,另一方面也為自身在專業(yè)上的深入發(fā)展構筑了一個很好的
46、平臺其重要性怎么強調都不為過。</p><p><b> 5 結論</b></p><p> 本研究通過制作電子琴,將幾個模塊很好的融合起來,對使用單片機設計簡易電子琴進行了分析,并介紹了基于單片機電子琴統(tǒng)硬件組成。利用單片機產生不同頻率來獲得我們要求的音階,最終可隨意彈奏想要表達的音樂。說明一首音樂是許多不同的音階組成的,而每個音階對應著不同的頻率,這樣我們就
47、可以利用不同的頻率的組合,即可構成我們所想要的音樂了,于是我們可以利用單片機的定時/計數器T0來產生這樣方波頻率信號,因此,我們只要把一首歌曲的音階對應頻率關系弄正確即可,然后我利用功放電路來將音樂聲音放大,最后得到想要的音樂。</p><p><b> 謝 辭</b></p><p> 這次課程設計論文能夠得以順利完成,是所有曾經指導過我的老師,幫助過我的同學
48、,一直支持著我的家人對我的教誨、幫助和鼓勵的結果。我要在這里對他們表示深深的謝意!</p><p> 首先,要特別感謝我的指導老師——施娟老師。老師的嚴謹的治學態(tài)度,精益求精的工作作風,誨人不倦的高尚師德,樸實無華、平易近人的人格魅力對我影響深遠。不僅使我樹立了遠大的學術目標、掌握了基本的研究方法,還使我明白了許多待人接物與為人處世的道理。</p><p> 其次,要感謝所有曾經教過我
49、的任課老師,老師們教會我的不僅僅是專業(yè)知識,更多的是對待學習、對待生活的態(tài)度。</p><p> 第三,感謝我的親人們,你們是我力量的源泉,只要有你們,不管面對什么樣的困難,我都不會害怕,謝謝你們對我的支持與鼓勵!</p><p> 再次,感謝我的室友及其他好友,因為有你們的幫助,我的論文得以順利完成。感謝你們,大學四年給我了那么多的幫助與鼓勵,在我不開心的時候,總能讓我開心起來。不會
50、忘記,大學這四年里我們一起度過的歡樂時光,那些開心的日子,總是那么令人難以忘懷。</p><p> 最后對老師,同學和家人再次致以我最衷心的感謝!教導過我的老師,你們的人格魅力永記我心間。身邊的同學和朋友,有你們,我的大學才算完整。寢室的好友,你們的天賦猶如上天恩賜,有了你們我的生活更加精彩。</p><p><b> 參考文獻</b></p>&l
51、t;p> [1] 陳明熒.8051單片機課程設計實訓教材[M].北京:清華大學出版社,2003年9月.[2] 徐新艷.單片機原理、應用與實踐[M].北京:高等教育出版社,2005年3月.</p><p> [3] 吳金戌,沈慶陽,郭庭吉.8051單片機實踐與應用[M].清華大學出版社,2001.</p><p> [4] 馮博琴,微型計算機原理與接口技術[M].清華大
52、學出版社,2004.</p><p> [5] 張毅剛,MCS-51單片機應用設計[M].哈爾濱工業(yè)大學出版社,2004.</p><p> [6] 張淑清,姜萬錄等,單片微型計算機接口技術及應用[M].國防工業(yè)出版社,2003.</p><p> [7] 龍威林,楊冠聲,胡山.單片機應用入門:AT89S51和AVR[M].北京:化學工業(yè)出版社,2008
53、.</p><p> [8] 黃鑫,馬善農,趙永科.基于CPLD的電子琴研究與設計[J].科技廣場,2007(5).</p><p> [9] 趙亮,侯國銳.單片機C語言編程與實例[M].北京:人民郵電出版社,2003.</p><p> [10] 楊恢先,黃輝先.單片機原理及應用[M].北京:人民郵電出版社,2006.</p><p&
54、gt; [11] 張虹.單片機原理及應用[M].北京:中國電力出版社,2009.</p><p> [12] 李云鋼,鄒逢興,龍志強.單片機原理與應用系統(tǒng)計[J].北京:中國水利水電出版社,2008.</p><p><b> 附 錄</b></p><p><b> C語言程序:</b></p>
55、<p> #include<reg52.h> </p><p> sbit P04=P0^4; </p><p> sbit P05=P0^5; </p><p> sbit P06=P0^6; </p><p> sbit P07=P0^7; </p>
56、<p> unsigned char keyval,gequ=0;</p><p> sbit keygequ=P1^3;</p><p> sbit sound=P1^0; </p><p> unsigned char timer0h,timer0l,time;</p><p> code unsigned
57、char sszymmh[]={</p><p> 6,2,3, 5,2,1, 3,2,2, 5,2,2, 1,3,2, 6,2,1, 5,2,1,</p><p> 6,2,4, 3,2,2, 5,2,1, 6,2,1, 5,2,2, 3,2,2, 1,2,1,</p><p> 6,1,1, 5,2,1, 3,2,1, 2,2,4, 2,2,3, 3,2,
58、1, 5,2,2,</p><p> 5,2,1, 6,2,1, 3,2,2, 2,2,2, 1,2,4, 5,2,3, 3,2,1,</p><p> 2,2,1, 1,2,1, 6,1,1, 1,2,1, 5,1,6, 0,0,0 </p><p><b> };</b></p><p> code unsi
59、gned char FREQH[]={</p><p> 0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8, </p><p> 0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, </p><p> 0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,</p><p> 0x
60、FE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,</p><p><b> } ;</b></p><p> code unsigned char FREQL[]={</p><p> 0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,</p><p> 0x21,0xE1,
61、0x8C,0xD8,0x68,0xE9,0x5B,0x8F, </p><p> 0xEE,0x44, 0x6B,0xB4,0xF4,0x2D, </p><p> 0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,</p><p><b> };</b></p><p> void saom
62、iao();</p><p> void delay20ms();</p><p> /* 節(jié)拍延時函數 */</p><p> /*****************************************************************
63、*/</p><p> void delay_jp(unsigned char t)</p><p><b> {</b></p><p> unsigned char t1;</p><p> unsigned long t2;</p><p> for(t1=0;t1<t;t1
64、++)</p><p><b> {</b></p><p> for(t2=0;t2<8000;t2++)</p><p><b> {</b></p><p><b> ;</b></p><p><b> }</b&
65、gt;</p><p><b> }</b></p><p><b> TR0=0;</b></p><p><b> }</b></p><p> /***********************************************************
66、*******/</p><p> /* 音調處理函數 */</p><p> /******************************************************************/</p><p> void song(uns
67、igned char t1,unsigned char t2,unsigned char t3) </p><p><b> {</b></p><p> unsigned char k;</p><p> k=t1+7*t2-1;</p><p> timer0h=FREQH[k];</p>&
68、lt;p> timer0l=FREQL[k];</p><p> TH0=timer0h;</p><p> TL0=timer0l;</p><p><b> TR0=1;</b></p><p> if(t3!=0) delay_jp(t3); </p><p><b&
69、gt; }</b></p><p> /******************************************************************/</p><p> void gequ_sszymmh() </p><p><b> {</b></p><p> u
70、nsigned char i;</p><p><b> i=0; </b></p><p> while(sszymmh[i+3]!=0)</p><p> { </p><p><b> i=i+3;</b></p><p> son
71、g(sszymmh[i],sszymmh[i+1],sszymmh[i+2]);</p><p> if(keygequ==0)</p><p><b> {</b></p><p> delay20ms();</p><p> if(keygequ==0) </p><p> {wh
72、ile(keygequ==0);TR0=0;gequ=0; break;}</p><p> } </p><p><b> }</b></p><p> TR0=0;gequ=0;</p><p><b> }</b></p><p> /****
73、**********************************************************</p><p> 函數功能:軟件延時子程序</p><p> **************************************************************/</p><p> void delay20ms()
74、 </p><p><b> {</b></p><p> unsigned char i,j;</p><p> for(i=0;i<100;i++)</p><p> for(j=0;j<60;j++)</p><p><b> ;</b></
75、p><p><b> }</b></p><p> /*******************************************</p><p> 函數功能:節(jié)拍的延時的基本單位,延時200ms</p><p> ******************************************/<
76、;/p><p> void delay() </p><p><b> {</b></p><p> unsigned char i,j;</p><p> for(i=0;i<250;i++)</p><p> for(j=0;j<250;j++)&
77、lt;/p><p><b> ;</b></p><p><b> }</b></p><p> void saomiao()</p><p><b> {</b></p><p> if(keygequ==0)</p><p&
78、gt;<b> {</b></p><p> delay20ms();</p><p> if(keygequ==0) </p><p> {while(keygequ==0);gequ++;}</p><p><b> }</b></p><p> P0=0x
79、f0; </p><p> if((P0&0xf0)!=0xf0) </p><p><b> {</b></p><p> delay20ms(); </p><p> if((P0&0xf0)!=0xf0) </p&g
80、t;<p><b> {</b></p><p> P0=0xfe; </p><p> if(P04==0) </p><p> keyval=1; </p><p> if(P05==0) </p&g
81、t;<p> keyval=2; </p><p> if(P06==0) </p><p> keyval=3; </p><p> if(P07==0) </p><p> keyval=4; </p><
82、;p> P0=0xfd; </p><p> if(P04==0) </p><p> keyval=5; </p><p> if(P05==0) </p><p> keyval=6; </p><p> if(P
83、06==0) </p><p> keyval=7; </p><p> if(P07==0) </p><p> keyval=8; </p><p> P0=0xfb; </p><p> if(P04==0) &l
84、t;/p><p> keyval=9; </p><p> if(P05==0) </p><p> keyval=10; </p><p> if(P06==0) </p><p> keyval=11; </p><p>
85、 if(P07==0) </p><p> keyval=12; </p><p> P0=0xf7; </p><p> if(P04==0) </p><p> keyval=13; </p><p> if(P05==0) <
86、;/p><p> keyval=14; </p><p> if(P06==0) </p><p> keyval=15; </p><p> if(P07==0) </p><p> keyval=16; </p><p><b>
87、 }</b></p><p><b> }</b></p><p><b> else </b></p><p><b> {</b></p><p><b> TR0=0;</b></p><p> so
88、und=1;</p><p> keyval=0xff;</p><p><b> }</b></p><p><b> }</b></p><p> void tanqin()</p><p><b> {</b></p>
89、<p> if(TR0==0&&gequ%2==0)</p><p> switch(keyval)</p><p><b> {</b></p><p><b> case 1:</b></p><p> song(1,1,0); </p>
90、<p><b> break;</b></p><p> case 2:song(2,1,0); </p><p><b> break;</b></p><p> case 3:song(3,1,0); </p><p><b> break;</b&g
91、t;</p><p> case 4:song(4,1,0); </p><p><b> break;</b></p><p> case 5:song(5,1,0); </p><p><b> break;</b></p><p> case 6:son
92、g(6,1,0); </p><p><b> break;</b></p><p> case 7:song(7,1,0); </p><p><b> break; </b></p><p> case 8:song(1,2,0); </p><p>&l
93、t;b> break;</b></p><p> case 9:song(2,2,0); </p><p><b> break;</b></p><p> case 10:song(3,2,0); </p><p><b> break;</b></p&g
94、t;<p> case 11:song(4,2,0); </p><p><b> break;</b></p><p> case 12:song(5,2,0); </p><p><b> break; </b></p><p> case 13:song(6,2
95、,0); </p><p><b> break;</b></p><p> case 14:song(7,2,0); </p><p><b> break;</b></p><p> case 15:song(1,3,0); </p><p><b&
96、gt; break;</b></p><p> case 16:song(2,3,0); </p><p><b> break; </b></p><p><b> } </b></p><p> else if(gequ%2==1)</p><p&g
97、t;<b> {</b></p><p> gequ_sszymmh();</p><p><b> }</b></p><p><b> }</b></p><p> /*******************************************</
98、p><p><b> 函數功能:主函數</b></p><p> ******************************************/</p><p> void main(void)</p><p><b> { </b></p><p> EA
99、=1; </p><p> ET0=1; </p><p><b> TMOD=1; </b></p><p> while(1) </p><p><b> {</b></p><p> saomiao();</p&g
100、t;<p><b> tanqin();</b></p><p><b> }</b></p><p><b> }</b></p><p> /* 定時器中斷函數 */</p
101、><p> /******************************************************************/</p><p> void t0int() interrupt 1</p><p><b> {</b></p><p><b> TR0=0;</b&
102、gt;</p><p> sound=!sound;</p><p> TH0=timer0h;</p><p> TL0=timer0l;</p><p><b> TR0=1;</b></p><p><b> }</b></p><p>
103、; /******************************************************************/</p><p><b> 電路原理圖:</b></p><p><b> 圖7 電路原理圖</b></p><p><b> 電路PCB圖:</b>&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子琴課程設計--基于單片機的電子琴設計
- 電子琴課程設計-- 基于單片機的電子琴設計
- 單片機課程設計---基于單片機的電子琴設計
- 基于單片機的電子琴課程設計
- 單片機課程設計---電子琴
- 單片機課程設計(電子琴)
- 單片機課程設計—基于單片機的電子琴
- 基于單片機的電子琴課程設計
- 單片機課程設計---電子琴設計
- 單片機課程設計-電子琴
- 單片機課程設計——電子琴
- 基于單片機的電子琴設計課程設計
- 單片機課程設計---電子琴設計
- 課程設計 ---基于單片機的電子琴設計
- 單片機電子琴課程設計--基于單片機的可存儲式電子琴設計
- 單片機簡易電子琴單片機課程設計
- 單片機課程設計簡易電子琴
- 簡易電子琴單片機課程設計
- 簡易電子琴單片機課程設計
- 基于單片機的電子琴課程設計報告
評論
0/150
提交評論