數字音樂盒的設計講解_第1頁
數字音樂盒的設計講解_第2頁
數字音樂盒的設計講解_第3頁
數字音樂盒的設計講解_第4頁
數字音樂盒的設計講解_第5頁
已閱讀5頁,還剩29頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精選優質文檔-傾情為你奉上單片機與接口技術課程設計(論文)數字音樂盒的設計 院(系)名稱電子與信息工程學院 專業班級通信121班 學號 學生姓名潘鳳麟 指導教師高影 講師起 止 時 間: 2015.7.42015.7.13課程設計(論文)任務及評語院(系):電子與信息工程學院 教研室:通信工程學 號學生姓名潘鳳麟專業班級通信121班課程設計(論文)題目數字音樂盒的設計課程設計(論文)任務完成數字音樂盒的硬件和軟件設計。設計任務包括:1、系統硬件框圖設計說明2、利用I/O口產生一定頻率的方波,驅動蜂鳴器,發出不同的音調,從而演奏樂曲(最少3首樂曲,每首不少于30s);3、采用LCD顯示樂曲名稱,

2、可通過按鍵選擇樂曲、暫停、播放。4、在Keil中完成程序的編輯和調試;5、通過Keil和Proteus進行聯合仿真。指導教師評語及成績平時成績: 答辯成績: 論文成績: 總成績: 指導教師簽字: 年 月 日注:平時成績占20%,答辯成績占40%,論文成績占40%。專心-專注-專業摘 要單片機是把CPU、存儲器和I/O接口集成在一片半導體硅片上的微型計算機。本次課程設計所設計出的數字音樂盒就是基于單片機的一個系統。它的的硬件電路部分采用Proteus軟件進行設計,以AT89C51單片機作為主芯片,用其I/O口產生不同頻率的方波來驅動蜂鳴器發出不同的音調,再配以LCD顯示屏和4*4鍵盤實現必要的顯

3、示和控制。軟件部分采用Keil與Proteus進行聯合仿真,并用匯編語言來設計程序,把用Keil生成的HEX文件寫入到單片機中即可實現設計所要求的功能。通過Proteus與Keil的聯合仿真,該數字音樂盒可播放3首不同的歌曲,并可通過LCD顯示屏顯示歌曲名稱或序號;可通過4*4鍵盤實現對歌曲的選擇,暫停,與播放功能,故仿真結果符合設計要求。關鍵詞: 數字音樂盒;LCD顯示屏;鍵盤目 錄第1章 緒論1.1 AT89C51簡介所謂單片機,是指把CPU、存儲器和I/O接口集成在一片半導體硅片上的微型計算機。單片機的始祖是由Intel公司所開發出的MCS-51系列單片機。在20世紀80年代中期以后,I

4、ntel公司以專利轉讓或技術交換的形式把其開發單片機的內核技術轉讓給了許多半導體芯片生產廠家,ATMEL公司就是其中之一,它開發出的AT89C51單片機被人們廣泛地應用于生活與生產當中。下面分別簡要介紹AT89C51的硬件結構及引腳。AT89C51單片機的硬件結構如下圖1.1所示,主要由8大部分構成:1個8位的微處理器,完成運算與控制功能;片內128B的數據存儲器,可擴展至片外64KB;64KB的程序存儲器,其類型是Flash ROM,它的讀寫速度非常快,電擦除次數可達到10000次;4個8位的可編程并行I/O口(P0,P1,P2,P3),可提供地址總線,數據總線,以及控制總線;1個全雙工的串

5、行口;2個16位的定時/計數器(T0,T1);中斷系統:包含5個中斷源(外部中斷0,定時器T0,外部中斷1,定時器1,串行口中斷)和2個中斷優先級(低級,高級);21個特殊功能寄存器。 圖1.1 AT89C51硬件結構圖 AT89C51的引腳采用40引腳雙列直插式封裝(DIP)方式,如下圖1.2所示,按照功能可將其分為3類:一是電源及時鐘引腳:VCC,VSS,XTAL1,XTAL2,二是控制引腳:PSEN,ALE,EA,RST,三是I/O口引腳:P0,P1,P2,P3,為4個8位I/O口的外部引腳。圖1.2 AT89C51引腳分布圖1.2 仿真環境簡介本次課程設計采用Proteus與keil進

