單片機電子系統(tǒng)課程設計方案-簡易電子琴_第1頁
單片機電子系統(tǒng)課程設計方案-簡易電子琴_第2頁
單片機電子系統(tǒng)課程設計方案-簡易電子琴_第3頁
單片機電子系統(tǒng)課程設計方案-簡易電子琴_第4頁
單片機電子系統(tǒng)課程設計方案-簡易電子琴_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

PAGE《電子系統(tǒng)設計》課程設計實訓報告姓名:學號:專業(yè)班級:指導教師:設計題目:簡易電子琴完成時間:2011年06月20日功能(25%)實訓(55%)設計報告(20%)總評簡易難度(15%)控制方式(10%)原理圖(10%)裝配圖(10%)器件焊接(5%)軟件控制(10%)功能實現(10%)質量評估(10%)格式(5%)內容(15%)指導教師簽名:目錄TOC\o"1-3"\h\z\uHYPERLINK\l"_Toc296681208"目錄?PAGEREF_Toc296681208\h1HYPERLINK\l”_Toc296681209"一、引言?PAGEREF_Toc296681209\h2HYPERLINK\l”_Toc296681210”1。1摘要?PAGEREF_Toc296681210\h2HYPERLINK\l"_Toc296681211”1.2課程設計的目的?81211\h2HYPERLINK三、音樂產生的原理?PAGEREF_Toc296681221\h5HYPERLINK\l”_Toc296681222"四、系統(tǒng)設計?PAGEREF_Toc296681222\h6HYPERLINK\l”_Toc296681223"4.1音樂發(fā)聲流程圖 PAGEREF_Toc296681223\h6HYPERLINK\l"_Toc296681224"4。2程序流程圖 PAGEREF_Toc296681224\h7HYPERLINK\l”_Toc296681225"4.3總體電路流程圖?PAGEREF_Toc296681225\h7HYPERLINK\l"_Toc296681226"五、總結 PAGEREF_Toc296681226\h8HYPERLINK\l”_Toc296681227"六、參考文獻 PAGEREF_Toc296681227\h8HYPERLINK\l"_Toc296681228"附錄 PAGEREF_Toc296681228\h9HYPERLINK\l"_Toc296681229"1.1硬件電路圖 PAGEREF_Toc296681229\h9HYPERLINK\l"_Toc296681230"1。2PCB封裝圖?PAGEREF_Toc296681230\h9HYPERLINK\l"_Toc296681231"2.1程序清單?PAGEREF_Toc296681231\h10一、引言:1.1摘要:電子琴是現代電子科技與音樂結合的產物,是一種新型的鍵盤樂器。它在現代音樂扮演著重要的角色,單片機具有強大的控制功能和靈活的編程實現特性,它已經溶入現代人們的生活中,成為不可替代的一部分。本文的主要內容是用AT89C51單片機為核心控制元件,設計一個電子琴.以單片機作為主控核心,與鍵盤、揚聲器等模塊組成核心主控制模塊,在主控模塊上設有16個按鍵和揚聲器。本系統(tǒng)運行穩(wěn)定,其優(yōu)點是硬件電路簡單,軟件功能完善,控制系統(tǒng)可靠,性價比較高等,具有一定的實用和參考價值。?1.2課程設計的目的:鞏固和運用所學課程,理論聯系實際,提高分析、解決計算機技術實際問題的獨立工作能力,通過對一個簡易的八音符電子琴的設計,進一步加深對計算機原理以及數字電路應用技術方面的了解與認識,進一步熟悉數字電路系統(tǒng)設計、制作與調試的方法和步驟.鞏固所學課堂知識,理論聯系實際,提高分析、解決計算機技術實際問題的獨立工作能力。為了進一步了解計算機組成原理與系統(tǒng)結構,深入學習Protel技術,用C語言去控制將會使我們對本專業(yè)知識可以更好地掌握。1。3課程設計的內容:(1)設計一個簡易的八音符電子琴,它可通過按鍵輸入來控制音響。(2)演奏時可以選擇是手動演奏(由鍵盤輸入)還是自動演奏已存入的樂曲.(3)能夠自動演奏多首樂曲,且每首樂曲可重復演奏。二、芯片簡介:2。1。1AT89C51簡介:AT89C51是一個低功耗,高性能CMOS8位單片機,片內含4kBytesISP(In—systemprogrammable)的可反復擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術制造,兼容標準MCS-51指令系統(tǒng)及80C51引腳結構,芯片內集成了通用8位中央處理器和ISPFlash存儲單元,功能強大的微型計算機的AT89S51可為許多嵌入式控制應用系統(tǒng)提供高性價比的解決方案。?

