可存儲(chǔ)式電子琴設(shè)計(jì)報(bào)告_第1頁(yè)
可存儲(chǔ)式電子琴設(shè)計(jì)報(bào)告_第2頁(yè)
可存儲(chǔ)式電子琴設(shè)計(jì)報(bào)告_第3頁(yè)
可存儲(chǔ)式電子琴設(shè)計(jì)報(bào)告_第4頁(yè)
可存儲(chǔ)式電子琴設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩41頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 目錄前言 4第1章 任務(wù)要求 411 任務(wù)要求 4第2章 控制電路 52.1 說(shuō)明522 LCD驅(qū)動(dòng)電路 7221 LCD的功能與引腳介紹 72. 2 .2 LCD特性及操作命令9 2.3 鍵盤(pán)掃描15 231 鍵盤(pán)分配 15 232 鍵盤(pán)掃描方法 15 232 1 矩陣式鍵盤(pán)的結(jié)構(gòu)與工作原理15 232 2 矩陣式鍵盤(pán)的按鍵識(shí)別方法1624 音頻處理電路19 241 說(shuō)明及特點(diǎn)19242 原理及能實(shí)現(xiàn)功能20第3章 定時(shí)器產(chǎn)生各種頻率的聲音的方法233. 1 原理及說(shuō)明2332 定時(shí)器的工作26321 啟動(dòng)定時(shí)器及計(jì)時(shí)工作脈沖 26322 計(jì)時(shí)時(shí)間長(zhǎng)短設(shè)置及計(jì)時(shí)溢位處理28第4章 程序說(shuō)明

2、29參考文獻(xiàn) 30附錄1(程序清單) 31附錄2(電路圖) 43附錄3(程序流程圖)44總結(jié) 45前言 此次課程設(shè)計(jì)是結(jié)合LCD設(shè)計(jì)一臺(tái)數(shù)字式可存儲(chǔ)式電子琴,利用單片機(jī)8051的控制程序,可以自己彈奏音樂(lè),并自動(dòng)存儲(chǔ)所輸入的單音,稍后會(huì)一起自動(dòng)演奏出來(lái)。由控制程序的變化,可以做不同類型的電子琴的設(shè)計(jì)。本設(shè)計(jì)可以學(xué)習(xí)按鍵試電子琴的控制方式,按下鍵并發(fā)出相對(duì)音階,并將輸入的單音數(shù)據(jù)存入8051內(nèi)部可用的內(nèi)存RAM區(qū),稍后一起自動(dòng)演奏出來(lái)。 電子琴核心部分是單片機(jī)及其程序。單片機(jī)體積小,價(jià)格便宜,開(kāi)發(fā)容易,可根據(jù)需要制作成為各種智能控制器以代替人工操作,實(shí)現(xiàn)自動(dòng)化。單片機(jī)系統(tǒng)主要由中央處理器(CPU

3、)、存儲(chǔ)器和I/O接口電路三大部分組成,各部分通過(guò)三態(tài)門(mén)與地址總線、數(shù)據(jù)總線和控制總線連接起來(lái)并相互傳遞信息(即傳送數(shù)據(jù))。其結(jié)構(gòu)如圖1所示。 圖1.單片機(jī)系統(tǒng)結(jié)構(gòu)圖 第一章 任務(wù)要求及方法說(shuō)明 11 任務(wù)要求 可存儲(chǔ)式電子琴的任務(wù)要求如下: 使用LCD顯示器來(lái)顯示音階輸入的相關(guān)信息。 當(dāng)按下鍵盤(pán)組相對(duì)按鍵,壓電喇叭會(huì)發(fā)出相對(duì)音階單音, 共有兩個(gè)8度音節(jié)。 所輸入的單音會(huì)存入8051內(nèi)而保存起來(lái)。 至多可以輸入64個(gè)單音,可以一起演奏出來(lái)。 有清除存儲(chǔ)功能,再重新輸入。 演奏時(shí)可以按鍵來(lái)中斷。 可以實(shí)時(shí)顯示目前演奏的單音碼及所存儲(chǔ)的單音計(jì)數(shù)。 第2章 控制電路可存儲(chǔ)式電子琴的控制電路分為以下幾

4、部分:· 單片機(jī)8051· 工作指示LED· LCD顯示器· 按鍵輸入· 喇叭接口 2.1 說(shuō)明 電子琴的核心部件是單片機(jī),下圖是MCS-51系列單片機(jī)的內(nèi)部RAM地址分配示意圖。 圖21 MCS-51系列單片機(jī)的內(nèi)部RAM地址 完整的控制電路見(jiàn)附錄2。 其中J1為+5V電源輸入,當(dāng)電源加入時(shí)電源指示燈LED將亮起,用以指示電源供給 過(guò)連接線連在I051控制板上的J3接頭。可存儲(chǔ)式電子琴所輸入的音階值必須存入變量數(shù)組中,在演奏時(shí)才逐一取出來(lái)播放單音。8051程序中的變量是使用內(nèi)部存儲(chǔ)器一般用途RAM區(qū),范圍為空間30H7FH,因此內(nèi)存規(guī)劃如下:

5、 · RAM地址30H70H存放音階值,最大內(nèi)存空問(wèn)為64字節(jié)。 · RAM地址71H7FH存放程序其他變量。若要擴(kuò)充音階的存儲(chǔ)容量,必須使用外部?jī)?nèi)存擴(kuò)充,最簡(jiǎn)單的方式是使用串行EEPROM 93C46等系列芯片,除了增加存儲(chǔ)容量外還可以有斷電數(shù)據(jù)保存的功能,關(guān)機(jī)后音樂(lè)數(shù)據(jù)仍保存著。22 LCD驅(qū)動(dòng)電路 2. 21 LCD的功能與引腳介紹程序執(zhí)行后工作指示LED閃動(dòng),表示程序開(kāi)始執(zhí)行,LCD顯示器顯示如下: 當(dāng)按下鍵盤(pán)組相對(duì)按鍵,壓電喇叭會(huì)發(fā)出相對(duì)單階單音,共有兩個(gè)8度音節(jié),DOSI,HI DOHI SI,14個(gè)音階,所輸入的單音會(huì)存入8051內(nèi)而保存起來(lái),至多可以輸入64