6、行聯合仿真。Proteus軟件是英國Lab Center Electronics公司出版的(該軟件中國總代理為廣州風標電子技術有限公司)。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機及外圍器件。它是目前比較好的仿真單片機及外圍器件的工具。雖然目前國內推廣剛起步,但已受到單片機愛好者、從事單片機教學的教師、致力于單片機開發應用的科技工作者的青睞。Proteus可以完成從布圖、代碼調試到與外圍電路的協同仿真,并能夠一鍵切換到PCB設計,真正實現了從概念到產品的完整設計,是目前世界上唯一將軟件、PCB設計軟件和虛擬模型仿真軟件三合一的設計平臺。Proteus的處理器模型支持8051、HC1

7、1、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列處理器,并持續增加其他系列處理器模型。在編譯方面,它也支持IAR、Keil和MATLAB等多種。Keil 是美國Keil Software公司出品的51系列兼容C語言/匯編語言軟件開發系統。Keil提供了包括、宏匯編、鏈接器、庫管理和一個功能強大的仿真調試器等在內的完整開發方案,并通過一個(Vision)將這些部分組合在一起。把在Keil中編譯,連接,運行后生成的十六進制HEX文件寫入到用Proteus繪制出的硬件電路圖的單片機中,啟動電路后,即可完

8、成仿真。1.3本文研究內容本文研究的是基于單片機的數字音樂盒設計,經過對資料的查找和分析,我擬出了滿足如下技術要求的設計方案。硬件電路部分用Proteus軟件來繪制,軟件部分采用Keil軟件,并基于匯編語言來進行程序設計。在仿真時,通過Proteus與Keil的聯合仿真,得到了滿足設計要求的結果。第2章 數字音樂盒硬件電路圖的設計與分析2.1總體設計方案分析本次課程設計所設計出的數字音樂盒在硬件電路上主要包括3大部分:蜂鳴器驅動部分,LCD顯示部分和鍵盤控制部分。它的總體方案框圖如下圖2.1所示。蜂鳴器驅動部分是采用AT89C51單片機的P3.7引腳產生不同頻率的方波,從而去控制蜂鳴器發出不同

9、的音調,這樣就可以完成對一首歌曲的播放。LCD顯示部分采用LM032L作為液晶顯示器,并用AT89C51的P0.0P0.7引腳去控制LCD來完成樂曲名稱或序號的顯示。鍵盤控制部分采用4*4鍵盤,并用AT89C51的P1.0P1.7引腳進行控制,以完成對歌曲的選擇,暫停與播放功能。下面分別對各硬件電路圖作以簡要的介紹與分析,總電路原理圖將在附錄中給出。AT89C51單片機LCD液晶顯示系統鍵盤控制系統蜂鳴器圖2.1 數字音樂盒總體設計方案框圖2.2 數字音樂盒部分電路原理說明2.2.1 蜂鳴器驅動部分電路圖與原理說明 蜂鳴器驅動電路部分的原理采用AT89C51的P3.7引腳產生不同的頻率方波去驅

10、動蜂鳴器發出不同的音調。這些不同的音調由軟件設計部分中不同的數碼來實現,這些不同的數碼就表示不同的頻率成分,這些頻率成分就會去驅動蜂鳴器發出不同的音調,從而完成對一首歌曲的播放。蜂鳴器驅動部分的電路圖如下圖2.2所示。圖2.2數字音樂盒蜂鳴器驅動部分示意圖2.2.2 LCD顯示部分電路圖與原理說明LCD是液晶顯示器的縮寫,它是一種被動式的顯示器,即液晶本身并不發光,而是利用液晶經過處理后能夠改變光線通過方向的特性,從而達到白底黑字或黑底白字顯示的目的。液晶顯示器具有低功耗、抗干擾能力強等優點,因而被廣泛應用在儀器儀表和控制系統中。而被廣泛地應用在各類單片機系統中的顯示模塊是點陣字符型LCD顯示

