




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、課程設(shè)計報告題 目: 數(shù)字音樂盒學(xué) 生: 指導(dǎo)老師: 系 別: 專 業(yè): 班 級: 學(xué) 號: 2014年9月目錄一、緒論31.1課題背景31.2國內(nèi)外研究現(xiàn)狀及發(fā)展趨勢3二、數(shù)字音樂盒的總體設(shè)計42.1設(shè)計基本要求42.2總體設(shè)計42.3方案論證與比較52.4本章小結(jié)6三、硬件設(shè)計63.1硬件設(shè)計原則63.2LCD顯示部分硬件73.3按鍵部分硬件143.4蜂鳴器驅(qū)動153.5PCB設(shè)計16四、軟件設(shè)計174.1開發(fā)環(huán)境174.2軟件設(shè)計18五、系統(tǒng)展示和測試255.1程序:見附錄255.2下載程序255.3調(diào)試26六、總結(jié)286.1系統(tǒng)總結(jié)286.2不足和展望296.3個人心得29附錄一:程序
2、:29附錄二、電路原理圖38附錄三、數(shù)據(jù)分配38參考文獻38一、緒論傳統(tǒng)的音樂盒多是機械音樂盒,其工作原理是通過齒輪帶動一個帶有鐵 釘?shù)蔫F桶轉(zhuǎn)動,鐵桶上的鐵釘撞擊鐵片制成的琴鍵,從而發(fā)出聲音。但是,機械式的音樂盒體積比較大,比較笨重,且發(fā)音單調(diào)。水、灰塵等外在因素,容易使內(nèi)部金屬發(fā)音條變形,從而造成發(fā)音跑調(diào)。另外,機械音樂盒放音時為了讓音色穩(wěn)定,必須放平不能動搖,而且價格昂貴,不能實現(xiàn)大批量生產(chǎn)?;趩纹瑱C設(shè)計制作的電子式音樂盒。與傳統(tǒng)的機械式音樂盒相比更小巧,音質(zhì)更優(yōu)美且能演奏和弦音樂。電子式音樂盒動力來源是電池,制作工藝簡單,可進行批量生產(chǎn),所以價格便宜。基于單片機制作的電子式音樂盒,控制
3、功能強大,可根據(jù)需要選歌,使用方便。所放歌曲的節(jié)奏可以根據(jù)需要進行設(shè)置,根據(jù)存儲容量的大小,可以盡可能多的存儲歌曲。另外,可以設(shè)計彩燈外觀效果,增設(shè)放歌時間、序號顯示燈功能,使音樂盒的功能更加豐富1.1課題背景音樂盒的起源,可追溯至中世紀(jì)歐洲文藝復(fù)興時期。當(dāng)時為使教會的的鐘塔報時,而將大小的鐘表上機械裝置,被稱為“可發(fā)出聲音的組鐘”。 1598年,意大利籍耶穌會士利瑪竇第一次來到北京,隨行禮物中就有八音琴一臺。這是有史書記載的最早進入中國的八音琴。經(jīng)過各種的發(fā)明創(chuàng)造,1780年前后,拉勻芳的瑞士人從人偶自動鐘的原理獲得啟示,發(fā)明了一種令人贊嘆的機制機械鳥鳴鐘。 1796年,日內(nèi)瓦鐘匠的發(fā)明,給
4、機械音樂盒帶來了革命性的改變,使音樂盒的體積縮小達(dá)到極限,而在接下來的世紀(jì)得以成功的發(fā)展。1870年,德國的發(fā)明家首創(chuàng)了盤式音樂盒。 17世紀(jì)初,音樂盒的工業(yè)成為瑞士超過制表和縫制蕾絲業(yè)的第一大產(chǎn)業(yè),這使得位于瑞士侏羅山邊的小鎮(zhèn)聞名于世。1.2國內(nèi)外研究現(xiàn)狀及發(fā)展趨勢1992年,中國第一臺具有自主知識產(chǎn)權(quán)的八音琴在中國寧波韻升的誕生,標(biāo)志著中國,全方位地參與全球音樂盒這塊巨 大蛋糕的市場競爭,經(jīng)過十多年的努力,韻升 對八音琴的制造技術(shù)進行了更多的技術(shù)更新, 取得了多個國家和地區(qū)50余項發(fā)明專利。這使 得音樂盒無論在音質(zhì),音量,譜曲,和外觀設(shè)計等方面都有了更大的改進。目前,韻升八音琴已占據(jù)全球八
5、音琴市場份額的1/4,僅次于 日本Sankyo,位居全球第二位。 音樂盒300多年的產(chǎn)品發(fā)展,同時也是人類文明300多年發(fā) 展的歷史鑒證。每個不同時期的音樂盒造型,都能折射出當(dāng)時不同的社會心態(tài)和文明發(fā)展現(xiàn)狀,它也成了時代的一面鏡子。二、數(shù)字音樂盒的總體設(shè)計2.1設(shè)計基本要求1、利用I/O口產(chǎn)生一定頻率的方波,驅(qū)動蜂鳴器,發(fā)出不同的音調(diào),從而演奏樂曲(最少3首音樂,每首不少于30s)。2,采用LCD顯示信息。 1)開機時有英文歡迎提示字符,播放時顯示歌曲序號(或名稱)。 2)可通過功能鍵選擇樂曲,暫停,播放。可以通過數(shù)字鍵選擇相應(yīng)的歌曲。3)具有循環(huán)播放歌曲的功能4)顯示樂曲播放時間或剩余時間。
6、2.2總體設(shè)計1、要產(chǎn)生音頻脈沖,只要算出某一音頻的周期(1/音頻),然后將此周期除以2,即為半周期的時間,利用定時器計時這個半周期時間,每當(dāng)計時到后就將輸出脈沖的I/O反相,然后重復(fù)計時此半周期時間再對I/O口反相,就可在I/O腳上得到此頻率的脈沖 2、利用stc89c52的內(nèi)部定時器使其工作在計數(shù)器模式MODE1下,改變記數(shù)值TH0及TL0以產(chǎn)生不同頻率的方法。例如頻率為523HZ,其周期T=1/523=1912微秒,因此只要令計數(shù)器定時956/1=956在每記數(shù)9次時將I/O口反相,就可得到中音D0(523HZ)。 記數(shù)脈沖值與頻率的關(guān)系公式如下: N=Fi/2/Fr N:記數(shù)值 Fi:
7、內(nèi)部計時一次為1微秒故其頻率為1MHZ Fr;要產(chǎn)生的頻率 3、起記數(shù)值的求法如下: T65536N65536Fi2Fr 例如:設(shè)K65536,F(xiàn)1000000Fi1MHZ,求低音D0(523HZ),高音的D0(1046HZ)的記數(shù)值。 T65536N65536Fi2Fr6553610000002Fr65536500000Fr 低音D0的T6553650000026263627 中音D0的T6553650000052364580 低音D0的T655365000001047650594. 本設(shè)計中用到了AT89C51單片機,4個獨立鍵盤,蜂鳴器,16×2LCD。當(dāng)按鍵有鍵按下時,判斷鍵
8、值,啟動計數(shù)器T0,產(chǎn)生一定頻率的脈沖,驅(qū)動蜂鳴器,放出音樂。同時啟動定時器T1,顯示樂曲播放的時間,并驅(qū)動LCD,顯示歌曲及播放時間,也可在LED顯示歌曲號。1,硬件電路中用P1.0P1.7控制按鍵,其中P1.0P1.3掃描行,P1.4P1.7掃描列。2,用P2.5P2.7作為LCD的R/W, RS,E的控制信號。用P0.0P0.7作為LCD的D0D7的控制信號。3、P3.2驅(qū)動蜂鳴器2.3方案論證與比較2.3.1編程方案的選擇方案一:整體法編程采用的是整體編程的方式對總控制程序進行編程,這樣會使程序精簡,內(nèi)存占用的空間少,但是他的邏輯能力要強,而且設(shè)計難度較大。方案二:模塊化編程采用模塊化
9、的思想,針對各項功能的構(gòu)建子模塊進行編程,通過各個模塊獨立編程,逐個添加,逐個調(diào)試,最后結(jié)合完成整體功能,模塊化編程具有編程邏輯簡單,但程序代碼不夠精簡,簡單,占用的空間比較大等的特點。綜上所述:對于初學(xué)者的我們采用方案二比較好,這樣有利于初學(xué)者更好的編程,不容易混亂,把程序分成許多子模塊進行完成。2.3.2鍵盤消抖方案的選擇方案一:滾動濾波法進行消抖滾動濾波法是一種利用軟件的方法進行消抖,由于主流程的循環(huán)時間為10MS,已經(jīng)從一定的程度上消除抖動,此為定節(jié)拍讀,讓抖動減小,接著用表決法存四個狀態(tài),當(dāng)前后四個狀態(tài)都一樣才確定為有鍵按下。方案二:利用軟件延時消抖由于鍵盤存在抖動現(xiàn)象,這一消除抖動
10、的方法是運用掃描的時候延時跳過鍵盤抖動時間的原理,這種方法,在子模塊的時間大約要一個主流程所運用的時間,但是由于工業(yè)上處理一個掃描周期要小于10ms方案三:利用硬件消抖動這種方法可以分為電容濾波和RS出發(fā)消除抖動,RS具有準(zhǔn)時的有效的消抖效果,能嚴(yán)格的保證每一次按鍵按下只有一次發(fā)生觸動,是一種比較好的消抖動的方法。綜上三種法案:因為此次課程設(shè)計主要是學(xué)習(xí)匯編語言并且考慮到程序的時實性以及硬件的成本,設(shè)計思路是在取音調(diào),節(jié)拍中檢測是否按鍵按下,因處理音調(diào)時間很短不到1ms,所以采用延時消斗的方法 2.4本章小結(jié)本次設(shè)計方案的選取,知道很多方面的不足,知道的歌曲是如何通過鳳鳴器發(fā)出我們所期望的音符
11、,是通過對蜂鳴器的切換電壓使其振蕩,產(chǎn)生頻率,通過控制蜂鳴器產(chǎn)生的頻率讓它發(fā)聲。通過查找資料知道了蜂鳴器是有極性的,后面自己做板時應(yīng)該稍加注意。知道了LCD的工作原理,它有三個控制端口,我8位數(shù)據(jù)口與單片機進行信息交流,了解了1602LCD的結(jié)構(gòu),還有就是知道了一些常用的消斗方法,還有一些音樂方面的知識三、硬件設(shè)計3.1硬件設(shè)計原則 本次課程設(shè)計的數(shù)字音樂盒的設(shè)計硬件電路主要由獨立鍵盤輸入部分,LCD燈顯示部分,蜂鳴器部分,復(fù)位電路部分,振蕩電路部分和電源部分構(gòu)成單片機LCD顯示部分蜂鳴器驅(qū)動部分振蕩部分和復(fù)位部分按鍵部分電源部分 3.2LCD顯示部分硬件3.2.1硬件框圖單片機LCD顯示部分
12、按鍵部分電源部分3.2.2LCD電路設(shè)計用P2.5P2.7作為LCD的R/W, RS,E的控制信號。用P0.0P0.7作為LCD的D0D7的控制信號。通過按鍵的控制選擇相應(yīng)的操作,按下1-3鍵播放1-3首歌,按下暫停/播放鍵歌曲暫停,再按下暫停/播放鍵歌曲恢復(fù)播放。可通過數(shù)字鍵選擇相應(yīng)的歌曲。按鍵采用的是獨立按鍵。P1.0-P1.3接按鍵s1-4的一端,按鍵另一端接地,當(dāng)按下時,按鍵被拉成低電平,從而進行相應(yīng)的操作。3.2.2.1 1602LCD器件1602LCD的基本參數(shù)及引腳功能1602LCD分為帶背光和不帶背光兩種,基控制器大部分為HD44780,帶背光的比不帶背光的厚,是否帶背光在應(yīng)用
13、中并無差別,兩者尺寸差別如下圖10-54所示:圖10-54 1602LCD尺寸圖1602LCD主要技術(shù)參數(shù):顯示容量:16×2個字符芯片工作電壓:4.55.5V工作電流:2.0mA(5.0V)模塊最佳工作電壓:5.0V字符尺寸:2.95×4.35(W×H)mm引腳功能說明1602LCD采用標(biāo)準(zhǔn)的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如表10-13所示:編號符號引腳說明編號符號引腳說明1VSS電源地9D2數(shù)據(jù)2VDD電源正極10D3數(shù)據(jù)3VL液晶顯示偏壓11D4數(shù)據(jù)4RS數(shù)據(jù)/命令選擇12D5數(shù)據(jù)5R/W讀/寫選擇13D6數(shù)據(jù)6E使能信號14D7數(shù)據(jù)
14、7D0數(shù)據(jù)15BLA背光源正極8D1數(shù)據(jù)16BLK背光源負(fù)極表10-13:引腳接口說明表第1腳:VSS為地電源。第2腳:VDD接5V正電源。第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度。第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。第5腳:R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當(dāng)RS和R/W共同為低電平時可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時可以讀忙信號,當(dāng)RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。第6腳:E端為使能端,當(dāng)E
15、端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。第714腳:D0D7為8位雙向數(shù)據(jù)線。第15腳:背光源正極。第16腳:背光源負(fù)極。10823 1602LCD的指令說明及時序1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表10-14所示:序號指令RSR/WD7D6D5D4D3D2D1D01清顯示00000000012光標(biāo)返回000000001*3置輸入模式00000001I/DS4顯示開/關(guān)控制0000001DCB5光標(biāo)或字符移位000001S/CR/L*6置功能00001DLNF*7置字符發(fā)生存貯器地址0001字符發(fā)生存貯器地址8置數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)存貯器地址9讀忙標(biāo)志或地址01BF
16、計數(shù)器地址10寫數(shù)到CGRAM或DDRAM)10要寫的數(shù)據(jù)內(nèi)容11從CGRAM或DDRAM讀數(shù)11讀出的數(shù)據(jù)內(nèi)容表10-14:控制命令表1602液晶模塊的讀寫操作、屏幕和光標(biāo)的操作都是通過指令編程來實現(xiàn)的。(說明:1為高電平、0為低電平)指令1:清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置。指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H。指令3:光標(biāo)和顯示模式設(shè)置 I/D:光標(biāo)移動方向,高電平右移,低電平左移 S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效。指令4:顯示開關(guān)控制。 D:控制整體顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示 C:控制光標(biāo)的開與關(guān),高電平表示有光標(biāo),
17、低電平表示無光標(biāo) B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。指令5:光標(biāo)或顯示移位 S/C:高電平時移動顯示的文字,低電平時移動光標(biāo)。指令6:功能設(shè)置命令 DL:高電平時為4位總線,低電平時為8位總線 N:低電平時為單行顯示,高電平時雙行顯示 F: 低電平時顯示5x7的點陣字符,高電平時顯示5x10的點陣字符。指令7:字符發(fā)生器RAM地址設(shè)置。指令8:DDRAM地址設(shè)置。指令9:讀忙信號和光標(biāo)地址 BF:為忙標(biāo)志位,高電平表示忙,此時模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。指令10:寫數(shù)據(jù)。指令11:讀數(shù)據(jù)。與HD44780相兼容的芯片時序表如下:讀狀態(tài)輸入RS=L,R/W=H,
18、E=H輸出D0D7=狀態(tài)字寫指令輸入RS=L,R/W=L,D0D7=指令碼,E=高脈沖輸出無讀數(shù)據(jù)輸入RS=H,R/W=H,E=H輸出D0D7=數(shù)據(jù)寫數(shù)據(jù)輸入RS=H,R/W=L,D0D7=數(shù)據(jù),E=高脈沖輸出無表10-15:基本操作時序表讀寫操作時序如圖10-55和10-56所示:圖10-55 讀操作時序圖10-56 寫操作時序10824 1602LCD的RAM地址映射及標(biāo)準(zhǔn)字庫表液晶顯示模塊是一個慢顯示器件,所以在執(zhí)行每條指令之前一定要確認(rèn)模塊的忙標(biāo)志為低電平,表示不忙,否則此指令失效。要顯示字符時要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符,圖10-57是1602的內(nèi)部顯示地址。圖
19、10-57 1602LCD內(nèi)部顯示地址例如第二行第一個字符的地址是40H,那么是否直接寫入40H就可以將光標(biāo)定位在第二行第一個字符的位置呢?這樣不行,因為寫入顯示地址時要求最高位D7恒定為高電平1所以實際寫入的數(shù)據(jù)應(yīng)該是01000000B(40H)+10000000B(80H)=11000000B(C0H)。在對液晶模塊的初始化中要先設(shè)置其顯示模式,在液晶模塊顯示字符時光標(biāo)是自動右移的,無需人工干預(yù)。每次輸入指令前都要判斷液晶模塊是否處于忙的狀態(tài)。1602液晶模塊內(nèi)部的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了160個不同的點陣字符圖形,如圖10-58所示,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫
20、、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看到字母“A”圖10-58 字符代碼與圖形對應(yīng)圖10825 1602LCD的一般初始化(復(fù)位)過程延時15mS寫指令38H(不檢測忙信號)延時5mS寫指令38H(不檢測忙信號)延時5mS寫指令38H(不檢測忙信號)以后每次寫指令、讀/寫數(shù)據(jù)操作均需要檢測忙信號寫指令38H:顯示模式設(shè)置寫指令08H:顯示關(guān)閉寫指令01H:顯示清屏寫指令06H:顯示光標(biāo)移動設(shè)置 寫指令0CH:顯示開及光標(biāo)設(shè)置3.3按鍵部分硬件3.3.1硬件
21、框圖單片機按鍵1(歌曲1)按鍵2(歌曲2)按鍵3(歌曲3)按鍵4(暫停/播放)3.3.2.1按鍵器件型號名稱:微動開關(guān) 6*6*5性能參數(shù):輕觸開關(guān)系列主要技術(shù)指標(biāo)(Specification of TACT switch Series)使用溫度范圍Temperature :-25°+-85°C額定負(fù)荷Rated Load :DC12V 0.1A接觸電阻Contact Resistance :<=0.03耐壓Withstand Voltage :AC250 V (50Hz) /MIN動作力Actuation Force :1.3+-0.5N絕緣電阻Lnsulation
22、 Resistance :>=100M壽命 Life :100000 times(次)參考尺寸圖:注(Remark):下圖中h表示高度,單位為毫米。例如6*6*7,即高度是7mm(毫米)3.3按鍵電路設(shè)計3.4蜂鳴器驅(qū)動使用器件:蜂鳴器,電阻200R,三極管s8550蜂鳴器電路設(shè)計3.5PCB設(shè)計3.4.1PCB設(shè)計原則電路板一般用敷銅層壓板制成,板層選用時要從電氣性能、可靠性、加工工藝要求和經(jīng)濟指標(biāo)等方面考慮。常用的敷銅層壓板是敷銅酚醛紙質(zhì)層壓板、敷銅環(huán)氧紙質(zhì)層壓板、敷銅環(huán)氧玻璃布層壓板、敷銅環(huán)氧酚醛玻璃布層壓板、敷銅聚四氟乙烯玻璃布層壓板和多層印刷電路板用環(huán)氧
23、玻璃布等。不同材料的層壓板有不同的特點。 環(huán)氧樹脂與銅箔有極好的粘合力,因此銅箔的附著強度和工作溫度較高,可以在 260的熔錫中不起泡。環(huán)氧樹脂浸過的玻璃布層壓板受潮氣的影響較小。 超高頻電路板最好是敷銅聚四氟乙烯玻璃布層壓板電路板采用1mm厚度。器件布局要注意LCD的尺寸,電位器應(yīng)放置在LCD尺寸范圍外,便于調(diào)節(jié)觀察LCD輝度,按鍵置于LCD的下方,便于操作和觀察,線寬設(shè)為0.7mm,間距0.2mm,焊盤直徑2mm,USB電源接口,放置在邊上3.4.2PCB版圖四、軟件設(shè)計4.1開發(fā)環(huán)境編譯軟件keil進入keil后,出現(xiàn)編輯界面一、首先我們要養(yǎng)成一個習(xí)慣:最好
24、先建立一個空文件夾,把您的工程文件放到里面,以避免和其他文件混合,如下圖筆者先創(chuàng)建了一個名為“Mytest”文件夾二、點擊桌面上的Keil uVision4圖標(biāo),出現(xiàn)啟動畫面三、點擊“project - New uVision Project”新建一個工程四、在對話框,選擇放在剛才建立的“Mytest”文件夾下,給這個工程取個名后保存,不需要填后綴五、彈出一個框,在CPU類型下我們找到并選中“Atmel”下的AT89S51或52七、在下面空白區(qū)別寫入程序八、輸入源程序文件名名稱,。注意:如果您想用匯編語言,要帶后綴名一定是“test
25、. asm”,如果是C語言,則是“test . c”,然后保存九、接下來需要把剛創(chuàng)建的源程序文件加入到工程項目文件中,大家在點“ADD”按鈕時會感到奇怪,怎么對話框不會消失呢?不管它,直接點擊“Close”關(guān)閉就行了,此時大家可以看到程序文本字體顏色已發(fā)生了變化十、最后還要有設(shè)置一下,按下圖設(shè)置晶振,建議初學(xué)者修改成12M,因12MHZ方便計算指令時間十一、在Output欄選中Create HEX File,使編譯器輸出單片機需要的HEX文件十三、工程項目創(chuàng)建和設(shè)置全部完成!點擊保持并編譯十四、將hex文件通過STC下載軟件下載到單片機中4.2
26、軟件設(shè)計4.2.1系統(tǒng)軟件總設(shè)計軟件設(shè)計主要分三個模塊:音樂產(chǎn)生模塊,LCD顯示模塊、按鍵檢測處理模塊4.2.2.2音樂產(chǎn)生模塊1)音調(diào)控制程序是通過調(diào)用延時子程序DELAY實現(xiàn)的。在延時子程序DELAY中,R3中存放延時常數(shù),當(dāng)R3為1時,延時時間約為20us 以標(biāo)準(zhǔn)音高A為例說明如何調(diào)用延時子程序。對于標(biāo)準(zhǔn)音高A的440HZ的聲音頻率,他的時間常數(shù)t為1136us,延時常數(shù)為57(39H)相關(guān)程序:BUZZER_PINEQUP3.2 ;蜂鳴器驅(qū)動端口ORG 0000HLJMP MAINMAIN:CPL BUZZER_PINMOV R3,#51LCALL DELAYSJMP MAINDELA
27、Y:MOVR4,#02HDELAY1:NOPDJNZ R4,DELAY1NOPDJNZ R3,DELAYRET4.2.2.3音樂播放流程圖NYNYNYNY總體初始化起始播放歌曲1顯示歡迎界面音樂表1音樂表2根據(jù)歌曲號選擇歌曲音樂表3歌曲結(jié)束符歌曲號加1時間清零設(shè)定時器初值歌號3歌曲設(shè)為1休止符取音調(diào),節(jié)拍(R6,R7)每R3×20usP3.2取反一次,產(chǎn)生音調(diào)LCD顯示歌號,時間按鍵處理節(jié)拍=R7?指針指向下一組音調(diào)延時100ms指針指向下一組音調(diào)4.2.2.4LCD顯示模塊LCALL CZ ;歌曲號,時間的拆字LCALL LCD_TIME ;LCD顯示時間40 / 40文檔可自由編
28、輯打印CZ:MOV A,35H ;35H存時間ANL A,#0FHMOV 36H,A ;36H存時間的低位MOV A,35HANL A,#0F0HSWAP AMOV 37H,A ;37H存時間的高位MOV A,34H ;轉(zhuǎn)化為LCD顯示的ASCIIADD A,#30HMOV 39H,A;39H歌曲號的ASCIIMOV A,36H ;此時36H存時間低位的ASCIIADD A,#30HMOV 36H,A MOV A,37H ;此時37H存時間高位的ASCIIADD A,#30HMOV 37H,ARETLCD_TIME:LCALL LCDSET1MOV DPTR,#MTAB11LCALL WRIT
29、E1 ;LCD顯示歌曲號MOV A,#0C0HLCALL LCD_CMDMOV DPTR,#MTAB12 LCALL WRITE2 ;LCD顯示歌曲時間RETLCDSET1:MOV A,#01H ;顯示前設(shè)置LCALL LCD_CMD;LCALL D5MSMOV A,#06HLCALL LCD_CMD;LCALL D5MSMOV A,#80HLCALL LCD_CMD;LCALL D5MSRETWRITE1: CLR AMOVC A,A+DPTRJZ WRITE10;判斷是否查到00H,查到就顯示歌曲號LCALL WDATA INC DPTR SJMP WRITE1WRITE10: MOV A
30、,39H;INC ALCALL WDATARETWRITE2:CLR AMOVC A,A+DPTRJZ WRITE20 ;判斷是否查到00H,查到就顯示歌曲時間LCALL WDATA INC DPTRSJMP WRITE2WRITE20:MOV A,37H ;先顯示時間高位LCALL WDATAMOV A,36H;顯示歌曲低位LCALL WDATARETWDATA:LCALL CHEACKBUSYSETB LCD_RSCLR LCD_RWMOV P0,ASETB LCD_ENNOPNOPNOPNOPCLR LCD_ENRETLCD_CMD:LCALL CHEACKBUSY ;檢查忙時LCD_C
31、MD_NC:CLR LCD_RSCLR LCD_RWMOV P0,ASETB LCD_ENNOPNOPNOPNOPCLR LCD_ENRETCHEACKBUSY:;PUSH ACCCLR LCD_RSSETB LCD_RWMOV P0,#0FFHSETB LCD_ENCB1:NOPJB P0.7,CB1CLR LCD_EN;POP ACCRETTAB1:DB "MUSIC BOX "TAB2:DB "WELCOME YOU "MTAB11:DB "NUM:",00HMTAB12:DB "TIME:",00H4.2.
32、2.5LCD工作流程圖NY開始初始化寫字符串結(jié)束延時寫38H命令查忙寫08H命令查忙寫01H命令查忙寫06H命令查忙寫0CH命令查忙取x,yY為第二行?寫(80H+40H+X)延時寫(80H+Y)主程序初始化寫地址(X為行,Y為列)NY開始取第一個字符寫(X,Y)字符=0?忙時寫第一個字符結(jié)束寫字符串4.2.2.6按鍵處理KEYPAN: MOV P1,#0FHMOV A,P1CJNE A,#0FH,KEY1 ;判斷是否摁下JNB 00H,KEYPAN ;沒摁下再判斷是否為暫停SETB TR0 ;因為判斷暫停時有關(guān)計數(shù),所以要重開 RETKEY1:CLR TR0;關(guān)計數(shù),因為10ms會影響節(jié)拍的
33、計數(shù)LCALL D10MS;消抖時間 ; LCALL D10MS ;LCALL D10MSMOV P1,#0FHMOV A,P1;MOV 32H,ACJNE A,#0FH,KEY2 ;再次判斷是否摁下JNB 00H,KEYPAN ;沒摁下再判斷是否為暫停SETB TR0 ;因為判斷暫停時有關(guān)計數(shù),所以要重開RETKEY2:; MOV P1,#0FH;MOV A,P1;CJNE A,#0FH,KEYPAN;LCALL D1S/*MOV 32H,A ;取按鍵號MOV P1,#0F0HMOV A,P1ANL 32H,#0FHANL A,#0F0HORL 32H,AMOV A,32H */;CJNE
34、A,#0EEH,KEY3 ;播放第一首歌 JB P1.0,KEY3MOV 34H,#1 ;歌曲號為1;MOV 40H,#1MOV 35H,#0MOV TL0,#0 ;重新計數(shù)MOV TH0,#0MOV 31H,#36MOV 38H,#100CLR TR0SETB P3.2;恢復(fù)SETB 00H;暫停狀態(tài)清楚LCALL D1S ;放開按鍵消抖CLR 01H;LCALL D1S;LJMP MUSIC0;重新播放RETKEY3:;CJNE A,#0EDH,KEY4 ;和上一樣JB P1.1,KEY4MOV 34H,#2;MOV 40H,#2MOV 35H,#0MOV TL0,#0MOV TH0,#0
35、CLR TR0MOV 31H,#36MOV 38H,#100SETB P3.2SETB 00H LCALL D1S; LCALL D1S;LJMP MUSIC0CLR 01HRETKEY4:;CJNE A,#0EBH,KEY5JB P1.2,KEY5MOV 34H,#3; MOV 40H,#3MOV 35H,#0MOV TL0,#0MOV TH0,#0CLR TR0SETB P3.2MOV 31H,#36MOV 38H,#100SETB 00HLCALL D1S;LCALL D1S;LJMP MUSIC0CLR 01HRETKEY5:;CJNE A,#0E7H,KEY6; 暫停和播放JB P1
36、.3,KEY6CLR TR0CPL 00HLCALL D1S;LCALL D1SKEY7:LJMP KEYPANKEY6: JNB 00H,KEY7 ;如果暫停時等待播放 SETB TR0 RET4.2.2.7按鍵工作流程圖NYNYNY延時10ms檢測按鍵是否按下檢測是否有鍵按下檢測按鍵是否放開執(zhí)行相應(yīng)的代碼五、系統(tǒng)展示和測試5.1程序:見附錄5.2下載程序?qū)⑾螺d器的母頭插到對應(yīng)的排針上,排針由上到下依次是end,txd,rxd,vcc。通過STC-isp軟件將音樂程序載入單片機中5.3調(diào)試按下S1-3播放第一到三首歌對應(yīng)的歌曲,按下S4暫停,再按下S4播放。Lcd開機顯示歡迎界面,當(dāng)播放第一
37、首歌時,上面顯示歌曲號,下面顯示播放的時間歡迎界面第一首歌第二首歌第三首歌:六、總結(jié)6.1系統(tǒng)總結(jié)1、本次課程設(shè)計,了解了音樂盒的發(fā)展背景和國內(nèi)研究現(xiàn)狀和發(fā)展趨勢,音樂盒在300多年前就有了,不過不是數(shù)字的,是機械帶動的,隨著時代的發(fā)展,電能的普及和電子元器件的發(fā)展,音樂盒也從機械化朝著數(shù)字化的趨勢發(fā)展,而且功能實現(xiàn)越來越多。2、在數(shù)字音樂盒的總體設(shè)計中,通過查找相關(guān)資料,設(shè)計多種方案,從方案中選擇最優(yōu)的,數(shù)字音樂盒只要包括顯示部分,播放部分和按鍵部分組成,通過單片機對按鍵輸入的信息進行采集處理,使其達(dá)到相應(yīng)的功能,驅(qū)動鳳鳴器,使蜂鳴器發(fā)出聲音。3、起初對音樂一竅不通的我,通過查找相關(guān)找資料知
38、道了一些關(guān)于音樂的知識,比如什么是音調(diào),什么是節(jié)拍,一個音符表示聲音的頻率叫做音調(diào),于是通過程序設(shè)定使蜂鳴器的輸出電壓成一定的周期變化,就使蜂鳴器發(fā)出所需的音調(diào);節(jié)拍表示一個音調(diào)持續(xù)的時間,時音樂演奏出更準(zhǔn)的音樂,了解這兩個概念,就可以通過程序發(fā)出聲音。4、還有要LCD是怎么工作的,通過查找資料知道了1602lcd的結(jié)構(gòu),它有16個接口包括接地端,電源端,液晶驅(qū)動電壓端,寄存器選擇端RS,讀寫選擇端RW,液晶屏塊使能端E,8位數(shù)據(jù)總線,背光電源正極和負(fù)極,RS=0 RW=0,指令寄存器寫入;RS=0 RW=1,忙時標(biāo)志和地址計數(shù)器讀出;RS=1 RW=0,數(shù)據(jù)寄存器寫入;RS=1 RW=1,數(shù)
39、據(jù)寄存器讀出;要注意lcd工作忙時,在讓lcd顯示時,要對其進行命令設(shè)置,通過設(shè)置lcd才能實現(xiàn)相應(yīng)的功能。按鍵本次課程設(shè)計采用的是延時消斗,因為我的思路是在音調(diào)和節(jié)拍切換的過程中,檢測按鍵。5、在編程過程中要注意按鍵和按鍵之間的干擾,比如暫停狀態(tài)時,通過標(biāo)記判斷非暫停的影響,因為暫停的時候,按鍵一直在掃描,等待操作,不讓蜂鳴器不發(fā)聲,原先的狀態(tài)要保存起來。當(dāng)按下播放時,恢復(fù)原先數(shù)據(jù)。蜂鳴器采用的是5V有源蜂鳴器,通過三極管驅(qū)動,要接限流電阻。6.2不足和展望本次課程設(shè)計也存在不足之處1、功能。本次課程設(shè)計是從書本后面的課程設(shè)計中選的,實現(xiàn)的功能只局限于書本,沒有上網(wǎng)查看借鑒別人的音樂盒是怎么
40、做的,借鑒別人的功能,還有就是由于自己作板,考慮到三首歌,所以選擇了用獨立鍵盤,沒有考慮到長遠(yuǎn),加歌曲之類的話,獨立鍵盤是不夠的2、對匯編的一些語法不太熟悉,編程的過程中一直翻書,在用調(diào)用指令時,沒有加ret返回,導(dǎo)致查錯誤查半天沒查到,還有就是一些標(biāo)號標(biāo)的有點亂,有的時候自己都看不懂,要注意模塊化,便于修3、因為第一次話單片機的電路,再畫板的時候,沒注意到LCD的大小,導(dǎo)致一些控制器件放到lcd大小范圍內(nèi),然后重畫浪費了時間,腐蝕的過程中,沒把握好時間,導(dǎo)致腐蝕過度,斷了一根線。板做好的時候發(fā)現(xiàn),下載的時候要把下載線斷電載通電,沒設(shè)個開關(guān)導(dǎo)致下載麻煩6.3個人心得通過本次課程設(shè)計,有收獲的也
41、有不足的1、在做課程設(shè)計或者其他事情時,一定要考慮多方案,多功能,再多個方案中選擇最優(yōu)的。要考慮到長遠(yuǎn),成本。寫程序的時候要注意模塊化,方便查看和修改,最好先畫流程圖,還有特別是很長的程序時,最好加備注,這樣不會亂。2、用到按鍵的時候要選擇正確消斗的方法,如果用到更多的按鍵時候,要考慮用矩陣鍵盤,少的話就用獨立按鍵3、用到1602LCD的時候,要注意初始化,再每寫入字符串的時候,要進行命令設(shè)置,在設(shè)置前檢測是否忙時,還有1602LCD顯示的是ASCII碼,1602LCD可進行輝度調(diào)節(jié),不清晰的時候可以調(diào)節(jié)電位器,1602LCD可以通過設(shè)置移屏,光標(biāo),閃的,兩行還是一行,但是1602LCD不能顯
42、示漢字4、在設(shè)計的時候,要考慮到用戶使用是否方便,成本,能耗等。程序最好能為以后的實現(xiàn)功能進行擴展,模塊化,能更好的修改,添加和查錯,不斷調(diào)試附錄一:程序:; 數(shù)字音樂盒;BUZZER_PINEQUP3.2 ;蜂鳴器驅(qū)動端口TIME_COUNTDATA 30H ;節(jié)拍LCD_RS EQU P2.6 ;LCD控制端接口 LCD_RW EQU P2.5 LCD_EN EQU P2.7ORG0000H;偽指令,指定程序從0000H開始存放LJMP MAIN;跳轉(zhuǎn)指令,程序跳轉(zhuǎn)到MAIN處ORG000BH;偽指令,指定程序從T0入口地址000BH開始存放LJMP T0_INT;跳轉(zhuǎn)指令,程序跳轉(zhuǎn)到T0
43、_INT處MAIN:LCALL D40MS ;等待各個元器件復(fù)位MOVSP,#6FH;給堆棧指針賦初值MOVTH0,#00H;設(shè)定定時器T0的初始值TH0MOVTL0,#00H;設(shè)定定時器T0的初始值TL0MOVTMOD,#02H ;定時器T0工作在方式2MOVIE,#82H;中斷允許MOV 31H,#36 ;判斷10msMOV 38H,#100 ;判斷1s MOV DPTR,#MUSIC_1;41H和42H存音樂1的表頭MOV 41H,DPLMOV 42H,DPHMOV DPTR,#MUSIC_2 ;43H和44H存音樂2的表頭MOV 43H,DPLMOV 44H,DPHMOV DPTR,#
44、MUSIC_3 ;45H和46H存音樂3的表頭MOV 45H,DPLMOV 46H,DPHMOV 34H,#1 ;34H存歌曲號,初始化播放第一首歌的歌曲號MOV 35H,#0 ;35存時間,初始化時間為0s開始MOV 36H,#0;36H存時間的低位MOV 37H,#0 ;37H存時間高位;MOV R0,#41H ;間接存音樂表的低位;MOV R1,#42H ;間接存音樂表的高位MOV DPTR,#MUSIC_1;MOV 40H,#1SETB 00H;暫停和播放的標(biāo)志位SETB 01HLCALL LCD_SET ;LCD初始化LCALL LCD_WEL ;LCD顯示歡迎界面 LCALL D1
45、S;LCALL D1S;LCALL D1SMUSIC0:MOV 3AH,DPL ;保存原先音樂表信息,因為下面要用到DPTRMOV 3BH,DPHLCALL CZ ;歌曲號,時間的拆字LCALL LCD_TIME ;LCD顯示時間0MOV DPL,3AHMOV DPH,3BHSETB 01HMOV A,34HCJNE A,#1,MUS1MOV DPTR,#MUSIC_1SJMP MUS0MUS1: CJNE A,#2,MUS2MOV DPTR,#MUSIC_2SJMP MUS0MUS2: CJNE A,#3,MUS3MOV DPTR,#MUSIC_3 AJMP MUS0MUS3:CLR 00H
46、CLR TR0MOV 35H,#0SETB P3.2LJMP KEYPANMUS0:MOVTIME_COUNT,#00H;中斷計數(shù)器清0MOVB,#00H;表序號清0MUSIC1:CLRAMOVC A,A+DPTR;查表取代碼JZ END0;是00H,則結(jié)束CJNE A,#0FFH,MUSIC5LJMP MUSIC3MUSIC5:MOVR6,A ;取音調(diào)INCDPTR ;取完,指向節(jié)拍MOVA,BMOVC A,A+DPTR;取節(jié)拍代碼送R7MOVR7,ASETB TR0;啟動計數(shù)MUSIC2: ;LCALL KEYPANCPLBUZZER_PIN;MOVA,R6MOVR3,ALCALLDELA
47、YLCALL KEYPAN;矩陣鍵盤處理JB 01H,MUSS1LJMP MUSIC0MUSS1:MOVA,R7CJNE A,TIME_COUNT,MUSIC2;中斷計數(shù)器(20H)=R7否?;不相等,則繼續(xù)循環(huán)MOVTIME_COUNT,#00H;等于,則取下一代碼INCDPTRLJMP MUSIC1MUSIC3:CLRTR0;休止100毫秒MOVR2,#0DHMUSIC4:MOVR3,#0FFHLCALL DELAYDJNZ R2,MUSIC4INCDPTRLJMP MUSIC1END0:MOVR2,#64H;歌曲結(jié)束,延時1秒后繼續(xù)MUSIC6:MOVR3,#00HLCALL DELAY
48、DJNZ R2,MUSIC6MOV 35H,#0INC 34HMOV A,40HMOV 31H,#36MOV 38H,#100MOV A,34HCJNE A,#4,MUSICFMOV 34H,#1;MOV 34H,#5;CLR 00HMUSICF:LJMP MUSIC0T0_INT:; T0中斷服務(wù)程序;12M晶振時,每10毫秒中斷一次; PUSH ACCPUSH PSW DJNZ 31H,FANH ;判斷10ms是否到來MOV 31H,#36 INCTIME_COUNT;中斷計數(shù)器加1DJNZ 38H,FANH;判斷1s是否到來MOV 38H,#100MOV A,35H ;到了1s,時間加1
49、 ,進行十進制調(diào)整ADD A,#1DA AMOV 35H,A MOV 3AH,DPL ;保存原先音樂表信息,因為下面要用到DPTRMOV 3BH,DPH LCALL CZ ;歌曲號,時間的拆字LCALL LCD_TIME ;LCD顯示時間MOV DPL,3AHMOV DPH,3BH ;恢復(fù)音樂表FANH: POP PSWPOP ACC RETIDELAY:; 延時子程序;說明:延時時間通過R3傳遞,延時時間為(R3×20)uS;MOVR4,#02HDELAY1:NOPDJNZ R4,DELAY1NOPDJNZ R3,DELAYRETMUSIC_1:DB 026H,020H,020H,020H,020H,020H,026H,010H,020H,010H,020H,080H,026H,020H,030H,020HDB
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年上半年宣城市國資本投資運營控股集團限公司招聘1人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年宜昌宜都市文化局招考4名工作人員易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年宜賓宜賓縣事業(yè)單位招考高層次和緊缺專業(yè)高校畢業(yè)生易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽省蒙城縣事業(yè)單位招聘易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽省祁門紅茶產(chǎn)業(yè)集團限公司招聘11人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽省滁州市煙草專賣局(公司)招聘9人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽省國資本運營控股集團限公司社會公開招聘16人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽滁州定遠(yuǎn)縣定城鎮(zhèn)招聘社區(qū)綜治衛(wèi)健專干52人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽合肥市消防救援支隊招收政府專職消防員65人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年安慶市市直事業(yè)單位招考及易考易錯模擬試題(共500題)試卷后附參考答案
- 【MOOC】斷層影像解剖學(xué)-山東大學(xué) 中國大學(xué)慕課MOOC答案
- 道路信號燈維護服務(wù)方案
- 犯罪情報學(xué)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 2024版《糖尿病健康宣教》課件
- 國家職業(yè)技術(shù)技能標(biāo)準(zhǔn) 5-04-03-01 水產(chǎn)品原料處理工 勞社廳發(fā)200719號
- 現(xiàn)代家政導(dǎo)論-課件 5.1.2認(rèn)識家政服務(wù)業(yè)分類
- 概算審核服務(wù)投標(biāo)方案(技術(shù)方案)
- 《帝國的崩裂:細(xì)說五代十國史》隨筆
- 2025屆陜西省普通高中學(xué)業(yè)水平選擇性考試 政治試卷(含答案 )
- Unit+4+Sports+Getting+Started 高中英語上外版必修第二冊
- 綜合實踐活動小學(xué)-玩紙課件
評論
0/150
提交評論