6、個(gè)單音,可以一起演奏出來(lái),有清除存儲(chǔ)功能,再重新輸入。 4X4按鍵音階對(duì)應(yīng)如下所示:圖22 音階對(duì)應(yīng)表 LCD可以實(shí)時(shí)顯示所存儲(chǔ)的單音計(jì)數(shù),按鍵9是清除鍵,將存儲(chǔ)的單音計(jì)數(shù)請(qǐng)為0,按鍵8是放音鍵,將內(nèi)存內(nèi)的單音逐一演奏出來(lái),演奏中可以按鍵K4來(lái)中斷。 在本設(shè)計(jì)使用一般的LCD顯示器來(lái)顯示音樂(lè)演奏的消息及單音碼,按下鍵盤(pán)組按鍵,喇叭發(fā)出相對(duì)音階,并存儲(chǔ)起來(lái)自動(dòng)演奏電子琴,可以擴(kuò)充其功能如下: 擴(kuò)充更多組的按鍵可以輸入另外一組高音階。 增加多組LED成為音樂(lè)走馬燈。 增加串行EEPROM 93C46等系列芯片,將內(nèi)存內(nèi)的單音逐一寫(xiě)入93C46內(nèi),音樂(lè) 數(shù)據(jù)可以長(zhǎng)久保存,若關(guān)機(jī)后音樂(lè)數(shù)據(jù)仍保存著。

7、增加串行EEPROM等系列芯片,可以實(shí)時(shí)輸入并存儲(chǔ)多首歌曲,稍后再播放出來(lái)。 LCD 在電子產(chǎn)品中使用頻率相當(dāng)高,普通的七段顯示器只能用來(lái)顯示數(shù)字,要顯示英文文字時(shí),要選擇使用 LCD(液晶顯示器),常見(jiàn)的使用場(chǎng)合有測(cè)量?jī)x器及高級(jí)電子產(chǎn)品,畢竟LCD 價(jià)格不是很便宜。我們?cè)陔娮硬牧闲匈I到的 LCD,其背面有控制電路,其上面有專門(mén)的IC來(lái)完成LCD的控制動(dòng)作,在設(shè)計(jì)的接口中,只要送入適當(dāng)?shù)拿畲a和欲顯示的數(shù)據(jù),LCD便會(huì)將其字符顯示出來(lái),在控程上非常方便。一般市售的LCD均有統(tǒng)一引腳,本設(shè)計(jì)采用的LCD為SDEC廠牌(2A16DRG)引腳 圖2.3 LCD為SDEC廠牌(2A16DRG)引腳功能

8、說(shuō)明如下: 1. D0D7雙向的數(shù)據(jù)總線,LCD數(shù)據(jù)讀寫(xiě)方式可以分為8位及4位兩種,以8位數(shù)據(jù)進(jìn)行讀寫(xiě)則D0D7有效,若以4位方式讀寫(xiě),則只用D7D4。 2. RS 寄存器選擇控制線,當(dāng)RS=0時(shí),并且做寫(xiě)入的動(dòng)作時(shí),可以寫(xiě)入指令寄存器,若RS=0,且做讀取的動(dòng)作時(shí),可以讀取忙碌標(biāo)志及地址計(jì)數(shù)器的內(nèi)容。如果RS=1則用于讀寫(xiě)數(shù)據(jù)寄存器。 3. R/W LCD讀寫(xiě)控制線,R/W=0時(shí),LCD執(zhí)行寫(xiě)入的動(dòng)作,R/W=1時(shí)則做讀取的動(dòng)作。EN啟用控制線,高電平動(dòng)作。 4. VCC 電源正端。 5. VO 亮度調(diào)整電壓輸入控制引腳,當(dāng)輸入0V時(shí)字符顯示最亮。 6. GND 電源地端。222 LCD特性

9、及操作命令 LCD具有入下特性: 1. +5V供電,亮度可調(diào)整。 2. 內(nèi)藏振蕩電路,系統(tǒng)內(nèi)含重置電路。 3. 提供各種命令,如清除顯示器、字符閃爍、顯示移位等多種功能。 4. 顯示用數(shù)據(jù)RAM共80個(gè)字節(jié)。 5. 字符產(chǎn)生器ROM有160個(gè)5×7點(diǎn)陣字型。 6. 字符產(chǎn)生器RAM可由用戶自定義8個(gè)5×7點(diǎn)陣字型。 LCD內(nèi)部存儲(chǔ)器共分為3種: 固定字型ROM,稱為CG(Character Generator)ROM。 數(shù)據(jù)顯示RAM,稱為DD(Data Display)RAM。 用戶自定義字型RAM,稱為CGRAM。 (1)CG ROM CG ROM內(nèi)存儲(chǔ)著192個(gè)5&#

10、215;7點(diǎn)陣的字型,這些字型均已固定,例如我們將“A”寫(xiě)入LCD中,就是將“A”的ASCII碼41H寫(xiě)至DDRAM中,同時(shí)至CG ROM中將“A”的字型點(diǎn)陣數(shù)據(jù)找出來(lái)而顯示在LCD上。 (2)DD RAM DD RAM內(nèi)用來(lái)存儲(chǔ)寫(xiě)至LCD內(nèi)部的字符,DD RAM的地址分布從00H到67H,分別代表LCD的各列位置,例如我們要將“A”寫(xiě)入第2行的第1個(gè)位置,就先設(shè)置DD RAM地址為40H,而后寫(xiě)入41H至LCD即可。 (3)CG RAM 此區(qū)域只有64個(gè)字節(jié),可將用戶將自行設(shè)計(jì)的字型寫(xiě)入LCD中,一個(gè)字的大小為5x7點(diǎn)陣,工可以存儲(chǔ)8個(gè)字型,其顯示碼為00H到07H。 SDEC的操作命令均為

11、12位,其中高4位為標(biāo)識(shí)碼,低8位為參數(shù),各操作命令如下: 空操作:0000B(可為任意值,下同) 空操作命令對(duì)SDEC 2A16不產(chǎn)生任何影響。該命令可以在多個(gè)SDEC 2A16級(jí)聯(lián)的應(yīng)用中透過(guò)前級(jí)SDEC 2A16向后級(jí)SDEC 2A16發(fā)送操作命令而不影響前級(jí)SDEC 2A16的狀態(tài)。例如,要將操作命令001000000001B發(fā)送給兩級(jí)級(jí)聯(lián)電路中的后級(jí)SDEC 2A16(后級(jí)SDEC2A16的DIN引腳連接到前級(jí)SDEC 2A16的DOUT引腳),只要在該操作命令后添加空操作命令000000000000B再發(fā)送,那么,該操作命令將經(jīng)過(guò)前級(jí)SDEC 2A16到達(dá)后級(jí)SDEC 2A16,而