11、器,它的模塊電路框圖如下圖2.3所示。圖2.3字符型LCD模塊的電路框圖 如圖2.3所示,字符型LCD模塊的電路圖由控制器HD44780、驅動器HD44100及幾個電阻和電容組成。HD44100用作擴展字符顯示。該電路模塊共有14個引腳,其中8條數據線,3條控制線,3條電源線,通過單片機寫入模塊的數據和命令,就可以對顯示方式和顯示的內容作出選擇。如本次課程設計中所設計的LCD顯示部分,它的電路原理圖如下圖2.4所示。它采用P0.0P0.7引腳去控制LCD顯示屏,再通過對應的軟件指令的設計,即可令顯示屏顯示歌曲的名稱或序號。圖2.4數字音樂盒LCD顯示部分示意圖2.2.3 鍵盤控制部分電路圖與原

12、理說明常用的鍵盤接口分為獨立式鍵盤接口和行列式鍵盤接口。獨立式鍵盤接口適用于按鍵較少或操作速度較高的場合,而行列式鍵盤適用于按鍵數目較多的場合。由于本次課程設計要求能夠播放至少3首歌曲,同時要能實現歌曲的暫停與播放功能,故選擇按鍵數目較多的行列式鍵盤。行列式鍵盤的鍵盤結構如下圖2.5所示,它由行線和列線組成,而各按鍵在行、列線的交叉點上。行線通過上拉電阻接到+5V電源上。在無按鍵按下時,行線處于高電平狀態;當有按鍵按下時,行線電平狀態將由與此行線相連的列線電平決定。列線的電平如果為低,則行線電平為低;列線的電平如果為高,則行線的電平也為高,這一點是識別行列式鍵盤是否按下的關鍵所在。圖2.5 行

13、列式鍵盤原理圖本次課程設計所采用的鍵盤控制系統的原理框圖如圖下圖2.6所示。它使用4*4鍵盤,并用P1.0P1.7引腳進行控制,與AT89C51的中斷系統相結合,并用軟件進行編程后,就可實現對樂曲的播放與暫停功能。圖2.6 數字音樂盒鍵盤控制部分示意圖第3章 數字音樂盒的軟件設計3.1數字音樂盒總體軟件程序流程圖與分析數字音樂盒的三大主要硬件部分為蜂鳴器驅動部分,LCD顯示部分以及鍵盤控制部分。故按照此硬件構造,可以設計出如下圖3.1所示的總體程序流程圖。在軟件運行之前,第一步操作就是要對系統進行初始化操作。初始化完畢后,即可開始設計系統的核心功能部件,即LCD的顯示和音樂的播放,最后就是鍵盤

14、控制程序的設計,由于鍵盤既要控制LCD顯示對應的歌曲名稱或序號,又要控制蜂鳴器去播放不同的歌曲,所以把鍵盤控制程序寫在LCD顯示程序設計和蜂鳴器頻率控制程序設計的下方,且箭頭都指向它。鍵盤的每次按下都相當于產生了一次中斷,故除上述核心程序外,該軟件設計還包含一系列的中斷子程序,用以完成對歌曲的選擇,播放,暫停功能。下面對除中斷子程序外的其他核心程序分別作以簡要介紹,而包含全部程序的程序清單將在附錄中給出。 系統初始化子程序設計系統初始化子程序設計蜂鳴器頻率控制子程序設計LCD顯示子程序設計鍵盤控制子程序設計鍵盤控制子程序設計圖3.1 數字音樂盒總體程序流程圖3.2數字音樂盒各子程序的設計與分析

15、3.2.1 系統初始化子程序設計與分析系統的初始化操作包括對所使用端口的定義與賦值,匯編起始地址的賦值,中斷子程序入口地址的賦值,堆棧的初始化以及LCD顯示屏的初始化。系統初始化子程序設計如下:RS BIT P2.0; 定義液晶顯示端口標 RW BIT P2.1E BIT P2.2L50MS EQU 60HL1MS EQU 61HL250MS EQU 62HSEC EQU 65HMIN EQU 64HHOU EQU 63HORG 0000HLJMP MAINORG 000BHLJMP TT0ORG 001BH ;中斷程序入口地址LJMP T1INTORG 1000HMAIN: ;液晶初始化MO

