九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

單片機音樂發(fā)生器.doc

  • 資源ID:6598602       資源大小:683.50KB        全文頁數(shù):26頁
  • 資源格式: DOC        下載積分:9.9積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要9.9積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標題沒有明確說明有答案則都視為沒有答案,請知曉。

單片機音樂發(fā)生器.doc

第 屆電子設(shè)計大賽論文單片機音樂發(fā)生器組長: 組員: 目 錄1、系統(tǒng)方案- 2 -1.1、方案比較與選擇- 2 -1.1.1、單片機選擇與論證- 2 -1.1.2、功放選擇與論證- 2 -1.1.3、顯示器件選擇與論證- 2 -1.1.4、鍵盤形式選擇與論證- 3 -1.1.5、材料選擇與論證- 3 -2、理論分析與計算- 3 -2.1、聲音播放的原理- 3 -2.1.1、普通聲音產(chǎn)生原理. - 3 -2.1.2、音樂產(chǎn)生原理.- 4 -2.2、音符節(jié)拍處理- 5 -3、電路與程序設(shè)計- 6 -3.1、電路的設(shè)計- 6 -3.1.1、總體框圖設(shè)計- 6 -3.1.2、時鐘電路設(shè)計- 6 -3.1.3、復(fù)位電路設(shè)計- 7 -3.1.4、按鍵電路設(shè)計- 7 -3.1.5、顯示電路設(shè)計- 8 -3.1.6、揚聲器電路設(shè)計- 9 -3.2、程序設(shè)計.- 10 -3.2.1、系統(tǒng)整體流程圖- 10 -3.2.2、鍵盤子程序流程圖- 10 -3.2.3、液晶顯示子程序流程圖- 11 -4、測試方案與測試結(jié)果- 12 -4.1、測試方案- 12 -4.2、測試結(jié)果- 12 -4.3、測試分析- 13 -附錄- 13 -附錄1:電路原理圖- 13 -附錄2:部分源程序- 14 -1、系統(tǒng)方案1.1、方案比較與選擇1.1.1、單片機選擇與論證方案一:8051單片機。8051內(nèi)部包含一個8位CPU,128BRAM,4KBROM,21個特殊功能寄存器,4個8位并行I/O口,一個全雙工串行口,2個16位定時器、計數(shù)器,5個中斷源。方案二:SST單片機。SST單片機省去了開發(fā)用的編程器和仿真器。省去了外部EEPROM、電壓監(jiān)控芯片、上電復(fù)位電路和5個UART的擴展芯片。它自帶在線下載和在線仿真功能,帶有5路PCA模塊(主成分分析),PCA功能比普通單片機有更強的計時性。利用PCA的脈沖寬度調(diào)制(PWM)模式可產(chǎn)生一個8位PWM。方案三:AT89C52單片機。AT89C52是美國ATMEL公司生產(chǎn)的低電壓,高性能CMOS位單片機,片內(nèi)含4k字節(jié)的可反復(fù)擦寫1000次的只讀程序存儲器(PEROM)和128字節(jié)的隨機存取數(shù)據(jù)存儲器(RAM),片內(nèi)置通用8位中央處理器(CPU)和Flash存儲單元?;趯δ荦R全性的考慮,我們采用方案三。1.1.2、功放選擇與論證方案一:LM386。LM386是一種音頻集成功放,具有自身功耗低、更新內(nèi)鏈增益可調(diào)整、電源電壓范圍大和總諧波失真小等優(yōu)點的功率放大器。方案二:NPN型三極管。集電極電流受基極電流的控制,并且基極電流很小的變化,會引起集電極電流很大的變化,且變化滿足一定的比例關(guān)系。出于對市場供應(yīng)情況和價格方面的考慮,我們采用方案一。1.1.3、顯示器件選擇與論證方案一:數(shù)碼管。數(shù)碼管顯示能在低電壓、小電流條件下驅(qū)動發(fā)光,能與CMOS、ITL電路兼容。發(fā)光響應(yīng)時間極短(<01s),高頻特性好,單色性好,亮度高。體積小,重量輕,抗沖擊性能好。壽命長,使用壽命在10萬小時以上,甚至可達100萬小時。但顯示功能有限,只能顯示數(shù)字和個別字母。方案二:液晶顯示器(LCD)。液晶顯示器每一個點在收到信號后就一直保持那種色彩和亮度,恒定發(fā)光,顯示質(zhì)量高。其接口都是數(shù)字式的,和單片機系統(tǒng)的接口更加簡單可靠,操作更加方便。功耗主要消耗在其內(nèi)部的電極和驅(qū)動IC上,因而耗電量比其它顯示器要少得多。方案三:陰極射線管顯示器(CRT)。此種顯示器圖像色彩豐富,還原性好,有豐富的幾何失真調(diào)整能力。但不能長期暴露在磁場下,會磁化或損壞,不能讓強光直射,會降低發(fā)光效率,不能在高溫下使用,工作性能和使用壽命會大打折扣。出于價格和電路復(fù)雜程度的考慮,在鍵控音符輸入時采用方案一,在歌曲信息的顯示時采用方案三。1.1.4、鍵盤形式選擇與論證方案一:獨立式按鍵。獨立按鍵的輸入線較多,結(jié)構(gòu)復(fù)雜,一般適用于按鍵較少,操作速度較高的場合。方案二:行列式鍵盤。行列式鍵盤由行和列線交叉組成,一般適用于按鍵較多的場合。使用44矩形鍵盤,這樣鍵盤模塊僅使用8根線與處理器相連,節(jié)省了系統(tǒng)資源。由于我們功能比較少,矩形鍵盤占用電路板位置較大且電路復(fù)雜,因此選擇方案一。1.1.5、材料選擇與論證方案一:玻璃板。玻璃板光滑、透明,但是質(zhì)量較重,易碎,并且不易加工。方案二:塑料板。塑料板質(zhì)量輕,不易碎,但是也不好加工,且不環(huán)保。方案三:木板。木板質(zhì)量比塑料板重,但比玻璃板輕,易于加工,可塑性強。基于成本及加工復(fù)雜程度的考率,采用方案二。2、理論分析與計算2.1、聲音播放的原理2.1.1普通聲音產(chǎn)生原理人耳能聽到的聲音頻率范圍是幾十到幾千赫茲之間,單片機的I/O輸出引腳上能輸出高電平或低電平。設(shè)計一個程序,令單片機的某一個引腳按照一個的時間間隔輸出一些符合規(guī)律的高低電平信號,那么就能得到一系列的矩形波。入伏哦這種時間間隔反映的頻率在人耳所能聽到的頻率范圍內(nèi),那么就能輸出一定的聲音信息。 圖1要輸出的穩(wěn)定的矩形波,可以利用延時程序來控制輸出高電平或低電平的持續(xù)時間,當(dāng)持續(xù)時間到時就令該信號反向,從而實現(xiàn)電平的轉(zhuǎn)換,如圖1所示。圖中,從單片機引腳上輸出的信號,高電平和低電平保持的時間分別為t1和t2,信號的基本輸出周期為T,即頻率f的倒數(shù)。在程序編寫時,可令t1和t2相等。這樣,當(dāng)要產(chǎn)生某一頻率的音頻信號時,只要先計算得到這個周期時間的一半,然后利用延時程序來控制單片機的輸出引腳在該時間內(nèi)輸出穩(wěn)定的高電平或低電平。該時間結(jié)束時,又利用程序使單片機的輸出引腳的輸出信號電平發(fā)生反相。如此循環(huán)執(zhí)行后,就能得到設(shè)計要求的音頻信號了。2.1.2音樂產(chǎn)生原理一首樂曲是由多個音符構(gòu)成的。每一個音符都對應(yīng)著一個確定的頻率。另外,每一個音符會根據(jù)樂曲的要求設(shè)定一個確定的節(jié)拍音符頻率的處理方法如下:程序設(shè)計如果利用定時器計數(shù)的方式來產(chǎn)生延時的效果,就可以將歌曲中每一個音符所對應(yīng)的頻率換算成相對應(yīng)的技術(shù)初值。然后,將這首音樂所有音符的計數(shù)初值編成一個表,并把每一個音符的計數(shù)初值與一個確定的數(shù)字碼來聯(lián)系。如表1所示為利用定時器T0工作于方式1時,一些簡譜音符所對應(yīng)的頻率,計數(shù)初值和簡譜碼。音符頻率(Hz)簡譜碼(T)音符頻率(Hz)簡譜碼(T)低1D026263628#4FA#74064860#1D0#27763731中5SO74864898低2RE29463835#5S0#83164934#2RE#31163928中6LA88064968低3M33064021#6LA#93264994低4FA34964103中7S198865030#4FA#37064185高1DO104665058低5SO39264260#DO#110965085#5S0#41564331高2RE117565110低6LA44064400#2RE#124565134#6LA#46664463高3M131865157低7S149464524高4FA139765178中1DO52364580#4FA#148065198#1D0#55464633高5SO156865217中2RE57864684#5SO#166165235#2RE#62264723高6LA176065252中3M65964777#6LA#186565268中4FA69864820高7SI196765283 表1例如,要計算中音DO、中音RE、中音MI的計數(shù)初值中音DO: TC=216 106/(523*2)=65536-956=65480=0FC44H中音RE: TC=216 - 106/(587*2)=65536-888=64684=0FCACH中音MI: TC=216 - 106/(659*2)=65536-759=64777=0FD09H2.2、音符節(jié)拍的處理一首樂曲的每一個音符除了頻率之外,還有不同的節(jié)拍,也就是這個音符發(fā)音的持續(xù)時間。如表2所示為節(jié)拍碼與實際碼之間的對照表。節(jié)拍碼實際節(jié)拍節(jié)拍碼實際節(jié)拍11/4拍51又1/4拍22/4拍61又1/2拍33/4拍82拍41拍A2又1/2拍 表2如果1拍為0.4s,1/4拍是0.1s,只要設(shè)定延遲時間就可求得節(jié)拍的時間。假設(shè)1/4拍為1DELAY,那么1拍應(yīng)為4DELAY。如表3所示為1/4和1/8拍的時間設(shè)定。1/4拍的時間設(shè)定1/8拍的時間設(shè)定曲調(diào)值DELAY曲調(diào)值DELAY調(diào)4/4125ms調(diào)4/462ms調(diào)3/4187ms調(diào)3/494ms調(diào)2/4250ms調(diào)2/4125ms 表31/4拍的延遲時間=187ms延時程序為:DELAY: MOV R7,#02DELA1:MOV R4, #187DELA1:MOV R3,#248DJNZ R3, $DJNZ R4, DELA2DJNZ R7, DELA13、電路與程序設(shè)計3.1、電路的設(shè)計3.1.1、總體框圖設(shè)計系統(tǒng)總體框圖如圖2所示。 單 片 機時鐘與復(fù)位鍵盤輸入拓展RAM拓展ROM音頻發(fā)生音頻放大大揚聲器LCD顯示 圖23.1.2、時鐘電路設(shè)計AT89C52內(nèi)部有一個用于構(gòu)成振蕩器的高增益反相放大器,它的輸入端為芯片引腳XTAL1,輸出端引腳為XTAL2。這兩個引腳跨接石英晶體和微調(diào)電容,構(gòu)成一個穩(wěn)定的自激振蕩器,如圖3所示為AT89C52的內(nèi)部時鐘方式的電路。 圖3圖中電容C1和C2的值選擇為30pF。該電容的大小會影響振蕩器頻率的高低、振蕩器的穩(wěn)定性和起振的快速性。晶體振蕩頻率的范圍通常是在1.212MHz。晶體的頻率越高,系統(tǒng)的時鐘頻率越高,單片機的運行速度也就越快。但同時,運行速度快對存儲器的速度要求也就越高,對印制電路板的工藝要求也就越高,即要求線間的寄生電容要小。晶體和電容應(yīng)盡可能安裝得與單片機芯片靠近,以減小寄生電容,更好地保證振蕩器穩(wěn)定、可靠地工作。3.1.3、復(fù)位電路設(shè)計AT89C52的復(fù)位是由外部的復(fù)位電路實現(xiàn)的,在本次設(shè)計中,我們采用了按鍵電平復(fù)位電路。按鍵手動電平復(fù)位是通過RST端經(jīng)電阻與電源Vcc接通來實現(xiàn),具體電路如圖4所示。 圖43.1.4、按鍵電路設(shè)計此電路實現(xiàn)的功能是每當(dāng)有按鍵按下時,通過數(shù)碼管顯示相應(yīng)數(shù)字。每個按鍵代表不同的音符,通過程序控制揚聲器發(fā)出不同音符。如圖5所示為獨立式按鍵的具體電路。 圖53.1.5、顯示電路3.1.5.1 LED數(shù)碼管顯示電路在本次設(shè)計中我們采用的是7管LED數(shù)碼管,它由7個發(fā)光二極管組成。這七個發(fā)光二極管a-g呈“日”字形排列,當(dāng)某一發(fā)光二極管導(dǎo)通時,相應(yīng)地點亮某一點或某一段筆畫,通過發(fā)光二極管不停地亮暗組合形成不同的數(shù)字、字母等符號。由于采用的是共陰極接法,所以在單片機輸出口和LED輸入口相連時沒有外接電阻。如圖6所示為數(shù)碼管實際連接電路。 圖63.1.5.2 LCD液晶顯示器電路在本次設(shè)計中,我們采用的是FG12864E LCD,它是一種圖形點陣液晶顯示器。由于LCD的電源供電情況有別于普通的+5V電源,其驅(qū)動電源情況必須通過一個供電電路來提供,如圖7所示。 圖7 圖8如圖8所示為LCD具體連接電路。顯示數(shù)據(jù)通過單片機的P0引腳來傳送;左半屏與右半屏顯示的選擇,引腳分別連接LCD的CS1和CS2。3.1.6、揚聲器電路 圖9如圖9所示為揚聲器電路實際連接圖,將單片機與喇叭通過一個LM386連接,揚聲器的工作原理是當(dāng)兩輸入端有電平差時,揚聲器發(fā)聲。所以將喇叭的一個輸出端接地,另一端與集成運放的輸出相連。突出采用的連接方式,可以通過改變滑動變阻器的大小來改變接入運放的電壓,并實現(xiàn)控制音量大小的調(diào)節(jié)。3.2、程序的設(shè)計3.2.1、系統(tǒng)整體流程圖 圖10如圖10所示為系統(tǒng)整體流程圖。將歌曲的節(jié)拍和頻率儲存到數(shù)據(jù)表中,播放歌曲時利用查表函數(shù)為計數(shù)器賦初值,產(chǎn)生周期不等的方波,即可播放音樂。3.2.3、鍵盤子程序流程圖如圖11所示為鍵盤子程序流程圖。圖11 3.2.2、液晶顯示子程序流程圖如圖12所示為液晶顯示子程序流程圖。圖124、測試方案與測試結(jié)果4.1、測試方案基本要求(1):能播放標準C調(diào)的Do、Re、Mi、Fa、So、La、Si、Do作為起始測試音?;疽螅?):測試音結(jié)束后等待2秒,播放一首自選曲目,時間>30秒。發(fā)揮部分(1):能播放指定曲目。發(fā)揮部分(2):具有鍵盤,可現(xiàn)場編曲并播放。發(fā)揮部分(3):具有液晶顯示功能,可顯示簡譜。發(fā)揮部分(4):可將簡譜轉(zhuǎn)換成顯示五線譜。4.2、測試結(jié)果4.2.1、仿真測試通過Keil和Proteus仿真,在播放Do,Re,Mi,Fa,So,La,Xi,Do等待兩秒后,可以聽到自選歌曲和指定曲目,LCD顯示歌曲信息。按下控制鍵后,進入編曲模式,7個獨立鍵盤分別代表七個音符,可現(xiàn)場編曲。同時,數(shù)碼管顯示每個按鍵代表的數(shù)字。如圖13所示,為數(shù)碼管仿真結(jié)果。 圖134.2.2、成品測試 通過對成品進行調(diào)試實驗,所得到的結(jié)果與仿真結(jié)果相同。4.3、測試分析由測試結(jié)果可以看出,成品滿足基本要求和發(fā)揮部分的部分要求。附錄附錄1:電路原理圖附錄2:部分源程序#include<reg51.h>#include<absacc.h> #defineuchar unsigned char#define uint unsigned int #define LCDPORT P0#define E P31#define RW P33#define DI P34#define CS1 P36#define CS2 P35#define BUSYSTATUS P07#define LCDSTARTROW 0xc0#define LCDPAGE 0xB8#define LCDLINE 0x40void Run(void);/主程序void KeyScan(void);/ 按鍵void PlayKey(void); /按鍵程序void delay_1ms(uchar i);/延時1msvoid PlayMusic1(void); / 播放12345671void PlayMusic(void); /播放同一首歌void PlayMusic2(void); /播放規(guī)定曲目1void DisPlay(void);/ 數(shù)碼管/void lcd_init(void); /lcd初始化void init_com(void);void sound_delay(uchar n);void timer0(void);uchar code hz1;/*一系列變量*/sbit Beep=P27;/sbit busy=P01;ucharTh0,Tl0;ucharflag=0;/模式,0表示音樂,1表示按鍵ucharkey=0;/按鍵代號uchara;uchargaodi=0;/uchar data count=0;/uint counter=0;/12345671的頻率uchar code SONG_TONE=115,102,91,86,77,68,61,0;/12345671的節(jié)拍uchar code SONG_LONG=17,18,20,21,23,25,28,0; /*比賽規(guī)定曲目*/魂斗羅 赤色要塞uchar code SONG_TONE2=34,38,45,51,45,51,57,61, 57,61,68,77,68,102,91,77, 68,68,45,51,45,43,38, 68,68,45,51,45,43,57, 68,68,45,51,45,43,38, 68,68,45,51,45,43,57,0;/魂斗羅的節(jié)拍uchar code SONG_LONG2=13,12,10,9,10,9,8,28, 8,7,6,6,6,5,5,6, 35,13,10,9,19,11,85, 35,13,10,9,19,11,68, 35,13,10,9,19,11,85, 35,13,10,9,19,11,68,0; /*同一首歌的源代碼*/uchar codeMusic=0Xef,0Xef, 0X88,0X14,0X24,0X36,0X42,0X34,0X14,0X28,0X14,0X94,0X1f,0X88,0X14,0X24,0X34,0X32,0X42,0X54,0X14,0X46,0X32,0X54,0X22,0X32,0X32,0X22,0X2C,0X38,0X54,0X74,0X76,0X62,0X68,0X54,0X52,0X62,0X74,0X62,0X52,0X3f,0X46,0X42,0X54,0X64,0X54,0X42,0X32,0X28,0X0a4,0Xa2,0X92,0X84,0X94,0X1f,0Xb8,0X68,0X46,0X52,0X68,0X74,0X72,0X72,0X74,0X62,0X52,0X3f,0Xb8,0X68,0X46,0X52,0X68,0X64,0X62,0X62,0X64,0X42,0X32,0X2f,0X58,0X14,0X24,0X36,0X42,0X34,0X12,0X12,0X26,0X22,0X24,0X22,0X12,0X94,0X9c,0Xa8,0Xa6,0X92,0X84,0X64,0X54,0X22,0X22,0X46,0X42,0X44,0X32,0X22,0X5f,0Xef,0Xef,0xFF,/按鍵音符ucharcodeKeyCode =0XFF,0XFF,0xF8,0x8B,0xF9,0x5B,0xFA,0x14,0xFA,0x66,0xFB,0x03,0xFB,0x8F,0xFC,0x0B,/低音0xFC,0x43,0xFC,0xAB,0xFD,0x08,0xFD,0x33,0xFD,0x81,0xFD,0xC7,0xFE,0x05,/中音0xFE,0x21,0xFE,0x55,0xFE,0x84,0xFE,0X99,0XFE,0xC0,0xFE,0xE3,0xFF,0x02,/高音;/功能程序void Run(void)if(flag=0)PlayMusic1(); /12345671PlayMusic(); /同一首歌PlayMusic2();/魂斗羅elsePlayKey();void KeyScan(void)/按按鍵1-7,數(shù)碼管的顯示if(P1=0X7f)/如果P1.7=0delay_1ms(5);if(P1=0X7f)gaodi+;if(gaodi>2)gaodi=0;a=gaodi;else if(P1=0XFE)delay_1ms(12);if(P1=0XFE)key=1;a=key;else if(P1=0XFD)delay_1ms(12);if(P1=0XFD)key=2;a=key;else if(P1=0XFB)delay_1ms(12);if(P1=0XFB)key=3;a=key;else if(P1=0XF7)delay_1ms(12);if(P1=0XF7)key=4;a=key;else if(P1=0XEF)delay_1ms(12);if(P1=0XEF)key=5;a=key; else if(P1=0XDF)delay_1ms(12);if(P1=0XDF)key=6;a=key;else if(P1=0XBF)delay_1ms(12);if(P1=0XBF)key=7;a=key;elsereturn;void PlayKey(void)if(key=0)return;elseTh0=KeyCodegaodi*14+key*2;Tl0=KeyCodegaodi*14+key*2+1;TR0=1;delay_1ms(187);TR0=0;key=0;time0() interrupt 1 /定時器0中斷TH0=Th0;TL0=Tl0;Beep=Beep;void interrupt0() interrupt 0 /外部終端0flag=flag;if(flag=0)a=8;P2=0;/延時1msvoid delay_1ms(uchar i)uchar j,k;for(j=0;j<i;j+)for(k=0;k<148;k+); /*播放音樂主程序*/12345671void PlayMusic1(void) uint i=0; uint j,k; while(SONG_LONGi!=0|SONG_TONEi!=0) /播放各個音符,SONG_LONG 為拍子長度 for(j=0;j<SONG_LONGi*30;j+) Beep=Beep; /SONG_TONE 延時表決定了每個音符的頻率 for(k=0;k<SONG_TONEi/3;k+); delay_1ms(10); i+; TR0=0;if(flag!=0)break; /同一首歌的實現(xiàn)部分void PlayMusic(void)uchar yinfu,jiepai;uchar i,j;for(i=0;Musici!=0XFF;i+)yinfu=(Musici>>4);jiepai=(Musici&0X0F);if(yinfu=0)continue;Th0=MusicCode(yinfu-1)*2;Tl0=MusicCode(yinfu-1)*2+1;TR0=1;for(j=jiepai;j>0;-j)delay_1ms(150);/調(diào)歌曲快慢:187(越大越慢) TR0=0;if(flag!=0)break;void PlayMusic2(void) uint i=0; uint j,k; while(SONG_LONG2i!=0|SONG_TONE2i!=0) /播放各個音符,SONG_LONG 為拍子長度 for(j=0;j<SONG_LONG2i*30;j+) Beep=Beep; /SONG_TONE 延時表決定了每個音符的頻率 for(k=0;k<SONG_TONE2i/3;k+); delay_1ms(10); i+; TR0=0;if(flag!=0)break; /*數(shù)碼管顯示模塊*/ void Display(void)/顯示switch(a)case 0: P2=0X3F;break;case 1:P2=0X06;break;case 2:P2=0X5B;break;case 3:P2=0X4F;break;case 4:P2=0X66;break;case 5:P2=0X6D;break;case 6:P2=0X7D;break;case 7:P2=0X07;break;default: P2=0X00;break;void delay (unsigned int n)unsigned int i ; for( ; n>0 ;n-)for ( i=500; i>0 ; i-);bit bCheckBusy () LCDPORT=0xff; RW = 1; DI=0; E=1; E=0; return BUSYSTATUS ;void vWriteData (unsigned char ucData) while(bCheckBusy() ; LCDPORT=0xff; RW=0; DI=1; LCDPORT=ucData; E=1; E=0;void vWriteCMD(unsigned char ucCMD) while ( bCheckBusy() ); LCDPORT=0xff; RW=0; DI=0; LCDPORT=ucCMD; E=1; E=0; void vLCDInitialize()CS1=1;CS2=1;vWriteCMD (0x38) ;vWriteCMD (0x0f) ;vWriteCMD (0x01) ;vWriteCMD (0x06) ;vWriteCMD (LCDSTARTROW); Void vShowCustomRow ( unsigned char ucPage ,unsigned char ucLine ,unsigned char ucWidth ,unsigned char *ucaRow) unsigned char ucCount ; if(ucLine<64) CS1=1; CS2=0; vWriteCMD(LCDPAGE+ucPage) ; vWriteCMD(LCDLINE+ucLine) ; if (ucLine + ucWidth)<64) for (ucCount =0 ; ucCount<ucWidth ;ucCount +) vWriteData (*(ucaRow+ucCount) ; for(ucCount=0;ucCount<64-ucline;ucCount+) vWriteData(*(ucaRow+ucCount) ;CS1=0;CS2=1;vWriteCMD(LCDPAGE+ucPage);vWriteCMD(LCDLINE);for (ucCount=64-ucLine;ucCount<ucWidth;ucCount+) vWriteData(*(ucaRow+ucCount) ; else CS1=0;CS2=1; vWriteCMD(LCDPAGE+ucPage);vWriteCMD(LCDLINE);for(uccount=0;uccount<ucwidth;uccount+)vwritedata(*(ucarow+uccount); void vShowOneChin(unsigned char ucPage,unsigned char ucLine,unsigned char *ucaChinMap)vShowCustomRo(ucPage,ucLine,16,ucaChinMap);vShowCustomRow(ucPage+1,ucLine,16,ucaChinMap+16); /*主程序模塊*/void main(void)/主程序P1=0XFF;/P1口全置位為1P2=0;/P2口全置位為0TMOD=0X01;/設(shè)置T0為工作方式1IT0=1;/置外部中斷為邊沿(下降沿)觸發(fā)方式TR0=0;/與門被封鎖,控制開關(guān)被關(guān)閉EX0=1;/開放外部中斷0允許位ET0=1;/T0中斷允許位EA=1;/開放中斷總允許位/lcd_init();while(1)/lcd_str_wr(0,0,8,hz1);Run();/運行KeyScan();/按鍵掃描DisPlay();/顯示長通杯感想這是我們第一次參加長通杯,在之前聽到了很多同學(xué)對于長通杯不同的評價,直到這次自己親身體會,才品嘗到個中滋味。從選題到初試,再到預(yù)賽,無論是程序的調(diào)試,電路的焊接還是報告的撰寫,都是自己親自動手。團隊的合作,思想火花的碰撞,遇到難題絞盡腦汁鍥而不舍最終成功,這一切的一切都讓我體會到了長通杯魅力的所在。在這次設(shè)計中,我們由于經(jīng)驗不足走了很多彎路,出了很多問題,曾一度想要放棄,但我慶幸自己沒有放棄,而是一直堅持,查閱了很多資料,找到錯誤,一次又一次的修改。這么多天的忙碌過后,當(dāng)成品擺在自己面前時,之前所有的辛苦又算得了什么。面對自己汗水與智慧的結(jié)晶,我真正學(xué)會了在遇到困難時要堅持,做事情要細心,思考問題要全面。

注意事項

本文(單片機音樂發(fā)生器.doc)為本站會員(w****2)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!