12、空操作命令留給了前級(jí)SDEC 2A16。另外,為了在不影響SDEC 2A16的前提下變化DCLK以清除看門(mén)狗計(jì)時(shí)器,也可以發(fā)送空操作命令。在非級(jí)聯(lián)的應(yīng)用中,空操作命令可只發(fā)送高4位。 芯片內(nèi)部復(fù)位:001000000001B 內(nèi)部復(fù)位命令可將SDEC 2A16的各個(gè)寄存器和各種參數(shù)復(fù)位到默認(rèn)的狀態(tài)。芯片上電時(shí),SDEC 2A16均被復(fù)位,此時(shí)各個(gè)寄存器均復(fù)位為0,各種參數(shù)均恢復(fù)為默認(rèn)值。 字?jǐn)?shù)據(jù)移位:0011000000D1D0B 字?jǐn)?shù)據(jù)移位命令共有4個(gè):開(kāi)環(huán)左移、右移,閉環(huán)左移、右移。D0為0時(shí)為開(kāi)環(huán),為1時(shí)為閉環(huán),D1為0時(shí)左移,為1時(shí)為右移。開(kāi)環(huán)左移時(shí)DIG0引腳對(duì)應(yīng)的單元補(bǔ)00H,此時(shí)

13、不譯碼方式顯示為空格,BCD譯碼方式時(shí)顯示為0;開(kāi)環(huán)右移時(shí),DIG7引腳對(duì)應(yīng)的單元補(bǔ)00H;而在閉環(huán)時(shí)DIG0與DIG7頭尾相接,閉環(huán)移位。 設(shè)定系統(tǒng)參數(shù):01000000WDOGKEYBDISPB 該命令用于設(shè)定SDEC 2A16的系統(tǒng)級(jí)參數(shù)如看門(mén)狗使能WDOG、鍵盤(pán)掃描使能KEYB、顯示驅(qū)動(dòng)使能 DISP 等。各個(gè)參數(shù)均可通過(guò)位數(shù)據(jù)來(lái)進(jìn)行控制,將相應(yīng)的數(shù)據(jù)位置為 1可啟用該功能,否則關(guān)閉該功能(默認(rèn)值)。 設(shè)定顯示參數(shù):0101MODELIMITINTENSITYB 此命令用于設(shè)定SDEC 2A16的顯示參數(shù),如譯碼方式MODE(1位)、掃描極限LIMIT(3位)、顯示亮度INTENSIT

14、Y(4位)等。譯碼方式MODE為1時(shí)選擇BCD譯碼方式,為0時(shí)選擇不譯碼方式。SDEC 2A16默認(rèn)工作于不譯碼方式,此時(shí)8個(gè)數(shù)據(jù)寄存器中字節(jié)數(shù)據(jù)的位7位0分別對(duì)應(yīng)8個(gè)數(shù)碼管的小數(shù)點(diǎn)和段G段A,當(dāng)數(shù)據(jù)位為1時(shí),對(duì)應(yīng)的數(shù)據(jù)段(或發(fā)光管)點(diǎn)亮;數(shù)據(jù)位為0時(shí)熄滅。SDEC 2A16工作于BCD譯碼方式主要應(yīng)用于數(shù)碼管驅(qū)動(dòng),單片機(jī)只要給出二進(jìn)制數(shù)的BCD碼,便可由SDEC 2A16將其譯碼并直接驅(qū)動(dòng)數(shù)碼管以顯示對(duì)應(yīng)的字符。BCD譯碼方式是對(duì)數(shù)據(jù)寄存器中字節(jié)數(shù)據(jù)的位4位0進(jìn)行兼容BCD的譯碼,可用于控制段驅(qū)動(dòng)引腳SEG6SEG0的輸出,它們對(duì)應(yīng)于數(shù)碼管的段G段A,同時(shí)可用字節(jié)數(shù)據(jù)的位7控制段來(lái)驅(qū)動(dòng)引腳S

15、EG7的輸出以對(duì)應(yīng)數(shù)碼管的小數(shù)點(diǎn),字節(jié)數(shù)據(jù)的位6和位5不影響B(tài)CD譯碼的輸出,它們可以是任意值。將位4位0進(jìn)行BCD譯碼可顯示以下28個(gè)字符,其中00000B01111B分別對(duì)應(yīng)于“0F”、10000B11010B分別對(duì)應(yīng)于“ ”空格、“”或加號(hào)、“”負(fù)號(hào)或減號(hào)、“”等于號(hào) 、“”左方括號(hào) 、“”右方括號(hào)、“”下劃線、“H” 、“L” 、“P” 、“”小數(shù)點(diǎn)、其余值為空格。 掃描極限LIMIT控制位001B111B和000B(默認(rèn)值)可分別設(shè)定掃描極限17和8。顯示亮度INTENSITY控制位的0001B1111B和0000B(默認(rèn)值)則用于分別設(shè)定顯示驅(qū)動(dòng)占空比1/1615/16 和16/1

16、6,以實(shí)現(xiàn)16級(jí)顯示亮度控制。 設(shè)定閃爍0110D7SD6SD5SD4SD3SD2SD1SD0SB 設(shè)定閃爍控制命令用于設(shè)定 SDEC 2A16的閃爍顯示屬性,其中 D7SD0S 分別對(duì)應(yīng)于8個(gè)字驅(qū)動(dòng)DIG7DIG0。閃爍屬性D7SD0S分別通過(guò)1位數(shù)據(jù)控制,將相應(yīng)的數(shù)據(jù)位置為1可使能閃爍顯示,否則為正常顯示,不閃爍(默認(rèn)值)。 加載字?jǐn)?shù)據(jù):1DIGADDRDIGDATAB 加載字?jǐn)?shù)據(jù)命令用于將字節(jié)數(shù)據(jù)DIGDATA(8位)寫(xiě)入DIGADDR(3位)指定的數(shù)據(jù)寄存器中。DIGADDR的000B111B分別用于指定數(shù)據(jù)寄存器的地址07,并分別對(duì)應(yīng)于DIG0DIG7引腳驅(qū)動(dòng)的8個(gè)數(shù)碼管。DIGDA