16、V SP,#70H ;堆棧初始化操作MOV P0,#01H ;清屏LCALL ENABLEMOV P0,#38H ;8位,2行顯示LCALL ENABLE3.2.2 LCD顯示子程序設計與分析AT89C51與LCD模塊接口的軟件編程的第一步必須要進行初始化操作,否則將無法正常顯示,而常用的初始化方式有兩種,一種是利用模塊內部的復位電路進行初始化,一種是利用軟件進行初始化,在本次課程設計中使用軟件初始化方式,軟件初始化的流程如下圖3.2所示,它通過不斷地等待和檢查忙標志或延時來不斷更改各寄存器的值,從而完成初始化操作。 圖3.2 LCD顯示屏軟件初始化流程圖3.2.3 蜂鳴器頻率控制子程序設計與

17、分析本次課程設計中的蜂鳴器是完成音樂播放功能的核心器件,它受到AT89C51的P3.7引腳的控制,由P3.7引腳產生不同頻率的方波,從而使蜂鳴器發出不同的音調,達到播放一首歌曲的效果。在一首曲子的音符數組中,0xFF表示休止符,非休止符的數組元素高四位表示音階,低四位表示節拍。通過音階查詢計數初值并賦值給計數器,從而產生一定頻率的音調,而樂曲播放中的節拍則是通過延時來實現的。該部分子程序的主要流程圖如下圖3.3所示。初始化開始從音符數組中得到音符獲取節拍獲取音階控制蜂鳴器發出對應節拍的曲調延時產生節拍通過定時器產生音階圖3.3 蜂鳴器控制系統軟件部分流程圖3.2.4 鍵盤控制子程序設計與分析鍵

18、盤在單片機系統中采用編程掃描工作方式,它的子程序流程圖如圖3.4所示。鍵盤程序的功能主要有四個方面:一是判斷鍵盤上有無鍵閉合,二是去除鍵的機械抖動,三是判斷閉合鍵的鍵號,四是使單片機對鍵的一次閉合僅作一次處理。 圖3.4 鍵盤控制子程序部分流程圖第4章 仿真結果與分析4.1仿真結果利用Proteus與Keil進行聯合仿真后,得到如下所示的一系列仿真結果。圖4.1為按下鍵盤1鍵,并播放歌曲精忠報國時的LCD顯示圖,可以觀察到,此時LCD顯示屏上顯示了其歌曲序號為序號1;圖4.2為按下鍵盤2鍵,并播放歌曲月亮代表我的心時的LCD顯示圖,可以觀察到,此時LCD顯示屏上顯示了其歌曲序號為序號2;圖4.

19、3為按下鍵盤3鍵,并播放歌曲看我72變時LCD顯示圖,可以觀察到,此時LCD顯示屏上顯示了其歌曲序號為序號3;而當按下鍵盤E鍵,歌曲會進入暫停狀態,此時LCD顯示屏上的計時時間不再變化,當再次按下E鍵時歌曲會繼續播放,繼續計時。圖4.1 播放歌曲1時LCD顯示圖 圖4.2 播放歌曲2時LCD顯示圖圖4.3 播放歌曲3時LCD顯示圖4.2仿真步驟與結果分析首先對Proteus與Keil的聯合仿真過程作以介紹。仿真時,首先采用Proteus軟件繪制硬件電路圖,在Proteus左側的原件欄拾取:AT89C51單片機,2N3906三級管,16個按鍵BUTTON,1個LCD顯示屏LM032L,8個電阻,

20、1個蜂鳴器之后即可連接電路,完成硬件部分的電路設計。之后采用Keil軟件進行軟件編程。打開Keil軟件后的第一步是單擊上方狀態欄的Project選項,選擇New project,在彈出來的對話框中新建一個文件夾,命名為music,之后將所有的代碼內容都保存到該文件夾中,單擊確定后,在彈出來的芯片選擇對話框中選擇ATMEL公司,選擇其中的AT89C51單片機,并復制啟動代碼到Target1中。第二步是單擊狀態欄中的File,選擇New選項,即可新建一個用于編寫代碼的文本框,將代碼寫入后,保存到剛剛建立的文件夾中。由于是采用匯編語言來編寫程序,故程序文件的后綴名要寫成.asm。第三步是右鍵單擊左側

