單片機是經(jīng)典的嵌入式微控制器(Microcontroller Unit),縮寫為MCU,最早是被利用于工業(yè)控制領域。因為在工業(yè)控制領域單片機有著廣泛的應用,所以誕生了單片機開發(fā)板這樣的系統(tǒng)使更多的產(chǎn)品開發(fā)人員、業(yè)內(nèi)人士、學生來學習單片機這門技術,其中比較出名的單片機開發(fā)板有電子人DZR-01A。單片機是從芯片內(nèi)部僅有的特殊處理器發(fā)展起來的,它最開始的設計思路是將CPU與大量的外圍設備通過一個微處理器集成在一起,從而使得計算機系統(tǒng)變得更迷你,組裝到繁雜的且對體積要求比較小的控制裝備之中更簡單。Zilog公司的Z80便是最早使用這種設計思想做出來的的cpu,自此以后,單片機和計算機CPU的發(fā)展便成為了兩個不同的方向。
單片機相當于把一個復雜的計算機系統(tǒng)濃縮到一個微小的芯片上,它計算機相比只缺少了輸入/輸出設備,所以可以把它看作一個微型的計算機。可以概況的講成:一塊相當于一臺計算機的芯片。它的質(zhì)量輕、體積小、價格便宜、為開發(fā)、應用和學習提供了便利條件。所以,如果你想要了解計算機原理與結構,那么學習使用單片機是最簡單的選擇。
電子琴是大規(guī)模集成電路和音樂結合的產(chǎn)物,它因為能模擬各種樂器的音色而受到群眾們喜愛。本設計制作了一種除了有普通電子琴彈奏功能外,還擁有一種存儲播放樂曲功能。本設計是以AT89S52單片機作為一個簡單電子琴系統(tǒng)設計的核心部件,其原理是因為每個表有固定的振動頻率,所以可以利用89S52單片機內(nèi)部的定時/計數(shù)器改變計數(shù)值來產(chǎn)生各個音調(diào)對應的方波頻率來驅(qū)動揚聲器播放出不同音調(diào)。這僅僅只是單片機應用的一個點,希望能由點到面,更好的了解和應用單片機技術。
8個譯碼輸出顯示的數(shù)碼管,以顯示目標芯片的32 位輸出信號,且8個發(fā)光管也能顯示目標器件的8位輸出信號。時鐘為50MHz ,輸出接揚聲器。
具體過程:主系統(tǒng)可由兩個模塊組成:當系統(tǒng)檢測到有按鍵按下時,對應音符的頻率由模塊1獲得,這是一個數(shù)控分頻器。由其clk端輸入一具有較高頻率的信號,分頻后輸出。
音符的持續(xù)時間須根據(jù)樂曲的速度及每個音符的節(jié)拍數(shù)決定,模塊2的功能是為模塊1提供決定所發(fā)音的分頻預置值,而此數(shù)在模塊1輸入口停留的時間即為此音符的節(jié)拍值。
采用AT89S52單片機的兩個定時器(如T0,T1)控制頻率,在P1.0引腳上輸出方波周期信號,產(chǎn)生聲音,按下不同的模擬按鍵就會產(chǎn)生不同的音符,所以使用者可以通過本電子琴系統(tǒng)暢所欲為的彈奏自己想要彈的樂曲。
具體過程:當系統(tǒng)掃描到鍵盤上有鍵子被按下,則快速檢測出是那一個鍵子,然后單片機的定時器被啟動,發(fā)出一定頻率的脈沖,該頻率的脈沖經(jīng)喇叭驅(qū)動電路放大濾波后,就會發(fā)出相應的音調(diào)。。如果在前一個按下的鍵發(fā)聲的同時有另一個鍵被按下,則啟用中斷系統(tǒng),前面鍵的發(fā)音停止,轉(zhuǎn)到后按的鍵的發(fā)音程序,發(fā)出后按鍵的音。
對比兩套方案各有優(yōu)缺點,方案一采用CPLD,工作速度快,系統(tǒng)穩(wěn)定,效果好,但是其價格昂貴;而方案二在設計這樣小型電子方面,無論是效果還是工作速度與方案一相差不大,而且價格較為便宜。因此,選擇方案二即單片機加外設的方式設計該系統(tǒng)比較好。
由AT89S52單片機、獨立鍵盤、音頻功率放大模塊、揚聲器、數(shù)碼管、存儲播放模塊所組成。
圖1 系統(tǒng)結構框架
AT89S52 是一種低功耗、高性能CMOS8位微控制器,具有8K 在系統(tǒng)可編程Flash存儲器。使用Atmel 公司高密度非易失性存儲器技術制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應用系統(tǒng)提供高靈活、超有效的解決方案。 AT89S52具有以下標準功能: 8k字節(jié)Flash,256字節(jié)RAM, 32 位I/O 口線,看門狗定時器,2 個數(shù)據(jù)指針,三個16 位 定時器/計數(shù)器,一個6向量2級中斷結構,全雙工串行口。另外,AT89S52 可降至0Hz 靜態(tài)邏 輯操作,支持2種軟件可選擇節(jié)電模式。空閑模式下,CPU 停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工 作。掉電保護方式下,RAM內(nèi)容被保存,振蕩器被結,單片機一切工作停止,直到下一個中斷或硬件復位為止。