17、TA為待寫(xiě)入的字節(jié)數(shù)據(jù)。 讀取按鍵代碼:0111B 讀取按鍵代碼命令用于獲得 SDEC 最近檢測(cè)到的有效按鍵的按鍵代碼。該命令是唯一的具有數(shù)據(jù)返回的命令,SDEC通常從DOUT引腳輸出按鍵代碼,按鍵代碼總是7位數(shù)據(jù),最高位是狀態(tài)碼,位5位0是掃描碼。讀取按鍵代碼命令的位數(shù)據(jù)B7B0可以是任意值,所以控制器可以將該操作命令縮短為4位數(shù)據(jù)B11B8。例如,SDEC 2A16檢測(cè)到有效按鍵并中斷時(shí),如按鍵代碼是5EH,則先向SDEC發(fā)出讀取按鍵代碼命令0111B,然后再?gòu)腄OUT獲得按鍵代碼5EH。 SDEC所提供的按鍵代碼為7位,位2位0是列掃描碼,位5位3是行掃描碼,位6是狀態(tài)碼(鍵按下為1,鍵

18、釋放為0)。例如,連接DIG3與SEG4的鍵被按下時(shí),按鍵代碼為 63H,鍵被釋放后,按鍵代碼是 23H。單片機(jī)可以在任何時(shí)候讀取按鍵代碼,但一般在SDEC 2A16檢測(cè)到有效按鍵而產(chǎn)生鍵盤(pán)中斷時(shí)讀取按鍵代碼,此時(shí)按鍵代碼的位6總是1。另外,如果需要了解按鍵何時(shí)釋放,單片機(jī)可以通過(guò)查詢方式定期讀取按鍵代碼,直到按鍵代碼的位6為0。連接在DIG7DIG0與SEG7SEG0之間的鍵被按下時(shí),SDEC 2A16所提供的按鍵代碼。這些按鍵代碼具有一定的規(guī)律,如果需要鍵被釋放時(shí)的按鍵代碼,按鍵代碼的位6 置0,也可將表中的按鍵代碼減去40H。應(yīng)注意的是:SDEC 2A16不支持組合鍵,也就是說(shuō),同一時(shí)刻

19、,不能有兩個(gè)或者更多的鍵被按下。 23 鍵盤(pán)掃描 231 鍵盤(pán)分配 整個(gè)4x4鍵盤(pán)按鍵分配如下所示:圖24 鍵盤(pán)分配 當(dāng)實(shí)際制作是所使用的鍵盤(pán)按鍵位置分配時(shí),自行修改按鍵轉(zhuǎn)換即可。 232 鍵盤(pán)掃描方法 232 1 矩陣式鍵盤(pán)的結(jié)構(gòu)與工作原理圖25矩陣式鍵盤(pán)結(jié)構(gòu) 矩陣式結(jié)構(gòu)的鍵盤(pán)雖然比直接法要復(fù)雜一些,識(shí)別也要復(fù)雜一些,但能符合要求。列線通過(guò)電阻接正電源,并將行線所接的單片機(jī)的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當(dāng)按鍵沒(méi)有按下時(shí),所有的輸出端都是高電平,代表無(wú)鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會(huì)被拉低,這樣,通過(guò)讀入輸入線的狀態(tài)就可得知是否有鍵按下了。 2

20、32 2 矩陣式鍵盤(pán)的按鍵識(shí)別方法確定矩陣式鍵盤(pán)上何鍵被按下介紹一種“行掃描法”。行掃描法:行掃描法又稱為逐行(或列)掃描查詢法,是一種最常用的按鍵識(shí)別方法,如上圖所示鍵盤(pán),介紹過(guò)程如下。 (1) 判斷鍵盤(pán)中有無(wú)鍵按下 將全部行線 Y0-Y3 置低電平,然后檢測(cè)列線的狀態(tài)。只要有一列的電平為低,則表示鍵盤(pán)中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個(gè)按鍵之中。若所有列線均為高電平,則鍵盤(pán)中無(wú)鍵按下。 (2) 判斷閉合鍵所在的位置 在確認(rèn)有鍵按下后,即可進(jìn)入確定具體閉合鍵的過(guò)程。其方法是:依次將行線置為低電平,即在置某根行線為低電平時(shí),其它線為高電平。在確定某根行線位置為低電平后,

21、再逐行檢測(cè)各列線的電平狀態(tài)。若某列為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵。 8051單片機(jī)的P2口用作鍵盤(pán)I/O口,鍵盤(pán)的列線接到P2口的低4位,鍵盤(pán)的行線接到 P2 口的高 4 位。列線 P2.7-P2.4 分別接有 4 個(gè)上拉電阻到正電源+5V,并把列線P2.7-P2.4設(shè)置為輸入線,行線P2.0-P2.3設(shè)置為輸出線。4根行線和4根列線形成16個(gè)相交點(diǎn)。 (1) 檢測(cè)當(dāng)前是否有鍵被按下。檢測(cè)的方法是 P2.0-P2.3 輸出全“0”,讀取P2.7-P2.4的狀態(tài),若P2.7-P2.4為全“1”,則無(wú)鍵閉合,否則有鍵閉合。 (2) 去除鍵抖動(dòng)。當(dāng)檢測(cè)到有鍵按下后,延時(shí)一

22、段時(shí)間再做下一步的檢測(cè)判斷。 (3) 若有鍵被按下,應(yīng)識(shí)別出是哪一個(gè)鍵閉合。方法是對(duì)鍵盤(pán)的行線進(jìn)行掃描。P2.0-P2.3按下述4種組合依次輸出: P2.0 1 1 1 0 P2.1 1 1 0 1 P2.2 1 0 1 1 P2.3 0 1 1 1 在每組行輸出時(shí)讀取 P2.7-P2.4,若全為“1”,則表示為“0”這一行沒(méi)有鍵閉合,否則有鍵閉合。由此得到閉合鍵的行值和列值,然后可采用計(jì)算法或查表法將閉合鍵的行值和列值轉(zhuǎn)換成所定義的鍵值 (4)為了保證鍵每閉合一次CPU僅作一次處理,必須卻除鍵釋放時(shí)的抖動(dòng)。 從以上分析得到鍵盤(pán)掃描程序的流程圖如圖25(見(jiàn)下頁(yè))所示。單片機(jī)在開(kāi)發(fā)過(guò)程中,常常會(huì)