21、Work space中的Source Group 1,選擇Add files to source group 1,將剛剛保存好的.asm文件添加到其中。這時狀態欄上方編譯按鈕應由灰色變為被點亮的狀態。第四步是右鍵單擊Work space中的Target 1,選擇Options for Target 1,在彈出的對話框中選擇Output界面,在界面中勾選Create HEX file,之后編譯,運行,連接,看到下方程序狀態欄中出現Creating HEX file 0 errors 即可。最后一步是打開Proteus,單擊單片機,將剛剛生成的HEX文件寫入到單片機中,單擊運行,即可觀察仿真結果。

22、 從仿真結果來看,按下鍵盤的1,2,3鍵,可以分別播放3首不同的歌曲,4d鍵均未定義,而事實上,只要在程序代碼中再次添加幾首歌曲的數碼樂譜,那么當按下4d鍵時還可以播放另外10首歌曲,這也就是說,此設計共可播放13首不同的歌曲。而0號鍵用于復位,e鍵用于使歌曲暫停,f鍵用于顯示“WELCOME HERE”的歡迎界面。在LCD顯示屏上,按下1號鍵的同時,顯示屏上會顯示1,代表1號鍵已被按下,同時播放歌曲1。當按下其他鍵時同樣可以達到相同的效果。當按下e鍵時,執行歌曲暫停播放命令,可以觀察到LCD的計時時間此時暫停,而當再次按下e鍵時,歌曲繼續播放,計時繼續。此次課程設計得到的仿真結果基本符合設計

23、要求,但其中也存在如下兩個問題:一是LCD顯示屏在顯示時會出現輕微的閃爍,二是鍵盤在按下后不能立刻松開,而是需要按下一小段時間,大概1秒鐘后,單片機才能作出反應。第5章 總結本次單片機與接口技術課程設計共2周,題目是數字音樂盒的設計。起初在拿到這個設計題目時,并沒有清晰的設計思路,經過一番思考,本人想到了要用單片機去驅動蜂鳴器來完成歌曲的播放功能,但是一首歌曲中有不同的音階和節拍,如何實現這些不同的音階和節拍第一個困難。在查閱了大量的資料,并在老師的細心指導下,終于明白了單片機系統播放歌曲的原理。即:單片機可以產生不同頻率的方波去驅動蜂鳴器發出不同的音調,而這些音調可以用音符數組來實現,不同的

24、歌曲對應不同的音符數組,只要編寫出對應的音符數組即可完成對于音階的控制。而節拍的控制可通過調用延時子程序來實現。解決了音樂播放的原理問題后,遇到的第二個問題就是LCD顯示部分程序設計和鍵盤控制程序設計的代碼編寫問題。本人清醒地意識到我在課堂上所學習到的理論知識并不夠深入,以至于在實踐中編寫程序代碼時顯得比較捉襟見肘。于是在重新研讀教材上對應的理論知識后,終于初步擬出了這兩部分的程序設計流程圖,按照擬定出的程序設計流程圖,本人在老師的指導下完成了對應程序代碼的編寫。這個過程雖然非常辛苦,但卻獲益良多。總之,本次單片機與接口技術課程設計鞏固并加深了本人在課堂上所學到的理論知識,并使本人有機會把它們

25、運用到實踐中去,激發了本人的學習興趣,使本人以更加飽滿的熱情投入到接下來的學習中去。 本人簽字:參考文獻1 張毅剛,彭喜元編著. 單片機原理與應用設計M.北京:電子工業出版社,20082 郭天祥編著.新概念51單片機C語言教程入門、提高、開發、擴展全攻略M.北京:電子工業出版社,20093 趙廣元編著. Proteus輔助的單片機原理實踐基礎設計、課程設計和畢業設計M.北京:北京航空航天大學出版社,20134 王爽編著.匯編語言M(第三版).北京:清華大學出版社,20135 鄭學堅,朱定華編著.微型計算機原理及應用M(第四版).北京:清華大學出版社,20136 劉亮.基于單片機的數字音樂盒設計

