


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、1. 引言11.1. 設(shè)計的目的11.2. 設(shè)計的內(nèi)容與要求 錯誤!未定義書簽。2. 總體設(shè)計12.1. 音樂產(chǎn)生原理12.2. 設(shè)計流程33. 硬件設(shè)計83.1. AT89C51 芯片簡介83.1.1 主要特性83.1.2 功能描述83.1.3 引腳說明與硬件連接93.2. 元器件清單134. 系統(tǒng)工作說明135. 結(jié)束語145.1 收獲與體會145.2 遇到的問題與解決方法 155.3 教程建議156. 參考文獻(xiàn)157. 附錄161. 引言1.1 設(shè)計的目的本設(shè)計的主要目的是掌握單片機(jī)系統(tǒng)的開發(fā)應(yīng)用,掌握prteus和keil C51軟件的應(yīng)用,鞏固和加深已學(xué)過的知識,提高動手能力及解決實
2、際問題的能力, 同時培養(yǎng)團(tuán)隊合作精神。1.2. 設(shè)計內(nèi)容與要求(1)本設(shè)計以AT89C52單片機(jī)為核心控制元件設(shè)計一個電子琴,與鍵盤、揚(yáng)聲器等模塊組成核心主控制模塊,在主控模塊上設(shè)有16個彈奏按鍵、1個播放按鍵和揚(yáng)聲器,并且按下時按鍵發(fā)聲,松開延時一段時間停止,中間再 按別的鍵則發(fā)另一音調(diào)的聲音。16個按鍵設(shè)置成4x4矩陣鍵盤,能彈奏出16個音,添加歌曲程序同時能夠播放出歌曲。(2)利用軟件keil C51進(jìn)行程序的調(diào)試。(3)利用proteus軟件畫電路圖,并在單片機(jī)加載程序進(jìn)行仿真。(4)根據(jù)電路圖運用proteus軟件的布局和布線功能繪制PCB圖并輸出顯 示電路的3D圖。(5)根據(jù)電路圖
3、、PCB圖和3D圖快速地焊接電路。(6)下載程序代碼,調(diào)試(Easy 51Pro)。2. 方案總體設(shè)計2.1. 音樂產(chǎn)生設(shè)計原理一首音樂是許多不同的音階組成的, 而每個音階對應(yīng)著不同的頻率,這樣我 們就可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音樂了,當(dāng)然對于單片 機(jī)來產(chǎn)生不同的頻率非常方便,我們可以利用單片機(jī)的定時/計數(shù)器T0來產(chǎn)生這 樣方波頻率信號,因此,我們只要把一首歌曲的音階對應(yīng)頻率關(guān)系正確即可。 若 要產(chǎn)生音頻脈沖,只要算出某一音頻的周期(1/頻率),再將此周期除以2,即 為半周期的時間。利用定時器計時半周期時間,每當(dāng)計時終止后就將P1.0反相, 然后重復(fù)計時再反相。就可在 P1
4、.0引腳上得到此頻率的脈沖。利用AT89C51的內(nèi)部定時器使其工作計數(shù)器模式 (M0DE1下,改變計數(shù) 值TH0及TL0以產(chǎn)生不同頻率的方法產(chǎn)生不同音階,例如,頻率為 523Hz,其周 期T= 1/523 = 1912卩s,因此只要令計數(shù)器計時 956卩s/1卩s = 956,每計數(shù)956 次時將I/O反相,就可得到中音D0(523H0。計數(shù)脈沖值與頻率的關(guān)系式是:N=fi- 2- fr式中N是計數(shù)值;fi是機(jī)器頻率(晶體振蕩器為12MHZ時,其頻率為1MHZ; fr 是想要產(chǎn)生的頻率。其計數(shù)初值T的求法如下:T= 65536- N= 65536 fi - 2-fr例如:設(shè) K= 65536,
5、 fi = 1MHz 求低音 DO( 261Hz)、中音 DO(523Hz)、高音 DO (1046Hz)的計數(shù)值。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單片機(jī)12MHZ晶振,高中低音符與計數(shù)T0相關(guān)的計數(shù)值如表1所示:音符頻率(HZ)簡譜碼(T值)音符頻率(HQ簡譜碼(T值)
6、低1 DO26263628# 4 FA#74064860#1 DO#27763731中5 SO78464898低2 RE29463835# 5 SO#83164934#2 RE#31163928中6 LA88064968低3 M33064021# 693264994低4 FA34964103中7 SI98865030# 4 FA#37064185高1 DO104665058低5 SO39264260# 1 DO#110965085# 5 SO#41564331高2 RE117565110低6 LA44064400# 2 RE#124565134# 646664463高3 M131865157低
7、7 SI49464524高4 FA139765178中1 DO52364580# 4 FA#148065198# 1 DO#55464633高5 SO156865217中2 RE58764684# 5 SO#166165235# 2 RE#62264732高6 LA176065252中3 M65964777# 6186565268中4 FA69864820高7 SI196765283表1音符頻率表我們要為這個音符建立一個表格,單片機(jī)通過查表的方式來獲得相應(yīng)的數(shù)據(jù)。低音0 19之間,中音在20-39之間,高音在40- 59之間。TABLE: DW 0,63628,63835,64021,6410
8、3,64260,64400,64524,0,0DW 0,63731,63928,0,64185,64331,64463,0,0,0DW 0,64580,64684,64777,64820,64898,64968,65030,0,0DW 0,64633,64732,0,64860,64934,64994,0,0,0DW 0,65058,65110,65157,65178,65217,65252,65283,0,0DW 0,65085,65134,0,65198,65235,65268,0,0,0DW 0在這個程序中,彈奏音樂的程序是用定時/計數(shù)器T0來完成的,播放音樂程序則是用定時/計數(shù)器T1來
9、完成的。2.2. 設(shè)計流程(1) 鍵盤掃描程序:此文檔僅供學(xué)習(xí)和交流檢測是否有鍵按下,有鍵按下則記錄按下鍵的鍵值,并跳轉(zhuǎn)至功能轉(zhuǎn)移程序; 無鍵按下,則返回鍵盤掃描程序繼續(xù)檢測。(2)功能轉(zhuǎn)移程序:對檢測到得按鍵值進(jìn)行判斷,是琴鍵則跳轉(zhuǎn)至琴鍵處理程序,是功能鍵則跳 轉(zhuǎn)至相應(yīng)的功能程序,我們設(shè)計的功能程序有兩種,即音色調(diào)節(jié)功能和自動播放 樂曲功能。(3)琴鍵處理程序:根據(jù)檢測到得按鍵值,查詢音律表,給計時器賦值,使發(fā)出相應(yīng)頻率的聲音。(4)自動播放歌曲程序:檢測到按鍵按下的是自動播放歌曲功能鍵后執(zhí)行該程序, 電子琴會自動播放 事先已經(jīng)存放好的歌曲,歌曲播放完畢之后自動返回至鍵盤掃描程序, 繼續(xù)等待
10、 是否有鍵按下。程序簡易流程圖:圖1 程序簡易流程圖彈奏程序流程圖:圖2 彈奏程序流程圖自動播放歌曲程序流程圖延時圖3自動播放歌曲程序流程圖3.硬件設(shè)計3.1. AT89C51 芯片簡介3.1.1 主要特性與MCS-51兼容 4K字節(jié)可編程閃爍存儲器壽命:1000寫/擦循環(huán)數(shù)據(jù)保留時間:10年全靜態(tài)工作:0Hz-24Hz三級程序存儲器鎖定 128*8位內(nèi)部RAM 32可編程I/O線兩個16位定時器/計數(shù)器 5個中斷源可編程串行通道低功耗的閑置和掉電模式片內(nèi)振蕩器和時鐘電路功能描述(1) AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROFalsh Programmable a
11、nd Erasable ReadOnly Memory 的低電壓,高性能 CMOS8 位微處理器,俗稱單片機(jī)。AT89C2051是一種帶2K字節(jié)閃爍可編程可擦除只讀 存儲器的單片機(jī)。單片機(jī)的可擦除只讀存儲器可以反復(fù)擦除100次。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL勺 AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C單片機(jī) 為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。(2) 振蕩器特性:XTAL1和XTAL2分別為反向放大器的輸入
12、和輸出。 該反向放大器可以配置為 片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅(qū)動器件,XTAL2 應(yīng)不接。有余輸入至內(nèi)部時鐘信號要通過一個二分頻觸發(fā)器,因此對外部時鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。(3) 芯片擦除:整個PERO陣列和三個鎖定位的電擦除可通過正確的控制信號組合, 并保持 ALE管腳處于低電平10ms來完成。在芯片擦操作中,代碼陣列全被寫“ 1”且在 任何非空存儲字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。此外,AT89C51設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種 軟件可選的掉電模式。在閑置模式下,CPU亭止工作。但RAM定時器
13、,計數(shù)器, 串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存RAM勺內(nèi)容并且凍結(jié)振蕩器,禁 止所用其他芯片功能,直到下一個硬件復(fù)位為止。3.1.3 引腳說明與硬件連接(1) 弓I腳圖,如圖4:4VM70)1 IMT I)T I ) IWW) twos卓丄 FTQ、J-9占 »vl 嚴(yán)bA尸f*f*ppi»”D”LIT:匕CDbnDPCU Co 41. f f - 明 ,H U-Tr: :;tA:;: *4 4 4 4 4 4 £ 一圖4 AT89C51引腳圖(2) P1 口:P1口是一個內(nèi)部提供上拉電阻的 8位雙向I/O 口,P1 口緩沖器能接收輸出4TTL門電流。P1
14、 口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1 口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗此文檔收集于網(wǎng)絡(luò),如有侵權(quán)請聯(lián)系網(wǎng)站刪除 時,P1 口作為第八位地址接收。利用P1 口為按鍵接入口,形成4x4組成具有16個按鍵矩陣的鍵盤,作為 琴鍵鍵盤,設(shè)計成16個音,如下圖5:所對應(yīng)的鍵碼0123456789ABCDEF圖54x4 鍵盤(3)P2 口:P2 口為一個內(nèi)部上拉電阻的8位雙向I/O 口,P2 口緩沖器可接收,輸 出4個TTL門電流,當(dāng)P2 口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且 作為輸入。并因此作為輸入時,P2 口的管腳被外部拉低,將輸出
15、電流。這是 由于內(nèi)部上拉的緣故。P2 口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存 儲器進(jìn)行存取時,P2 口輸出地址的高八位。在給出地址“ 1”時,它利用內(nèi) 部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時,P2 口輸出其特殊功 能寄存器的內(nèi)容。P2 口在FLASH編程和校驗時接收高八位地址信號和控制信 號。利用P2.0接播放音樂鍵,如圖6:Trgo番定 £wvoq. euweoq. 目貝啟 LasLad圖6自動播放歌曲(4)P3 口:P3 口管腳是8個帶內(nèi)部上拉電阻的雙向I/O 口,可接收輸出4個TTL門電 流。當(dāng)P3 口寫入“ 1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入
16、, 由于外部下拉為低電平,P3 口將輸出電流(ILL )這是由于上拉的緣故。P3 口同 時為閃爍編程和編程校驗接收一些控制信號。利用P3.0RXD口(串行輸入口)接1個喇叭,通過執(zhí)行相應(yīng)的功能程序使電 子琴發(fā)出不同音色的聲音,如圖 7:P2.7/A16P3.0/RXD1011P3.inXD12P3JJ1RT013P3.3/1NT114P3.4rT0托ps.sm15P2.6/WRr 17P3.7WhadR3I20G -ill!>Ii l!-iIA.csi-r FEAKER2N3906 K圖7 P3.0的輸出電路圖中喇叭處接了 1個2N3906的PNP其引腳圖如下圖8:2N3906圖8 2N
17、3906引腳圖(5)RST復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持 RST腳兩個機(jī)器周期的 高電平時間。/EA/VPP :當(dāng)/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH, 不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET當(dāng)/EA端保持高電平時,此間內(nèi)部程序存儲器。在 FLASH編程期間,此引腳也用于 施加12V編程電源(VPP。當(dāng)按下按鍵,RST端口輸入高點平,電路進(jìn)行復(fù)位,歌曲停止播發(fā),如圖9:圖9復(fù)位部分(6) XTAL1反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入XTAL2 :來自反向振蕩器的輸出。如圖10:圖10晶振部分32元器件清單如下表2
18、:名稱數(shù)值個數(shù)單片機(jī)AT89C511獨立按鍵(可彈起的)182N39061喇叭1電阻R110KQ1電阻R21KQ1電阻R3200Q1電容C1、C216pF各1個電容C34.7uF1晶振12MHz1表2 兀器件清單4. 系統(tǒng)工作說明接上電源,按下自動播放歌曲按鍵 B17, P2.0 口此時接上低電平,作為輸 出口,因為P2.0具有輸出寄存器寄存的內(nèi)容的特殊功能,所以播放出已編好程 序的歌曲。當(dāng)按下復(fù)位部分的按鍵B18時,因為復(fù)位部分是接高電平的,按下按 鍵就產(chǎn)生高電平輸入進(jìn)行電路的復(fù)位,自動播放的歌曲就馬上停止。而4x4矩陣 鍵盤是接P1 口作為輸入,16個鍵位產(chǎn)生不同的頻率對應(yīng)其簡譜碼而產(chǎn)生不
19、同的 音階。喇叭輸出部分接P3.0 口,一直保持低電平作為輸出,接上一個PNP2N3906 作為放大功能使其播放聲音。5. 結(jié)束語5.1收獲與體會通過這次課程設(shè)計,讓我感覺到了單片機(jī)的樂趣以及運用單片機(jī)設(shè)計電路比 較方便和簡單。在課程設(shè)計過程中,我學(xué)會了怎么通過各種方式查詢相關(guān)的資料, 尤其是要充分利用互聯(lián)網(wǎng)來查找自己想要的資料。這次的課程設(shè)計涉及硬件和軟件兩方面的內(nèi)容。首先是軟件部分,我學(xué)會了運用keil C51 軟件建立工程文件來調(diào)試程序的正確性,同時也學(xué)會了運用 proteus軟件來畫電路圖,基本掌握 proteus軟件的使用方法包括繪制原理圖、 PCB圖、3D圖,通過這些圖與焊接硬件電
20、路緊密的聯(lián)在一起。由于自己所學(xué)有限,所以程序的編寫事件很頭疼的事,所以我們是先從網(wǎng)上下載一些類似的程序,然后對程序進(jìn)行分析修改加以利用。 硬件部分,在選取單片機(jī)前必須知道我們將要 制作的電路需要實現(xiàn)什么功能,根據(jù)其功能來選取我們需要的單片機(jī)。 而在焊接 的過程中我發(fā)現(xiàn)每個元器件的排布是十分講究的,布局得好焊接起來就方便且簡單多了。設(shè)計好后,要將程序燒入芯片,經(jīng)過調(diào)試成功后,我們可以任意彈奏自己想要 的旋律。本研究通過制作電子琴,將幾個模塊很好的融合起來,對使用單片機(jī)設(shè) 計簡易電子琴進(jìn)行了分析,并介紹了基于單片機(jī)電子琴統(tǒng)硬件組成。利用單片機(jī) 產(chǎn)生不同頻率來獲得我們要求的音階。說明一首音樂是許多不
21、同的音階組成的,而每個音階對應(yīng)著不同的頻率,這樣我們就可以利用不同的頻率的組合, 即可構(gòu)成我們所想要的音樂了,所以我們只要把一首歌曲的音階對應(yīng)頻率關(guān)系弄正確來,然后我們利用功放電路來將音樂聲音放大。5.2 遇到的問題與解決方法(1)繪制好電路總原理圖準(zhǔn)備焊接的時候,發(fā)現(xiàn)按照原理圖來焊接相當(dāng)困難,不知從何下手。于是我上網(wǎng)查了一下資料,發(fā)現(xiàn)原來proteus軟件有自動布局和 自動布線的功能來繪制 PCB圖,而且還可以輸出3D圖。根據(jù)這總原理圖、PCB 圖還有3D圖來焊接電路,很快地焊接好電路而且一插上電源電路就跟仿真一樣 成功了。(2)在購買材料的時候那間店沒有 AT89C5仲片機(jī),只好購買了 S
22、TC89C5單片機(jī)?;貋砩暇W(wǎng)查了一下資料,發(fā)現(xiàn)它們的引腳都一樣,而且STC89C52勺容量大一些,功能更強(qiáng),所以完全可以代替AT89C51來實現(xiàn)本設(shè)計的電子琴電路的功 能。5.3教程建議我覺得只是單純的上課來學(xué)習(xí)單片機(jī)是很難的,老師應(yīng)該多找一些電路的實 例來講授單片機(jī)的知識,這樣會讓學(xué)生更容易接受而且更容易明白。 課程應(yīng)該多 安排一些課程設(shè)計來讓學(xué)生自己動手來提高對單片機(jī)的知識和動手能力。6. 參考文獻(xiàn)1 李朝青.單片機(jī)原理與接口技術(shù).2 李光飛、樓然苗.單片機(jī)課程設(shè)計指導(dǎo).北京:北京航空航天大學(xué)出版 社.3 蔡朝洋.單片機(jī)控制實習(xí)與專題制作.北京:北京航空航天大學(xué)出版社4 嚴(yán)天峰單片機(jī)應(yīng)用系
23、統(tǒng)設(shè)計與仿真調(diào)試 北京:北京航空航天大學(xué)出 版社.2005年8月.7. 附錄rr-FFF 一H-FIF 亠44丄亠7 B 5 IP- pq 7 -* Ok2BIO'15-dhr sd-ALE-I G 5 4 * > > > 3U3m更口 39| P®首 P3.5mC33.菁原理圖2宜窖r.n1(1 V*1圖12 實物圖圖14 3D圖設(shè)計源程序:BUFFEQU 30HSTH0EQU 31HSTL0EQU 32HTEMPEQU 33HORG 00HLJMP STARTORG 0BHLJMP INT_T0ORG 001BHLJMP TIM1START:MOV TM
24、OD,#01H;設(shè)置T0工作方式SETB ET0SETB EA;啟動T0MAIN:MOV P1,#0FFH;P1全置1CLR P1.4;開始掃描第一行MOV A,P1ANL A,#0FH;屏蔽咼四位XRL A,#0FH;低位有” 0”則有鍵按下,否則無JZKKEY1 ;判斷有無鍵按下,有則繼續(xù),沒有則轉(zhuǎn)移到 KKEY1LCALL DELY10MS ;調(diào)用延時程序MOV A,P1;重新開始判斷有無鍵按下ANL A,#0FHXRL A,#0FHJZ KKEY1MOV A,P1ANL A,#0FH ;求鍵值CJNEA,#0EH,CKK1 ;相等說明該行第一列有鍵按下,不等則轉(zhuǎn)移MOV BUFF,#O
25、 ;該鍵值為0LJMP NDK1 ;跳到NDK1執(zhí)行相應(yīng)的功能程序CKK1:CJNE A,#0DH,KK2;相等說明該行第二列有鍵按下,不等則轉(zhuǎn)移MOV BUFF,#1;該鍵值為1LJMP NDK1; 跳到NDK1執(zhí)行相應(yīng)的功能程序KK2:CJNE A,#0BH,KK3;相等說明該行第三列有鍵按下,不等則轉(zhuǎn)移MOV BUFF,#2;該鍵值為2LJMP NDK1; 跳到NDK1執(zhí)行相應(yīng)的功能程序KK3:CJNE A,#07H,KK4;相等說明該行第四列有鍵按下,不等則轉(zhuǎn)移MOV BUFF,#3;該鍵值為2LJMP NDK1; 跳到NDK1執(zhí)行相應(yīng)的功能程序KK4:NOPNDK1:MOV A,BU
26、FFMOV DPTR,#TABLEMOVC A,A+DPTRMOV P0,AMOV A,BUFFMOV B,#2MUL ABMOV TEMP,AMOV DPTR,#TABLE1MOVC A,A+DPTRMOV STH0,AMOV TH0,AINC TEMPMOV A,TEMPMOVC A,A+DPTRMOV STL0,AMOV TL0,ASETB TRONDK1A:MOV A,P1ANL A,#0FHXRL A,#0FHJNZ NDK1ACLR TROKKEY1:開始掃描第二行MOV P1,#OFFH ;CLR P1.5MOV A,P1ANL A,#0FHXRL A,#0FHJZ KKEY2L
27、CALL DELY10MSMOV A,P1ANL A,#0FHXRL A,#0FHJZ KKEY2MOV A,P1ANL A,#0FHCJNE A,#0EH,KK5MOV BUFF,#4LJMP NDK2KK5:CJNE A,#0DH,KK6MOV BUFF,#5LJMP NDK2KK6:CJNE A,#0BH,KK7MOV BUFF,#6LJMP NDK2KK7:CJNE A,#07H,KK8MOV BUFF,#7LJMP NDK2KK8:NOPNDK2:MOV A,BUFFMOV DPTR,#TABLEMOVC A,A+DPTRMOV P0,AMOV A,BUFFMOV B,#2MUL A
28、BMOV TEMP,AMOV DPTR,#TABLE1MOVC A,A+DPTRMOV STH0,AMOV TH0,AINC TEMPMOV A,TEMPMOVC A,A+DPTRMOV STL0,AMOV TL0,ASETB TR0NDK2A:MOV A,P1ANL A,#0FHXRL A,#0FHJNZ NDK2ACLR TR0KKEY2:開始掃描第三行MOV P1,#OFFH ;CLR P1.6MOV A,P1ANL A,#0FHXRL A,#0FHJZ KKEY3LCALL DELY10MSMOV A,P1ANL A,#0FHXRL A,#0FHJZ KKEY3MOV A,P1ANL
29、A,#0FHCJNE A,#0EH,KK9MOV BUFF,#8LJMP NDK3KK9:CJNE A,#0DH,KK10MOV BUFF,#9LJMP NDK3KK10:CJNE A,#0BH,KK11MOV BUFF,#10LJMP NDK3KK11:CJNE A,#07H,KK12MOV BUFF,#11LJMP NDK3KK12:NOPNDK3:MOV A,BUFFMOV DPTR,#TABLEMOVC A,A+DPTRMOV P0,AMOV A,BUFFMOV B,#2MUL ABMOV TEMP,AMOV DPTR,#TABLE1MOVC A,A+DPTRMOV STH0,AMOV
30、 TH0,AINC TEMPMOV A,TEMPMOVC A,A+DPTRMOV STL0,AMOV TL0,ASETB TR0NDK3A:MOV A,P1ANL A,#0FHXRL A,#0FHJNZ NDK3ACLR TR0KKEY3:MOV P1,#0FFH;開始掃描第四行CLR P1.7MOV A,P1ANL A,#0FHXRL A,#0FHJZ KKEY4LCALL DELY10MSMOV A,P1ANL A,#0FHXRL A,#0FHJZ KKEY4MOV A,P1ANL A,#0FHCJNE A,#0EH,KK13MOV BUFF,#12LJMP NDK4KK13:CJNE A
31、,#0DH,KK14MOV BUFF,#13LJMP NDK4KK14:CJNE A,#0BH,KK15MOV BUFF,#14LJMP NDK4KK15:CJNE A,#07H,KK16MOV BUFF,#15LJMP NDK4KK16: NOPNDK4:MOV A,BUFFMOV DPTR,#TABLEMOVC A,A+DPTRMOV P0,AMOV A,BUFFMOV B,#2MUL ABMOV TEMP,AMOV DPTR,#TABLE1MOVC A,A+DPTRMOV STH0,AMOV TH0,AINC TEMPMOV A,TEMPMOVC A,A+DPTRMOV STL0,AMO
32、V TL0,ASETB TR0NDK4A:MOV A,P1ANL A,#0FHXRL A,#0FHJNZ NDK4ACLR TR0KKEY4: MOV A,#0FFHMOV P2,AMOV A,P2JB ACC.0, KKEY5LCALL DELY10MSMOV A,P2JB ACC.0, KKEY5MOV BUFF,#16LJMP START22START22: MOV A,BUFFCJNE A,#16,KKEY5LJMP START2KKEY5: LJMP MAINSTART2: MOV TMOD,#10H設(shè) T1 在 M1MOV IE,#88H ;中斷使能START0: MOV 30H,
33、#00 ;取簡譜碼指針NEXT: MOV A,30H ;簡譜碼指針載入 AMOV DPTR,#TAB至TAB取簡譜碼MOVC A,A+DPTR ;MOV R2,A ;渠道的簡譜碼暫存于R2JZ END0 ;是否渠道00 (結(jié)束碼)ANL A,#0FH ;不是,則取低4位(節(jié)拍碼)MOV R5,A ;將節(jié)拍碼存入 R5MOV A,R2 ;將取到的簡譜碼再載入 ASWAP A高低4位交換ANL A,#0FH ;取低4位(音符碼)JNZ SING ;取到的音符碼是否為0?CLR TR1 ;開始,則不發(fā)音SJMP D1 ;跳至 D1SING:DEC A ;取到的音符碼減1 (不含0)MOV 22H,A
34、 ;存入(22H)RL A ;乘 2MOV DPTR,#TAB1至TABLE1取相對的高位字節(jié)計數(shù)值MOVC A,A+DPTR ;MOV TH1,A ;取到的高位字節(jié)存入 TH0MOV 21H,A ;取到的高位字節(jié)存入(21H)MOV A,22H ;在載入取到的音符碼RL A ;乘 2INC A ;力卩1MOVC A,A+DPT至;TABLE1取相對的低位字節(jié)計數(shù)值MOV TL1,A ;取到的低位字節(jié)存入 TL0MOV 20H,A ;取到的低位字節(jié)存入(20H)SETB TR1 ;啟動 TIMER0D1:LCALL DELAY ;其本單位時間1/4拍187毫秒INC 30H ;取簡譜碼指針加1JMP NEXT 取下一個簡譜碼END0: CLR TR1 ;停止 TIMER0LJ
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 油氣管道與鐵路交叉工程規(guī)定及管理技術(shù)
- 企業(yè)培訓(xùn)感恩課件
- 企業(yè)培訓(xùn)必聽課件下載
- Photoshop平面設(shè)計基礎(chǔ) 課件 任務(wù)1.3 繪制風(fēng)景插畫
- 企業(yè)垃圾分類課件
- 酒店式餐廳整體承包合作協(xié)議
- 代駕服務(wù)風(fēng)險承擔(dān)協(xié)議書
- 商場綠地亮化方案
- 科技園區(qū)場地租賃押金及知識產(chǎn)權(quán)保護(hù)合同
- 室外魚池建造方案模板
- 路面橋梁搶修知識培訓(xùn)課件
- 2023陜西省中考英語真題試卷和答案
- 注塑車間工作總結(jié)計劃
- 人教版九年級化學(xué)上冊 第二單元 我們周圍的空氣 單元測試卷
- 環(huán)境地學(xué)課件
- 《國有企業(yè)采購操作規(guī)范》【2023修訂版】
- 2024年東莞鐵塔社會招聘筆試參考題庫含答案解析
- 臨床生物化學(xué)檢驗常規(guī)項目分析質(zhì)量指標(biāo)
- 人工智能驅(qū)動的智能餐飲供應(yīng)鏈管理創(chuàng)業(yè)計劃書
- 基于育人導(dǎo)向下的小學(xué)英語單元作業(yè)設(shè)計策略 論文
- 農(nóng)產(chǎn)品增值稅進(jìn)項稅額核定扣除培訓(xùn)
評論
0/150
提交評論