23、因?yàn)橘Y源不足而不得不大量擴(kuò)展接口芯片以滿足應(yīng)用系統(tǒng)的需要,其中原因之一是人機(jī)界面中的鍵盤(pán)顯示占用了系統(tǒng)太多資源,從而造成系統(tǒng)龐大,同時(shí)降低了系統(tǒng)的可靠性。在單片機(jī)應(yīng)用系統(tǒng)中,鍵盤(pán)顯示通??刹捎靡韵聨追N方式:圖26鍵盤(pán)掃描程序的流程圖 采用串行接口的鍵盤(pán)顯示專用芯片,如 BC7280/81、HD7279、CH451 等。這類芯片占用CPU的資源少,傳輸速度較快,外圍器件要求也較少,在中小系統(tǒng)中都可得到廣泛的應(yīng)用。 24 音頻處理電路 241 說(shuō)明及特點(diǎn)音頻處理器集數(shù)字均衡器與數(shù)字功率放大為一體,是一種硬件與軟件的多功能數(shù)字音頻處理器??稍跀?shù)字狀態(tài)下對(duì)音頻進(jìn)行降噪、均衡、時(shí)間壓擴(kuò)、限幅,混響、增益

24、控制、聲像移動(dòng)等特技處理。在不變調(diào)的同時(shí)對(duì)聲音進(jìn)行壓、擴(kuò),從而最大限度地減少了干擾和失真,確保了音頻信號(hào)的質(zhì)量。具有高效率、高保真、輸出功率大、頻響范圍寬和沒(méi)有零瓢的特點(diǎn),可根椐現(xiàn)場(chǎng)環(huán)境對(duì)每一通道獨(dú)立調(diào)節(jié)高低音,均衡等并保存預(yù)設(shè)值,方便隨時(shí)調(diào)用。配備 RS-232 控制接口,方便與外部計(jì)算機(jī)控制軟件相連,通過(guò)虛擬數(shù)字調(diào)音臺(tái),我們可以實(shí)現(xiàn)操作面板的所有控制。方便隨時(shí)調(diào)用。多路音頻采集通道與4路線性輸入可進(jìn)行任意切換進(jìn)行現(xiàn)場(chǎng)監(jiān)聽(tīng)。 可根椐不同的使環(huán)境對(duì)背景噪聲,回聲,及各種雜音進(jìn)行消除,使監(jiān)聽(tīng)到的聲音層次分明,圓潤(rùn),飽滿,清晰。能用于補(bǔ)償房間的聲學(xué)缺陷或系統(tǒng)本身的缺陷。該數(shù)字音頻處理器具有以下特點(diǎn)

25、:2由CPU進(jìn)行所有操作的控制;3使用液晶顯示屏對(duì)各項(xiàng)操作進(jìn)行顯示;4有短路保護(hù)、熱保護(hù)、DC保護(hù)、VHF保護(hù)、削波限幅器、長(zhǎng)期輸出功率限制、AC保護(hù)等各項(xiàng)保護(hù)功能;5采用大功率電源變壓器,數(shù)字功率放大,保證功放有足夠的功率;6完善的系統(tǒng)降噪處理,減低噪聲,使音質(zhì)更加清晰;7配備RS-232 控制接口,方便與外部單片機(jī)控制軟件相連,通過(guò)虛擬數(shù)字調(diào)音臺(tái),實(shí)現(xiàn)面板操作的所有控制;242 原理及能實(shí)現(xiàn)功能其起主要作用的是帶運(yùn)算放大器的數(shù)字電位器,數(shù)字電位器部分的原理框圖如圖 2.6所示。圖2.7原理框圖由圖2.6可知,DS1667包含兩個(gè)電位器,每個(gè)電位器有各自的游標(biāo),它由一個(gè)包含在8位寄存器中的數(shù)

26、值來(lái)設(shè)定。每一個(gè)電位器由256個(gè)阻值相等的電阻器組成,相互間以及和最末端電阻器之間是以抽頭連接的。 另外,電位器可以用串聯(lián)的形式堆積起來(lái),也就是說(shuō),電位器0的高端連接到電位器1 的低端,作為堆棧電位器,堆棧選擇位用來(lái)選擇哪個(gè)電位器的游標(biāo)將出現(xiàn)在多路輸出端SOUT。如果0寫(xiě)進(jìn)堆棧多路輸出分配器,將連接游標(biāo)0到SOUT引腳。這個(gè)游標(biāo)將決定從堆棧電位器底部的256個(gè)抽頭中選擇哪一位。如果1被寫(xiě)進(jìn)堆棧多路輸出分配器,將選擇游標(biāo)1,堆棧電位器上部的256個(gè)抽頭中的其中之一連接到SOUT引腳。 通過(guò)17位I/O移位寄存器,數(shù)據(jù)可以從游標(biāo)0和游標(biāo)1寄存器以及堆棧選擇位中讀出或?qū)懭搿/O移位寄存器是3線串行

27、口負(fù)載,而3線串行口由RST、DQ和CLK組成。它通過(guò)傳送17位數(shù)而修改數(shù)據(jù)。只有當(dāng)RST輸入高電平時(shí),才允許通過(guò)DQ引腳串行寫(xiě)入數(shù)據(jù)。在RST端變?yōu)榈碗娖揭郧?,電位器總保持以前的?shù)值不變。當(dāng)RST變?yōu)榈碗娖胶?,電位器的?shù)值才會(huì)改變,當(dāng)RST輸入為低電平時(shí),DQ和CLK輸入不起作用。 當(dāng)RST是高電平時(shí),CLK輸入端由低到高轉(zhuǎn)變,有效數(shù)據(jù)被寫(xiě)進(jìn)I/O移位寄存器。無(wú)論時(shí)鐘輸入是高電平還是低電平,DQ引腳的輸入數(shù)據(jù)都可以改變,而只有滿足設(shè)置要求時(shí)DQ引腳的數(shù)值才被送入移位寄存器。數(shù)據(jù)寫(xiě)入總是以堆棧選擇位的數(shù)值開(kāi)始的。送入的下一個(gè)8位是規(guī)定電位器1的游標(biāo)設(shè)定數(shù)值,這8位數(shù)據(jù)的最高有效位首先送出,接下