圖2 AT89S52
本設計共含有10個按鍵,其中8個按鍵分別接著P2.0~P2.7引腳,代表著8個音符。當按下這八個按鍵其中一個按鍵時,數(shù)碼管也會顯示一個與音調(diào)對應的數(shù)字來指示用戶所按下的按鍵。而另外兩個按鍵為功能按鍵,按下可播放已存儲的歌曲,另一個按下可中斷播放音樂。這兩個功能按鍵連接著的引腳分別是P3.2、P3.3。如圖3所示。

圖3按鍵圖
由于本次設計需要的單片機I/O端口不多,所以數(shù)碼管顯示方式采用了靜態(tài)顯示驅(qū)動,數(shù)碼管將直接由單片機I/O端口驅(qū)動, 又因為LED數(shù)碼管是電流控制元件,所以使用時要上一個加限流電阻。數(shù)碼管顯示是通過單片機查表得出編碼,然后單片機再驅(qū)動端口決定數(shù)碼管顯示的數(shù)字,按鍵與數(shù)碼管顯示程序的一致性就是這么實現(xiàn)的。連接在P0.1-P0.3,4個引腳上,并加一個排阻。如圖4所示。

圖4數(shù)碼管與單片機的連接圖
揚聲器采用兩個三極管來放大音頻,串連著一個可調(diào)節(jié)電阻,用來調(diào)節(jié)聲音大小,整個模塊由單片機P1.0引腳控制。如圖5所示。

圖5揚聲器的連接圖
經(jīng)由電解電容和非極性電容構成的濾波網(wǎng)絡和三端穩(wěn)壓器LM7805的穩(wěn)壓作用后,輸出+5V的直流電壓。

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

圖7時鐘電路圖
本設計的基本流程是對初始化的單片機進行鍵盤掃描,判斷其有無按鍵按下,若有則需要繼續(xù)判斷按鍵的類別,判斷它是功能選擇鍵還是獨立鍵盤上的音調(diào)鍵,若是獨立鍵盤,則通過P1.0發(fā)生頻率播放音調(diào),通過P0顯示數(shù)碼管數(shù)字。若是功能選擇鍵,則播放程序儲存好的音樂歌曲,然后檢測是否按下中斷鍵,若是則停止播放,不是則一直播放到結束。此設計使用的語言選擇中,匯編語言是面向特定機型的需要,在不同的計算機指令系統(tǒng)上和不同的微控制器上,指令結構有著云泥之別,就算指令大同小異,它也不能夠移植。C語言是一種高級語言,可以結構化編程,還可以 移植。使用標準C語言的程序編程,完全可以不作任何修改就能夠移植到不同的系統(tǒng)平臺上。基于以上對比,本設計系統(tǒng)更適合C語言來進行編程。
Proteus是英國著名的EDA工具(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機與外圍電路協(xié)同仿真,一鍵切換到PCB設計,真正實現(xiàn)了從概念到產(chǎn)品的完整設計。是目前世界上唯一將電路仿真軟件、PCB設計軟件和虛擬模型仿真軟件三合一的設計平臺。
利用Proteus仿真軟件將Keil軟件中的C語言程序?qū)敕抡骐娐分校瑹襞軩1亮,按下播放鍵,單片機存儲的音樂可自動播放,按下停止鍵,音樂播放停止。復位鍵按下后,系統(tǒng)復位,八個按鍵可隨按鍵者隨意按下彈奏音樂,同時數(shù)碼管顯示相對應的節(jié)奏。

