單片機電子琴實驗報告_第1頁
單片機電子琴實驗報告_第2頁
單片機電子琴實驗報告_第3頁
單片機電子琴實驗報告_第4頁
單片機電子琴實驗報告_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機及DSP課程設(shè)計報告專 業(yè): 通信工程班 級: 姓 名: 學 號: 指導教師: 李賀時 間:2015-06-222015-07-03通信與電子工程學院基于單片機的電子琴設(shè)計一、 課設(shè)的目的及內(nèi)容本設(shè)計主要是用單片機為核心控制元件,設(shè)計一臺電子琴。以單片機作為主控核心,與鍵盤、蜂鳴器、數(shù)碼管等模塊組成核心主控制模塊,在主控模塊上設(shè)有7個按鍵和1個復位按鍵。本系統(tǒng)主要是完成的功能:電子琴彈奏并顯示所按的按鍵對應(yīng)音的唱名。關(guān)于聲音的處理,使用單片機C語言,利用定時器來控制頻率,而每個音符的符號只是存在自定義的表中。總之,本設(shè)計的電子琴有以下要求: (1)用鍵盤作出電子琴的按鍵,共7個,每鍵代表

2、1個音符。各音符按照符合電子琴的按鍵順序排列; (2)達到電子琴的基本功能,可以用彈奏出簡單的樂曲;(3)在按下按鍵發(fā)出音符的同時顯示出音符所對應(yīng)的唱名即1(dao)、2(ruai)、3(mi)、4(fa)、5(sao)、6(la)、7(xi)。二、問題分析、解決思路及原理圖本系統(tǒng)采用STC89C52RC為主控芯片,因其精度較高,操作比較靈活,輸入電路和輸出電路由芯片來進行處理,電路的系統(tǒng)的穩(wěn)定性高,功耗小。其中,輸入電路有7個獨立按鍵,通過按鍵隨意按下所要表達的音符,作為電平送給主體電路,中央處理器通過識別,解碼輸出音符,在蜂鳴器中發(fā)出有效的聲音。由于需要顯示的信息不多,顯示電路未采用液晶屏

3、顯示,而是使用數(shù)碼管顯示電路負責顯示按下的琴鍵所對應(yīng)音符的唱名,這樣既節(jié)省了成本,又降低了編程難度。 圖1如圖1所示基于單片機STC89C52RC的電子琴電路,它主要由琴鍵控制電路、數(shù)碼管顯示電路、音頻功放電路和時鐘-復位電路四部分所構(gòu)成。三、 硬件設(shè)計(一) 琴鍵控制電路琴鍵控制電路作為人機聯(lián)系的輸入部分,也是間接控制數(shù)碼顯示和音頻功放的重要組成部分。本設(shè)計采用獨立式鍵盤的思路。獨立式鍵盤的特點是一鍵一線,各鍵相互獨立,每個鍵各接一條I/O口線,通過檢測I/O輸入線的電平狀態(tài),可判斷出被按下的按鍵。 顯而易見,這樣電路簡單,各條檢測線獨立,識別按下按鍵的軟件編寫簡單。適用于鍵盤按鍵

4、數(shù)目較少的場合,不適用于鍵盤按鍵數(shù)目較多的場合,因為將占用較多的I/O口線。 獨立式鍵盤的7個獨立按鍵分別對應(yīng)一個I/O口線,當某一按鍵按下時,對應(yīng)的檢測線就變成了低電平,與其它按鍵相連的檢測線仍為高電平,只需讀入I/O輸入線的狀態(tài),判別哪一條I/O輸入線為低電平,很容易識別哪個鍵被按下。(二) 數(shù)碼管顯示電路LED(Light Emitting Diode)發(fā)光二極管縮寫。LED數(shù)碼管是由發(fā)光二極管構(gòu)成的。 常見的LED數(shù)碼管為“8”字型的,共計8段。它由七個條形發(fā)光二極管和一個小圓點發(fā)光二極管組成,每一段對應(yīng)一個發(fā)光二極管。一般來說分共陽極和共陰極兩種接法,如圖二所示為八段LED

