




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
基于單片機的電子琴設計摘要本論文設計一個基于單片機的簡易電子琴。電子琴是現代電子科技與音樂結合的產物,是一種新型的鍵盤樂器。它在現代音樂扮演著重要的角色,單片機具有強大的控制功能和靈活的編程實現特性,它已經融入現代人們的生活中,成為不可替代的一部分。本文的主要內容是用AT89C51單片機為核心控制元件,設計一個電子琴。以單片機作為主控核心,與鍵盤、揚聲器等模塊組成核心主控制模塊,在主控模塊上設有16個按鍵和揚聲器。本系統運行穩定,其優點是硬件電路簡單,軟件功能完善,控制系統可靠,性價比較高等,具有一定的實用和參考價值。本文主要對使用單片機設計簡易電子琴進行了分析,并介紹了基于單片機電子琴系統硬件組成。利用單片機產生不同頻率來獲得我們要求的音階,最終可隨意彈奏想要表達的音樂。并且本文分別從原理圖,主要芯片,各模塊原理及各模塊的程序的調試來詳細闡述。
一首音樂是許多不同的音階組成的,而每個音階對應著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構成我們所想要的音樂了,當然對于單片機來產生不同的頻率非常方便,我們可以利用單片機的定時/計數器T0來產生這樣方波頻率信號,因此,我們只要把一首歌曲的音階對應頻率關系弄正確即可。1總體設計1.1系統硬件連線系統硬件連線如圖1-1所示,發聲模塊,鍵盤模塊,單片機最小系統模塊連接如圖:圖1-1
1.把“單片機系統”區域中的P1.0端口用導線連接到“音頻放大模塊”區域SPKIN端口上;
2.把“單片機系統”區域中的P3.0-P3.7端口用8芯排線連接到“4X4行列式鍵盤”區域中的C1-C4R1-R4端口上;
3.把“單片機系統”區域中的P0.0/AD0-P0.7/AD7端口用8芯排線連接到“四路靜態數碼顯示模塊”區域中的任一個a-h端口上;要求:P0.0/AD0對應著a,P0.1/AD1對應著b,……,P0.7/AD7對應著h。1.2主要芯片簡介
1.2.1AT89S51簡介AT89S51是一個低功耗,高性能CMOS8位單片機,片內含4kBytesISP(In-systemprogrammable)的可反復擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術制造,兼容標準MCS-51指令系統及80C51引腳結構,芯片內集成了通用8位中央處理器和ISPFlash存儲單元,功能強大的微型計算機的AT89S51可為許多嵌入式控制應用系統提供高性價比的解決方案。
AT89S51具有如下特點:40個引腳(引腳圖如圖1-2所示),4kBytesFlash片內程序存儲器,128bytes的隨機存取數據存儲器(RAM),32個外部雙向輸入/輸出(I/O)口,5個中斷優先級2層中斷嵌套中斷,2個16位可編程定時計數器,2個全雙工串行通信口,看門狗(WDT)電路,片內時鐘振蕩器。此外,AT89S51設計和配置了振蕩頻率可為0Hz并可通過軟件設置省電模式。空閑模式下,CPU暫停工作,而RAM定時計數器,串行口,外中斷系統可繼續工作,掉電模式凍結振蕩器而保存RAM的數據,停止芯片其它功能直至外中斷激活或硬件復位。同時該芯片還具有PDIP、TQFP和PLCC等三種封裝形式,以適應不同產品的需求。圖1-2單片機主要功能特性兼容MCS-51指令系統
32個雙向I/O口2個16位可編程定時/計數器
全雙工UART串行中斷口線2個外部中斷源
中斷喚醒省電模式看門狗(WDT)電路
靈活的ISP字節和分頁編程4k可反復擦寫ISPFlashROM4.5-5.5V工作電壓時鐘頻率0-33MHz
128*8bit內部RAM低功耗空閑和省電模式
3級加密位軟件設置空閑和省電功能
2硬件設計內容2.14X4矩陣鍵盤識別組成鍵盤的按鍵有機械式、電容式、導電橡膠式、薄膜式多種,但不管什么形式,其作用都是一個使電路接通與斷開的開關。目前微機系統中使用的鍵盤按其功能不同,通常可分為編碼鍵盤和非編碼鍵盤兩種基本類型。
編碼鍵盤:鍵盤本身帶有實現接口主要功能所需的硬件電路。不僅能自動檢測被按下的鍵,并完成去抖動、防串鍵等功能,而且能提供與被按鍵功能對應的鍵碼(如ASCII碼)送往CPU。所以,編碼鍵盤接口簡單、使用方便。但由于硬件電路較復雜,因而價格較貴。
非編碼鍵盤:鍵盤只簡單地提供按鍵開關的行列矩陣。有關按鍵的識別、鍵碼的確定與輸入、去抖動等功能均由軟件完成。目前微機系統中,一般為了降低成本大多數采用非編碼鍵盤。
鍵盤接口必須具有去抖動、防串鍵、按鍵識別和鍵碼產生4個基本功能。
(1)去抖動:每個按鍵在按下或松開時,都會產生短時間的抖動。抖動的持續時間與鍵的質量相關,一般為5—20mm。所謂抖動是指在識別被按鍵是必須避開抖動狀態,只有處在穩定接通或穩定斷開狀態才能保證識別正確無誤。去抖問題可通過軟件延時或硬件電路解決。(2)防串鍵:防串鍵是為了解決多個鍵同時按下或者前一按鍵沒有釋放又有新的按鍵按下時產生的問題。常用的方法有雙鍵鎖定和N鍵輪回兩種方法。雙鍵鎖定,是當有兩個或兩個以上的按鍵按下時,只把最后釋放的鍵當作有效鍵并產生相應的鍵碼。N鍵輪回,是當檢測到有多個鍵被按下時,能根據發現它們的順序依次產生相應鍵的鍵碼。(3)被按鍵識別:如何識別被按鍵是接口解決的主要問題,一般可通過軟硬結合的方法完成。常用的方法有行掃描法和線反轉法兩種。行掃描法的基本思想是,由程序對鍵盤逐行掃描,通過檢測到的列輸出狀態來確定閉合鍵,為此,需要設置入口、輸出口一個,該方法在微機系統中被廣泛使用。線反轉法的基本思想是通過行列顛倒兩次掃描來識別閉合鍵,為此需要提供兩個可編程的雙向輸入/輸出端口。(4)鍵碼產生:為了從鍵的行列坐標編碼得到反映鍵功能的鍵碼,一般在內存區中建立一個鍵盤編碼表,通過查表獲得被按鍵的鍵碼。用AT89S51的并行口P1接4×4矩陣鍵盤,以P1.0-P1.3作輸入線,以P1.4-P1.7作輸出線。2.1.1系統硬件連線設計鍵盤模塊硬件連線如圖1-5所示:
(1)把“單片機系統”區域中的P3.0-P3.7端口用8芯排線連接到“4X4行列式鍵盤”區域中的C1-C4R1-R4端口上;
(2)把“單片機系統”區域中的P0.0/AD0-P0.7/AD7端口用8芯排線連接到“7段數碼顯示模塊”區域中的任一個a-h端口上;要求:P0.0/AD0對應著a,P0.1/AD1對應著b,……,P0.7/AD7對應著h。2.1.2按鍵掃描
(1)4×4矩陣鍵盤識別處理,每個按鍵有它的行值和列值,行值和列值的組合就是識別這個按鍵的編碼。矩陣的行線和列線分別通過兩并行接口和CPU通信。每個按鍵的狀態同樣需變成數字量“0”和“1”,開關的一端(列線)通過電阻接VCC,而接地是通過程序輸出數字“0”實現的。(2)鍵盤處理程序的任務是:確定有無鍵按下,判斷哪一個鍵按下,鍵的功能是什么;還要消除按鍵在閉合或斷開時的抖動。兩個并行口中,一個輸出掃描碼,使按鍵逐行動態接地,另一個并行口輸入按鍵狀態,由行掃描值和回饋信號共同形成鍵編碼而識別按鍵,通過軟件查表,查出該鍵的功能。電路圖如下圖1-6矩陣鍵盤電路3軟件設計內容3.1音樂產生的方法3.1.1原理一首音樂是許多不同的音階組成的,而每個音階對應著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構成我們所想要的音樂了,當然對于單片機來產生不同的頻率非常方便,我們可以利用單片機的定時/計數器T0來產生這樣方波頻率信號,因此,我們只要把一首歌曲的音階對應頻率關系正確即可。若要產生音頻脈沖,只要算出某一音頻的周期(1/頻率),再將此周期除以2即為半周期的時間。利用定時器計時半周期時間,每當計時終止后就將P1.0反相,然后重復計時再反相。就可在P1.0引腳上得到此頻率的脈沖。
利用AT89C51的內部定時器使其工作計數器模式(MODE1)下,改變計數值TH0及TL0以產生不同頻率的方法產生不同音階,例如,頻率為523Hz,其周期T=1/523=1912μs,因此只要令計數器計時956μs/1μs=956,每計數956次時將I/O反相,就可得到中音DO(523Hz)。
計數脈沖值與頻率的關系式(如式1-1所示)是:
N=fi÷2÷fr(1-1)式中,N是計數值;fi是機器頻率(晶體振蕩器為12MHz時,其頻率為1MHz);fr是想要產生的頻率。其計數初值T的求法如下:
T=65536-N=65536-fi÷2÷fr
例如:設K=65536,fi=1MHz,求低音DO(262Hz)、中音DO(523Hz)、高音DO(1046Hz)的計數值。
T=65536-N=65536-fi÷2÷fr=65536-1000000÷2÷fr=65536-500000/fr
低音DO的T=65536-500000/262=63627
中音DO的T=65536-500000/523=64580
高音DO的T=65536-500000/1046=65059單片機12MHZ晶振,高中低音符與計數T0相關的計數值如表1-2所示表1-2音符頻率表音符頻率(HZ)簡譜碼(T值)音符頻率(HZ)簡譜碼(T值)低1DO26263628#4FA#74064860#1DO#27763731中5SO78464898低2RE29463835#5SO#83164934#2RE#31163928中6LA88064968低3M33064021#693264994低4FA34964103中7SI98865030#4FA#37064185高1DO104665058低5SO39264260#1DO#110965085#5SO#41564331高2RE117565110低6LA44064400#2RE#124565134#646664463高3M131865157低7SI49464524高4FA139765178中1DO52364580#4FA#148065198#1DO#55464633高5SO156865217中2RE58764684#5SO#166165235#2RE#62264732高6LA176065252中3M65964777#6186565268中4FA69864820高7SI196765283我們要為這個音符建立一個表格,單片機通過查表的方式來獲得相應的數據低音0-19之間,中音在20-39之間,高音在40-59之間
TABLE:{63565,63781,63878,64143,64220,64365,64491,64549,64657,64706,64839,64878,64950,65013,65042,65096,65121,65187,65207,65243,65274,}3.2程序框圖音樂發聲程序框圖如圖1-8所示:T0中斷入口T0中斷入口重裝T0初值P1.0取反中斷返回圖1-8音樂發聲程序框圖4全文總結通過這次設計,我學到了不少課本上沒有的知識,也鍛煉了自己的動手能力,將以前學過的零散的知識串到一起。首先在設計剛開始的調研階段,我學會了怎么通過各種方式查詢相關的資料。通過對這些資料的學習,我大致了解了單片機的發展現狀以及未來的發展趨勢,認識到目前單片機方面的各種各樣的發展,和它們之間的競爭。了解了單片機方面的先進技術,這些都為我的未來的學習指明了方向。我的設計主要涉及硬件和軟件兩方面的內容,通過這些我的硬件和軟件開發能力都獲得了提高。首先硬件方面,基本了解了電子產品的開發流程和所要做的工作。通過開發板的設計和硬件搭建的過程,使我對51系單片機的接口有了更深層次的理解,熟悉了一些單片機常用的外圍電路引腳和連接方法,如鍵盤等。在軟件方面,通過串行口調試工具的開發,使我加深了對累封裝的理解,熟悉了51系列單片機內部的寄存器和編程規則,以及如何控制外圍電路。附錄程序:#include<reg51.h>#defineucharunsignedchar#defineuuintunsignedintuchartemp;ucharnum;uchari,j;unsignedcharSTH0;unsignedcharSTL0;sbitP3_4=P3^4;sbitP3_5=P3^5;sbitP3_6=P3^6;sbitP3_7=P3^7;sbitP1_0=P1^0;unsignedintcodetab[]={63565,63781,63878,64143,64220,64365,64491,64549,64657,64706,64839,64878,64950,65013,65042,65096,65121,65187,65207,65243,65274,};voiddelay();ucharkeyscan();voidmain(void){ TMOD=0x01; ET0=1; EA=1; num=17; while(1) { keyscan(); }}voiddelay(){unsignedchari,j;for(i=110;i>0;i--)for(j=110;j>0;j--);}ucharkeyscan(){ P3=0xfe; temp=P3; temp=temp&0xf0; while(temp!=0xf0) { delay(); temp=P3; temp=temp&0xf0; while(temp!=0xf0) { temp=P3; switch(temp) { case0xee:num=1; break; case0xde:num=2; break; case0xbe:num=3; break; case0x7e:num=4; break; } temp=P3; P1_0=~P1_0; STH0=tab[num]/256; STL0=tab[num]%256; TR0=1; temp=temp&0x0f; while(temp!=0xf0) { temp=P3; temp=temp&0xf0; } TR0=0; } } P3=0xfd; temp=P3; temp=temp&0xf0; while(temp!=0xf0) { delay(); temp=P3; temp=temp&0xf0; while(temp!=0xf0) { temp=P3; switch(temp) { case0xed:num=5; break; case0xdd:num=6; break; case0xbd:num=7; break; case0x7d:num=8; break; } temp=P3; P1_0=~P1_0; STH0=tab[num]/256; STL0=tab[num]%6; TR0=1; temp=temp&0x0f; while(temp!=0xf0) { temp=P3; temp=temp&0xf0; } TR0=0; } } P3=0xfb; temp=P3; temp=temp&0xf0; while(temp!=0xf0) { delay(); temp=P3; temp=temp&0xf0; while(temp!=0xf0) { temp=P3; switch(temp) { case0xeb:num=9; break; case0xdb:num=10; break; case0xbb:num=11; break; case0x7b:num=12; break; } temp=P3;P1_0=~P1_0; STH0=tab[num]/256;STL0=tab[num]%256;TR0=1;temp=temp&0x0f; while(temp!=0xf0) { temp=P3; temp=temp&0xf0; } TR0=0; } } P3=0xf7; temp=P3; temp=temp&0xf0; while(temp!=0xf0) { delay(); temp=P3; temp=temp&0xf0; while(temp!=0xf0) { temp=P3; switch(temp) { case0xe7:num=13; break; case0xd7:num=14; break; case0xb7:num=15; break; case0x77:num=16; break; } temp=P3;P1_0=~P1_0; STH0=tab[num]/256;STL0=tab[num]%256;TR0=1;temp=temp&0x0f; while(temp!=0xf0) { temp=P3; temp=temp&0xf0; } TR0=0; } }returnnum;}voidt0(void)interrupt1{ TH0=STH0; TL0=STL0; P1_0=~P1_0;}基于C8051F單片機直流電動機反饋控制系統的設計與研究基于單片機的嵌入式Web服務器的研究MOTOROLA單片機MC68HC(8)05PV8/A內嵌EEPROM的工藝和制程方法及對良率的影響研究基于模糊控制的電阻釬焊單片機溫度控制系統的研制基于MCS-51系列單片機的通用控制模塊的研究基于單片機實現的供暖系統最佳啟停自校正(STR)調節器單片機控制的二級倒立擺系統的研究基于增強型51系列單片機的TCP/IP協議棧的實現基于單片機的蓄電池自動監測系統基于32位嵌入式單片機系統的圖像采集與處理技術的研究基于單片機的作物營養診斷專家系統的研究基于單片機的交流伺服電機運動控制系統研究與開發基于單片機的泵管內壁硬度測試儀的研制基于單片機的自動找平控制系統研究基于C8051F040單片機的嵌入式系統開發基于單片機的液壓動力系統狀態監測儀開發模糊Smith智能控制方法的研究及其單片機實現一種基于單片機的軸快流CO〈,2〉激光器的手持控制面板的研制基于雙單片機沖床數控系統的研究基于CYGNAL單片機的在線間歇式濁度儀的研制基于單片機的噴油泵試驗臺控制器的研制基于單片機的軟起動器的研究和設計基于單片機控制的高速快走絲電火花線切割機床短循環走絲方式研究基于單片機的機電產品控制系統開發基于PIC單片機的智能手機充電器基于單片機的實時內核設計及其應用研究基于單片機的遠程抄表系統的設計與研究基于單片機的煙氣二氧化硫濃度檢測儀的研制基于微型光譜儀的單片機系統單片機系統軟件構件開發的技術研究基于單片機的液體點滴速度自動檢測儀的研制基于單片機系統的多功能溫度測量儀的研制基于PIC單片機的電能采集終端的設計和應用基于單片機的光纖光柵解調儀的研制氣壓式線性摩擦焊機單片機控制系統的研制基于單片機的數字磁通門傳感器基于單片機的旋轉變壓器-數字轉換器的研究基于單片機的光纖Bragg光柵解調系統的研究單片機控制的便攜式多功能乳腺治療儀的研制基于C8051F020單片機的多生理信號檢測儀基于單片機的電機運動控制系統設計Pico專用單片機核的可測性設計研究基于MCS-51單片機的熱量計基于雙單片機的智能遙測微型氣象站MCS-51單片機構建機器人的實踐研究基于單片機的輪軌力檢測基于單片機的GPS定位儀的研究與實現基于單片機的電液伺服控制系統用于單片機系統的MMC卡文件系統研制基于單片機的時控和計數系統性能優化的研究基于單片機和CPLD的粗光柵位移測量系統研究單片機控制的后備式方波UPS提升高職學生單片機應用能力的探究基于單片機控制的自動低頻減載裝置研究基于單片機控制的水下焊接電源的研究基于單片機的多通道數據采集系統基于uPSD3234單片機的氚表面污染測量儀的研制基于單片機的紅外測油儀的研究96系列單片機仿真器研究與設計基于單片機的單晶金剛石刀具刃磨設備的數控改造基于單片機的溫度智能控制系統的設計與實現基于MSP430單片機的電梯門機控制器的研制基于單片機的氣體測漏儀的研究基于三菱M16C/6N系列單片機的CAN/USB協議轉換器基于單片機和DSP的變壓器油色譜在線監測技術研究基于單片機的膛壁溫度報警系統設計基于AVR單片機的低壓無功補償控制器的設計基于單片機船舶電力推進電機監測系統基于單片機網絡的振動信號的采集系統基于單片機的大容量數據存儲技術的應用研究基于單片機的疊圖機研究與教學方法實踐基于單片機嵌入式Web服務器技術的研究及實現基于AT89S52單片機的通用數據采集系統基于單片機的多道脈沖幅度分析儀研究機器人旋轉電弧傳感角焊縫跟蹤單片機控制系統基于單片機的控制系統在PLC虛擬教學實驗中的應用研究基于單片機系統的網絡通信研究與應用基于PIC16F877單片機的莫爾斯碼自動譯碼系統設計與研究基于單片機的模糊控制器在工業電阻爐上的應用研究基于雙單片機沖床數控系統的研究與開發基于Cygnal單片機的μC/OS-Ⅱ的研究基于單片機的一體化智能差示掃描量熱儀系統研究基于TCP/IP協議的單片機與Internet互聯的研究與實現變頻調速液壓電梯單片機控制器的研究基于單片機γ-免疫計數器自動換樣功能的研究與實現基于單片機的倒立擺控制系統設計與實現單片機嵌入式以太網防盜報警系統基于51單片機的嵌入式Internet系統的設計與實現單片機監測系統在擠壓機上的應用MSP430單片機在智能水表系統上的研究與應用基于單片機的嵌入式系統中TCP/IP協議棧的實現與應用單片機在高樓恒壓供水系統中的應用基于ATmega16單片機的流量控制器的開發基于MSP430單片機的遠程抄表系統及智能網絡水表的設計\t"_bl
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 宜賓小年活動策劃方案
- 家庭垃圾清理活動方案
- 家庭餐桌禮儀活動方案
- 賓館兒童半價活動方案
- 壽宴活動暖場活動方案
- 官方活動策劃方案
- 小吃鋪開張活動方案
- 小學入戶宣傳活動方案
- 家紡店線上活動策劃方案
- 小學洗衣活動方案
- 中山大學強基校測面試題
- 2025年湖南省中考化學真題(解析版)
- aopa無人機培訓管理制度
- 2025屆中考化學預熱模擬卷 【吉林專用】
- 2025至2030年中國工業控制軟件行業市場運行態勢及前景戰略研判報告
- 小學生籃球課課件下載
- 2025年中國AI智能鼠標行業市場全景分析及前景機遇研判報告
- 2025年湖北省新華書店(集團)有限公司市(縣)分公司招聘筆試參考題庫含答案解析
- 2025至2030中國軍用推進劑和炸藥行業產業運行態勢及投資規劃深度研究報告
- EPC總承包管理實施方案
- 廣東省廣州市越秀區2023-2024學年五年級下學期數學期末考試試卷(含答案)
評論
0/150
提交評論