26、:電子學報J.北京2014:11:53-587 周禹翔.數字音樂盒的設計與仿真:通信技術J.北京2015:12:64-44附 錄總電路原理圖附 錄元器件清單器件名稱數量AT89C51單片機1片2N3906三極管1個按鍵16個LM032L液晶顯示器1個電阻9個蜂鳴器1個電解電容1個電容2個晶振1個 附 錄 程序清單RS BIT P2.0; 定義液晶顯示端口標號 RW BIT P2.1 E BIT P2.2;*L50MS EQU 60HL1MS EQU 61HL250MS EQU 62HSEC EQU 65HMIN EQU 64HHOU EQU 63H;*ORG 0000HLJMP MAINORG

27、 000BHLJMP TT0ORG 001BHLJMP T1INTORG 1000HMAIN: 液晶初始化MOV SP,#70H MOV P0,#01H ;清屏LCALL ENABLEMOV P0,#38H ;8位,2行顯示LCALL ENABLEMOV P0,#0FH ;屏顯ON,光標ON,閃爍ONLCALL ENABLEMOV P0,#06H ;計數地址加1,顯示幕ONLCALL ENABLE 內存初始化LCALL INITIL KEY1:LCALL KEYLCALL MODD LJMP KEY1鍵盤掃描KEY:NOPNOPLCALL KSJNZ K1 有按鍵轉到K1LCALL KAIJI

28、LCALL SOPXN:LJMP KEYK1:LCALL MODDLCALL MODDLCALL KSJNZ K2LJMP KEYK2:MOV R2,#0FEH ;讀鍵盤MOV R4,#00HK3:MOV A,R2MOV P1,AMOV A,P1JB ACC.4,L1;為1跳轉,第一行無按鍵MOV A,#00HLJMP LKL1:JB ACC.5,L2MOV A,#04HLJMP LKL2:JB ACC.6,L3MOV A,#08HLJMP LKL3:JB ACC.7,NEXT1MOV A,#0CHLK:ADD A,R4PUSH ACCK4:LCALL DELAY1 ;若同時有其他按鍵,則等待

29、LCALL KSJNZ K4MOV R3,#07H CLR AMOV R0,#30HMOV R1,#31HMM1:MOV A,R1MOV R0,AINC R0INC R1DJNZ R3,MM1POP ACCMOV R0,A RETNEXT1:INC R4 ;列掃描MOV A,R2JNB ACC.3,N2LJMP N1N2:LJMP KEYN1:RL AMOV R2,ALJMP K3KS:MOV A,#0F0H ;判斷P1口MOV P1,ANOPNOPMOV A,P1CPL AANL A,#0F0HRETDELAY1:SETB RS0DL:MOV R5,#0AHDL2:MOV R6,#63DL3

30、:NOP NOPDJNZ R6,DL3DJNZ R5,DL2 CLR RS0 RET ;30H-37H初值為零INITIL: MOV R3,#08HMOV R0,#30HM1:MOV R0,#00HINC R0DJNZ R3,M1 RETMODD: MOV P0,#8EHLCALL ENABLE MOV A,37HMOV DPTR,#TABLE3 MOVC A,A+DPTRLCALL WRITE2 RET;開機提示字KAIJI:MOV A,37HCJNE A,#0FH,DFFMOV P0,#80H ;設光標地址 LCALL ENABLEMOV DPTR,#TABLE1;寫數據LCALL WRI

31、TE1 DFF:RET;按鍵值播放歌曲SOP:MOV A,37HCJNE A,#01H,A11LCALL MODDMOV 52H,#HIGH TABLE10MOV 53H,#LOW TABLE10LCALL INITILE2LCALL MAIN0A11:CJNE A,#02H,A22LCALL MODDMOV 52H,#HIGH TABLE20MOV 53H,#LOW TABLE20 LCALL INITILE2 LCALL MAIN0A22:CJNE A,#03H,A33LCALL MODDMOV 52H,#HIGH TABLE30MOV 53H,#LOW TABLE30 LCALL INI

