版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 《單片機(jī)原理與應(yīng)用設(shè)計(jì)》項(xiàng)目設(shè)計(jì)報(bào)告</p><p> 課程名稱 單片機(jī)原理與應(yīng)用設(shè)計(jì) </p><p> 任課教師 </p><p> 設(shè)計(jì)題目 數(shù)字音樂(lè)盒 </p>
2、<p> 班 級(jí) 09級(jí)電子信息工程 </p><p> 姓 名 </p><p> 學(xué) 號(hào) </p><p> 成 績(jī)
3、 </p><p> 日 期 2012年6月12日 </p><p><b> 目錄</b></p><p><b> 摘要- 2 -</b></p><p> 1系統(tǒng)設(shè)計(jì)分析- 3 -<
4、/p><p> 1.1設(shè)計(jì)要求- 3 -</p><p> 1.2總體設(shè)計(jì)- 3 -</p><p> 1.3硬件電路設(shè)計(jì)及實(shí)現(xiàn)- 3 -</p><p> 2系統(tǒng)硬件設(shè)計(jì)- 5 -</p><p> 2.1 AT89C51 芯片功能和硬件連接- 5 -</p><p>
5、2.2系統(tǒng)復(fù)位電路的設(shè)計(jì)- 6 -</p><p> 2.3時(shí)鐘電路模塊- 6 -</p><p> 2.4輸出顯示電路- 7 -</p><p> 2.5音頻輸出部分- 7 -</p><p> 2.6整體硬件電路- 8 -</p><p> 2.6.1鍵盤(pán)按鍵- 9 -</p>
6、<p> 2.6.2原理說(shuō)明- 9 -</p><p> 3音符頻率和節(jié)拍的產(chǎn)生方法- 10 -</p><p> 3.1音符頻率- 10 -</p><p> 3.2利用定時(shí)器/計(jì)數(shù)器0產(chǎn)生音符頻率- 10 -</p><p> 4系統(tǒng)軟件設(shè)計(jì)- 11 -</p><p> 4.1 主
7、模塊的設(shè)計(jì)- 11 -</p><p> 4.2 外部中斷源系統(tǒng)設(shè)計(jì)- 12 -</p><p> 4.3基本顯示模塊設(shè)計(jì)- 13 -</p><p> 4.4音調(diào)、節(jié)拍以及編碼的確定方法- 14 -</p><p> 5總結(jié)- 14 -</p><p> 6參考文獻(xiàn)- 15 -</p>
8、;<p> 7附件- 15 -</p><p> 參考程序- 15 -</p><p><b> 摘要</b></p><p> 電子音樂(lè)已廣泛地應(yīng)用于社會(huì)生活的各個(gè)領(lǐng)域。其類(lèi)型從音樂(lè)卡片到CD、MP3 等多種多樣,制作原理也各不相同。聲音是通過(guò)振動(dòng)產(chǎn)生的。單片機(jī)對(duì)某一I/O引腳以一定的頻率循環(huán)置1和清0,這一引腳便產(chǎn)
9、生一定頻率的方波,該方波通過(guò)放大后作用于揚(yáng)聲器便產(chǎn)生一定頻率的聲音。若改變輸出方波的頻率,產(chǎn)生的聲音也就改變了。通過(guò)控制輸出方波的時(shí)間長(zhǎng)短,聲音的長(zhǎng)短也就得到控制。因此,根據(jù)樂(lè)譜,單片機(jī)就可產(chǎn)生電子音樂(lè)。音樂(lè)中最關(guān)鍵的兩個(gè)要素是音符和節(jié)拍。單片機(jī)控制的音樂(lè)發(fā)生器系統(tǒng)由硬件電路和軟件兩部分構(gòu)成。利用單片機(jī)控制的電子音樂(lè)發(fā)生器軟硬件上具有獨(dú)特的優(yōu)點(diǎn),系統(tǒng)的開(kāi)發(fā)周期短,成本低,電路制作容易。更換歌曲時(shí),硬件電路無(wú)需作任何修改,只需修改軟件即可
10、實(shí)現(xiàn)。軟件編程時(shí),可用51系列單片機(jī)的匯編語(yǔ)言或C51語(yǔ)言實(shí)現(xiàn)。同時(shí)還可根據(jù)個(gè)人的習(xí)好通過(guò)軟件改變節(jié)拍的延時(shí)時(shí)間,增加電子音樂(lè)的趣味性。</p><p> 本設(shè)計(jì)是基于51系列單片機(jī),蜂鳴器,數(shù)碼管LCD的數(shù)字音樂(lè)盒設(shè)計(jì),通過(guò)利用i/o一定頻率的方波,驅(qū)動(dòng)蜂鳴器,發(fā)出不同的音調(diào),從而演奏各種樂(lè)曲(本設(shè)計(jì)為十首,若有必要,可以增加),可以通過(guò)功能鍵來(lái)選擇樂(lè)曲,暫停,播放,前進(jìn),后退等功能。</p>
11、<p> 音樂(lè)盒的電路設(shè)計(jì)過(guò)程在硬件與軟件方面進(jìn)行同步。其中,硬件方面選擇內(nèi)部存儲(chǔ)資源豐富的AT89C51單片機(jī),時(shí)鐘采用12MHZ晶體振蕩電路。軟件方面,從分析電路各個(gè)功能子模塊的功能、流程圖設(shè)計(jì),在到程序的編寫(xiě)設(shè)計(jì)均進(jìn)行了綜合的考慮。編成語(yǔ)言從程序總體設(shè)計(jì)以及高效性的硬件方面考慮,采用匯編語(yǔ)言進(jìn)行編寫(xiě)。</p><p><b> 1系統(tǒng)設(shè)計(jì)分析</b></p>
12、<p><b> 設(shè)計(jì)要求</b></p><p> 以單片機(jī)為核心器件組成一個(gè)音樂(lè)盒。</p><p> 利用I/O口產(chǎn)生一定頻率的方波,驅(qū)動(dòng)蜂鳴器,發(fā)出不同的音調(diào),從而演奏樂(lè)曲。</p><p> 音樂(lè)盒音符范圍,C調(diào)低音5——高音5。</p><p> 內(nèi)部存放十二首可以播放的歌曲。</
13、p><p> 利用鍵盤(pán)選擇歌曲,每個(gè)按鍵對(duì)應(yīng)不同的歌曲,還應(yīng)有停止、上一曲,下一曲功能的按鍵。</p><p> 采用LED顯示歌曲序號(hào)</p><p> 利用LCD液晶顯示歌曲的序號(hào)、播放時(shí)間,開(kāi)機(jī)時(shí)顯示英文歡迎提示字符。</p><p><b> 總體設(shè)計(jì)</b></p><p> 選擇
14、89C51單片機(jī):</p><p> 用P1.0~P1.7控制按鍵,其中P1.0~P1.3掃描行,P1.4~P1.7掃描列</p><p> 用P0.0~P0.7控制LED,顯示數(shù)字0~9及字母ABCF</p><p> 用P3.7口控制蜂鳴器</p><p> 電路為12MHZ晶振頻率工作,起振電路中C1,C2均為30pf</
15、p><p><b> 采用上電自動(dòng)復(fù)位</b></p><p> 1.3硬件電路設(shè)計(jì)及實(shí)現(xiàn)</p><p> 本設(shè)計(jì)中用到了AT89C51單片機(jī),4*4鍵盤(pán),蜂鳴器,2 LCD等硬件電路常用元器件。總體框圖如下:</p><p> 1-1硬件系統(tǒng)總體框圖</p><p> 利用單片機(jī)內(nèi)部定時(shí)
16、器/計(jì)數(shù)器0與P3.7引腳配合,構(gòu)成音頻發(fā)生器,2N2905與R2組成音頻放大器,驅(qū)動(dòng)揚(yáng)聲器輸出。選擇按鍵通過(guò) P1引腳接入,工作在中斷方式。器件的參數(shù)選擇可以參考硬件電路原理圖中給出的值。音樂(lè)盒硬件電路原理圖如下:</p><p><b> 1-2硬件電路仿真</b></p><p><b> 2系統(tǒng)硬件設(shè)計(jì)</b></p>
17、<p> 本設(shè)計(jì)中用到了AT89C51單片機(jī),4*4鍵盤(pán),蜂鳴器,2 LCD等硬件電路常用元器件。</p><p> 2.1 AT89C51 芯片功能和硬件連接</p><p> AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器的低電壓,高性能CMOS8位微處理器,俗稱單片機(jī)。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管
18、腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。</p><p> 2-1 AT89C51芯片引腳圖</p><p><b> VCC:正電源端</b></p><p> GND:單片機(jī)的接地端</p><
19、p> XTAL1/XTAL2:片內(nèi)振蕩電路輸入/輸出端,兩端跨接晶體或陶瓷諧振器,與單片機(jī)內(nèi)部反相器構(gòu)成穩(wěn)定的自激振蕩器。發(fā)出的脈沖直接送入片內(nèi)定的控制部件</p><p><b> RESET:復(fù)位端</b></p><p> EA/VPP:尋址外部ROM控制端/編程電源輸入端。</p><p> ALE/PROG:地址鎖存允許
20、/編程脈沖輸入端。</p><p> PSEN:尋址外部程序存儲(chǔ)器,選通外部EPROM的端口(OE)。</p><p> P0.0~P0.7 P1.0~P1.7 P2.0~P2.7:準(zhǔn)雙向I/O口。</p><p> P3.0~P3.7:具有特定的第二功能(準(zhǔn)雙向I/O口)。</p><p> 2.2系統(tǒng)復(fù)位電路的設(shè)計(jì)</p
21、><p> 智能系統(tǒng)一般應(yīng)有手動(dòng)或上電復(fù)位電路。復(fù)位電路的實(shí)現(xiàn)通常有兩種方式:RC復(fù)位電路和專用µP監(jiān)控電路。前者實(shí)現(xiàn)簡(jiǎn)單,成本低,但復(fù)位可靠性相對(duì)較低;后者成本較高,但復(fù)位可靠性高,尤其是高可靠重復(fù)復(fù)位。對(duì)于復(fù)位要求高、并對(duì)電源電壓進(jìn)行監(jiān)視的場(chǎng)合,大多采用這種方式。</p><p><b> 2-1 復(fù)位電路</b></p><p>
22、;<b> 2.3時(shí)鐘電路模塊</b></p><p> 時(shí)鐘電路在單片機(jī)系統(tǒng)中起著非常重要的作用,是保證系統(tǒng)正常工作的基礎(chǔ)。在一個(gè)單片機(jī)應(yīng)用系統(tǒng)中,時(shí)鐘是保障系統(tǒng)正常工作的基準(zhǔn)振蕩定時(shí)信號(hào),主要由晶振和外圍電路組成,晶振頻率的大小決定了單片機(jī)系統(tǒng)工作的快慢。為達(dá)到振蕩周期是12MHZ的要求,這里要采用12MHZ的晶振,另外有兩個(gè)22P的獨(dú)石電容,兩晶振引腳分別連到XTAL1和XTAL2
23、振蕩脈沖輸入引腳。具體連接圖如圖2-2所示:</p><p> 2-2 時(shí)鐘模塊電路</p><p><b> 2.4輸出顯示電路</b></p><p> 用P2.0~P2.2作為L(zhǎng)CD的RS、R/W、E的控制信號(hào);用P0.0~P0.7作為L(zhǎng)CD的D0~D7的控制信號(hào)。由于P0口作為輸出,應(yīng)加上拉電阻。</p><p
24、><b> 2.5音頻輸出部分</b></p><p> 整個(gè)輸出部分由一個(gè)100uF電容、兩個(gè)S9013 NPN三極管和一個(gè)蜂鳴器/喇叭組成,原理圖如右圖所示:</p><p> 100uF電容是用來(lái)濾波的,兩個(gè)NPN三極管起到放大信號(hào)的作用,最后由蜂鳴器/喇叭表現(xiàn)出信號(hào)。用P3.7口控制蜂鳴器。輸出顯示電路如圖2-3所示:</p><
25、;p><b> 2-3輸出顯示電路</b></p><p><b> 2.6整體硬件電路</b></p><p> 2-4音樂(lè)盒硬件電路原理圖</p><p><b> 2.6.1鍵盤(pán)按鍵</b></p><p><b> 鍵盤(pán)按鍵分布如下:</
26、b></p><p><b> 按鍵功能說(shuō)明:</b></p><p><b> 2.6.2原理說(shuō)明</b></p><p> 當(dāng)鍵盤(pán)有鍵按下時(shí),判斷鍵值,啟動(dòng)計(jì)數(shù)器T0,產(chǎn)生一定頻率的脈沖,驅(qū)動(dòng)蜂鳴器,放出樂(lè)曲。同時(shí)啟動(dòng)定時(shí)器T1,顯示樂(lè)曲播放的時(shí)間,并驅(qū)動(dòng)LCD,顯示歌曲號(hào)及播放時(shí)間。</p>
27、<p> 1) 硬件電路中用P1.0~P1.7控制按鍵,其中P1.0~P1.3掃描行,P1.4~P1.7掃描列;</p><p> 2)用P2.0~P2.2作為L(zhǎng)CD的RS、R/W、E的控制信號(hào);</p><p> 3)用P0.0~P0.7作為L(zhǎng)CD的D0~D7的控制信號(hào);</p><p> 4)用P3.7口控制蜂鳴器;</p>&
28、lt;p> 5)電路為12MHz晶振頻率工作,起振電路中C1,C2均為30pf。</p><p> 3音符頻率和節(jié)拍的產(chǎn)生方法</p><p><b> 3.1音符頻率</b></p><p> 我們知道,之所以有不同的音調(diào)正是因?yàn)椴煌囊舴麑?duì)應(yīng)不同的頻率。表1-3給出了我們從低音1到高音7所對(duì)應(yīng)的頻率。即在編程時(shí)我們要根據(jù)音調(diào)的
29、變化調(diào)整頻率的變化。</p><p> 3.2利用定時(shí)器/計(jì)數(shù)器0產(chǎn)生音符頻率</p><p> 利用單片機(jī)的內(nèi)部定時(shí)器/計(jì)數(shù)器0,使其工作在模式1,定時(shí)中斷,然后控制P3.7引腳的輸出每次取反,就可以在P3.7的引腳輸出相應(yīng)的方波頻率。改變計(jì)數(shù)初值就可以改變頻率。即要產(chǎn)生音頻輸出方波,首先要算出某一個(gè)音頻的周期(1/f),然后將此周期除以2,得到半個(gè)周期的時(shí)間。定時(shí)器的定時(shí)時(shí)間等于半
30、個(gè)周期,定時(shí)時(shí)間到就將輸出脈沖取反,重復(fù)上述過(guò)程,就可以在P3.7腳上得某一音頻的脈沖。</p><p> 例如:中音1(DO)的頻率=523Hz,周期T=1/523s=1912毫秒;</p><p> 定時(shí)器/計(jì)數(shù)器0的定時(shí)時(shí)間為:T/2=956毫秒;</p><p> 定時(shí)956毫秒的計(jì)數(shù)值=定時(shí)時(shí)間/機(jī)器周期=956毫秒/1毫秒=956(時(shí)鐘頻率=12M
31、Hz)</p><p> 裝入TH0、TL0的計(jì)數(shù)初值THTL=65536-956=64580.</p><p> 將64580裝入TH0、TL0寄存器中,啟動(dòng)T1工作后,每計(jì)數(shù)956次時(shí)將產(chǎn)生溢出中斷,進(jìn)入中斷服務(wù)程序是,每次對(duì)P3.0引腳的輸出值進(jìn)行取反,就可得到中音DO(523Hz)的音符頻率。</p><p> 表3-1 音符與頻率、編碼及定時(shí)器初值對(duì)
32、應(yīng)表</p><p><b> 4系統(tǒng)軟件設(shè)計(jì)</b></p><p> 4.1 主模塊的設(shè)計(jì)</p><p> 主模塊是系統(tǒng)軟件的主框架。結(jié)構(gòu)化程序設(shè)計(jì)一般有“自上而下”和“自下而上”兩種方式,“自上而下”法的核心就是主框架的構(gòu)建。它的合理與否關(guān)系到程序最終的功能的多少和性能的好壞。本系統(tǒng)的主模塊的程序框圖如下圖4-1所示:</p
33、><p><b> 4-1程序框圖</b></p><p> 4.2 外部中斷源系統(tǒng)設(shè)計(jì)</p><p> 在本設(shè)計(jì)中中斷源是采用外部中斷0方式,其入口地址是0003H。其中斷響應(yīng)級(jí)別最高。</p><p> ?。?)定時(shí)器/計(jì)數(shù)器</p><p> 工作方式寄存器TMOD用于選擇定時(shí)器/計(jì)數(shù)
34、器的工作方式和工作模式。其格式如下表4.1:</p><p><b> 表4-2</b></p><p> 下面表4.2對(duì)TMOD各位進(jìn)行說(shuō)明:</p><p><b> 門(mén)控位—GATE</b></p><p> 工作方式選擇位—M1、M0</p><p><
35、b> 表4-3</b></p><p> 其中,在本設(shè)計(jì)中采用方式1的16位定時(shí)器/計(jì)數(shù)器。</p><p> —計(jì)數(shù)器模式和定時(shí)器模式選擇位</p><p> =0,為定時(shí)器模式。</p><p><b> =1,為計(jì)數(shù)模式。</b></p><p> 定時(shí)器/計(jì)數(shù)
36、器控制寄存器TCON,其格式如下表4.3:</p><p><b> 表4-4</b></p><p><b> 其各位的功能如下:</b></p><p> TF1、TF0—計(jì)數(shù)溢出標(biāo)志位當(dāng)計(jì)數(shù)器溢出時(shí),該位置1。</p><p> TR1、TR0—計(jì)數(shù)運(yùn)行控制位</p>&
37、lt;p> 4.3基本顯示模塊設(shè)計(jì)</p><p> 基本顯示模塊設(shè)計(jì)的重點(diǎn)是由顯示代碼取得相應(yīng)的段碼,顯示段碼數(shù)據(jù)的并行發(fā)送,高精度的計(jì)時(shí)工具大多數(shù)都使用了石英晶體振蕩器,由于電子鐘,石英表,石英鐘都采用了石英技術(shù),因此走時(shí)精度高,穩(wěn)定性好,使用方便,不需要經(jīng)常調(diào)校,數(shù)字式電子鐘用集成電路計(jì)時(shí)時(shí),譯碼代替機(jī)械式傳動(dòng),用LED顯示器代替顯示器代替指針顯示進(jìn)而顯示時(shí)間,減小了計(jì)時(shí)誤差,這種表具有時(shí),分,秒
38、顯示時(shí)間的功能,還可以進(jìn)行時(shí)和分的校對(duì),片選的靈活性好。</p><p> 程序流程如圖4-5所示:</p><p><b> 圖4-5</b></p><p> 4.4音調(diào)、節(jié)拍以及編碼的確定方法</p><p> 一般說(shuō)來(lái),單片機(jī)演奏音樂(lè)基本都是單音頻率,它不包含相應(yīng)幅度的諧波頻率,也就是說(shuō)不能像電子琴那樣能
39、奏出多種音色的聲音。因此單片機(jī)奏樂(lè)只需弄清楚兩個(gè)概念即可,也就是“音調(diào)”和節(jié)拍表示一個(gè)音符唱多長(zhǎng)的時(shí)間。</p><p><b> 5總結(jié)</b></p><p> 經(jīng)過(guò)兩個(gè)星期的努力,本次單片機(jī)設(shè)計(jì)的任務(wù)——基于單片機(jī)電子音樂(lè)盒的設(shè)計(jì)已經(jīng)完成。雖然對(duì)于完成題目的基本要求而言難度并不十分大,但能夠從設(shè)計(jì)、論證、制板、編程到最終的調(diào)試成功,完整系統(tǒng)地獨(dú)立完成一項(xiàng)單片
40、機(jī)作品這是一次難得的實(shí)踐機(jī)會(huì)。</p><p> 最終完成的電子音樂(lè)盒作品系統(tǒng)實(shí)用性強(qiáng)、結(jié)構(gòu)簡(jiǎn)單、成本低、外接元件少。在實(shí)際應(yīng)用中工作性能穩(wěn)定,系統(tǒng)功能、指標(biāo)達(dá)到了課題的預(yù)期要求。系統(tǒng)在硬件設(shè)計(jì)上充分考慮到了可擴(kuò)展性,充分利用單片機(jī)閑置的P1口,添加了LCD點(diǎn)陣移位顯示部分,使得作品圖聲并茂,增加趣味的同時(shí)也提高了單片機(jī)的利用率。</p><p> 但是這次設(shè)計(jì)仍存在一些需要改進(jìn)之處。
41、如音樂(lè)盒功能部分中,按鍵選擇只有在一首歌曲結(jié)束之后才能生效,而不能在歌曲播放過(guò)程中使中斷生效跳轉(zhuǎn)播放下一首音樂(lè)。</p><p> 通過(guò)這次單片機(jī)實(shí)踐設(shè)計(jì),我深刻地認(rèn)識(shí)到學(xué)好專業(yè)知識(shí)的重要性,也理解了理論聯(lián)系實(shí)際的含義,并且檢驗(yàn)了大學(xué)三年的學(xué)習(xí)成果。雖然在這次設(shè)計(jì)中對(duì)知識(shí)的運(yùn)用和銜接還不夠熟練。但是我們將在以后的學(xué)習(xí)中會(huì)繼續(xù)努力、不斷完善。這次的設(shè)計(jì)是對(duì)過(guò)去所學(xué)知識(shí)的系統(tǒng)提高和擴(kuò)充的過(guò)程,今后我將不斷加深理論基
42、礎(chǔ)和實(shí)踐能力,在以后的學(xué)習(xí)實(shí)踐中取得更大的進(jìn)步。</p><p><b> 6參考文獻(xiàn)</b></p><p> [1]韓志軍,沈晉源等.單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì):入門(mén)向?qū)c設(shè)計(jì)實(shí)例.北京:機(jī)械工業(yè)出版社,2005.88~94</p><p> [2]戴佳,戴衛(wèi)恒等.51單片機(jī)C語(yǔ)言應(yīng)用程序設(shè)計(jì)實(shí)例精講.北京:電子工業(yè)出版社,2006.152~
43、156</p><p> [3]沈慶陽(yáng).8051單片機(jī)實(shí)踐與應(yīng)用.北京:清華大學(xué)出版社,2002.139~143</p><p> [4]王幸之,鐘愛(ài)琴等.AT89系列單片機(jī)原理與接口技術(shù).北京:北京航空航天大學(xué)出版社,2004.170~179</p><p><b> 7附件</b></p><p><b&
44、gt; 參考程序</b></p><p> RS BIT P2.0;引腳定義,定義液晶顯示端口標(biāo)號(hào)</p><p> RW BIT P2.1</p><p> E BIT P2.2</p><p> L50MS EQU 60H ;工作內(nèi)存定義</p><
45、;p> L1MS EQU 61H</p><p> L250MS EQU 62H</p><p> SEC EQU 65H</p><p> MIN EQU 64H</p><p> HOU EQU 63H</p><p> ORG 0000H&l
46、t;/p><p> LJMP MAIN</p><p> ORG 000BH ;定時(shí)器T0溢出中斷入口地址</p><p><b> LJMP TT0</b></p><p> ORG 001BH ; 定時(shí)器T1溢出中斷入口地址</p><p> LJMP T1INT</
47、p><p> ORG 1000H</p><p> MAIN: ;液晶初始化</p><p> MOV SP,#70H </p><p> MOV P0,#01H ;清屏</p><p> CALL DISPLAY</p><p&g
48、t; MOV P0,#38H ;8位,2行顯示</p><p> LCALL DISPLAY</p><p> MOV P0,#0FH ;屏顯on,光標(biāo)on,閃爍on</p><p> LCALL DISPLAY</p><p> MOV P0,#06H ;計(jì)數(shù)地址加1,顯示幕on</p>
49、<p> LCALL DISPLAY</p><p> LCALL INITIL ;內(nèi)存初始化</p><p> WAIT: LCALL KEY ;鍵盤(pán)掃描,是否有鍵按下,否則等待</p><p> LCALL MODD </p><p> LJMP WAIT</p>
50、;<p> KEY: NOP</p><p><b> NOP</b></p><p><b> LCALL KS</b></p><p> JNZ K1 ;有按鍵轉(zhuǎn)到K1</p><p> LCALL KAIJI</p><p>
51、; LCALL SOP</p><p> XN: LJMP KEY</p><p> K1: LCALL MODD</p><p> LCALL MODD</p><p><b> LCALL KS</b></p><p><b> JNZ K2<
52、;/b></p><p><b> LJMP KEY</b></p><p> K2: MOV R2,#0FEH ;讀鍵盤(pán)</p><p> MOV R4,#00H</p><p> K3: MOV A,R2</p><p><b> MOV P
53、1,A</b></p><p><b> MOV A,P1</b></p><p> JB ACC.4,L1 ;為1跳轉(zhuǎn),第一行無(wú)按鍵</p><p> MOV A,#00H</p><p><b> LJMP LK</b></p><
54、p> L1: JB ACC.5,L2</p><p> MOV A,#04H</p><p><b> LJMP LK</b></p><p> L2: JB ACC.6,L3</p><p> MOV A,#08H</p><p><b> LJ
55、MP LK</b></p><p> L3: JB ACC.7,NEXT1</p><p> MOV A,#0CH</p><p> LK: ADD A,R4</p><p><b> PUSH ACC</b></p><p> K4: LCALL
56、 DELAY1 ;若同時(shí)有其他按鍵,則等待</p><p><b> LCALL KS</b></p><p><b> JNZ K4</b></p><p> MOV R3,#07H </p><p><b> CLR A</b></p&g
57、t;<p> MOV R0,#30H</p><p> MOV R1,#31H</p><p> MM1: MOV A,@R1</p><p> MOV @R0,A</p><p><b> INC R0</b></p><p><b> INC
58、R1</b></p><p> DJNZ R3,MM1</p><p><b> POP ACC</b></p><p> MOV @R0,A </p><p><b> RET</b></p><p> NEXT1: INC R4 ;
59、列掃描</p><p><b> MOV A,R2</b></p><p> JNB ACC.3,N2</p><p><b> LJMP N1</b></p><p> N2: LJMP KEY</p><p> N1: RL A<
60、/p><p><b> MOV R2,A</b></p><p><b> LJMP K3</b></p><p> KS: MOV A,#0F0H ;判斷P1口</p><p><b> MOV P1,A</b></p><p&g
61、t;<b> NOP</b></p><p><b> NOP</b></p><p><b> MOV A,P1</b></p><p><b> CPL A</b></p><p> ANL A,#0F0H</p><
62、;p><b> RET</b></p><p> DELAY1:SETB RS0</p><p> DL: MOV R5,#0AH</p><p> DL2: MOV R6,#63</p><p> DL3: NOP </p><p><b>
63、 NOP</b></p><p> DJNZ R6,DL3</p><p> DJNZ R5,DL2 </p><p> CLR RS0 </p><p><b> RET</b></p><p> INITIL: ;30H
64、-37H初值為零</p><p> MOV R3,#08H</p><p> MOV R0,#30H</p><p> M1: MOV @R0,#00H</p><p><b> INC R0</b></p><p> DJNZ R3,M1 </p&
65、gt;<p><b> RET</b></p><p> MODD: ;顯示</p><p> MOV P0,#8EH</p><p> CALL DISPLAY </p><p> MOV A,37H</p>&l
66、t;p> MOV DPTR,#TABLE3 </p><p> MOVC A,@A+DPTR</p><p> CALL WRITE2 </p><p><b> RET</b></p><p> KAIJI: MOV A,37H ;開(kāi)機(jī)提示字</p
67、><p> CJNE A,#0FH,DFF</p><p> MOV P0,#80H ;設(shè)光標(biāo)地址 </p><p> CALL DISPLAY</p><p> MOV DPTR,#TABLE1;寫(xiě)數(shù)據(jù)</p><p> CALL WRITE1 </p>
68、<p> DFF: RET</p><p><b> ;按鍵值播放歌曲</b></p><p> SOP: MOV A,37H</p><p> CJNE A,#01H,A11</p><p> LCALL MODD</p><p> MOV 52H,
69、#HIGH TABLE10</p><p> MOV 53H,#LOW TABLE10</p><p> LCALL INITILE2</p><p> LCALL MAIN0</p><p> A11: CJNE A,#02H,A22</p><p> LCALL MODD</p>
70、;<p> MOV 52H,#HIGH TABLE20</p><p> MOV 53H,#LOW TABLE20 </p><p> LCALL INITILE2 </p><p> lcall MAIN0</p><p> A22: CJNE A,#03H,A33</p>&
71、lt;p> LCALL MODD</p><p> MOV 52H,#HIGH TABLE30</p><p> MOV 53H,#LOW TABLE30 </p><p> LCALL INITILE2 </p><p> lcall MAIN0 </p><p>
72、A33: CJNE A,#04H,A44</p><p> LCALL MODD</p><p> MOV 52H,#HIGH TABLE40</p><p> MOV 53H,#LOW TABLE40 </p><p> LCALL INITILE2 </p><p> lcall
73、 MAIN0</p><p> A44: CJNE A,#05H,A55</p><p> LCALL MODD</p><p> MOV 52H,#HIGH TABLE50</p><p> MOV 53H,#LOW TABLE50 </p><p> LCALL INITILE2
74、 </p><p> lcall MAIN0</p><p> A55: CJNE A,#06H,A66</p><p> LCALL MODD</p><p> MOV 52H,#HIGH TABLE60</p><p> MOV 53H,#LOW TABLE60 </p>
75、<p> LCALL INITILE2 </p><p> lcall MAIN0 </p><p> A66: CJNE A,#07H,A77</p><p> LCALL MODD</p><p> MOV 52H,#HIGH TABLE70</p><p> M
76、OV 53H,#LOW TABLE70 </p><p> LCALL INITILE2 </p><p> lcall MAIN0 </p><p> A77: CJNE A,#08H,A88</p><p> LCALL MODD</p><p> MOV 52H,#
77、HIGH TABLE80</p><p> MOV 53H,#LOW TABLE80 </p><p> LCALL INITILE2 </p><p> lcall MAIN0</p><p> A88: CJNE A,#09H,A99</p><p> LCALL MODD<
78、;/p><p> MOV 52H,#HIGH TABLE90</p><p> MOV 53H,#LOW TABLE90 </p><p> LCALL INITILE2 </p><p> lcall MAIN0 </p><p> A99: CJNE A,#0AH,AAA&
79、lt;/p><p> LCALL MODD</p><p> MOV 52H,#HIGH TABLE100</p><p> MOV 53H,#LOW TABLE100 </p><p> LCALL INITILE2 </p><p> lcall MAIN0 </p>
80、<p> AAA: RET </p><p><b> INITILE2:</b></p><p> MOV L50MS,#20</p><p> MOV L1MS,#00H</p><p> MOV L250MS,#00H</p><p>
81、 MOV SEC,#00H</p><p> MOV MIN,#00H</p><p> MOV HOU,#00H</p><p> MOV A,HOU</p><p> MOV B,#10</p><p><b> DIV AB</b></p><p&
82、gt; ADD A,#30H ;將BCD嗎轉(zhuǎn)化為ASIIC碼</p><p> MOV P0,#0C8H ;顯示小時(shí)十位</p><p> CALL DISPLAY</p><p> CALL WRITE2</p><p><b> MOV A,B</b></p&g
83、t;<p> ADD A,#30H</p><p> MOV P0,#0C9H ;顯示小時(shí)個(gè)位</p><p> CALL DISPLAY</p><p> CALL WRITE2</p><p> MOV A,#3AH</p><p> MOV P0,#0DH
84、 ;顯示冒號(hào)</p><p> CALL DISPLAY</p><p> CALL WRITE2</p><p> MOV A,MIN</p><p> MOV B,#10</p><p><b> DIV AB</b></p><p> ADD
85、 A,#30H</p><p> MOV P0,#0CBH ;顯示分十位</p><p> CALL DISPLAY</p><p> CALL WRITE2</p><p><b> MOV A,B</b></p><p> ADD A,#30H</p&g
86、t;<p> MOV P0,#0CCH ;顯示分個(gè)位</p><p> CALL DISPLAY</p><p> CALL WRITE2</p><p> MOV A,#3AH</p><p> MOV P0,#0CDH ;顯示冒號(hào)</p><p> CALL
87、 DISPLAY</p><p> CALL WRITE2</p><p> MOV A,SEC</p><p> MOV B,#10</p><p><b> DIV AB</b></p><p> ADD A,#30H </p><p> MO
88、V P0,#0CEH ;顯示秒十位</p><p> CALL DISPLAY</p><p> CALL WRITE2</p><p><b> MOV A,B</b></p><p> ADD A,#30H</p><p> MOV P0,#0CFH
89、 ;顯示秒個(gè)位</p><p> CALL DISPLAY</p><p> CALL WRITE2</p><p> MOV P0,#0C0H ;設(shè)光標(biāo)地址 </p><p> CALL DISPLAY</p><p> MOV DPTR,#TABLE2;寫(xiě)數(shù)據(jù)</p>
90、;<p> CALL WRITE1 </p><p><b> RET</b></p><p> DISPLAY: CLR RS ;寫(xiě)指令</p><p><b> CLR RW</b></p><p><b> CLR E
91、</b></p><p> LCALL DELAY</p><p><b> SETB E</b></p><p><b> RET</b></p><p> WRITE1: MOV R1,#00H ;寫(xiě)數(shù)據(jù)</p><p> A
92、1: MOV A,R1</p><p> MOVC A,@A+DPTR</p><p> CALL WRITE2</p><p><b> INC R1</b></p><p> CJNE A,#0FEH,A1 ;未到字符串末尾繼續(xù)</p><p>&
93、lt;b> RET</b></p><p> WRITE2: MOV P0,A</p><p><b> SETB RS</b></p><p><b> CLR RW</b></p><p><b> CLR E</b>&l
94、t;/p><p> CALL DELAY</p><p><b> SETB E</b></p><p><b> RET</b></p><p> DELAY: MOV R4,#05</p><p> D1: MOV R5,#0FFH
95、</p><p> DJNZ R5,$</p><p> DJNZ R4,D1</p><p><b> RET </b></p><p> TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H</p><p> DB 80H,90H,
96、88H,83H,0C6H,0A1H,86H,8EH</p><p> TAB1: DB 89H,86H,0C7H,0C7H,0C0H</p><p> TAB2: DB 0C6H,88H,0C0H</p><p> TABLE1: DB 'WELCOM HERE',0FEH</p><p> TABLE2
97、: DB 'DFF WB ',0FEH</p><p> TABLE4: DB 'CAU',0FEH</p><p> TABLE3: DB 30H,31H,32H,33h </p><p> DB 34H,35H,36H,37H</p><p> DB 38h,39
98、H,41H,42H</p><p> DB 43H,44H,45H,46H</p><p> MAIN0:MOV TMOD,#11H ;播放歌曲程序 </p><p> MOV IE,#8aH </p><p> MOV TH1, #3cH</p><p> MOV
99、TL1, #0b0H </p><p><b> LCALL KS</b></p><p> JNZ TTM12 </p><p> MOV 40H,#00H</p><p> NEXT20: MOV A,40H</p><p> MOV DPH,52
100、H</p><p> MOV DPL,53H</p><p> MOVCA,@A+DPTR</p><p><b> MOV R2,A</b></p><p><b> JZ STOP</b></p><p> ANL A,#0FH</p>
101、<p><b> MOV R1,A</b></p><p><b> MOV A,R2</b></p><p><b> SWAP A</b></p><p> ANL A,#0FH</p><p><b> JNZ SING</b
102、></p><p><b> CLR TR0</b></p><p><b> JMP W1</b></p><p> SING: DEC A</p><p> MOV 22H,A</p><p><b> RL A</b>
103、</p><p> MOV DPTR,#TABLE00</p><p> MOVC A,@A+DPTR</p><p> MOV TH0,A</p><p> MOV 21H,A</p><p> MOV A,22H</p><p><b> RL A</
104、b></p><p><b> INC A</b></p><p> MOVC A,@A+DPTR</p><p> MOV TL0,A</p><p> MOV 20H,A</p><p><b> SETB TR0</b></p>
105、<p> SETB TR1</p><p> W1: LCALL DELAY30</p><p><b> INC 40H</b></p><p> LCALL KS ;有鍵跳出</p><p><b> JNZ STOP</b></p&
106、gt;<p> LJMP NEXT20</p><p> STOP: CLR TR0</p><p><b> CLR TR1</b></p><p> LJMP MAIN0 </p><p> TTM12: LCALL K2</p><p>
107、 MOV A,37H</p><p> CJNE A,#0EH,TTM13</p><p><b> CLR TR1</b></p><p> LCALL DELAY1</p><p> TTM120:LCALL KS</p><p> LCALL DELAY1</p
108、><p> JZ TTM120</p><p><b> LCALL K2</b></p><p> MOV A,37H</p><p> CJNE A,#0EH,TTM120</p><p><b> SETB TR1</b></p><
109、p> LJMP NEXT20</p><p> TTM13: CJNEA,#0CH,TTM14</p><p> MOV A,52H</p><p><b> INC A</b></p><p> MOV 52H,A</p><p> MOV A,53H</p&
110、gt;<p><b> INC A</b></p><p> MOV 53H,A</p><p> MOV A,36H</p><p><b> INC A</b></p><p> MOV 37H,A</p><p> LJMP TTM
111、2</p><p> TTM14:CJNEA,#0DH,TTM2</p><p> MOV A,52H</p><p><b> DEC A</b></p><p> MOV 52H,A</p><p> MOV A,53H</p><p><b
112、> DEC A</b></p><p> MOV 53H,A</p><p> MOV A,36H</p><p><b> DEC A</b></p><p> MOV 37H,A</p><p><b> TTM2:RET</b>
113、</p><p> TT0: PUSH ACC ;定時(shí)器中斷子程序0 </p><p><b> PUSH PSW</b></p><p> MOV TL0,20H</p><p> MOV TH0,21H</p><p><b> CPL P3.7</b
114、></p><p><b> POP PSW</b></p><p><b> POP ACC</b></p><p><b> RETI</b></p><p> ;定時(shí)器中斷子程序1</p><p> T1INT: MOV T
115、H1, #3CH ;定時(shí)器中斷子程序1</p><p> MOV TL1, #0B0H</p><p> DJNZ L50MS,X4</p><p> MOV L50MS,#20</p><p> SECSET: ;每秒種時(shí)鐘刷新秒顯示一次</p><p> MOV A,SE
116、C</p><p> MOV B,#10</p><p><b> DIV AB</b></p><p> ADD A,#30H </p><p> MOV P0,#0CEH ;顯示秒十位</p><p> CALL DISPLAY</p><p
117、> CALL WRITE2</p><p><b> MOV A,B</b></p><p> ADD A,#30H</p><p> MOV P0,#0CFH ;顯示秒個(gè)位</p><p> CALL DISPLAY</p><p> CALL WRIT
118、E2</p><p> MOV A,SEC</p><p><b> INC A</b></p><p> MOV SEC,A</p><p> XRL A,#60</p><p> X4: JNZ OUT</p><p> MINSET: MOV
119、 SEC,#00H ; *每分鐘刷新分顯示一次</p><p> MOV A,MIN</p><p><b> INC A</b></p><p> MOV MIN,A </p><p> MOV B,#10</p><p><b> DIV AB</b&
120、gt;</p><p> ADD A,#30H</p><p> MOV P0,#0CBH ;顯示分十位</p><p> CALL DISPLAY</p><p> CALL WRITE2</p><p><b> MOV A,B</b></p>&
121、lt;p> ADD A,#30H</p><p> MOV P0,#0CCH ;顯示分個(gè)位</p><p> CALL DISPLAY</p><p> CALL WRITE2</p><p> MOV A,MIN </p><p><b> MOV B,#3<
122、/b></p><p><b> MUL AB</b></p><p> MOV B,#100</p><p><b> DIV AB</b></p><p><b> MOV R2,A</b></p><p> MOV A,#
123、10</p><p><b> XCH A,B</b></p><p><b> DIV AB</b></p><p> MOV A,MIN</p><p> XRL A,#60</p><p><b> JNZ OUT</b><
124、;/p><p><b> HOUSET:</b></p><p> MOV MIN,#00H ;每小時(shí)刷新小時(shí)顯示一次 </p><p> MOV A,HOU</p><p> MOV B,#10</p><p><b> DIV AB</b></p&
125、gt;<p> ADD A,#30H ;將BCD嗎轉(zhuǎn)化為ASIIC碼</p><p> MOV P0,#0C8H ;顯示小時(shí)十位</p><p> CALL DISPLAY</p><p> CALL WRITE2</p><p><b> MOV A,B</b&
126、gt;</p><p> ADD A,#30H</p><p> MOV P0,#0C9H ;顯示小時(shí)個(gè)位</p><p> CALL DISPLAY</p><p> CALL WRITE2</p><p> MOV A,HOU</p><p><b>
127、; INC A</b></p><p> MOV HOU,A</p><p> XRL A,#10</p><p><b> JNZ OUT</b></p><p> SJMP OVERFLOW</p><p> OUT: RETI;溢出處理</p&g
128、t;<p><b> OVERFLOW:</b></p><p> MOV L50MS,#20</p><p> MOV L1MS,#00H</p><p> MOV L250MS,#00H</p><p> MOV SEC,#00H</p><p> MOV
129、MIN,#00H</p><p> MOV HOU,#00H</p><p><b> RETI</b></p><p> DELAY30: </p><p> MOV R7,#2</p><p> W2: MOV R4,#125</p><p>
130、; W3: MOV R3,#248</p><p> DJNZ R3,$</p><p> DJNZ R4,W3</p><p> DJNZ R7,W2</p><p> DJNZ R1,DELAY30</p><p><b> RET</b></p>
131、<p><b> TABLE00:</b></p><p> DW 64580,64684,64777,64820</p><p> DW 64898,64968,65030,64260</p><p> DW 64400,64524,65058,63835,64021</p><p> TABLE1
132、0: ;第一首《精忠報(bào)國(guó)》</p><p> DB 66H,52H,36H,22H,12H,12H,22H,32H,98H,84H,82H,92H,14H,12H,22H</p><p> DB 32H,52H,22H,42H,38H,66H,52H,36H,22H,12H,22H,22H,32H,98H</p><p> DB 24H,22H,32H,5
133、4H,52H,32H,92H,12H,92H,82H,98H,66H,52H,36H,22H</p><p> DB 12H,12H,22H,32H,98H,84H,82H,92H,14H,12H,22H,32H,52H,22H,42H,38H</p><p> DB 66H,52H,36H,22H,12H,22H,22H,32H,98H,24H,22H,32H,54H,52H,32H
134、</p><p> DB 22H,12H,92H,82H,98H,14H,24H,34H,44H,64H,0B4H,64H,32H,52H</p><p> DB 62H,0B2H,62H,52H,38H,24H,22H,32H,54H,52H,62H,52H,32H,32H,22H,38H</p><p> DB 64H,0B4H,64H,32H,52H,6
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)課程設(shè)計(jì)---數(shù)字音樂(lè)盒
- 單片機(jī)課程設(shè)計(jì)-數(shù)字音樂(lè)盒設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--數(shù)字音樂(lè)盒的設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)《數(shù)字音樂(lè)盒的設(shè)計(jì)》
- 單片機(jī)課程設(shè)計(jì)--基于單片機(jī)的數(shù)字音樂(lè)盒
- 單片機(jī)課程設(shè)計(jì)-基于單片機(jī)的數(shù)字音樂(lè)盒設(shè)計(jì)
- 單片機(jī)音樂(lè)盒課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--音樂(lè)盒
- 音樂(lè)盒單片機(jī)課程設(shè)計(jì)
- 單片機(jī)音樂(lè)盒課程設(shè)計(jì)
- 單片機(jī)音樂(lè)盒課程設(shè)計(jì)
- 課程設(shè)計(jì)---基于at89s52單片機(jī)數(shù)字音樂(lè)盒設(shè)計(jì)
- 基于單片機(jī)的數(shù)字音樂(lè)盒的設(shè)計(jì)
- 基于單片機(jī)的數(shù)字音樂(lè)盒的設(shè)計(jì)
- 基于51單片機(jī)數(shù)字音樂(lè)盒的設(shè)計(jì)
- 數(shù)字音樂(lè)盒的課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)報(bào)告 音樂(lè)盒設(shè)計(jì)
- 課程設(shè)計(jì)---數(shù)字音樂(lè)盒的設(shè)計(jì)
- 基于51單片機(jī)音樂(lè)盒課程設(shè)計(jì)
- 單片機(jī)原理課程設(shè)計(jì)---音樂(lè)盒的設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論