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