32、TILE2 LCALL MAIN0 A33:CJNE A,#04H,A44LCALL MODDMOV 52H,#HIGH TABLE10MOV 53H,#LOW TABLE10 LCALL INITILE2 LCALL MAIN0A44:CJNE A,#05H,A55LCALL MODDMOV 52H,#HIGH TABLE20MOV 53H,#LOW TABLE20 LCALL INITILE2 LCALL MAIN0A55:CJNE A,#06H,A66LCALL MODDMOV 52H,#HIGH TABLE30MOV 53H,#LOW TABLE30 LCALL INITILE2 LC

33、ALL MAIN0 A66:CJNE A,#07H,A77LCALL MODDMOV 52H,#HIGH TABLE10MOV 53H,#LOW TABLE10 LCALL INITILE2 LCALL MAIN0 A77:CJNE A,#08H,A88LCALL MODDMOV 52H,#HIGH TABLE20MOV 53H,#LOW TABLE20 LCALL INITILE2 LCALL MAIN0A88:CJNE A,#09H,A99LCALL MODDMOV 52H,#HIGH TABLE30MOV 53H,#LOW TABLE30 LCALL INITILE2 LCALL MAI

34、N0 A99:CJNE A,#0AH,AAALCALL MODDMOV 52H,#HIGH TABLE10MOV 53H,#LOW TABLE10 LCALL INITILE2 LCALL MAIN0 AAA:RET INITILE2:MOV L50MS,#20MOV L1MS,#00HMOV L250MS,#00HMOV SEC,#00HMOV MIN,#00HMOV HOU,#00HMOV A,HOUMOV B,#10DIV ABADD A,#30H MOV P0,#0C8H ;顯示小時十位LCALL ENABLELCALL WRITE2MOV A,BADD A,#30HMOV P0,#0

35、C9H ;顯示小時個位LCALL ENABLELCALL WRITE2MOV A,#3AHMOV P0,#0DH ;顯示冒號LCALL ENABLELCALL WRITE2MOV A,MINMOV B,#10DIV ABADD A,#30HMOV P0,#0CBH ;顯示分十位LCALL ENABLELCALL WRITE2MOV A,BADD A,#30HMOV P0,#0CCH ;顯示分個位LCALL ENABLELCALL WRITE2MOV A,#3AHMOV P0,#0CDH ;顯示冒號LCALL ENABLELCALL WRITE2MOV A,SECMOV B,#10DIV ABA

36、DD A,#30H MOV P0,#0CEH ;顯示秒十位LCALL ENABLELCALL WRITE2MOV A,BADD A,#30HMOV P0,#0CFH ;顯示秒個位LCALL ENABLELCALL WRITE2MOV P0,#0C0H ; 設光標地址 LCALL ENABLEMOV DPTR,#TABLE2;寫數據LCALL WRITE1 RET; 寫指令ENABLE: CLR RSCLR RWCLR ELCALL DELAYSETB ERET寫數據WRITE1:MOV R1,#00HA1:MOV A,R1MOVC A,A+DPTRLCALL WRITE2INC R1CJNE

37、A,#0FEH,A1 ;未到字符串末尾繼續RETWRITE2:MOV P0,ASETB RSCLR RWCLR ELCALL DELAYSETB ERETDELAY:MOV R4,#05D1:MOV R5,#0FFHDJNZ R5,$DJNZ R4,D1RET TAB:DB:0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8HDB 80H,90H,88H,83H,0c6H,0a1H,86H,8eHTAB1:DB 89H,86H,0C7H,0C7H,0C0HTAB2:DB 0C6H,88H,0C0HTABLE1:DB 'WELCOM HERE',0FEHTAB

38、LE2:DB'DFF WB ',0FEHTABLE4:DB 'CAU',0FEHTABLE3:DB 30H,31H,32H,33H DB 34H,35H,36H,37HDB 38H,39H,41H,42HDB 43H,44H,45H,46H;播放歌曲程序MAIN0:MOV TMOD,#11HMOV IE,#8AH MOV TH1,#3CHMOV TL1,#0B0H LCALL ksJNZ TTM12 MOV 40H,#00HNEXT20:MOV A,40HMOV DPH,52HMOV DPL,53HMOVC A,A+DPTRMOV R2,AJZ STOPANL