5、數(shù)碼管結(jié)構(gòu)及外形。圖二共陽極LED數(shù)碼管的發(fā)光二極管的陽極連接在一起,公共陽極接正電壓,當某個發(fā)光二極管的陰極接低電平時,發(fā)光二極管被點亮,相應(yīng)的段被顯示,如圖二a所示。反之,共陰極發(fā)光二極管的陰極連在一起,通常公共陰極接地。當陽極為高電平時,發(fā)光二極管點亮,如圖二b所示。LED數(shù)碼管的a至g七個發(fā)光二極管因接得電壓不同而導致不同亮暗的組合就能形成不同的字形,這種組合稱之為字形碼,如表一所示為八段LED數(shù)碼管的字形碼表。 表一本設(shè)計所采用的是共陰二極管。(三) 音頻功放電路本設(shè)計采用蜂鳴器作為音頻發(fā)生的設(shè)備,而若將蜂鳴器的正極直接與單片機端口相連,由于單片機端口的電流值太小而無法驅(qū)動蜂鳴器發(fā)聲

6、,所以本設(shè)計采用三極管放大電流的方法來完成目的的,如圖三所示, 圖三(四) 時鐘、復位電路1、 時鐘電路時鐘頻率直接影響單片機的速度,時鐘電路的質(zhì)量也直接影響單片機系統(tǒng)的穩(wěn)定性。常用的時鐘電路有兩種方式,一種是內(nèi)部時鐘方式,另一種是外部時鐘方式。 STC89C52內(nèi)部有一個用于構(gòu)成振蕩器的高增益反相放大器,輸入端為芯片引腳XTAL1,輸出端為引腳XTAL2。這兩個引腳跨接石英晶體振蕩器和微調(diào)電容,構(gòu)成一個穩(wěn)定的自激振蕩器,圖四是STC89C52內(nèi)部時鐘方式的電路,C1和C2的典型值通常選擇為30pF,石英晶體常選6MHz或12MHz的。本設(shè)計采用內(nèi)部時鐘方式做時鐘電路 圖四2、 復位

7、電路單片機的初始化操作,給復位腳RST加上大于2個機器周期(即24個時鐘振蕩周期)的高電平就使STC89C52復位。這些操作都是由復位電路來實現(xiàn)。在單片機的實用系統(tǒng)中,一般有兩種復位操作形式:上電復位和手動復位。上電復位在單片機系統(tǒng)每次通電時執(zhí)行。上電時,電容C充電加給RST引腳一個短的高電平信號,此信號隨著VCC對電容C的充電過程而逐漸回落,即RST引腳上的高電平持續(xù)時間取決于電容C充電時間。為保證系統(tǒng)可靠復位,RST引腳上的高電平必須維持足夠長的時間。手動復位在系統(tǒng)出現(xiàn)操作錯誤或程序運行出錯時使用。在單片機系統(tǒng)運行過程中,按下復位鍵,高電平輸入RST引腳,單片機被強制執(zhí)行復位操作,系統(tǒng)可以

8、退出錯誤運行狀態(tài),恢復正常工作。四、 軟件設(shè)計1、硬件接口定義引腳名接口說明P0.0P0.7數(shù)碼管與單片機通信口 P1.0P1.7 獨立按鍵接口 P3.3 控制蜂鳴器2 .發(fā)聲原理若要產(chǎn)生音頻脈沖,只要算出某一音頻的周期(1/頻率),再將此周期除以2,即為半周期的時間。利用定時器計時半周期時間,每當計時終止后就將P3.3反相,然后重復計時再反相。就可在P1.0引腳上得到此頻率的脈沖。利用STC89c52的內(nèi)部定時器使其工作計數(shù)器模式(MODE1)下,改變計數(shù)值TH0及TL0以產(chǎn)生不同頻率的方法產(chǎn)生不同音階。例如,頻率為523Hz,其周期T1/5231912s,因此只要令計數(shù)器計時956s/1s