28、來(lái)的8位是規(guī)定電位器0的游標(biāo)的設(shè)定數(shù)值,首先送出的也是最高有效位。送入的第17位數(shù)據(jù),是游標(biāo)0設(shè)定的最低有效位。如果寫(xiě)進(jìn)的數(shù)據(jù)少于17位數(shù),電位器設(shè)置的數(shù)值將是被寫(xiě)進(jìn)的數(shù)據(jù)加上以前未轉(zhuǎn)換的保留位。如果寫(xiě)進(jìn)的數(shù)據(jù)大于17位,最后的17位數(shù)據(jù)留在移位寄存器中。因此,如果送進(jìn)的數(shù)據(jù)不是17位,將導(dǎo)致電位器設(shè)置不準(zhǔn)確。 當(dāng)多位數(shù)據(jù)被寫(xiě)進(jìn)移位寄存器時(shí),以前的數(shù)據(jù)通過(guò)級(jí)聯(lián)串行口引腳 COUT 逐位移出,通過(guò)連接一個(gè)DS1667的COUT到另一個(gè)DS1667的DQ引腳,多個(gè)電位器能象鏈子一樣串接在一起,如圖2.7所示。圖2.8寫(xiě)數(shù)據(jù)圖2.9讀數(shù)據(jù)讀數(shù)據(jù)時(shí),DQ引腳處于懸浮狀態(tài)。當(dāng)RST保持低電平時(shí),位17總

29、是出現(xiàn)在COUT引腳,它通過(guò)電阻器反饋回DQ引腳,該數(shù)據(jù)通過(guò)讀設(shè)備讀出。RST引腳變成高電平則啟動(dòng)數(shù)據(jù)的傳送。CLK輸入端從低到高轉(zhuǎn)變時(shí),位17被送進(jìn)I/O移位寄存器的第一位,位16出現(xiàn)在COUT引腳和DQ引腳。當(dāng)17位全部傳送完后,數(shù)據(jù)已完全移至初始位置。當(dāng)RST變回低電平以結(jié)束數(shù)據(jù)傳送時(shí),數(shù)據(jù)(類似于讀發(fā)生以前的數(shù)值)被送進(jìn)游標(biāo)0、游標(biāo)1的寄存器和堆棧選擇位。實(shí)現(xiàn)的主要功能:1使用先進(jìn)的32位數(shù)字音頻處理器,進(jìn)行全程數(shù)字化處理,使整機(jī)性能更卓越。2抑制啟動(dòng)閥值可調(diào),通過(guò)調(diào)節(jié)反饋抑制器的閥值(-3dB至-9dB)使其能在不同激勵(lì)電平的情況下,可靠啟動(dòng)反饋抑制器的濾波器, 具有反饋抑制器所具有

30、功能。3數(shù)字音頻控制能對(duì)每一路進(jìn)行音量/平衡/衰減控制、高/低音控制、均衡調(diào)節(jié)和動(dòng)態(tài)范圍壓縮等功能的獨(dú)立調(diào)節(jié)。4液晶處理:對(duì)液晶顯示的背光、字符,數(shù)字、漢字、由CPU進(jìn)行處理。5背光LCD顯示屏,所有功能和設(shè)置LCD液晶顯示并可以通過(guò)RS232接口連接單片機(jī)進(jìn)行設(shè)置。6穩(wěn)壓電源:為系統(tǒng)提供穩(wěn)定的直流電源。第3章 定時(shí)器產(chǎn)生各種頻率的聲音的方法 3. 1 原理及說(shuō)明 以定時(shí)器產(chǎn)生特定頻率的方波信號(hào),以定時(shí)器產(chǎn)生各種頻率的聲音,可以由喇叭發(fā)出“DO”、“RE”、“ME”的音階,以定時(shí)器0工作于模式0,計(jì)時(shí)時(shí)間長(zhǎng)短按所發(fā)音的頻率而定,下表列出各個(gè)音符對(duì)應(yīng)的頻率值:圖31 頻率對(duì)應(yīng)表 定時(shí)器計(jì)數(shù)初值可

31、以由頻率值推得。由以下關(guān)系式可得: t=1/f(us); co=(int)t/2; lo=(8192-co)32; hi=(8192-co)/32; 其中符號(hào)的含義說(shuō)明如下: · f:頻率值 · t:方波寬度,以u(píng)s表示 · co:定時(shí)器所計(jì)數(shù)的次數(shù) · lo:計(jì)數(shù)初值低字節(jié) · hi:計(jì)數(shù)初值高字節(jié) 定時(shí)器每一個(gè)計(jì)數(shù)時(shí)間脈沖寬度為1.0us(石英振蕩晶體為12 MHz),為了方便匯編程序設(shè)計(jì),我們可以將各個(gè)音階頻率值對(duì)應(yīng)的計(jì)數(shù)初值先求出,在匯編語(yǔ)言中以查表的方式來(lái)加載計(jì)數(shù)初值。 執(zhí)行結(jié)果如下: =8051 timer mode 0 sound

32、 value calculator= XTAL=12 MHz f=523 co=956 TH0 value=226 TL0 value= 4 f=587 co=851 TH0 value=229 TL0 value=13 f=659 co=758 TH0 value=232 TL0 value=10 f=698 co=716 TH0 value=233 TL0 value=20 f=784 co=637 TH0 value=236 TL0 value= 3 f=880 co=568 TH0 value=238 TL0 value= 8 f=987 co=506 TH0 value=240 TL

33、0 value= 6 f=1046 co=478 TH0 value=241 TL0 value= 2 f=1174 co=425 TH0 value=242 TL0 value=23 f=1318 co=379 TH0 value=244 TL0 value= 5 f=1396 co=358 TH0 value=244 TL0 value=26 f=1567 co=319 TH0 value=246 TL0 value= 1 f=1760 co=284 TH0 value=247 TL0 value= 4 f=1975 co=253 TH0 value=248 TL0 value= 3 an

34、y keyte continue 8051控制程序執(zhí)行后,將示波器接往8051 P3_4引腳,可以測(cè)量所輸出的方波信號(hào),其寬度依不同音階而變,此時(shí)喇叭發(fā)出“DO”、“RE”、“ME”的音階,一共14個(gè)單音,包含兩個(gè)八度音,若拔下KI鍵則喇叭再次發(fā)出聲音測(cè)試。 32 定時(shí)器的工作表3.1定時(shí)器工作方式寄存器TMOD格式表3.2 M1 M0工作方式選擇位C/T記數(shù)/定時(shí)方式選擇位 GATE門(mén)控位。 定時(shí)器模式0的工作: 在模式0時(shí)定時(shí)器0可以進(jìn)行13位的計(jì)時(shí),其值保存在兩個(gè)8位的定時(shí)寄存器中,分別為T(mén)L0及TH0(定時(shí)器0)。321 啟動(dòng)定時(shí)器及計(jì)時(shí)工作脈沖 開(kāi)關(guān)控制位GATE=0時(shí),只要TR0=