39、A,#0FHMOV R1,AMOV A,R2SWAP AANL A,#0FHJNZ SINGCLR TR0JMP W1SING:DEC AMOV 22H,ARL AMOV DPTR,#TABLE00MOVC A,A+DPTRMOV TH0,AMOV 21H,AMOV A,22HRL AINC AMOVC A,A+DPTRMOV TL0,AMOV 20H,ASETB TR0SETB TR1W1:LCALL DELAY30INC 40HLCALL KS ;有鍵跳出JNZ STOPLJMP NEXT20STOP:CLR TR0CLR TR1LJMP MAIN0 TTM12:LCALL K2MOV A

40、,37HCJNE A,#0EH,TTM13CLR TR1LCALL DELAY1TTM120:LCALL KSLCALL DELAY1JZ TTM120LCALL K2MOV A,37HCJNE A,#0EH,TTM120SETB TR1LJMP NEXT20TTM13:CJNE A,#0CH,TTM14MOV A,52HINC AMOV 52H,AMOV A,53HINC AMOV 53H,AMOV A,36HINC AMOV 37H,ALJMP TTM2TTM14:CJNE A,#0DH,TTM2MOV A,52HDEC AMOV 52H,AMOV A,53HDEC AMOV 53H,AM

41、OV A,36HDEC AMOV 37H,A TTM2:RET;定時器中斷子程序0TT0:PUSH ACCPUSH PSWMOV TL0,20HMOV TH0,21HCPL P3.7POP PSWPOP ACCRETI ;定時器中斷子程序1T1INT: MOV TH1, #3cHMOV TL1, #0b0HDJNZ L50MS,X4MOV L50MS,#20 ; 每秒種時鐘刷新秒顯示一次SECSET:MOV A,SECMOV B,#10DIV ABADD A,#30H MOV P0,#0CEH ;顯示秒十位LCALL ENABLELCALL WRITE2MOV A,BADD A,#30HMOV

42、 P0,#0CFH ;顯示秒個位LCALL ENABLELCALL WRITE2MOV A,SECINC AMOV SEC,AXRL A,#60X4:JNZ OUTMINSET:MOV SEC,#00H MOV A,MININC AMOV MIN,A MOV B,#10DIV ABADD A,#30HMOV P0,#0CBH ;顯示分十位LCALL ENABLELCALL WRITE2MOV A,BADD A,#30HMOV P0,#0CCH ;顯示分個位LCALL ENABLELCALL WRITE2MOV A,MIN MOV B,#3MUL ABMOV B,#100DIV ABMOV R2

43、,AMOV A,#10XCH A,BDIV ABMOV A,MINXRL A,#60JNZ OUTHOUSET:MOV MIN,#00H MOV A,HOUMOV B,#10DIV ABADD A,#30H MOV P0,#0C8H ;顯示小時十位LCALL ENABLELCALL WRITE2MOV A,BADD A,#30HMOV P0,#0C9H ;顯示小時個位LCALL ENABLELCALL WRITE2MOV A,HOUINC AMOV HOU,AXRL A,#10JNZ OUTSJMP OVERFLOWOUT:RETIOVERFLOW:MOV L50MS,#20MOV L1MS,

44、#00HMOV L250MS,#00HMOV SEC,#00HMOV MIN,#00HMOV HOU,#00HRETIDELAY30: MOV R7,#2W2:MOV R4,#125W3:MOV R3,#248DJNZ R3,$DJNZ R4,W3DJNZ R7,W2DJNZ R1,DELAY30RETTABLE00:DW 64580,64684,64777,64820DW 64898,64968,65030,64260DW 64400,64524,65058,63835,64021第一首精忠報國TABLE10: DB 66H,52H,36H,22H,12H,12H,22H,32H,98H,84H,82H,92H,14H,12H,22HDB 32H,52H,22H,42H,38H,66H,52H,36H,22H,12H,22H,22H,32

溫馨提示

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

評論

0/150

提交評論