9、956,每計數(shù)956次時將I/O反相,就可得到中音DO(523Hz)。計數(shù)脈沖值與頻率的關(guān)系式是:Nfi÷2÷fr,式中,N是計數(shù)值;fi是機器頻率(晶體振蕩器為12MHz時,其頻率為1MHz);fr是想要產(chǎn)生的頻率。其計數(shù)初值T的求法如下:T65536N65536fi÷2÷fr 例如:設(shè)K65536,fi1MHz,求中音DO(261Hz)。T65536N65536fi÷2÷fr655361000000÷2÷fr65536500000/fr,中音DO的T65536500000/52364580。3.程序流程 3.1

10、主函數(shù)運用模塊化的思想,流程如圖所示。 3.2初始化函數(shù) 流程圖如下圖所示,該函數(shù)對所需的I/O口、定時器0以及數(shù)碼管蜂鳴器進行初始化配置。初始化開始 定時器0設(shè)置為模式一關(guān)閉數(shù)碼管關(guān)閉蜂鳴器 關(guān)定時器0定時器0中斷允許 結(jié)束開總中斷 3.3音頻處理及數(shù)碼管顯示是否按下鍵盤掃描開始 本設(shè)計中數(shù)碼管顯示編碼較容易,所以將其與發(fā)聲程序一同處理,使編碼更加簡潔。流程圖如下所示是蜂鳴器發(fā)聲且數(shù)碼管顯示結(jié)束否五、 源程序#include<reg52.h>#define keyport P1 #define uchar unsigned char #define uint unsigned i

11、ntsbit SPK=P33; /蜂鳴器接口定義uchar high,low; /定時器預裝值的高八位和低八位uchar code fre2= /頻率值0x44,0xfc, /中音10xac,0xfc, /中音20x09,0xfd, /中音30x34,0xfd, /中音40x82,0xfd, /中音50xc2,0xfd, /中音60x06,0xfe, /中音7;uchar code table=0x06,0x5b,0x4f,0x66,0x6d,/數(shù)碼管顯示1,2,3,4,5,6,7所對應(yīng)的P0口電平0x7d,0x07,0x7f,0x6f,0x77,; void delay(uint x);/延

12、時函數(shù)void Init(void);/初始化函數(shù)void main (void) /主函數(shù)開始Init();/先進行初始化while(1)uchar num;switch(keyport) /掃描按鍵及判斷鍵值case 0xfe: delay(1);if(keyport=0xfe) /消抖P0=table0; /數(shù)碼管顯示音的唱名num=1;break;case 0xfd: delay(1);if(keyport=0xfd)P0=table1;num=2;break;case 0xfb: delay(1);if(keyport=0xfb)P0=table2;num=3;break;case

13、0xf7:delay(1);if(keyport=0xf7)P0=table3;num=4;break;case 0xef:delay(1);if(keyport=0xef)P0=table4;num=5;break;case 0xdf:delay(1);if(keyport=0xdf)P0=table5; num=6;break;case 0xbf:delay(1);if(keyport=0xbf)P0=table6;num=7;break;case 0x7f:delay(1);if(keyport=0x7f)P0=table7;num=8;break;default:num=0;break

14、;if(num=0) /沒按按鍵TR0=0;elsehigh=frenum-11; /將按鍵所對應(yīng)的頻率值裝入定時器的高八位與低八位 low=frenum-10; TR0=1; /定時器打開 delay(500); /將其延時 SPK=0; /延時后關(guān)閉 P0=0x00; void Init(void) /初始化函數(shù)SPK=0;P0=0x00;TMOD = 0x01;EA=1;ET0=1; TR0=0; void Timer0_isr(void) interrupt 1 /中斷函數(shù)SPK=!SPK; TH0=high;TL0=low;void delay(uint x) /延時函數(shù)int a,