35、l,定時(shí)器0便會(huì)工作。 · 開(kāi)關(guān)控制位GATE=1時(shí),除了TR0=1,外部INT0引腳,還必須是高電平才行。 利用條件2,定時(shí)器必須等待外部引腳INT0的輸入信號(hào)變?yōu)楦唠娖讲砰_(kāi)始計(jì)時(shí),因此可以用來(lái)測(cè)量輸入INT0引腳的高電平信號(hào)時(shí)間的長(zhǎng)短,這在工廠產(chǎn)品自動(dòng)化生產(chǎn)測(cè)試系統(tǒng)中是一項(xiàng)經(jīng)常使用的測(cè)量技巧。平時(shí)在單片機(jī)程序控制中,若使用定時(shí)器內(nèi)部時(shí)鐘工作,C/T=0,GATE=0,在模式0下,只要下達(dá)指令: MOV TMOD,#00H便可以設(shè)置定時(shí)器0于模式0開(kāi)始計(jì)時(shí)工作。只要將TR0(TCON位4)設(shè)為l,定時(shí)器便會(huì)開(kāi)始工作了。 定時(shí)器的工作時(shí)鐘可以由內(nèi)部或是外部來(lái)提供,由 C/T 位(在T

36、MOD 中)來(lái)決定,當(dāng)C/T=1時(shí),由外部引腳T0來(lái)提供,作為計(jì)數(shù)器時(shí)使用。當(dāng)C/T=0時(shí),則由內(nèi)部時(shí)鐘來(lái)提供,作為一般的定時(shí)器使用。而定時(shí)器的時(shí)鐘為系統(tǒng)工作時(shí)鐘除 12。石英振蕩晶體使用110592 Maz,所以定時(shí)器每一個(gè)計(jì)數(shù)時(shí)間脈沖寬度為: 12/110592 MHz=1085us 若石英振蕩晶體改為12 MHz,定時(shí)器每一個(gè)計(jì)數(shù)時(shí)間脈沖寬度為: 12/12MHz=10us 計(jì)時(shí)模式0可以進(jìn)行13位的計(jì)數(shù),其值是以下列方式存儲(chǔ)在寄存器TL0及TH0中: 表3.3 因此最長(zhǎng)的計(jì)時(shí)時(shí)間為1085 us×8192=8888 ms。 322 計(jì)時(shí)時(shí)間長(zhǎng)短設(shè)置及計(jì)時(shí)溢位處理 8051 定

37、時(shí)器是以上述的方式來(lái)計(jì)數(shù),在模式 0 下共可計(jì)數(shù) 13 位,計(jì)數(shù)器值最多為8192(2 的13次方),由0數(shù)到8192便產(chǎn)生溢位而引發(fā)中斷信號(hào),產(chǎn)生定時(shí)器0的中斷(TF0=I)。問(wèn)題是我們可能只要計(jì)數(shù) 100個(gè)脈沖便產(chǎn)生中斷,只要將初值 8092(8192-100)加載計(jì)數(shù)器便可,一旦啟動(dòng)定時(shí)器后,計(jì)數(shù)變?yōu)?093、8094、一直到8192則產(chǎn)生中斷,就計(jì)數(shù)100次了,而時(shí)間長(zhǎng)度為: 1085 us×100=1085us 也就是經(jīng)過(guò)1085/us后便產(chǎn)生中斷了。 至于載入定時(shí)器的初值,計(jì)算如下: TL0=(8192-C)MOD32 TH0=(8192-C)/32 其中,C為所要計(jì)數(shù)的

38、值,MOD為取余數(shù)的運(yùn)算,除以32后取余數(shù)部分。其中“/”為除法運(yùn)算,在做完除法后取整數(shù)部分。 若計(jì)數(shù)次數(shù)為100,C=100,可得: TLO=28 TH0=252: · 檢查其中斷控制寄存器TCON中的TF0及TFl位,若為1則代表產(chǎn)生計(jì)時(shí)溢位了。 · 執(zhí)行相對(duì)應(yīng)的中斷服務(wù)程序。 一般程序設(shè)計(jì)中以方式 2 較常用,一旦計(jì)數(shù)終止產(chǎn)生溢位后便引發(fā)計(jì)時(shí)中斷,若先前已設(shè)置好計(jì)時(shí)中斷服務(wù)程序,則會(huì)自動(dòng)跳去執(zhí)行計(jì)時(shí)中斷服務(wù)程序,在程序中再加載計(jì)數(shù)初值后重新計(jì)數(shù),當(dāng)計(jì)數(shù)終上時(shí),又產(chǎn)生計(jì)時(shí)中斷,如此一直循環(huán)下去,便可以每隔一段時(shí)間自動(dòng)去執(zhí)行中斷服務(wù)程序,這樣的設(shè)計(jì)架構(gòu)是單片機(jī)程序設(shè)計(jì)中常

39、用的技巧,也是一種簡(jiǎn)單的多任務(wù)程序設(shè)計(jì)方法。 第3章 程序說(shuō)明及流程圖 本次工程實(shí)訓(xùn)中,可以學(xué)習(xí)利用單片機(jī)定時(shí)器來(lái)產(chǎn)生固定頻率的方波信號(hào)推動(dòng)壓電喇叭,發(fā)出旋律。可存儲(chǔ)式電子琴所輸入的音階值,是存入內(nèi)存一般用途RAM區(qū),范圍為空間為30H7FH,共64字節(jié),因此最大存儲(chǔ)音階容量為64個(gè)音階,由于可使用的內(nèi)存有限,目前只設(shè)計(jì)單音拍子演奏長(zhǎng)度固定為一拍,實(shí)際演奏一拍的長(zhǎng)度可以依需要由延遲參數(shù)來(lái)決定。 目前控制程序只在按鍵按下放開(kāi)后才演奏單音,并沒(méi)有像標(biāo)準(zhǔn)琴鍵那樣可以有按鍵發(fā)音并持續(xù)發(fā)音功能,直到按鍵放開(kāi)來(lái),或是按下一段時(shí)間后單音才停止發(fā)音。由于單音的演奏是由定時(shí)器中斷程序來(lái)控制,可以在演奏單音的同時(shí)

