




已閱讀5頁(yè),還剩29頁(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)介
單片機(jī)與接口技術(shù)課程設(shè)計(jì)(論文)數(shù)字音樂盒的設(shè)計(jì) 院(系)名稱電子與信息工程學(xué)院 專業(yè)班級(jí)通信121班 學(xué)號(hào)120405003 學(xué)生姓名潘鳳麟 指導(dǎo)教師高影 講師起 止 時(shí) 間: 2015.7.42015.7.13課程設(shè)計(jì)(論文)任務(wù)及評(píng)語(yǔ)院(系):電子與信息工程學(xué)院 教研室:通信工程學(xué) 號(hào)120405003學(xué)生姓名潘鳳麟專業(yè)班級(jí)通信121班課程設(shè)計(jì)(論文)題目數(shù)字音樂盒的設(shè)計(jì)課程設(shè)計(jì)(論文)任務(wù)完成數(shù)字音樂盒的硬件和軟件設(shè)計(jì)。設(shè)計(jì)任務(wù)包括:1、系統(tǒng)硬件框圖設(shè)計(jì)說(shuō)明2、利用I/O口產(chǎn)生一定頻率的方波,驅(qū)動(dòng)蜂鳴器,發(fā)出不同的音調(diào),從而演奏樂曲(最少3首樂曲,每首不少于30s);3、采用LCD顯示樂曲名稱,可通過(guò)按鍵選擇樂曲、暫停、播放。4、在Keil中完成程序的編輯和調(diào)試;5、通過(guò)Keil和Proteus進(jìn)行聯(lián)合仿真。指導(dǎo)教師評(píng)語(yǔ)及成績(jī)平時(shí)成績(jī): 答辯成績(jī): 論文成績(jī): 總成績(jī): 指導(dǎo)教師簽字: 年 月 日注:平時(shí)成績(jī)占20%,答辯成績(jī)占40%,論文成績(jī)占40%。單片機(jī)與接口技術(shù)課程設(shè)計(jì)(論文)摘 要單片機(jī)是把CPU、存儲(chǔ)器和I/O接口集成在一片半導(dǎo)體硅片上的微型計(jì)算機(jī)。本次課程設(shè)計(jì)所設(shè)計(jì)出的數(shù)字音樂盒就是基于單片機(jī)的一個(gè)系統(tǒng)。它的的硬件電路部分采用Proteus軟件進(jìn)行設(shè)計(jì),以AT89C51單片機(jī)作為主芯片,用其I/O口產(chǎn)生不同頻率的方波來(lái)驅(qū)動(dòng)蜂鳴器發(fā)出不同的音調(diào),再配以LCD顯示屏和4*4鍵盤實(shí)現(xiàn)必要的顯示和控制。軟件部分采用Keil與Proteus進(jìn)行聯(lián)合仿真,并用匯編語(yǔ)言來(lái)設(shè)計(jì)程序,把用Keil生成的HEX文件寫入到單片機(jī)中即可實(shí)現(xiàn)設(shè)計(jì)所要求的功能。通過(guò)Proteus與Keil的聯(lián)合仿真,該數(shù)字音樂盒可播放3首不同的歌曲,并可通過(guò)LCD顯示屏顯示歌曲名稱或序號(hào);可通過(guò)4*4鍵盤實(shí)現(xiàn)對(duì)歌曲的選擇,暫停,與播放功能,故仿真結(jié)果符合設(shè)計(jì)要求。關(guān)鍵詞: 數(shù)字音樂盒;LCD顯示屏;鍵盤目 錄第1章 緒論11.1 AT89C51簡(jiǎn)介11.2 仿真環(huán)境簡(jiǎn)介21.3本文研究?jī)?nèi)容3第2章 數(shù)字音樂盒硬件電路圖的設(shè)計(jì)與分析42.1 總體設(shè)計(jì)方案分析42.2 數(shù)字音樂盒部分電路原理說(shuō)明42.2.1 蜂鳴器驅(qū)動(dòng)部分電路圖與原理說(shuō)明42.2.2 LCD顯示部分電路圖與原理說(shuō)明52.2.3 鍵盤控制部分電路圖與原理說(shuō)明6第3章 數(shù)字音樂盒的軟件設(shè)計(jì)73.1 數(shù)字音樂盒總體軟件程序流程圖與分析83.2 數(shù)字音樂盒各子程序的設(shè)計(jì)與分析83.2.1 系統(tǒng)初始化子程序設(shè)計(jì)與分析93.2.2 LCD顯示子程序設(shè)計(jì)與分析93.2.3 蜂鳴器頻率控制子程序設(shè)計(jì)與分析103.2.4 鍵盤控制子程序設(shè)計(jì)與分析11第4章 仿真結(jié)果與分析124.1 仿真結(jié)果124.2 仿真步驟與結(jié)果分析13第5章 總結(jié)15參考文獻(xiàn)16附 錄17附 錄18附 錄19I第1章 緒論1.1 AT89C51簡(jiǎn)介所謂單片機(jī),是指把CPU、存儲(chǔ)器和I/O接口集成在一片半導(dǎo)體硅片上的微型計(jì)算機(jī)。單片機(jī)的始祖是由Intel公司所開發(fā)出的MCS-51系列單片機(jī)。在20世紀(jì)80年代中期以后,Intel公司以專利轉(zhuǎn)讓或技術(shù)交換的形式把其開發(fā)單片機(jī)的內(nèi)核技術(shù)轉(zhuǎn)讓給了許多半導(dǎo)體芯片生產(chǎn)廠家,ATMEL公司就是其中之一,它開發(fā)出的AT89C51單片機(jī)被人們廣泛地應(yīng)用于生活與生產(chǎn)當(dāng)中。下面分別簡(jiǎn)要介紹AT89C51的硬件結(jié)構(gòu)及引腳。AT89C51單片機(jī)的硬件結(jié)構(gòu)如下圖1.1所示,主要由8大部分構(gòu)成:1個(gè)8位的微處理器,完成運(yùn)算與控制功能;片內(nèi)128B的數(shù)據(jù)存儲(chǔ)器,可擴(kuò)展至片外64KB;64KB的程序存儲(chǔ)器,其類型是Flash ROM,它的讀寫速度非常快,電擦除次數(shù)可達(dá)到10000次;4個(gè)8位的可編程并行I/O口(P0,P1,P2,P3),可提供地址總線,數(shù)據(jù)總線,以及控制總線;1個(gè)全雙工的串行口;2個(gè)16位的定時(shí)/計(jì)數(shù)器(T0,T1);中斷系統(tǒng):包含5個(gè)中斷源(外部中斷0,定時(shí)器T0,外部中斷1,定時(shí)器1,串行口中斷)和2個(gè)中斷優(yōu)先級(jí)(低級(jí),高級(jí));21個(gè)特殊功能寄存器。 圖1.1 AT89C51硬件結(jié)構(gòu)圖 AT89C51的引腳采用40引腳雙列直插式封裝(DIP)方式,如下圖1.2所示,按照功能可將其分為3類:一是電源及時(shí)鐘引腳:VCC,VSS,XTAL1,XTAL2,二是控制引腳:PSEN,ALE,EA,RST,三是I/O口引腳:P0,P1,P2,P3,為4個(gè)8位I/O口的外部引腳。圖1.2 AT89C51引腳分布圖1.2 仿真環(huán)境簡(jiǎn)介本次課程設(shè)計(jì)采用Proteus與keil進(jìn)行聯(lián)合仿真。Proteus軟件是英國(guó)Lab Center Electronics公司出版的EDA工具軟件(該軟件中國(guó)總代理為廣州風(fēng)標(biāo)電子技術(shù)有限公司)。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件。它是目前比較好的仿真單片機(jī)及外圍器件的工具。雖然目前國(guó)內(nèi)推廣剛起步,但已受到單片機(jī)愛好者、從事單片機(jī)教學(xué)的教師、致力于單片機(jī)開發(fā)應(yīng)用的科技工作者的青睞。Proteus可以完成從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電路的協(xié)同仿真,并能夠一鍵切換到PCB設(shè)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì),是目前世界上唯一將電路仿真軟件、PCB設(shè)計(jì)軟件和虛擬模型仿真軟件三合一的設(shè)計(jì)平臺(tái)。Proteus的處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列處理器,并持續(xù)增加其他系列處理器模型。在編譯方面,它也支持IAR、Keil和MATLAB等多種編譯器。Keil 是美國(guó)Keil Software公司出品的51系列兼容單片機(jī)C語(yǔ)言/匯編語(yǔ)言軟件開發(fā)系統(tǒng)。Keil提供了包括編譯器、宏匯編、鏈接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,并通過(guò)一個(gè)集成開發(fā)環(huán)境(Vision)將這些部分組合在一起。把在Keil中編譯,連接,運(yùn)行后生成的十六進(jìn)制HEX文件寫入到用Proteus繪制出的硬件電路圖的單片機(jī)中,啟動(dòng)電路后,即可完成仿真。1.3本文研究?jī)?nèi)容本文研究的是基于單片機(jī)的數(shù)字音樂盒設(shè)計(jì),經(jīng)過(guò)對(duì)資料的查找和分析,我擬出了滿足如下技術(shù)要求的設(shè)計(jì)方案。硬件電路部分用Proteus軟件來(lái)繪制,軟件部分采用Keil軟件,并基于匯編語(yǔ)言來(lái)進(jìn)行程序設(shè)計(jì)。在仿真時(shí),通過(guò)Proteus與Keil的聯(lián)合仿真,得到了滿足設(shè)計(jì)要求的結(jié)果。29第2章 數(shù)字音樂盒硬件電路圖的設(shè)計(jì)與分析2.1總體設(shè)計(jì)方案分析本次課程設(shè)計(jì)所設(shè)計(jì)出的數(shù)字音樂盒在硬件電路上主要包括3大部分:蜂鳴器驅(qū)動(dòng)部分,LCD顯示部分和鍵盤控制部分。它的總體方案框圖如下圖2.1所示。蜂鳴器驅(qū)動(dòng)部分是采用AT89C51單片機(jī)的P3.7引腳產(chǎn)生不同頻率的方波,從而去控制蜂鳴器發(fā)出不同的音調(diào),這樣就可以完成對(duì)一首歌曲的播放。LCD顯示部分采用LM032L作為液晶顯示器,并用AT89C51的P0.0P0.7引腳去控制LCD來(lái)完成樂曲名稱或序號(hào)的顯示。鍵盤控制部分采用4*4鍵盤,并用AT89C51的P1.0P1.7引腳進(jìn)行控制,以完成對(duì)歌曲的選擇,暫停與播放功能。下面分別對(duì)各硬件電路圖作以簡(jiǎn)要的介紹與分析,總電路原理圖將在附錄中給出。AT89C51單片機(jī)LCD液晶顯示系統(tǒng)鍵盤控制系統(tǒng)蜂鳴器圖2.1 數(shù)字音樂盒總體設(shè)計(jì)方案框圖2.2 數(shù)字音樂盒部分電路原理說(shuō)明2.2.1 蜂鳴器驅(qū)動(dòng)部分電路圖與原理說(shuō)明 蜂鳴器驅(qū)動(dòng)電路部分的原理采用AT89C51的P3.7引腳產(chǎn)生不同的頻率方波去驅(qū)動(dòng)蜂鳴器發(fā)出不同的音調(diào)。這些不同的音調(diào)由軟件設(shè)計(jì)部分中不同的數(shù)碼來(lái)實(shí)現(xiàn),這些不同的數(shù)碼就表示不同的頻率成分,這些頻率成分就會(huì)去驅(qū)動(dòng)蜂鳴器發(fā)出不同的音調(diào),從而完成對(duì)一首歌曲的播放。蜂鳴器驅(qū)動(dòng)部分的電路圖如下圖2.2所示。圖2.2數(shù)字音樂盒蜂鳴器驅(qū)動(dòng)部分示意圖2.2.2 LCD顯示部分電路圖與原理說(shuō)明LCD是液晶顯示器的縮寫,它是一種被動(dòng)式的顯示器,即液晶本身并不發(fā)光,而是利用液晶經(jīng)過(guò)處理后能夠改變光線通過(guò)方向的特性,從而達(dá)到白底黑字或黑底白字顯示的目的。液晶顯示器具有低功耗、抗干擾能力強(qiáng)等優(yōu)點(diǎn),因而被廣泛應(yīng)用在儀器儀表和控制系統(tǒng)中。而被廣泛地應(yīng)用在各類單片機(jī)系統(tǒng)中的顯示模塊是點(diǎn)陣字符型LCD顯示器,它的模塊電路框圖如下圖2.3所示。圖2.3字符型LCD模塊的電路框圖 如圖2.3所示,字符型LCD模塊的電路圖由控制器HD44780、驅(qū)動(dòng)器HD44100及幾個(gè)電阻和電容組成。HD44100用作擴(kuò)展字符顯示。該電路模塊共有14個(gè)引腳,其中8條數(shù)據(jù)線,3條控制線,3條電源線,通過(guò)單片機(jī)寫入模塊的數(shù)據(jù)和命令,就可以對(duì)顯示方式和顯示的內(nèi)容作出選擇。如本次課程設(shè)計(jì)中所設(shè)計(jì)的LCD顯示部分,它的電路原理圖如下圖2.4所示。它采用P0.0P0.7引腳去控制LCD顯示屏,再通過(guò)對(duì)應(yīng)的軟件指令的設(shè)計(jì),即可令顯示屏顯示歌曲的名稱或序號(hào)。圖2.4數(shù)字音樂盒LCD顯示部分示意圖2.2.3 鍵盤控制部分電路圖與原理說(shuō)明常用的鍵盤接口分為獨(dú)立式鍵盤接口和行列式鍵盤接口。獨(dú)立式鍵盤接口適用于按鍵較少或操作速度較高的場(chǎng)合,而行列式鍵盤適用于按鍵數(shù)目較多的場(chǎng)合。由于本次課程設(shè)計(jì)要求能夠播放至少3首歌曲,同時(shí)要能實(shí)現(xiàn)歌曲的暫停與播放功能,故選擇按鍵數(shù)目較多的行列式鍵盤。行列式鍵盤的鍵盤結(jié)構(gòu)如下圖2.5所示,它由行線和列線組成,而各按鍵在行、列線的交叉點(diǎn)上。行線通過(guò)上拉電阻接到+5V電源上。在無(wú)按鍵按下時(shí),行線處于高電平狀態(tài);當(dāng)有按鍵按下時(shí),行線電平狀態(tài)將由與此行線相連的列線電平?jīng)Q定。列線的電平如果為低,則行線電平為低;列線的電平如果為高,則行線的電平也為高,這一點(diǎn)是識(shí)別行列式鍵盤是否按下的關(guān)鍵所在。圖2.5 行列式鍵盤原理圖本次課程設(shè)計(jì)所采用的鍵盤控制系統(tǒng)的原理框圖如圖下圖2.6所示。它使用4*4鍵盤,并用P1.0P1.7引腳進(jìn)行控制,與AT89C51的中斷系統(tǒng)相結(jié)合,并用軟件進(jìn)行編程后,就可實(shí)現(xiàn)對(duì)樂曲的播放與暫停功能。圖2.6 數(shù)字音樂盒鍵盤控制部分示意圖第3章 數(shù)字音樂盒的軟件設(shè)計(jì)3.1數(shù)字音樂盒總體軟件程序流程圖與分析數(shù)字音樂盒的三大主要硬件部分為蜂鳴器驅(qū)動(dòng)部分,LCD顯示部分以及鍵盤控制部分。故按照此硬件構(gòu)造,可以設(shè)計(jì)出如下圖3.1所示的總體程序流程圖。在軟件運(yùn)行之前,第一步操作就是要對(duì)系統(tǒng)進(jìn)行初始化操作。初始化完畢后,即可開始設(shè)計(jì)系統(tǒng)的核心功能部件,即LCD的顯示和音樂的播放,最后就是鍵盤控制程序的設(shè)計(jì),由于鍵盤既要控制LCD顯示對(duì)應(yīng)的歌曲名稱或序號(hào),又要控制蜂鳴器去播放不同的歌曲,所以把鍵盤控制程序?qū)懺贚CD顯示程序設(shè)計(jì)和蜂鳴器頻率控制程序設(shè)計(jì)的下方,且箭頭都指向它。鍵盤的每次按下都相當(dāng)于產(chǎn)生了一次中斷,故除上述核心程序外,該軟件設(shè)計(jì)還包含一系列的中斷子程序,用以完成對(duì)歌曲的選擇,播放,暫停功能。下面對(duì)除中斷子程序外的其他核心程序分別作以簡(jiǎn)要介紹,而包含全部程序的程序清單將在附錄中給出。 系統(tǒng)初始化子程序設(shè)計(jì)系統(tǒng)初始化子程序設(shè)計(jì)蜂鳴器頻率控制子程序設(shè)計(jì)LCD顯示子程序設(shè)計(jì)鍵盤控制子程序設(shè)計(jì)鍵盤控制子程序設(shè)計(jì)圖3.1 數(shù)字音樂盒總體程序流程圖3.2數(shù)字音樂盒各子程序的設(shè)計(jì)與分析3.2.1 系統(tǒng)初始化子程序設(shè)計(jì)與分析系統(tǒng)的初始化操作包括對(duì)所使用端口的定義與賦值,匯編起始地址的賦值,中斷子程序入口地址的賦值,堆棧的初始化以及LCD顯示屏的初始化。系統(tǒng)初始化子程序設(shè)計(jì)如下:RS BIT P2.0; 定義液晶顯示端口標(biāo) 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: ;液晶初始化MOV SP,#70H ;堆棧初始化操作MOV P0,#01H ;清屏LCALL ENABLEMOV P0,#38H ;8位,2行顯示LCALL ENABLE3.2.2 LCD顯示子程序設(shè)計(jì)與分析AT89C51與LCD模塊接口的軟件編程的第一步必須要進(jìn)行初始化操作,否則將無(wú)法正常顯示,而常用的初始化方式有兩種,一種是利用模塊內(nèi)部的復(fù)位電路進(jìn)行初始化,一種是利用軟件進(jìn)行初始化,在本次課程設(shè)計(jì)中使用軟件初始化方式,軟件初始化的流程如下圖3.2所示,它通過(guò)不斷地等待和檢查忙標(biāo)志或延時(shí)來(lái)不斷更改各寄存器的值,從而完成初始化操作。 圖3.2 LCD顯示屏軟件初始化流程圖3.2.3 蜂鳴器頻率控制子程序設(shè)計(jì)與分析本次課程設(shè)計(jì)中的蜂鳴器是完成音樂播放功能的核心器件,它受到AT89C51的P3.7引腳的控制,由P3.7引腳產(chǎn)生不同頻率的方波,從而使蜂鳴器發(fā)出不同的音調(diào),達(dá)到播放一首歌曲的效果。在一首曲子的音符數(shù)組中,0xFF表示休止符,非休止符的數(shù)組元素高四位表示音階,低四位表示節(jié)拍。通過(guò)音階查詢計(jì)數(shù)初值并賦值給計(jì)數(shù)器,從而產(chǎn)生一定頻率的音調(diào),而樂曲播放中的節(jié)拍則是通過(guò)延時(shí)來(lái)實(shí)現(xiàn)的。該部分子程序的主要流程圖如下圖3.3所示。初始化開始從音符數(shù)組中得到音符獲取節(jié)拍獲取音階控制蜂鳴器發(fā)出對(duì)應(yīng)節(jié)拍的曲調(diào)延時(shí)產(chǎn)生節(jié)拍通過(guò)定時(shí)器產(chǎn)生音階圖3.3 蜂鳴器控制系統(tǒng)軟件部分流程圖3.2.4 鍵盤控制子程序設(shè)計(jì)與分析鍵盤在單片機(jī)系統(tǒng)中采用編程掃描工作方式,它的子程序流程圖如圖3.4所示。鍵盤程序的功能主要有四個(gè)方面:一是判斷鍵盤上有無(wú)鍵閉合,二是去除鍵的機(jī)械抖動(dòng),三是判斷閉合鍵的鍵號(hào),四是使單片機(jī)對(duì)鍵的一次閉合僅作一次處理。 圖3.4 鍵盤控制子程序部分流程圖第4章 仿真結(jié)果與分析4.1仿真結(jié)果利用Proteus與Keil進(jìn)行聯(lián)合仿真后,得到如下所示的一系列仿真結(jié)果。圖4.1為按下鍵盤1鍵,并播放歌曲精忠報(bào)國(guó)時(shí)的LCD顯示圖,可以觀察到,此時(shí)LCD顯示屏上顯示了其歌曲序號(hào)為序號(hào)1;圖4.2為按下鍵盤2鍵,并播放歌曲月亮代表我的心時(shí)的LCD顯示圖,可以觀察到,此時(shí)LCD顯示屏上顯示了其歌曲序號(hào)為序號(hào)2;圖4.3為按下鍵盤3鍵,并播放歌曲看我72變時(shí)LCD顯示圖,可以觀察到,此時(shí)LCD顯示屏上顯示了其歌曲序號(hào)為序號(hào)3;而當(dāng)按下鍵盤E鍵,歌曲會(huì)進(jìn)入暫停狀態(tài),此時(shí)LCD顯示屏上的計(jì)時(shí)時(shí)間不再變化,當(dāng)再次按下E鍵時(shí)歌曲會(huì)繼續(xù)播放,繼續(xù)計(jì)時(shí)。圖4.1 播放歌曲1時(shí)LCD顯示圖 圖4.2 播放歌曲2時(shí)LCD顯示圖圖4.3 播放歌曲3時(shí)LCD顯示圖4.2仿真步驟與結(jié)果分析首先對(duì)Proteus與Keil的聯(lián)合仿真過(guò)程作以介紹。仿真時(shí),首先采用Proteus軟件繪制硬件電路圖,在Proteus左側(cè)的原件欄拾?。篈T89C51單片機(jī),2N3906三級(jí)管,16個(gè)按鍵BUTTON,1個(gè)LCD顯示屏LM032L,8個(gè)電阻,1個(gè)蜂鳴器之后即可連接電路,完成硬件部分的電路設(shè)計(jì)。之后采用Keil軟件進(jìn)行軟件編程。打開Keil軟件后的第一步是單擊上方狀態(tài)欄的Project選項(xiàng),選擇New project,在彈出來(lái)的對(duì)話框中新建一個(gè)文件夾,命名為music,之后將所有的代碼內(nèi)容都保存到該文件夾中,單擊確定后,在彈出來(lái)的芯片選擇對(duì)話框中選擇ATMEL公司,選擇其中的AT89C51單片機(jī),并復(fù)制啟動(dòng)代碼到Target1中。第二步是單擊狀態(tài)欄中的File,選擇New選項(xiàng),即可新建一個(gè)用于編寫代碼的文本框,將代碼寫入后,保存到剛剛建立的文件夾中。由于是采用匯編語(yǔ)言來(lái)編寫程序,故程序文件的后綴名要寫成.asm。第三步是右鍵單擊左側(cè)Work space中的Source Group 1,選擇Add files to source group 1,將剛剛保存好的.asm文件添加到其中。這時(shí)狀態(tài)欄上方編譯按鈕應(yīng)由灰色變?yōu)楸稽c(diǎn)亮的狀態(tài)。第四步是右鍵單擊Work space中的Target 1,選擇Options for Target 1,在彈出的對(duì)話框中選擇Output界面,在界面中勾選Create HEX file,之后編譯,運(yùn)行,連接,看到下方程序狀態(tài)欄中出現(xiàn)Creating HEX file 0 errors 即可。最后一步是打開Proteus,單擊單片機(jī),將剛剛生成的HEX文件寫入到單片機(jī)中,單擊運(yùn)行,即可觀察仿真結(jié)果。 從仿真結(jié)果來(lái)看,按下鍵盤的1,2,3鍵,可以分別播放3首不同的歌曲,4d鍵均未定義,而事實(shí)上,只要在程序代碼中再次添加幾首歌曲的數(shù)碼樂譜,那么當(dāng)按下4d鍵時(shí)還可以播放另外10首歌曲,這也就是說(shuō),此設(shè)計(jì)共可播放13首不同的歌曲。而0號(hào)鍵用于復(fù)位,e鍵用于使歌曲暫停,f鍵用于顯示“WELCOME HERE”的歡迎界面。在LCD顯示屏上,按下1號(hào)鍵的同時(shí),顯示屏上會(huì)顯示1,代表1號(hào)鍵已被按下,同時(shí)播放歌曲1。當(dāng)按下其他鍵時(shí)同樣可以達(dá)到相同的效果。當(dāng)按下e鍵時(shí),執(zhí)行歌曲暫停播放命令,可以觀察到LCD的計(jì)時(shí)時(shí)間此時(shí)暫停,而當(dāng)再次按下e鍵時(shí),歌曲繼續(xù)播放,計(jì)時(shí)繼續(xù)。此次課程設(shè)計(jì)得到的仿真結(jié)果基本符合設(shè)計(jì)要求,但其中也存在如下兩個(gè)問題:一是LCD顯示屏在顯示時(shí)會(huì)出現(xiàn)輕微的閃爍,二是鍵盤在按下后不能立刻松開,而是需要按下一小段時(shí)間,大概1秒鐘后,單片機(jī)才能作出反應(yīng)。第5章 總結(jié)本次單片機(jī)與接口技術(shù)課程設(shè)計(jì)共2周,題目是數(shù)字音樂盒的設(shè)計(jì)。起初在拿到這個(gè)設(shè)計(jì)題目時(shí),并沒有清晰的設(shè)計(jì)思路,經(jīng)過(guò)一番思考,本人想到了要用單片機(jī)去驅(qū)動(dòng)蜂鳴器來(lái)完成歌曲的播放功能,但是一首歌曲中有不同的音階和節(jié)拍,如何實(shí)現(xiàn)這些不同的音階和節(jié)拍第一個(gè)困難。在查閱了大量的資料,并在老師的細(xì)心指導(dǎo)下,終于明白了單片機(jī)系統(tǒng)播放歌曲的原理。即:?jiǎn)纹瑱C(jī)可以產(chǎn)生不同頻率的方波去驅(qū)動(dòng)蜂鳴器發(fā)出不同的音調(diào),而這些音調(diào)可以用音符數(shù)組來(lái)實(shí)現(xiàn),不同的歌曲對(duì)應(yīng)不同的音符數(shù)組,只要編寫出對(duì)應(yīng)的音符數(shù)組即可完成對(duì)于音階的控制。而節(jié)拍的控制可通過(guò)調(diào)用延時(shí)子程序來(lái)實(shí)現(xiàn)。解決了音樂播放的原理問題后,遇到的第二個(gè)問題就是LCD顯示部分程序設(shè)計(jì)和鍵盤控制程序設(shè)計(jì)的代碼編寫問題。本人清醒地意識(shí)到我在課堂上所學(xué)習(xí)到的理論知識(shí)并不夠深入,以至于在實(shí)踐中編寫程序代碼時(shí)顯得比較捉襟見肘。于是在重新研讀教材上對(duì)應(yīng)的理論知識(shí)后,終于初步擬出了這兩部分的程序設(shè)計(jì)流程圖,按照擬定出的程序設(shè)計(jì)流程圖,本人在老師的指導(dǎo)下完成了對(duì)應(yīng)程序代碼的編寫。這個(gè)過(guò)程雖然非常辛苦,但卻獲益良多??傊?,本次單片機(jī)與接口技術(shù)課程設(shè)計(jì)鞏固并加深了本人在課堂上所學(xué)到的理論知識(shí),并使本人有機(jī)會(huì)把它們運(yùn)用到實(shí)踐中去,激發(fā)了本人的學(xué)習(xí)興趣,使本人以更加飽滿的熱情投入到接下來(lái)的學(xué)習(xí)中去。 本人簽字:參考文獻(xiàn)1 張毅剛,彭喜元編著. 單片機(jī)原理與應(yīng)用設(shè)計(jì)M.北京:電子工業(yè)出版社,20082 郭天祥編著.新概念51單片機(jī)C語(yǔ)言教程入門、提高、開發(fā)、擴(kuò)展全攻略M.北京:電子工業(yè)出版社,20093 趙廣元編著. Proteus輔助的單片機(jī)原理實(shí)踐基礎(chǔ)設(shè)計(jì)、課程設(shè)計(jì)和畢業(yè)設(shè)計(jì)M.北京:北京航空航天大學(xué)出版社,20134 王爽編著.匯編語(yǔ)言M(第三版).北京:清華大學(xué)出版社,20135 鄭學(xué)堅(jiān),朱定華編著.微型計(jì)算機(jī)原理及應(yīng)用M(第四版).北京:清華大學(xué)出版社,20136 劉亮.基于單片機(jī)的數(shù)字音樂盒設(shè)計(jì):電子學(xué)報(bào)J.北京2014:11:53-587 周禹翔.數(shù)字音樂盒的設(shè)計(jì)與仿真:通信技術(shù)J.北京2015:12:64-44附 錄總電路原理圖附 錄元器件清單器件名稱數(shù)量AT89C51單片機(jī)1片2N3906三極管1個(gè)按鍵16個(gè)LM032L液晶顯示器1個(gè)電阻9個(gè)蜂鳴器1個(gè)電解電容1個(gè)電容2個(gè)晶振1個(gè) 附 錄 程序清單RS BIT P2.0; 定義液晶顯示端口標(biāo)號(hào) RW BIT P2.1 E BIT P2.2;*L50MS EQU 60HL1MS EQU 61HL250MS EQU 62HSEC EQU 65HMIN EQU 64HHOU EQU 63H;*ORG 0000HLJMP MAINORG 000BHLJMP TT0ORG 001BHLJMP T1INTORG 1000HMAIN: 液晶初始化MOV SP,#70H MOV P0,#01H ;清屏LCALL ENABLEMOV P0,#38H ;8位,2行顯示LCALL ENABLEMOV P0,#0FH ;屏顯ON,光標(biāo)ON,閃爍ONLCALL ENABLEMOV P0,#06H ;計(jì)數(shù)地址加1,顯示幕ONLCALL ENABLE 內(nèi)存初始化LCALL INITIL KEY1:LCALL KEYLCALL MODD LJMP KEY1鍵盤掃描KEY:NOPNOPLCALL KSJNZ K1 有按鍵轉(zhuǎn)到K1LCALL KAIJILCALL 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跳轉(zhuǎn),第一行無(wú)按鍵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 ;若同時(shí)有其他按鍵,則等待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: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;開機(jī)提示字KAIJI:MOV A,37HCJNE A,#0FH,DFFMOV P0,#80H ;設(shè)光標(biāo)地址 LCALL ENABLEMOV DPTR,#TABLE1;寫數(shù)據(jù)LCALL WRITE1 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 INITILE2 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 LCALL 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 MAIN0 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 ;顯示小時(shí)十位LCALL ENABLELCALL WRITE2MOV A,BADD A,#30HMOV P0,#0C9H ;顯示小時(shí)個(gè)位LCALL ENABLELCALL WRITE2MOV A,#3AHMOV P0,#0DH ;顯示冒號(hào)LCALL ENABLELCALL WRITE2MOV A,MINMOV B,#10DIV ABADD A,#30HMOV P0,#0CBH ;顯示分十位LCALL ENABLELCALL WRITE2MOV A,BADD A,#30HMOV P0,#0CCH ;顯示分個(gè)位LCALL ENABLELCALL WRITE2MOV A,#3AHMOV P0,#0CDH ;顯示冒號(hào)LCALL ENABLELCALL WRITE2MOV A,SECMOV B,#10DIV ABADD A,#30H MOV P0,#0CEH ;顯示秒十位LCALL ENABLELCALL WRITE2MOV A,BADD A,#30HMOV P0,#0CFH ;顯示秒個(gè)位LCALL ENABLELCALL WRITE2MOV P0,#0C0H ; 設(shè)光標(biāo)地址 LCALL ENABLEMOV DPTR,#TABLE2;寫數(shù)據(jù)LCALL WRITE1 RET; 寫指令ENABLE: CLR RSCLR RWCLR ELCALL DELAYSETB ERET寫數(shù)據(jù)WRITE1:MOV R1,#00HA1:MOV A,R1MOVC A,A+DPTRLCALL WRITE2INC R1CJNE A,#0FEH,A1 ;未到字符串末尾繼續(xù)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,0FEHTABLE2:DBDFF 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 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,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,AMOV A,36HDEC AMOV 37H,A TTM2:RET;定時(shí)器中斷子程序0TT0:PUSH ACCPUSH PSWMOV TL0,20HMOV TH0,21HCPL P3.7POP PSWPOP ACCRETI ;定時(shí)器中斷子程序1T1INT: MOV TH1, #3cHMOV TL1, #0b0HDJNZ L50MS,X4MOV L50MS,#20 ; 每秒種時(shí)鐘刷新秒顯示一次SECSET:MOV A,SECMOV B,#10DIV ABADD A,#30H MOV P0,#0CEH ;顯示秒十位LCALL ENABLELCALL WRITE2MOV A,BADD A,#30HMOV P0,#0CFH ;顯示秒個(gè)位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 ;顯示分個(gè)位LCALL ENABLELCALL WRITE2MOV A,MIN MOV B,#3MUL ABMOV B,#100DIV ABMOV R2,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 ;顯示小時(shí)十位LCALL ENABLELCALL WRITE2MOV A,BADD A,#30HMOV P0,#0C9H ;顯示小時(shí)個(gè)位LCALL ENABLELCALL WRITE2MOV A,HOUINC AMOV HOU,AXRL A,#10JNZ OUTSJMP OVERFLOWOUT:RETIOVERFLOW:MOV L50MS,#20MOV L1MS,#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第一首精忠報(bào)國(guó)TABLE10: DB 66H,52H,36H,22H,12H,12H,22H,32H,98H,84H,82H,92H,14H,12H,22HDB 32H,52H,22H,
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)實(shí)習(xí)答辯
- 2024廣告設(shè)計(jì)師目標(biāo)定義題目試題及答案
- 赤峰語(yǔ)文面試題目及答案
- 2024年廣告設(shè)計(jì)師的學(xué)習(xí)內(nèi)容規(guī)劃試題及答案
- 2024年紡織品檢驗(yàn)員模擬題分析試題及答案
- 2024年紡織品設(shè)計(jì)師證書考試前沿問題試題及答案
- 安利培訓(xùn)測(cè)試題及答案
- 2024年紡織品檢驗(yàn)員考試規(guī)范及要求解讀試題及答案
- 助理廣告師考試背景知識(shí)掌握試題及答案
- 圖形認(rèn)識(shí)考試題及答案
- 單片機(jī)原理及應(yīng)用知到智慧樹章節(jié)測(cè)試課后答案2024年秋溫州醫(yī)科大學(xué)
- 《中美經(jīng)濟(jì)實(shí)力對(duì)比》課件
- DB32-T 4443-2023 罐區(qū)內(nèi)在役危險(xiǎn)化學(xué)品(常低壓)儲(chǔ)罐管理規(guī)范
- 足療養(yǎng)生門店禮儀培訓(xùn)
- 乒乓球教學(xué)課件
- DB1503∕T 01-2018 礦山排土場(chǎng)連片治理規(guī)范
- 【中職】8完整版本.4.1-圓的標(biāo)準(zhǔn)方程
- 2024秋期國(guó)家開放大學(xué)《可編程控制器應(yīng)用實(shí)訓(xùn)》一平臺(tái)在線形考(形成任務(wù)3)試題及答案
- DB13-T 5722-2023 醫(yī)院感染應(yīng)對(duì)策略與質(zhì)量控制
- 2《歸去來(lái)兮辭并序》公開課一等獎(jiǎng)創(chuàng)新教案統(tǒng)編版高中語(yǔ)文選擇性必修下冊(cè)
- 中國(guó)礦業(yè)大學(xué)《自然辯證法》2022-2023學(xué)年期末試卷
評(píng)論
0/150
提交評(píng)論