15、b;for(a=x;a>0;a-) for(b=110;b>0;b-) ;六、 Proteus仿真Proteus軟件是英國Labcenter Electronics公司研發(fā)的EDA工具軟件。它是一個集模擬電路、數(shù)字電路、模/數(shù)混合電路以及多種微控制器系統(tǒng)為一體的系統(tǒng)設(shè)計和仿真平臺。是目前同類軟件中最先進、最完整的電子類仿真平臺之一。它真正實現(xiàn)了在計算機上完成從原理圖、電路分析與仿真、單片機代碼調(diào)試與仿真、系統(tǒng)測試與功能驗證到PCB板生成的完整的電子產(chǎn)品研發(fā)過程。 最新Keil uVision4 IDE,旨在提高開發(fā)人員的生產(chǎn)力,實現(xiàn)更快,更有

16、效的程序開發(fā)。Keil uVision4引入了靈活的窗口管理系統(tǒng),能夠拖放到視圖內(nèi)的任何地方,包括支持多顯示器窗口。Keil uVision4在Keil uVision3 IDE的基礎(chǔ)上,增加了更多大眾化的功能:多顯示器和靈活的窗口管理系統(tǒng);系統(tǒng)瀏覽器窗口的顯示設(shè)備外設(shè)寄存器信息;調(diào)試還原視圖創(chuàng)建并保存多個調(diào)試窗口布局;多項目工作區(qū)簡化與眾多的項目仿真結(jié)果七、 設(shè)計過程中遇到的問題及解決的方法電子琴在設(shè)計過程中并非一帆風順的,前前后后遇到了各種各樣的問題,說幾個關(guān)鍵的問題。首先是數(shù)碼管的問題,焊接剛剛完成的時候,數(shù)碼管完全是沒有任何的反應(yīng)的,反復檢查程序

17、,沒有發(fā)現(xiàn)問題。又檢查電路是否連接正確,也沒有發(fā)現(xiàn)什么問題,完全是按照仿真圖來連接的。直到用電壓表檢查端口電壓時才發(fā)現(xiàn)問題出在哪。原來是最新系統(tǒng)上的上拉電阻阻值過大導致的,找到問題解決就容易多了,我重新找了1k的電阻作為上拉電阻,焊接完成后,再重新運行單片機,數(shù)碼管便正常了。第二個問題是蜂鳴器發(fā)聲問題,也是很多同學都遇到的問題,就是蜂鳴器對頻率的敏感性太差,同樣的電路用揚聲器就很完美,但用蜂鳴器效果就比較差。八、 設(shè)計體會總體來說,此次單片機課程設(shè)計使我收獲良多,雖然課程設(shè)計的過程中遇到了很多困難與問題,但我最終還是完成了設(shè)計的任務(wù)及要求。具體來說可以分為以下幾點:第一,不夠細心,不夠嚴謹(如因為粗心大意而焊錯線);第二,因?qū)φn本理論的掌握度不夠?qū)е戮幊坛霈F(xiàn)錯誤;第三,硬件方面,剛開始有的程序模塊不能實現(xiàn)預期的效果,對于有的硬件,在實物制作過程中焊了比較多的排線,同時對于整體各元器件的布局都有很高的要求。不過在向同學請教,各方面都有了不同程度的改善;第四,在做人方面,我認識到,無論做什么事情,只要你足夠堅強,有足夠的毅力和決心,有足夠的挑戰(zhàn)困難的勇氣,就沒有什么辦不到的。通過這次課設(shè),也使我進一步熟悉和掌握了單片機的內(nèi)部結(jié)構(gòu)和工作原理,了解了單片機應(yīng)用系統(tǒng)設(shè)計的基本方法和步驟

溫馨提示

  • 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

提交評論