AT89C51具有如下特點:40個引腳(引腳圖如圖2—1所示),4kBytesFlash片內程序存儲器,128bytes的隨機存取數據存儲器(RAM),32個外部雙向輸入/輸出(I/O)口,5個中斷優(yōu)先級2層中斷嵌套中斷,2個16位可編程定時計數器,2個全雙工串行通信口,看門狗(WDT)電路,片內時鐘振蕩器。此外,AT89C51設計和配置了振蕩頻率可為0Hz并可通過軟件設置省電模式??臻e模式下,CPU暫停工作,而RAM定時計數器,串行口,外中斷系統(tǒng)可繼續(xù)工作,掉電模式凍結振蕩器而保存RAM的數據,停止芯片其它功能直至外中斷激活或硬件復位。同時該芯片還具有PDIP、TQFP和PLCC等三種封裝形式,以適應不同產品的需求.HYPERLINK"http://photo.blog.sina.com.cn/showpic。html”\l”blogid=49013b4801009rfc&url=http://static14.photo.sina.com.cn/orignal/49013b4845103b035ea5d"\t"_blank"圖2—1AT89C51芯片引腳圖2.1。2AT89C51主要功能特性:·兼容MCS-51指令系統(tǒng)

·32個雙向I/O口·2個16位可編程定時/計數器

·全雙工UART串行中斷口線·2個外部中斷源

·中斷喚醒省電模式·看門狗(WDT)電路

·靈活的ISP字節(jié)和分頁編程·4k可反復擦寫ISPFlashROM

·4.5—5.5V工作電壓·時鐘頻率0—33MHz

·128x8bit內部RAM·低功耗空閑和省電模式

·3級加密位·軟件設置空閑和省電功能

·雙數據寄存器指針2.2.1DS18B20簡介:美國DALLAS半導體公司的DS18B20是世界上第一片支持“單總線”接口的數字式溫度傳感器,能夠直接讀取被測物的溫度值。它具有TO-92、TSOC、SOIC多種封裝形式,可以適應不同的環(huán)境需求。其測量范圍在—55~+125℃、—10℃~+85℃之內的測量精度可達±0.5℃,穩(wěn)定度為1%。通過編程可實現9、10、11、12位的分辨率讀出溫度數據,以上都包括一個符號位,因此對應的溫度量化值分別為0。5℃、0。25℃、0.25℃、0.0625℃,芯片出廠時默認為12位的轉換精度。讀取或寫入DS18B20僅需要一根總線,要求外接一個約4.7千歐姆的上拉電阻,當總線閑置時,其狀態(tài)為高電平。此時DS18B20是溫度——電流傳感器,對于提高系統(tǒng)抗干擾能力有很大的幫助。負壓特性電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作。掉電保護功能DS18B20內部含有EEPROM,在系統(tǒng)掉電以后,它仍可保存分辨率及報警溫度的設定值.DS18B20具有體積更小、適用電壓更寬、更經濟、可選更小的封裝方式,更寬的電壓適用范圍,適合于構建自己的經濟的測溫系統(tǒng),因此也就被設計者們所青睞。(引腳圖如圖2—2所示)。圖2—2DS18B20引腳圖2.2。2DS18B20的工作原理:DS18B20的溫度檢測與數字數據輸出全集成于一個芯片之上,從而抗干擾力更強。其一個工作周期可分為兩個部分,即溫度檢測和數據處理.在講解其工作流程之前我們有必要了解DS18B20的內部存儲器資源。DS18B20共有三種形態(tài)的存儲器資源,它們分別是:(1)ROM只讀存儲器,用于存放DS18B20ID編碼,其前8位是單線系列編碼(DS18B20的編碼是19H),后面48位是芯片唯一的序列號,最后8位是以上56位的CRC碼(冗余校驗).數據在出廠時設置不由用戶更改。DS18B20共64位ROM。(2)RAM數據暫存器,用于內部計算和數據存取,數據在掉電后丟失,DS18B20共9個字節(jié)RAM,每個字節(jié)為8位。如圖2所示。第1、2個字節(jié)是溫度轉換后的數據值信息,第3和第4字節(jié)是高溫觸發(fā)器和低溫觸發(fā)器的易失性拷貝,第5個字節(jié)為配置寄存器,它的內容用于確定溫度值的數字轉換分辨率,DS18B20工作時寄存器中的分辨率轉換為相應精度的溫度數值。以上字節(jié)內容每次上電復位時被刷新.配置寄存器字節(jié)各位的定義如圖2所示.低5位一直為1,是工作模式位,用于設置DS18B20在工作模式還是在測試模式,DS18B20出廠時該位被設置為0,用戶不要去改動;和用來設置分辨率,決定溫度轉換的精度位數。三、音樂產生的原理:一首音樂是許多不同的音階組成的,而每個音階對應著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構成我們所想要的音樂了,當然對于單片機來產生不同的頻率非常方便,我們可以利用單片機的定時/計數器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)。計數脈沖值與頻率的關系式(如式4-1所示)是:

N=fi÷2÷fr

4-1式中,N是計數值;fi是機器頻率(晶體振蕩器為12MHz時,其頻率為1MHz);fr是想要產生的頻率。其計數初值T的求法如下:

T=65536-N=65536-fi÷2÷fr例如:設K=65536,fi=1MHz,求低音DO(261Hz)、中音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相關的計數值如表3—1所示音符頻率(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低6LA44064400#2RE#124565134低7SI49464524高4FA139765178中1DO52364580#4FA#148065198#1DO#55464633高5SO156865217中2RE58764684#5SO#166165235#2RE#62264732高6LA176065252中3M65964777#6186565268中4FA69864820高7SI196765283表3—1音符頻率表四、系統(tǒng)設計:4.1音樂發(fā)聲流程圖:圖4—14.2程序流程圖:圖4-24。3總體電路流程圖:單片機單片機按鍵音符輸入直流穩(wěn)壓電源音頻放大輸出溫度顯示溫度采集溫度顯示圖4—3五、總結:將程序燒入芯片,調試成功后,可任意彈奏自己想要的旋律.本研究通過制作電子琴,將幾個模塊很好的融合起來,對使用單片機設計簡易電子琴進行了分析,并介紹了基于單片機電子琴統(tǒng)硬件組成。利用單片機產生不同頻率來獲得我們要求的音階,最終可隨意彈奏想要表達的音樂。通過本次課程設計,不僅讓我更深入的了解《電子系統(tǒng)設計》這門學科,更使自己有了繼續(xù)探索的興趣.同時也更加掌握了C語言和Protel。對我來說,在之前的學習過程中沒有能夠很好的掌握電子系統(tǒng)設計的學習,在很多地方還有生疏和遺漏,并且在此次課程設計過程中也遇到困難不能自已獨立解決。但是,通過這次程序設計,除了增加了自己的編程能力,提高了自己的動手能力。同時我也深感“認真嚴謹”這個詞的重要性,一點點小的馬虎,便會導致整個程序不能正常運行。在今后的學習中,我將繼續(xù)保持嚴謹的學習態(tài)度。與此同時,在同學的幫助下,讓我體會到了相互學習的重要性,而更讓人難以忘懷的是在熱烈討論問題時,那激情橫溢的場面.總之,此次課程設計讓我獲益匪淺。六、參考文獻:[1]康年光《電子技術基礎(數字部分)》高等教育出版社2005。07

[2]劉樂喜《微機計算機接口技術及應用》華中科技大學出版社2005.08[3]謝嘉奎《電子線路(線性部分)》高等教育出版社2004。04[4]潭浩強《C語言程序設計》清華大學出版社2005.07[5]李群芳、肖看《單片機原理、接口及應用—嵌入式系統(tǒng)技術基礎》清華大學出版社2005.03附錄:1.1硬件電路圖:1。2PCB裝配圖:2。1程序清單:#include"AT89X52。H"#include"ABSACC.H"#definepainoP3_7Unsigned inttab[16]={63628,63835,64021,64103,64260,64400,64524,64580,64684,64777,64820,64898,64968,65030,65058,65110};unsignedcharjianma[16]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77};unsignedcharc[4]={0xef,0xdf,0xbf,0x7f};unsignedcharz;//z為頻率常數unsignedcharx=0;//x為節(jié)拍常數unsignedcharu=0;unsignedcharcodemusic_tab[]={0x18,0x30,0x1C,0x10,//格式為:頻率常數,節(jié)拍常數,頻率常數,節(jié)拍常數,0x20,0x40,0x1C,0x10,//八月桂花遍地開0x18,0x10,0x20,0x10,0x1C,0x10,0x18,0x40,0x1C,0x20,0x20,0x20,0x1C,0x20,0x18,0x20,0x20,0x80,0xFF,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x80,0xFF,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x80,0x20,0x30,0x1C,0x10,0x20,0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x15,0x1F,0x05,0x20,0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x30,0x20,0x30,0x1C,0x10,0x18,0x40,0x1C,0x20,0x20,0x20,0x26,0x40,0x13,0x60,0x18,0x20,0x15,0x40,0x13,0x40,0x18,0x80,0x00};unsignedcharcodesong_tab[]={0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,//祝你平安0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,0x20,0x20,0x1c,0x20,0x20,0x80,0x2b,0x20,0x26,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0x10,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,0x2b,0x10,0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x20,0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30,0x10,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x26,0x10,0x2b,0x10,0x2b,0x80,0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x10,0x40,0x10,0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x00};voidtime1(void)interrupt3//產生10MS精確定時{TH1=(65536-10000)/256;TL1=(65536—10000)%256;x-—;}voiddelayms(unsignedinta)//微秒延時程序{while(—-a);}voidmain(void){??unsignedcharm,n,a=0;?unsignedcharj,j1,jj1,jjj1,j2,jj2,j3=0;?unsignedcharw=0; bite=0;?unsignedchars=0;?unsignedcharh=0;?bitr=0;?TMOD=(TMOD&0x00)|0x11;TH1=(65536-10000)/256;TL1=(65536-10000)%256;?EA=1; ? ??//T0,T1工作方式1?ET0=1;??ET1=1; TR0=0;?TR1=0; ?? ??? while(1){ ???? if(P3_2==0) {?while(1){switch(song_tab[u]){case0x00:u=0;delayms(25000);break;//曲終停頓一定時間case0xff:u=u+1;delayms(100);break;//遇到休止符停頓一定時間100微秒,再取下一個頻率default:z=song_tab[u++]; //取頻率到z??x=song_tab[u++];//取節(jié)拍到x?? if(z==0x18||z==0x30)? ?s=1;???elseif(z==0x15||z==0x2B)? s=2;???elseif(z==0x26)???s=3; ??elseif(z==0x20)? ?s=5;?? elseif(z==0x1C)? ?s=6; ? else???s=3;?? h++;? ?if(r==1)???{?? h=1;?? ?r=0;???}???if(h==1)? ?{???P0=discode[s];? ? P2=(P2|0xf0)&0xef; ???delayms(50);???}? ???? elseif(h==2)???{??? P0=discode[s]; ???P2=(P2|0xf0)&0xdf;???delayms(50);?? ?? } ???? ??elseif(h==3)???{ ? ?P0=discode[s];????P2=(P2|0xf0)&0xbf;????delayms(50);?? ???????}?????? ??elseif(h==4)???{? ? P0=discode[s];????P2=(P2|0xf0)&0x7f;????delayms(50);? ??r=1; ?}TR1=1;while(x!=0){paino=!paino;delayms(3*z);//調整產生的頻率,可以通過在m前的值來修正音調的高低}TR1=0;}}?}?if(P3_3==0) {?while(1){switch(music_tab[u]){case0x00:u=0;delayms(25000);break;//曲終停頓一定時間case0xff:u=u+1;delayms(100);break;//遇到休止符停頓一定時間100微秒,再取下一個頻率default:z=music_tab[u++]; //取頻率到z??x=music_tab[u++];//取節(jié)拍到x ??if(z==0x18||z==0x30)? ?s=1; ? elseif(z==0x15||z==0x2B)?? s=2; ??elseif(z==0x26)???s=3; ? elseif(z==0x20)???s=5; ??elseif(z==0x1C)?? s=6;???else???s=3;?? h++;???if(r==1)???{???h=1;?? ?r=0;?? } ??if(h==1)???{?? P0=discode[s];? ?P2=(P2|0xf0)&0xef;????delayms(50);????}?? ??? elseif(h==2) {? ??P0=discode[s];? ??P2=(P2|0xf0)&0xdf;? delayms(50);???????}? ? ?elseif(h==3) {? ??P0=discode[s];?? ?P2=(P2|0xf0)&0xbf;? ??delayms(50);?? } ????? ?elseif(h==4)???{ ?? P0=discode[s]; ???P2=(P2|0xf0)&0x7f; ??delayms(50);??? r=1;???}TR1=1;while(x!=0){????paino=!paino;delayms(3*z);//調整產生的頻率,可以通過在z前的值來修正音調的高低}TR1=0;}}?}?for(m=0;m〈4;m++){P1=c[m];for(n=0;n<16;n++){if(P1==jianma[n]){???delayms(300);?//去抖動?? ? ?????? ?if(P1==jianma[n]) ?//按鍵正式啟動{ ?w++;???if(e==1) ??{???w=1;????e=0;? ?}???if(n>14)?j=n-13;?? elseif(n==7||n==14)?? j=1;? ?elseif(n>7&&n!=14)???j=n-6;? ?else ? j=n+1;a=1;//松開按鍵,P1就不等于jianma[n]了}}? elseif(a==1)?//保存數碼信息顯示{???if(w==1)???{? ?P0=discode[j];?? ?P2=(P3|0xf0)&0xef; ???delayms(50);j1=j;? ?}???????elseif(w==2)? ?{???P0=discode[j];????P2=(P2|0xf0)&0xef;????delayms(50);???? ? ?P0=discode[j1];????P2=(P2|0xf0)&0xdf;? ??delayms(50);j2=j1;??? jj1=j;????

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論