點擊鏈接獲取Keil源碼與Project Backups仿真圖:
https://download.csdn.net/download/qq_64505944/87848430?spm=1001.2014.3001.5503
源碼獲取
主要內容:
設計一個簡易的電子琴,至少具有可以彈奏并發(fā)出不同的音調。電子琴方案主要分為實驗的系統(tǒng)分析,具體的實施方案,以及最終的實驗檢驗,最終完成實驗設計。
基本要求:
1、認真完成系統(tǒng)需求分析,明確數(shù)據(jù)要求和處理要求;
2、設計出系統(tǒng)的概念模型,畫出系統(tǒng)流程圖;
3、系統(tǒng)的分析實驗的步驟與流程;
4、序中字符和權值是可變的,實現(xiàn)程序的靈活性,檢查小程序可行性
主要參考資料:
[1]謝維成 、楊加國.單片機原理與應用及 C51 程序設計實例. 電子工業(yè)出版社 , 2006年3月 .
[2]李廣弟. 單片機基礎.北京航空航天大學出版社,2007年5月 .
[3]魏立峰.單片機原理及應用技術.北京大學出版社,2005年
[4]局潤景.Proteus 在MCS-51& ARM7系統(tǒng)中的應用百例 .第一版.北京,電子工業(yè)版社,2006年 .
一、系統(tǒng)概述
1.1背景與意義
單片微型計算機是大規(guī)模集成電路技術發(fā)展的產(chǎn)物,屬第四代電子計算機,它具有高性能、高速度、體積小、價格低廉、穩(wěn)定可靠、應用廣泛的特點。它的應用必定導致傳統(tǒng)的控制技術從根本上發(fā)生變革。因此,單片機的開發(fā)應用已成為高科技和工程領域的一項重大課題。
電子琴是現(xiàn)代電子科技與音樂結合的產(chǎn)物,是一種新型的鍵盤樂器。它在現(xiàn)代音樂扮演著重要的角色,單片機具有強大的控制功能和靈活的編程實現(xiàn)特性,它已經(jīng)溶入現(xiàn)代人們的生活中,成為不可替代的一部分。本文的主要內容是用AT89C51單片機為核心控制元件,設計一個電子琴和音樂發(fā)生器雙功能。以單片機作為主控核心,與鍵盤、揚聲器等模塊組成核心主控制模塊,在主控模塊上設有16個按鍵和揚聲器。
利用單片機產(chǎn)生不同頻率來獲得我們要求的音階,最終可隨意彈奏想要表達的音樂。并且本文分別從原理圖,主要芯片,各模塊原理及各模塊的程序的調試來詳細闡述。
一首音樂是許多不同的音階組成的,而每個音階對應著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構成我們所想要的音樂了,當然對于單片機來產(chǎn)生不同的頻率非常方便,我們可以利用單片機的定時/計數(shù)器T0來產(chǎn)生這樣方波頻率信號,因此,我們只要把一首歌曲的音階對應頻率關系弄正確即可。
1.2設計內容
本設計主要是用單片機為核心控制元件,設計一臺電子琴。以單片機作為主控核心,與鍵盤、蜂鳴器、數(shù)碼管等模塊組成核心主控制模塊,在主控模塊上設有16個按鍵和1個復位按鍵。本系統(tǒng)主要是完成的功能:電子琴彈奏并顯示所按的按鍵對應音的唱名。關于聲音的處理,使用單片機C語言,利用定時器來控制頻率,而每個音符的符號只是存在自定義的表中。總之,本設計 的電子琴有以下要求:
(1)用鍵盤作出電子琴的按鍵,共16個,每鍵代表1個音符。各音符按照符合電. 子琴的按鍵順序排列;
(2)達到電子琴的基本功能,可以用彈奏出簡單的樂曲;
(3)在按下按鍵發(fā)出音符的同時顯示出音符所對應的唱名即1(dao)、2(ruai)、3(mi)、4(fa)。
二、系統(tǒng)概述
2.1問題分析及解決思路
本系統(tǒng)采用AT89C51為主控芯片,因其精度較高,操作比較靈活,輸入電路和輸出電路由芯片來進行處理,電路的系統(tǒng)的穩(wěn)定性高,功耗小。其中,輸入電路有16個獨立按鍵,通過按鍵隨意按下所要表達的音符,作為電平送給主體電路,中央處理器通過識別,解碼輸出音符,在蜂鳴器中發(fā)出有效的聲音。由于需要顯示的信息不多,顯示電路未采用液晶屏顯示,而是使用數(shù)碼管顯示電路負責顯示按下的琴鍵所對應音符的唱名,這樣既節(jié)省了成本,又降低了編程難度。
圖2-1 基礎電路圖
如圖所示基于單片機AT89C51的電子琴電路,它主要由琴鍵控制電路、數(shù)碼管顯示電路、音頻功放電路和時鐘-復位電路四部分所構成。
2.2 硬件設計
2.2.1 琴鍵控制電路
琴鍵控制電路作為人機聯(lián)系的輸入部分,也是間接控制數(shù)碼顯示和音頻功放的重要組成部分。本設計采用獨立式鍵盤的思路。
獨立式鍵盤的特點是一鍵一線,各鍵相互獨立,每個鍵各接一條I/0口線,通過檢測I/0輸入線的電平狀態(tài),可判斷出被按下的按鍵。顯而易見,這樣電路簡單,各條檢測線獨立,識別按下按鍵的軟件編寫簡單。適用于鍵盤按鍵數(shù)目較少的場合,不適用于鍵盤按鍵數(shù)目較多的場合,因為將占用較多的I/0口線。
獨立式鍵盤的16個獨立按鍵分別對應一個 I/0口線,當某一按鍵按下時,對應的檢測線就變成了低電平,與其它按鍵相連的檢測線仍為高電平,只需讀入I/0輸入線的狀態(tài),判別哪一條I/0輸入線為低電平,很容易識別哪個鍵被按下。
2.2.2 數(shù)碼管顯示電路
LED (Light Emitting Diode)為發(fā)光二極管縮寫。LED 數(shù)碼管是由發(fā)光二極管構成的。常見的LED數(shù)碼管為“8”字型的,共計8段。它由七個條形發(fā)光二極管和一-個小圓點發(fā)光二極管組成,每一段對應-一個發(fā)光二極管。一般來說分共陽極和共陰極兩種接法,如圖二所示為八段LED數(shù)碼管結構及外形。
共陽極LED數(shù)碼管的發(fā)光二極管的陽極連接在一-起,公共陽極接正電壓,當某個發(fā)光二極管的陰極接低電平時,發(fā)光二極管被點亮,相應的段被顯示。反之,共陰極發(fā)光二極管的陰極連在一-起,通常公共陰極接地。當陽極為高電平時,發(fā)光二極管點亮。如圖2-2所示的為數(shù)碼管。
圖2-2 數(shù)碼管
LED數(shù)碼管的a至g七個發(fā)光二極管因接得電壓不同而導致不同亮暗的組合就能形成不同的字形,這種組合稱之為字形碼。如表2-3所示為八段LED數(shù)碼管的字形碼表。
顯示字符 共陰極 共陽極 顯示字符 共陰極 共陽極
0 3FH C0H b 7CH 83H
1 06H F9H c 39H C6H
2 58H A4H d 5EH A1H
3 4FH B0H E 79H 86H
4 66H 99H F 71H 8EH
5 6DH 92H H 76H 89H
6 7DH 82H L 348H C7H
7 07H F8H P 73H 8CH
8 7FH 80H U 3EH C1H
9 67H 90H
表2-1八段LED數(shù)碼管的字形碼表
2.2.3 音頻功放電路
本設計采用蜂鳴器作為音頻發(fā)生的設備,而若將蜂鳴器的正極直接與單片機端口相連,由于單片機端口的電流值太小而無法驅動蜂鳴器發(fā)聲,所以本設計采用三極管放大電流的方法來完成目的的,
2.2.4 時鐘
時鐘頻率直接影響單片機的速度,時鐘電路的質量也直接影響單片機系統(tǒng)的穩(wěn)定性。常用的時鐘電路有兩種方式,一種是內部時鐘方式,另- -種 是外部時鐘方式。
AT89C51內部有一個用于構成振蕩器的高增益反相放大器,輸入端為芯片引腳XTAL1,輸出端為引腳XTAL2。這兩個引腳跨接石英晶體振蕩器和微調電容, 構成一個穩(wěn)定的自激振蕩器,圖2-3是AT89C51內部時鐘方式的電路,C1和C2構成一個穩(wěn)定的自激振蕩器,圖2-3是AT89C51內部時鐘方式的電路,C1和C2時鐘方式做時鐘電路
圖2-3AT89C51內部時鐘方式的電路
2.2.5復位電路
初始化操作,給復位腳RST加上大于2個機器周期(即24個時鐘振蕩周期)的高電平就使AT89C51復位。這些操作都是由復位電路來實現(xiàn)。在單片機的實用系統(tǒng)中,一般有兩種復位操作形式:上電 復位和手動復位。上電復位在單片機系統(tǒng)每次通電時執(zhí)行。上電時,電容C充電加給RST引腳-一個短的高電平信號,此信號隨著VCC對電容C的充電過程而逐漸回落,即RST引短的高電平信號,此信號隨著VCC對電容C的充電過程而逐漸回落,即RST引腳上的高電平必須維持足夠長的時間。手動復位在系統(tǒng)出現(xiàn)操作錯誤或程序運行出錯時使用。在單片機系統(tǒng)運行過程中,按下復位鍵,高電平輸入RST引腳,單片機被強制執(zhí)行復位操作,系統(tǒng)可以退出錯誤運行狀態(tài),恢復正常工作。
2.3 軟件設計
2.3.1硬件接口定義
引腳名 接口說明
P0.0-P0.7 數(shù)碼管與單片機通信口
P1.0-P1.7 獨立按鈕接口
P3.3 控制蜂鳴箱
2.3.2發(fā)聲原理
若要產(chǎn)生音頻脈沖,只要算出某- - 音頻的周期(1/頻率),再將此周期除以若要產(chǎn)生音頻脈沖,只要算出某- - 音頻的周期(1/頻率),再將此周期除以相,然后重復計時再反相。就可在P1. 0引腳上得到此頻率的脈沖。利用AT89C51的內部定時器使其工作計數(shù)器模式(MODE1) 下,改變計數(shù)值THO及TLO以產(chǎn)生不同頻率的方法產(chǎn)生不同音階。
例如,頻率為523Hz,其周期T= 1/523=1912μs,因此只要令計數(shù)器計時956μs/1μs=956,每計數(shù)956次時將1/0反相,就可得到中音DO (523Hz) 。計數(shù)脈沖值與頻率的關系式是: N=fi+2+fr,式中,N是計數(shù)值; fi 是機器頻率(晶體振蕩器為12MHz時,其頻率為1MHz) ; fr是想要產(chǎn)生的頻率。其計數(shù)初值T的求法如下: T= 65536-N=65536- fi+2+fr例如: 設K=65536,fi= 1MHz,求中音DO (261Hz)。T= 65536-N= 65536-fi +2+fr= 65536+2+fr= 65536-/fr,中音DO的T= 65536 /523= 64580。
三、系統(tǒng)流程
3.1主函數(shù)運用模塊化
流程如圖所示:
3.2初始函數(shù)
流程圖如下圖所示,該函數(shù)對所需的I/0口、定時器0以及數(shù)碼管蜂鳴器進行初始化配置。
3.3音頻處理及數(shù)碼管顯示
四、Keil代碼
#include<reg51.h>
sbit p26=P2^6;
char num;
unsigned int yin[16]={
64103,64260,64400,64528,64580,64684,64777,64820,64898,64968,65030,65058,65110,65157,65178,65217};
void t0zd() interrupt 1
{ TH0=yin[num]/256;
TL0=yin[num]%256;
p26=!p26;
}
char anjian()
{ char lie,hang,hao;
P1=0xf0;
lie=P1;
P1=0x0f;
hang=P1;
hao=lie|hang;
switch(hao)
{ case 0xee:num = 0;break;
case 0xde:num = 1;break;
case 0xbe:num = 2;break;
case 0x7e:num = 3;break;
case 0xed:num = 4;break;
case 0xdd:num = 5;break;
case 0xbd:num = 6;break;
case 0x7d:num = 7;break;
case 0xeb:num = 8;break;
case 0xdb:num = 9;break;
case 0xbb:num = 10;break;
case 0x7b:num = 11;break;
case 0xe7:num = 12;break;
case 0xd7:num = 13;break;
case 0xb7:num = 14;break;
case 0x77:num = 15;break;
default:num=0xff;break;
}
return num;
}
void main()
{ char i;
EA=1;
ET0=1;
TMOD=0x01;
while(1)
{ num=anjian();
P3=num;
if(P3==0xff)TR0=0;
else TR0=1;
}
}
五、實驗設計圖
六、總結
經(jīng)過一段時間的努力,課程設計——以單片機為核心的電子琴基本完成。但設計中的不足之處仍然存在,這次設計是我第一次設計電路,并用Proteus 實現(xiàn)了仿真。在這過程中,我對電路設計、單片機的使用等都有了新的認識,通過這次設計學會了Proteus和Keil軟件的使用方法,掌握了從系統(tǒng)的需要、方案的設計、功能模塊的劃分、原理圖的設計和電路圖仿真的設計積累了不少經(jīng)驗。
通過本次設計,我對單片機這門課有了進一步的了解,無論是在硬件連接方面還是在軟件編程方面,本次設計采用了AT 89C 51單片機芯片,與以往的單片機相比增加了許多新的功能,使其功能更為完善,應用領域也更為廣泛,通過這次設計,對它的工作原理有了更深的理解。在調試過程中遇到很多問題,硬件上的理論知識學得不夠扎實,對電路的仿真方面也不夠熟練。
總之這次電路的設計和仿真,基本上達到了設計的功能要求,在以后的實踐中,我將繼續(xù)努力學習相關方面方面的理論知識,并理論聯(lián)系實際,對我有很大的提升。
七、參考文獻
[1]謝維成 、楊加國.單片機原理與應用及 C51 程序設計實例. 電子工業(yè)出版社 , 2006年3月 .
[2]李廣弟. 單片機基礎.北京航空航天大學出版社,2007年5月 .
[3]魏立峰.單片機原理及應用技術.北京大學出版社,2005年
[4]局潤景.Proteus 在MCS-51& ARM7系統(tǒng)中的應用百例 .第一版.北京,電子工業(yè)版社,2006年 .
課程設計評定表
評定項目 內 容 滿分 評分 總分
學習態(tài)度 學習認真,態(tài)度端正,遵守紀律。 10
設計情況 認真查閱資料,勤學好問,提出的問題有一定的深度,分析解決問題的能力較強。 40
說明書質量 設計方案正確、表達清楚;設計思路、實驗(論證)方法科學合理;達到課程設計任務書規(guī)定的要求;圖、表、文字表達準確規(guī)范,上交及時。 40
回答問題情況 回答問題準確,基本概念清楚,有理有據(jù),有一定深度。 10
總成績 采用五級分制:優(yōu)、良、中、及格、不及
指導教師評語:文章來源:http://www.zghlxwxcb.cn/news/detail-472110.html
簽名:
年 月 日文章來源地址http://www.zghlxwxcb.cn/news/detail-472110.html
到了這里,關于基于AT89C51單片機的電子琴設計與仿真的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!