根據(jù)功能需求與電路結構得知,當開關按下時,將可有其連接的輸入口讀取到低電平,再次制作的一個八鍵的電子琴,若按下S1,則發(fā)出中音DO,如按下S2,則發(fā)中Re,以此類推,按下的同時數(shù)碼管顯示相對應的數(shù)字。此外,該電子琴不僅可以自己彈奏也可自動播放所存儲的音樂,數(shù)碼管顯示相對應的音符。
本設計利用AT89S52單片機設計一個簡易電子琴,具備電子琴的基本功能,分析了利用單片機簡易電子琴設計的基本原理,并介紹了AT89S52單片機設計的電子琴統(tǒng)硬件系統(tǒng)。改變AT89S52的定時器里面的特殊功能寄存器TH0及TL0在模式1下的計數(shù)值,便會產(chǎn)生不同方波頻率,然后通過揚聲器產(chǎn)生對應的音調(diào)。最終將編寫的源程序轉(zhuǎn)換為機器碼導入單片機芯片,仿真調(diào)試運行后,就可以實現(xiàn)利用按鍵彈奏想要的歌曲。與此同時仿真調(diào)試軟件用的是protues,源程序編譯軟件用的是keil,所以對這兩款軟件的掌握熟練度也增加了許多。
課程設計是培養(yǎng)學生綜合運用所學知識,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學生實際工作能力的具體訓練和考察過程,隨著科學技術發(fā)展的日新月異,大規(guī)模芯片已經(jīng)成為當今計算機運用中空前活躍的領域,在生活中可以說是無處不在。以此作為二十一世紀的大學生來說掌握開發(fā)技術是十分重要的。
通過本次實驗,我不僅可以鞏固以前學過的知識,如數(shù)電知識,系統(tǒng)設計和C語言,而且學到了很多在書本上所沒有學到的知識,如實踐經(jīng)驗和操作技巧。我懂得了理論與實踐相結合是很重要的,只有理論知識是遠遠不夠的,光看書部進行相關的聯(lián)系是行不通的,只有把所學的理論知識與實踐結合起來,從而提高自己的實際動手能力和獨立思考能力。在此次電子琴設計中也讓我學會了Proteus和Keil這兩個軟件的基本應用,多掌握了兩門技術,對自己以后要做此方面的設計打下了基礎。于此同時也讓我知道了,做任何事情都要學會團隊合作要多學多問,知道請教,不能自己一味悶頭去做,應該多請教老師和同伴的意見和建議。在設計過程難免會遇到各種各樣的問題,同時在設計的的過程中發(fā)現(xiàn)了自己的不足之處,對以前學過的知識理解的不夠深刻,掌握的不夠牢固,通過這次課程設計之后,把以前學過的知識重新溫故,全部整合,進一步深刻理解。我們要學會學習的能力,能夠舉一反三,觸類旁通,這樣對自己以后的發(fā)展有很大的幫助,因此我們需要在學習中學習,在實踐中找出答案!
仿真圖如下:

電路圖如下:

PCB圖如下:

實物圖如下:

代碼如下:
完整的Word格式文檔51黑下載地址:
基于51單片機的簡易電子琴設計.doc
(5.11 MB, 下載次數(shù): 73)
| 歡迎光臨 (http://m.raoushi.com/bbs/) | Powered by Discuz! X3.1 |