40、并偵測(cè)按鍵是按下,或是放開(kāi),適當(dāng)?shù)男薷某绦颍梢赃_(dá)到上述功能。 (見(jiàn)附錄)為主程序控制的工作流程。 在主控程序循環(huán)中主要工作為等待是否確按鏈,若有按鍵則做相應(yīng)的按鍵功能處理,是K8鍵則開(kāi)始演奏存在內(nèi)存內(nèi)的音階,若是K9鍵則清除計(jì)數(shù)。若是其他按鍵則顯示按鍵值,演奏單音,將按鍵值存入內(nèi)存,計(jì)數(shù)增加,最后判斷計(jì)數(shù)值是否超過(guò)最大存儲(chǔ)音階容量64個(gè)音階。 可存儲(chǔ)式電子琴的控制程序文件名為PORASM,,在程序的最后有以下的指令: SINCLUDE(PORlASM)表示在主程序PORASM 的最后還會(huì)自動(dòng)加載另一程序PORlASM程序一起進(jìn)來(lái)匯編及編譯,這是為了方便程序編輯用,一些測(cè)試正確的程序代碼可以分

41、別存檔好方便管理,此外整個(gè)程序源代碼長(zhǎng)度也不至于太長(zhǎng)而不方便編輯。PORlASM 主要的程序代碼功能為L(zhǎng)CD控制程序碼,在很多專題設(shè)計(jì)中都有用到。 參考文獻(xiàn)1.徐愛(ài)軍.8051單片機(jī)實(shí)踐教程.北京.電子工業(yè)出版社.20052.王建校等.51系列單片機(jī)及C51程序設(shè)計(jì).北京.科學(xué)出版社.20023.李葉紫等.MCS-51單片機(jī)應(yīng)用教程.北京.清華大學(xué)出版社.20044.徐仁貴、廖哲智.單片微型計(jì)算機(jī)應(yīng)用技術(shù).北京.機(jī)械工業(yè)出版社.20015.李玉峰等編著.MCS-51系列單片機(jī)原理與接口技術(shù).北京.人民郵電出版社.20046單片機(jī)和液晶顯示器接口及驅(qū)動(dòng)技術(shù) -選自中國(guó)測(cè)試技術(shù)2004 年3 月3

42、0 卷2 期7.PIC單片機(jī)的應(yīng)用設(shè)計(jì)技巧 黃世澤,曾萍,郭其一 -選自單片機(jī)與嵌入式系統(tǒng)應(yīng)用2006年8期8.利用單片機(jī)I/O口直接驅(qū)動(dòng)LCD 劉颋鵬 -選自單片機(jī)與嵌入式系統(tǒng)應(yīng)用2006年5期9.現(xiàn)場(chǎng)總線工業(yè)控制網(wǎng)絡(luò)技術(shù) 夏繼強(qiáng) ,刑春香 -選自單片機(jī)與嵌入式系統(tǒng)應(yīng)用2005年6期10.單片機(jī)應(yīng)用系統(tǒng)抗干擾技術(shù)的研究 張軍;胡孝昌; 135-137 -選自計(jì)算機(jī)測(cè)量與控制2006年第3期11 12 13 14 附錄1(程序清單)RS EQU P0.0 ; RS引腳由P0.0控制EN EQU P0.1 ; EN引腳由P0.1控制K_INT EQU P2.7 ; 中斷鍵接P2.7引腳WLED

43、EQU P3.7 ; P3.7控制工作指示燈D2SPK EQU P3.4 ; P3.4控制壓電喇叭FKEY EQU 20H.0 ; 按鍵標(biāo)志,有按鍵時(shí)FKEY=1MNO EQU 64 ;最大內(nèi)存空間為64字節(jié),30H6FHMEM EQU 30H ;MEN設(shè)定為內(nèi)存起始地址L0 EQU 71H ; 定義變量用來(lái)記錄計(jì)數(shù)初值低字節(jié)H1 EQU 72H ; 定義變量用來(lái)記錄計(jì)數(shù)初值高字節(jié)BUF_KEY EQU 73H ; 按鍵數(shù)據(jù)緩沖區(qū)KEY_NO EQU 74H ; 用來(lái)存儲(chǔ)按鍵編號(hào)NO EQU 75H ; 存儲(chǔ)按鍵的個(gè)數(shù)CO EQU 76H ; 計(jì)數(shù)變量X EQU 77H ; LCD顯示的相對(duì)地

44、址;.ORG 00H LJMP BEGINORG 0BH ;0BH為定時(shí)器0中斷地址LJMP T0_INT;-ORG 0026HBEGIN: LCALL LED_BL ;調(diào)用LED_B 子函數(shù) ,D2閃動(dòng),表示程序開(kāi)始執(zhí)行 MOV TMOD,#00000000B ;設(shè)置TMOD,使定時(shí)器0工作模式為模式0 MOV IE,#10000010B ;啟用定時(shí)器0中斷產(chǎn)生 CLR EN ;LCD OFF LCALL SET_LCD ;LCD 初始化 LCALL SOUND_ON ;喇叭打開(kāi) MOV R4,#1 ;R4表示的是音階 MOV R3,#1 ;R3表示的是拍數(shù) LCALL PLAY ; 確定發(fā)

45、音的音階,控制喇叭的開(kāi)關(guān) MOV R4,#2 MOV R3,#1 LCALL PLAY MOV R4,#3 MOV R3,#1 LCALL PLAY LJMP RUN ;開(kāi)始執(zhí)行主程序 JMP $ PLAY: ; 確定發(fā)音的音階,控制喇叭的開(kāi)關(guān) LCALL LOAD_VALUE ;載入定時(shí)器0計(jì)數(shù)初值 LCALL SOUND_ON ;喇叭打開(kāi),;*;DECIDE PLAY LENGH.PL1:MOV R5,#30 ;延時(shí)150ms LCALL DELAY ;調(diào)用延時(shí)子函數(shù) DJNZ R3,PL1 ;喇叭打開(kāi),啟動(dòng)定時(shí)器0開(kāi)始計(jì)時(shí) ; PAUSE LCALL SOUND_OFF ;喇叭關(guān)閉沒(méi)有聲音,停止定時(shí)器0計(jì)時(shí)動(dòng)作 MOV R5,#3 ;延時(shí)15ms LCALL DELAY RET;-SOUND_ON: ;喇叭打開(kāi) SETB TR0 ;啟動(dòng)定時(shí)器0開(kāi)始計(jì)時(shí) RET;-SOUND_OFF: ;喇叭關(guān)閉 CLR TR0 ;停止定時(shí)器0計(jì)時(shí)動(dòng)作 RET;-LOAD_VALU

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論