版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基于AT89C51的屏幕聲光式可錄音電子琴設(shè)計(jì)報(bào)告單片機(jī)課程設(shè)計(jì)報(bào)告書小組成員:呂夢(mèng)莎 吳玉鳳學(xué) 號(hào):11213072 11213078班 級(jí):自動(dòng)化1106指導(dǎo)教師:于振宇基于AT89C51的屏幕聲光式可錄音電子琴北京交通大學(xué) 電子信息工程學(xué)院 呂夢(mèng)莎 吳玉鳳摘要:本文的主要內(nèi)容是用AT89S51單片機(jī)為核心控制元件,通過脈沖觸發(fā)產(chǎn)生出電子音調(diào),與按鍵、揚(yáng)聲器、LCD顯示屏等模塊組成控制模塊,設(shè)計(jì)一個(gè)電子琴。該系統(tǒng)運(yùn)行穩(wěn)定,其優(yōu)點(diǎn)是硬件電路簡(jiǎn)單,軟件功能完善,控制系統(tǒng)可靠,性價(jià)比較高等,具有一定的實(shí)用與參考價(jià)值。關(guān)鍵詞:AT89C51、脈沖觸發(fā)、屏幕聲光式、錄音、播放、演奏、電子琴。第一章
2、引言1.1設(shè)計(jì)背景單片微型計(jì)算機(jī)是大規(guī)模集成電路技術(shù)發(fā)展的產(chǎn)物,屬第四代電子計(jì)算機(jī),它具有高性能、高速度、體積小、價(jià)格低廉、穩(wěn)定可靠、應(yīng)用廣泛的特點(diǎn)。它的應(yīng)用必定導(dǎo)致傳統(tǒng)的控制技術(shù)從根本上發(fā)生變革。因此,單片機(jī)的開發(fā)應(yīng)用已成為高科技和工程領(lǐng)域的一項(xiàng)重大課題。 電子琴是現(xiàn)代電子科技與音樂結(jié)合的產(chǎn)物,是一種新型的鍵盤樂器。它在現(xiàn)代音樂扮演著重要的角色,單片機(jī)具有強(qiáng)大的控制功能和靈活的編程實(shí)現(xiàn)特性,它已經(jīng)溶入現(xiàn)代人們的生活中,成為不可替代的一部分。 本文對(duì)利用單片機(jī)設(shè)計(jì)簡(jiǎn)易電子琴進(jìn)行了分析,分
3、別從原理圖,主要芯片,各模塊原理及各模塊的程序的調(diào)試來詳細(xì)闡述。本系統(tǒng)是簡(jiǎn)易電子琴的設(shè)計(jì),按下四角自鎖開關(guān)會(huì)使LCD顯示屏顯示當(dāng)前音符名稱、播放的歌曲名稱或播放的錄音名稱,同時(shí)揚(yáng)聲器播放對(duì)應(yīng)的音符,LED閃爍相應(yīng)的節(jié)奏。通過設(shè)計(jì)本系統(tǒng)可熟悉掌握單片機(jī)的基本功能。1.2 設(shè)計(jì)任務(wù) 1、設(shè)計(jì)以單片機(jī)為核心的簡(jiǎn)易電子琴系統(tǒng),可隨意彈奏想要表達(dá)的音樂; 2、針對(duì)要求控制的對(duì)象完成程序的編制;3、硬件軟件聯(lián)調(diào),完成題目所要求的功能; 1.3設(shè)計(jì)思路1、發(fā)聲部分設(shè)計(jì)思路音樂是由不同頻率的聲音組成的。利用程序來控制單處機(jī)某個(gè)口線的“高”電平或低電平,則在該口線上就能產(chǎn)
4、生一定頻率的矩形波。 利用延時(shí)程序控制“高”“低”電平的持續(xù)時(shí)間,就能改變輸出頻率,從而改變音調(diào)。于是產(chǎn)生do,re,mi,fa,so,la,xi七個(gè)音符的變換。 2、顯示部分設(shè)計(jì)思路考慮到信息的多媒體傳播已經(jīng)成為信息化時(shí)代的主流,我們給電子琴設(shè)計(jì)了LCD顯示器和節(jié)拍指示LED燈,帶來視聽雙重沖擊。 LCD具有功耗低,顯示質(zhì)量高,數(shù)字式接口更加穩(wěn)定可靠的優(yōu)點(diǎn)。演示過程中可顯示歡迎語,當(dāng)前功能,按下的音符名稱,當(dāng)前播放的歌曲名稱等。第二章 方案論證采用AT89C51單片機(jī)作為主控芯片,設(shè)置獨(dú)立按鍵、揚(yáng)聲器、LCD顯示屏等外圍器件,另外還用到一些簡(jiǎn)單器件如NPN型三極管及電阻等。利用按鍵實(shí)現(xiàn)音符和
5、音調(diào)的輸入;LCD顯示屏進(jìn)行被操作的按鍵顯示;用PNP型三極管2N2907實(shí)現(xiàn)低音頻功率放大;最后用揚(yáng)聲器發(fā)音。 主控芯片采用AT89C51單片機(jī),它是大規(guī)模集成電路技術(shù)發(fā)展的產(chǎn)物,具有高性能、高速度、體積小、價(jià)格低廉、穩(wěn)定可靠、應(yīng)用廣泛的特點(diǎn)。避免了由于元器件種類、個(gè)數(shù)繁多,而過于復(fù)雜的硬件電路也容易引起系統(tǒng)的精度不高、體積過大等不利因素。同時(shí)具有強(qiáng)大的控制功能和靈活的編程實(shí)現(xiàn)特性,由于本設(shè)計(jì)主要用于娛樂方面,因此在設(shè)計(jì)上盡量使其安全以及簡(jiǎn)單易操作。具有經(jīng)濟(jì)可行性、技術(shù)可行性、實(shí)物應(yīng)用性。第三章 硬件系統(tǒng)設(shè)計(jì)3.1 時(shí)鐘電路 MCS-51內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器,
6、引腳XTAL1和XTAL2分別是此放大器的輸入端輸出端。本圖采用內(nèi)部時(shí)鐘電路,如圖3-1所示,通常在引腳XTALl和XTAL2上跨接石英晶體X1和兩個(gè)補(bǔ)償電容C1、C2構(gòu)成自激振蕩器??梢愿鶕?jù)情況選擇212MHz頻率之間的石英晶體,補(bǔ)償電容通常選擇30pF左右的瓷片電容。圖3-1 時(shí)鐘電路3.2 復(fù)位電路 單片機(jī)小系統(tǒng)常采用上電自動(dòng)復(fù)位和手動(dòng)按鍵復(fù)位兩種方式實(shí)現(xiàn)系統(tǒng)的復(fù)位操作。本實(shí)驗(yàn)采用上電自動(dòng)復(fù)位方式,其結(jié)構(gòu)圖如圖3-2所示。上電復(fù)位要求接通電源后,自動(dòng)實(shí)現(xiàn)復(fù)位操作。復(fù)位電路的基本功能是:系統(tǒng)上電時(shí)提供復(fù)位信號(hào),直至系統(tǒng)電源穩(wěn)定后,撤銷復(fù)位信號(hào)。對(duì)于MCS-51單片機(jī),只要在RST復(fù)位端接一
7、個(gè)電容至VCC和一個(gè)電阻至VSS即可。在加電瞬間,RST端出現(xiàn)一定時(shí)間的高電平,只要高電平保持時(shí)間足夠長(zhǎng),就可以使MCS-51復(fù)位。圖3-2 復(fù)位電路3.3 原理框圖本系統(tǒng)有主控芯片AT89C52、揚(yáng)聲器、顯示模塊、按鍵模塊和晶振復(fù)位電路組成。圖3-3 原理框圖3.4 顯示部分設(shè)計(jì)為了讓電子琴能夠顯示出音調(diào),我們另外附加了一個(gè)LCD1602提供屏幕式音調(diào)顯示,LCD1602屬于字符型液晶,可以顯示字母和數(shù)字等字符。LCD1602是指顯示的內(nèi)容為16X2,即可以顯示兩行,每行16個(gè)字符液晶模塊(顯示字符和數(shù)字)。 圖3-4 顯示電路3.5 按鍵部分設(shè)計(jì)3.5.1鍵盤設(shè)計(jì)鍵盤可以分為2類:獨(dú)立連接
8、式鍵盤和矩陣式鍵盤。本設(shè)計(jì)采用獨(dú)立式鍵盤。獨(dú)立式按鍵是直接用I/O口線構(gòu)成的單個(gè)按鍵電路,其特點(diǎn)是每個(gè)按鍵單獨(dú)占用一根I/O口線,每個(gè)按鍵的工作不會(huì)影響其它I/O口線的狀態(tài)。獨(dú)立式按鍵電路配置靈活,軟件結(jié)構(gòu)簡(jiǎn)單。獨(dú)立式按鍵軟件常采用查詢式結(jié)構(gòu)。先逐位查詢每根I/O口線的輸入狀態(tài),如某一根I/O口線輸入為低電平,則可確認(rèn)該I/O口線所對(duì)應(yīng)的按鍵已按下,然后,再轉(zhuǎn)向該鍵的功能處理程序。由于本程序較為簡(jiǎn)單,為了使用方便及節(jié)省資源,選擇獨(dú)立式鍵盤。下圖為獨(dú)立式鍵盤電路圖:圖3-5 獨(dú)立式鍵盤電路圖3.5.2 去抖動(dòng)鍵盤編程中主要考慮去抖動(dòng)的問題。當(dāng)測(cè)試表明有鍵被按下之后,緊接著就進(jìn)行去抖動(dòng)處理。因?yàn)榘?/p>
9、鍵是機(jī)械開關(guān)結(jié)構(gòu),由于機(jī)械觸點(diǎn)的彈性及電壓突跳等原因,在觸點(diǎn)閉合或斷開的瞬間會(huì)出現(xiàn)電壓抖動(dòng)。為保證鍵識(shí)別的準(zhǔn)確,在電壓信號(hào)抖動(dòng)的情況下不能進(jìn)行行狀態(tài)輸入。為此需進(jìn)行去抖動(dòng)處理。去抖動(dòng)有硬件和軟件兩種方法。硬件方法就是加去抖動(dòng)電路,從 根 本上 避 免 抖 動(dòng)的 產(chǎn)生。軟件消 抖,在第一次 檢 測(cè) 到有 鍵 按 下 時(shí),執(zhí) 行一段延時(shí)程序之后,再檢測(cè)此按鍵,如果第二次檢測(cè)結(jié)果仍為按下狀態(tài),CPU便確認(rèn)此按鍵己按下,消除了抖動(dòng)。本實(shí)驗(yàn)采用軟件消抖法,在按鍵按下后,執(zhí)行一段延時(shí)程序。3.6 發(fā)音部分設(shè)計(jì)如下圖所示,發(fā)音電路是由揚(yáng)聲器、三極管、變位器構(gòu)成。由三極管來驅(qū)動(dòng)揚(yáng)聲器發(fā)音的,同時(shí)加上變位器實(shí)現(xiàn)
10、電阻的可調(diào)來增強(qiáng)驅(qū)動(dòng)電流,提高驅(qū)動(dòng)能力,從而調(diào)節(jié)揚(yáng)聲器的音效。 圖3-6 揚(yáng)聲器電路圖第四章 軟件系統(tǒng)設(shè)計(jì)4.1 系統(tǒng)分析 4.1.1系統(tǒng)軟件的組成 (1)鍵盤掃描程序:檢測(cè)是否有按鍵按下,有按鍵按下則記錄按下鍵的鍵值,并跳轉(zhuǎn)至功能轉(zhuǎn)移程序;無按鍵按下,則返回鍵盤掃描程序繼續(xù)檢測(cè)。 (2)功能轉(zhuǎn)移程序:對(duì)檢測(cè)到的按鍵值進(jìn)行判斷,是琴鍵則跳轉(zhuǎn)至琴鍵處理程序,是功能鍵則跳轉(zhuǎn)至相應(yīng)的功能程序,我們?cè)O(shè)計(jì)的功能程序有三種,即音色調(diào)節(jié)功能、自動(dòng)播放樂曲和錄音的功能。 (3)琴鍵處理程序:根據(jù)檢測(cè)到的按鍵值,查詢音調(diào)表,給計(jì)時(shí)器賦值,使發(fā)出相應(yīng)頻率
11、的聲音。 (4)自動(dòng)播放歌曲程序:檢測(cè)到按鍵按下的是自動(dòng)播放歌曲功能鍵后執(zhí)行該程序,電子琴會(huì)自動(dòng)播放事先已經(jīng)存放的歌曲或錄音歌曲,歌曲播放完畢之后自動(dòng)返回至鍵盤掃描程序,繼續(xù)等待是否有按鍵按下。(5)錄音程序:檢測(cè)到按鍵按下的是錄音功能鍵后執(zhí)行該程序,跳轉(zhuǎn)到鍵盤掃描程序,檢測(cè)是否有鍵按下,有按鍵按下則記錄按下鍵值,根據(jù)檢測(cè)到的按鍵值,查詢音調(diào)表,給計(jì)時(shí)器賦值,使發(fā)出相應(yīng)頻率的聲音并跳轉(zhuǎn)到功能轉(zhuǎn)移程序。4.1.2 系統(tǒng)總體功能流程圖開始初始化T0鍵盤掃描程序演奏功能鍵按下自動(dòng)播放鍵按下錄音功能鍵按下 N N Y Y Y記錄音符 播放內(nèi)部存儲(chǔ)的音樂查表得到按鍵音符頻率查表得到按
12、鍵音符頻率播放音符播放音符4.2 參數(shù)計(jì)算 4.2.1發(fā)音原理 若要產(chǎn)生音頻脈沖,只要算出某一音頻的周期(1/頻率),再將此周期除以2,即為半周期的時(shí)間。利用定時(shí)器計(jì)時(shí)半周期時(shí)間,每當(dāng)計(jì)時(shí)終止后就將P1.0反相,然后重復(fù)計(jì)時(shí)再反相。就可在P1.0引腳上得到此頻率的脈沖。利用AT89C51的內(nèi)部定時(shí)器使其工作計(jì)數(shù)器模式(MODE1)下,改變計(jì)數(shù)值TH0及TL0以產(chǎn)生不同頻率的方法產(chǎn)生不同音階。4.2.2 音調(diào)的確定音調(diào)是唱曲時(shí)樂音的發(fā)音,一般依次唱成DO、RE、MI、FA、SO、LA、SI,即唱成簡(jiǎn)譜的1、2、3、4、5、6、7,相當(dāng)于漢字“多來米發(fā)梭拉西”的讀音。
13、例如,頻率為523Hz,其周期T1/5231912s,因此只要令計(jì)數(shù)器計(jì)時(shí)956s/1s956,每計(jì)數(shù)956次時(shí)將I/O反相,就可得到中音DO(523Hz)。計(jì)數(shù)脈沖值與頻率的關(guān)系式是:Nfi÷2÷fr,式中,N是計(jì)數(shù)值;fi是機(jī)器頻率(晶體振蕩器為12MHz時(shí),其頻率為1MHz);fr是想要產(chǎn)生的頻率。其計(jì)數(shù)初值T的求法如下:T65536N65536fi÷2÷fr例如:設(shè)K65536,fi1MHz,求中音DO(261Hz)。T65536N65536fi÷2÷fr655361000000÷2÷fr655365000
14、00/fr,中音DO的T65536500000/52364580。由音符的頻率值可以計(jì)算得出各個(gè)音調(diào)的計(jì)數(shù)值,如表4-1所示:(叫升記號(hào),表示把音在原來的基礎(chǔ)上升高半音,b叫降記音,表示在原來的基礎(chǔ)上降低半音。)表4-1 音調(diào)頻率與計(jì)數(shù)初值對(duì)照音符頻率(Hz)計(jì)數(shù)值(T值)音符頻率(Hz)計(jì)數(shù)值(T值)低1DO26263628#4FA#74064860#1DO#27763737中5SO78464898低2RE29463835#5SO#83194934#2RE#31163928中6LA88064968低3MI33064021#6LA#93264994低4FA34964103中7SI9686503
15、0#4FA#37064185低1DO104665058低SO39264260#1DO#110965085#5SO#41564331高2RE117565110低6LA44064400#2RE#124565134#6LA#46664463高3MI131865157低7SI49464524高4FA139765178中1DO52364580#4FA#149065198#1DO#55464633高5SO156865217中2RE58764633#5SO#166165235#2RE#62264884高6LA176065252中3MI65964732#6LA#186565268中4FA69864820高7S
16、I196765283采用查表程序進(jìn)行查表時(shí),可以為這個(gè)音符建立一個(gè)表格,有助于單片機(jī)通過查表的方式來獲得相應(yīng)的數(shù)據(jù)。4.2.3 節(jié)拍的確定若要構(gòu)成音樂,光有音調(diào)是不夠的,還需要節(jié)拍,讓音樂具有旋律(固定的律動(dòng)),而且可以調(diào)節(jié)各個(gè)音的快滿度?!肮?jié)拍”,即Beat,簡(jiǎn)單說就是打拍子,就像我們聽音樂不自主的隨之拍手或跺腳。若1拍實(shí)0.5s,則1/4 拍為0.125s,只要設(shè)定延遲時(shí)間就可以求得節(jié)拍的時(shí)間,假設(shè)1拍為4DELAY,則1/4應(yīng)為1DELAY,以此類推,得到如表4-2所示的節(jié)拍與延遲時(shí)間對(duì)照表。休止符表示暫停發(fā)音。表4-2 1/4和1/8節(jié)拍的時(shí)間設(shè)定曲調(diào)值DELAY曲調(diào)值DELAY調(diào)4/
17、4125毫秒調(diào)4/462毫秒調(diào)3/4187毫秒調(diào)3/494毫秒調(diào)2/4250毫秒調(diào)2/4125毫秒4.3程序設(shè)計(jì)4.3.1播放子程序(包括自動(dòng)播放存儲(chǔ)音樂和按鍵發(fā)音) 本設(shè)計(jì)共兩種播放模式,包括自動(dòng)播放存儲(chǔ)音樂和按鍵發(fā)音。上電后,首先開中斷并設(shè)定定時(shí)器0為工作方式1,當(dāng)自動(dòng)播放鍵按下時(shí),進(jìn)入中斷,根據(jù)樂譜在定義的音頻數(shù)組中查找相應(yīng)音律,然后給定時(shí)器賦初值,即開始播放音樂。當(dāng)DO、RE、MI、FA、SO、LA、SI七種音符鍵按下時(shí),根據(jù)音符值在定義的音頻數(shù)組中查找相應(yīng)音律,然后給定時(shí)器賦初值,即按鍵發(fā)音。開始開中斷并設(shè)定工作寄存器有鍵按下自動(dòng)播放鍵按下進(jìn)入中斷 N Y Y根據(jù)yinfu
18、和工作方式取值,并在數(shù)組中查找相應(yīng)音律進(jìn)入中斷給定時(shí)器T0 賦值根據(jù)樂譜在數(shù)組中查找相應(yīng)音律播放鍵值對(duì)應(yīng)的音符給定時(shí)器T0賦值播放音樂 第五章 實(shí)驗(yàn)結(jié)果5.1硬件調(diào)試 硬件調(diào)試主要是針對(duì)單片機(jī)部分進(jìn)行的調(diào)試。 在上電之前,先確保電路中不存在斷路或短路情況,這一工作是整個(gè)調(diào)試工作的第一步,也是非常重要的一個(gè)步驟。在這部分調(diào)試中主要使用的工具是萬用表,用來完成檢測(cè)電路中是否存在斷路或者短路情況的任務(wù)。注意焊點(diǎn)之間,確保焊點(diǎn)沒有短接在一起,同時(shí)注意焊點(diǎn)的美觀,確保沒有開路以及短路的現(xiàn)象出現(xiàn)。在確保硬件電路正常且無異常情況(斷路或短路)的情況下方可上
19、電調(diào)試,上電調(diào)試的目的是檢驗(yàn)電路是否接錯(cuò),同時(shí)還要檢驗(yàn)原理是否正確,在本次設(shè)計(jì)中,上電調(diào)試主要是檢測(cè)單片機(jī)控制部分、數(shù)碼管點(diǎn)亮部分、和音頻轉(zhuǎn)換電路硬件調(diào)試。 1、數(shù)碼管LED電路調(diào)試:接通電源,隨機(jī)按下按鈕可以看到數(shù)碼管顯示數(shù)字。 2、鍵盤單片機(jī)控制部分調(diào)試:上電后,隨機(jī)按動(dòng)鍵盤可以發(fā)現(xiàn)各個(gè)按鍵對(duì)應(yīng)的音正確。 5.2 軟件調(diào)試 調(diào)試主要方法和技巧:通常一個(gè)調(diào)試程序應(yīng)該具備至少四種性能:跟蹤、斷點(diǎn)、查看變量、更改數(shù)值。整個(gè)程序是一個(gè)主程序調(diào)用各個(gè)子程序?qū)崿F(xiàn)功能的過程,要使主程序和整個(gè)程序都能平穩(wěn)運(yùn)行,各個(gè)模塊的子程序的正確與平穩(wěn)運(yùn)行必不可少,所以
20、在軟件調(diào)試的最初階段就是把各個(gè)子程序模塊進(jìn)行分別調(diào)試。5.3仿真結(jié)果第六章 總結(jié)本次51單片機(jī)課程設(shè)計(jì)我們組做的是基于AT89C51單片機(jī)的屏幕式聲光電子琴的設(shè)計(jì),通過這次的DIY制作的學(xué)習(xí),我學(xué)到了不少知識(shí),真正體會(huì)到了學(xué)以致用的快感,通過自己動(dòng)手制作小作品不僅加深了我們對(duì)51單片機(jī)的理解,而且也增強(qiáng)了我們對(duì)音樂的興趣,也因此喜歡上了各種基于51單片機(jī)的小制作,從而更好地將課本知識(shí)與實(shí)踐過程相結(jié)合。在這次課程設(shè)計(jì)中,主要涉及了軟件和硬件兩個(gè)方面的內(nèi)容。在軟件方面,我們掌握了仿真軟件proteus的仿真方法,實(shí)現(xiàn)了7音符的發(fā)聲、錄音以及音樂的自動(dòng)播放功能,同時(shí)也提高了我們用匯編語言編程的能力;
21、在硬件方面,我們對(duì)電子產(chǎn)品的開發(fā)流程和功能應(yīng)用有了一定的了解,進(jìn)一步熟悉和掌握了單片機(jī)的內(nèi)部結(jié)構(gòu)和工作原理,了解了單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)的基本方法和步驟。并且提高了我們運(yùn)用所學(xué)的專業(yè)基礎(chǔ)知識(shí)來解決實(shí)際問題的能力,加深了對(duì)所學(xué)理論知識(shí)的理解和運(yùn)用,動(dòng)手能力也得到了相應(yīng)的提高,創(chuàng)新意識(shí)得到了鍛煉。在本次的實(shí)驗(yàn)設(shè)計(jì)中,我們?cè)诮梃b前人的基礎(chǔ)上也對(duì)自己的作品進(jìn)行了一部分創(chuàng)新,在設(shè)置錄音功能方面,根據(jù)隨機(jī)彈奏的音調(diào),將其偏移地址存入36H單元中,然后通過查詢音調(diào)表,使其發(fā)出相應(yīng)頻率的聲音,從而彈奏出事先錄好的一段音樂。在控制節(jié)奏方面,我們?cè)O(shè)置了休止符,來控制節(jié)奏的停頓,這樣就能產(chǎn)生有停頓感的音樂,而不是連續(xù)的
22、,使音樂聽起來更加悅耳。而這些創(chuàng)新均基于匯編語言的學(xué)習(xí)。總體來說,此次單片機(jī)課程設(shè)計(jì)使我們收獲良多,雖然課程設(shè)計(jì)的過程中遇到了很多困難與問題,但我們最終還是完成了設(shè)計(jì)的任務(wù)及要求。也讓我認(rèn)識(shí)到,無論做什么事情,只要你足夠堅(jiān)強(qiáng),有足夠的毅力和決心,有足夠的挑戰(zhàn)困難的勇氣,就沒有什么辦不到的。最后,衷心感謝老師給我們提供了這樣一次難得的機(jī)會(huì)來展示自己的作品,激發(fā)了我們對(duì)單片機(jī)DIY小制作的興趣,也感謝老師在這個(gè)學(xué)期孜孜不倦的教悔,讓我們?cè)趯W(xué)習(xí)單片機(jī)的基礎(chǔ)知識(shí)的同時(shí),真正體會(huì)到學(xué)以致用帶來的快感。由此我覺得,我們的學(xué)習(xí)不僅要在教師引導(dǎo)和幫助下順利入門, 還要掌握自動(dòng)控制原理課程的精髓和要點(diǎn), 并且能
23、夠“由厚及薄”, 達(dá)到對(duì)課程整體的把握, 具有一定的工程概念和實(shí)踐能力。附錄一:源程序RS EQU P3.5RW EQU P3.6E EQU P3.7ORG 00HSJMP MAINORG 00BHMOV TH0,33HMOV TL0,34HCPL P3.4RETI;!ORG 001BH INC 3CH ;中斷服務(wù),中斷計(jì)數(shù)器加1 MOV TH1,#0D8H MOV TL1,#0EFH ;12M晶振,形成10毫秒中斷 RETI;!ORG 30HMAIN : SETB P3.4 ;關(guān)閉揚(yáng)聲器LCALL CSH1602 ;初始化1602MOV TMOD,#11H ;設(shè)置定時(shí)器0為工作模式1SETB
24、 EA ;開總中斷SETB ET0 ;開定時(shí)器0中斷HUANYING: MOV P1,#80H ;歡迎語顯示地址LCALL ENABLEMOV DPTR,#TAB_HYMOV 30H,#00LP: MOV A,30HMOVC A,A+DPTRJZ KEYLCALL DELAY_100MSLCALL WRITE_1602INC 30HSJMP LPKEY: MOV P1,#01H ;清屏 ACALL ENABLE MOV P1,#80H LCALL ENABLE MOV DPTR,#TAB_YANZHOU MOV 30H,#00LP7: MOV A,30H MOVC A,A+DPTR JZ KE
25、Y_0 LCALL WRITE_1602 INC 30H SJMP LP7KEY_0: MOV P1,#0C0H ;音符的顯示地址 LCALL ENABLE MOV 38H,#16 ;寫入1602的顯示地址指針 MOV 35H,#2 ;控制節(jié)拍KEY_1: MOV P2,#0FFH ;置P2為輸入 JB P2.0,KEY_2 ;K1鍵沒按下,轉(zhuǎn)移 LCALL DELAY_10MS ;延時(shí)消抖 JNB P2.0,$ MOV 36H,#0 ;裝入1的音符碼相對(duì)地址 LCALL BOFANG_YFKEY_2: JB P2.1,KEY_3 ;K2鍵沒按下,轉(zhuǎn)移 LCALL DELAY_10MS ;延時(shí)
26、消抖 JNB P2.1,$ MOV 36H,#2 LCALL BOFANG_YFKEY_3: JB P2.2,KEY_4 ;K3鍵沒按下,轉(zhuǎn)移 LCALL DELAY_10MS ;延時(shí)消抖 JNB P2.2,$ MOV 36H,#4 LCALL BOFANG_YFKEY_4: JB P2.3,KEY_5 ;K4鍵沒按下,轉(zhuǎn)移 LCALL DELAY_10MS ;延時(shí)消抖 JNB P2.3,$ MOV 36H,#6 LCALL BOFANG_YFKEY_5: JB P2.4,KEY_6 ;K5鍵沒按下,轉(zhuǎn)移 LCALL DELAY_10MS ;延時(shí)消抖 JNB P2.4,$ MOV 36H,#8
27、 LCALL BOFANG_YFKEY_6: JB P2.5,KEY_7 ;K6鍵沒按下,轉(zhuǎn)移 LCALL DELAY_10MS ;延時(shí)消抖 JNB P2.5,$ MOV 36H,#10 LCALL BOFANG_YFKEY_7: JB P2.6,KEY_9 ;K7鍵沒按下,轉(zhuǎn)移 LCALL DELAY_10MS ;延時(shí)消抖 JNB P2.6,$ MOV 36H,#12 LCALL BOFANG_YFKEY_9: JB P3.2,KEY_1 ;K9鍵沒按下,重新掃描 LCALL DELAY_10MS ;延時(shí)消抖 JNB P3.2,$ LCALL DELAY_10MS;-播放音樂程序段- MOV
28、 P1,#01H ;清屏 ACALL ENABLE MOV P1,#80H LCALL ENABLE MOV DPTR,#TAB_PLAY MOV 30H,#00LP8: MOV A,30H MOVC A,A+DPTR JZ PLAY LCALL WRITE_1602 INC 30H SJMP LP8PLAY: MOV P2,#0FFH ;置P2為輸入 JB P2.0,PLAY_2 ;K1鍵沒按下,轉(zhuǎn)移 MOV DPTR,#TAB_GEQU1 ;存曲目標(biāo)志 LCALL BOFANG_GEQUPLAY_2: JB P2.1,PLAY_3 ;K2鍵沒按下,轉(zhuǎn)移 SETB ET1MOV 3BH,TM
29、ODMOV TMOD,#11Hmov dptr,#tab2 mov p1,#0c0hlcall enablelcall write1MOV DPTR,#DAT2 LCALL MUSIc0 CLR TR1 CLR ET1 MOV TMOD,3BHPLAY_3: JB P2.2,PLAY_4 ;K3鍵沒按下,轉(zhuǎn)移SETB ET1MOV 3BH,TMODMOV TMOD,#11Hmov dptr,#tab1 mov p1,#0c0hlcall enablelcall write1MOV DPTR,#DAT1 LCALL MUSIc0 CLR TR1 CLR ET1 MOV TMOD,3BHPLAY_
30、4: JB P2.3,PLAY_9 MOV R1,#50H LCALL BOFANG_LUYINPLAY_9: JB P3.2,PLAY ;K8鍵沒按下,重新掃描 LCALL DELAY_10MS ;延時(shí)消抖 JNB P3.2,$ LCALL DELAY_10MS;-錄音程序段- MOV P1,#01H ;清屏 ACALL ENABLE MOV P1,#80H LCALL ENABLE MOV DPTR,#TAB_RECORD MOV 30H,#00LP9: MOV A,30H MOVC A,A+DPTR JZ RECORD_0 LCALL WRITE_1602 INC 30H SJMP LP
31、9RECORD_0: MOV R1,#50H ;錄取音符存放地址 MOV 35H,#3 ;控制節(jié)拍 MOV P1,#0C0H ;音符的顯示地址 LCALL ENABLE MOV 38H,#16 ;寫入1602的顯示地址指針;-寫入錄音的名字- MOV 30H,#00C5: MOV A,30H LCALL TAB_RECORDING MOV R1,AINC R1INC 30HCJNE A,#0FEH,C5RECORD_1: MOV P2,#0FFH ;置P2為輸入 JB P2.0,RECORD_2 ;K1鍵沒按下,轉(zhuǎn)移 LCALL DELAY_10MS ;延時(shí)消抖 JNB P2.0,$ MOV
32、36H,#0 ;裝入1的音符碼相對(duì)地址 LCALL BOFANG_YF LCALL CUNCU ;調(diào)存音符子程序RECORD_2: JB P2.1,RECORD_3 ;K2鍵沒按下,轉(zhuǎn)移 LCALL DELAY_10MS ;延時(shí)消抖 JNB P2.1,$ MOV 36H,#2 LCALL BOFANG_YF LCALL CUNCURECORD_3: JB P2.2,RECORD_4 ;K3鍵沒按下,轉(zhuǎn)移 LCALL DELAY_10MS ;延時(shí)消抖 JNB P2.2,$ MOV 36H,#4 LCALL BOFANG_YF LCALL CUNCURECORD_4: JB P2.3,RECORD
33、_5 ;K4鍵沒按下,轉(zhuǎn)移 LCALL DELAY_10MS ;延時(shí)消抖 JNB P2.3,$ MOV 36H,#6 LCALL BOFANG_YF LCALL CUNCURECORD_5: JB P2.4,RECORD_6 ;K5鍵沒按下,轉(zhuǎn)移 LCALL DELAY_10MS ;延時(shí)消抖 JNB P2.4,$ MOV 36H,#8 LCALL BOFANG_YF LCALL CUNCURECORD_6: JB P2.5,RECORD_7 ;K6鍵沒按下,轉(zhuǎn)移 LCALL DELAY_10MS ;延時(shí)消抖 JNB P2.5,$ MOV 36H,#10 LCALL BOFANG_YF LCAL
34、L CUNCURECORD_7: JB P2.6,RECORD_8 ;K7鍵沒按下,轉(zhuǎn)移 LCALL DELAY_10MS ;延時(shí)消抖 JNB P2.6,$ MOV 36H,#12 LCALL BOFANG_YF LCALL CUNCURECORD_8: JB P2.7,RECORD_9 ;K8鍵沒按下,轉(zhuǎn)移 LCALL DELAY_10MS ;延時(shí)消抖 JNB P2.7,$ MOV 36H,#42 ;休止符標(biāo)志存36H LCALL DELAY_100MS LCALL CUNCURECORD_9: JNB P3.2,J0 ;K8鍵沒按下,重新掃描 LJMP RECORD_1J0: LCALL
35、DELAY_10MS ;延時(shí)消抖 JNB P3.2,$ LCALL DELAY_10MS MOV R1,#255 ;寫入歌曲結(jié)束標(biāo)志 LJMP KEY ;回演奏模式;*子程序區(qū)*;=初始化1602顯示器=CSH1602: MOV P3,#0FFHMOV P1,#01HACALL ENABLEMOV P1,#38HACALL ENABLEMOV P1,#0CHACALL ENABLEMOV P1,#06HACALL ENABLERET;=1602發(fā)命令子程序=ENABLE: CLR RS CLR RWCLR EACALL DELAY_2MSSETB ERET;=讀1602IR中命令子程序=ENA
36、BLE_1: CLR RSSETB RWCLR EACALL DELAY_2MSSETB ERET;=寫數(shù)據(jù)子程序(1602)=WRITE_1602: MOV P1,A SETB RSCLR RWCLR EMOV R5,#50 ;延時(shí)100us(12M晶振)DJNZ R5,$SETB ERET;=播放一個(gè)音符并顯示音符和頻譜=BOFANG_YF: MOV A,36H LCALL TAB_YF MOV 33H,A MOV A,36H INC A LCALL TAB_YF MOV 34H,A MOV TH0,33H MOV TL0,34H SETB TR0 ;啟動(dòng)定時(shí)器0 MOV A,36H ;取
37、音符的顯示碼 LCALL TAB_YF1 LCALL WRITE_1602 DEC 38H MOV A,36H INC A LCALL TAB_YF1 LCALL WRITE_1602 DJNZ 38H,D2 ;1602一行沒寫滿,轉(zhuǎn)移 MOV 30H,#16 ;1602滿行清行并從頭開始寫 MOV P1,#0C0H LCALL ENABLE MOV A,#' 'LP10: LCALL WRITE_1602 DJNZ 30H,LP10 MOV 38H,#16 MOV P1,#0C0H LCALL ENABLE;-顯示頻譜分析條程序段-D2: MOV A,36H ;音符碼轉(zhuǎn)換為相
38、應(yīng)鍵值 MOV B,#2 DIV AB ADD A,#1 MOV 39H,A MOV 3AH,39H ;保護(hù)音符碼對(duì)應(yīng)的鍵值 MOV P1,#85H ;設(shè)定頻譜分析條顯示初地址 LCALL ENABLE MOV A,#'>'D5: LCALL WRITE_1602 DJNZ 39H,D5;-控制節(jié)拍時(shí)長(zhǎng)程序段- MOV 37H,35H ;保護(hù)循環(huán)次數(shù)控制(節(jié)拍) LP1: ACALL DELAY_100MS DJNZ 35H,LP1 ;延時(shí)次數(shù)控制 MOV 35H,37H;-發(fā)音結(jié)束,清除頻譜分析條- MOV P1,#85H ;頻譜分析條顯示的初地址 LCALL ENAB
39、LE MOV A,#' ' MOV 39H,3AH D6: LCALL WRITE_1602 DJNZ 39H,D6 MOV A,#10H ;釋放音符碼顯示地址 CLR C SUBB A,38H ADD A,#0C0H MOV P1,A LCALL ENABLE CLR TR0 ;關(guān)定時(shí)器0 RET;=播放一個(gè)音符并顯示頻譜=BOFANG_YF_1: MOV A,36H LCALL TAB_YF MOV 33H,A MOV A,36H INC A LCALL TAB_YF MOV 34H,A MOV TH0,33H MOV TL0,34H SETB TR0 ;啟動(dòng)定時(shí)器0 ;-
40、顯示頻譜分析條程序段- MOV A,36H ;音符碼轉(zhuǎn)換為相應(yīng)鍵值 MOV B,#2 DIV AB ADD A,#1 MOV 39H,A MOV 3AH,39H ;保護(hù)音符碼對(duì)應(yīng)的鍵值 MOV P1,#85H ;設(shè)定頻譜分析條顯示初地址 LCALL ENABLE MOV A,#'>'D7: LCALL WRITE_1602 DJNZ 39H,D7;-控制節(jié)拍時(shí)長(zhǎng)程序段- MOV 37H,35H ;保護(hù)循環(huán)次數(shù)控制(節(jié)拍) LP11: ACALL DELAY_100MS DJNZ 35H,LP11 ;延時(shí)次數(shù)控制 MOV 35H,37H;-發(fā)音結(jié)束,清除頻譜分析條- MOV
41、 P1,#85H ;頻譜分析條顯示的初地址 LCALL ENABLE MOV A,#' ' MOV 39H,3AH D8: LCALL WRITE_1602 DJNZ 39H,D8 CLR TR0 ;關(guān)定時(shí)器0 RET;=播放一首歌并顯示歌名=;-(一個(gè)音符2字節(jié)存儲(chǔ),音符碼存低字節(jié),節(jié)拍存高字節(jié);254為歌曲名結(jié)束標(biāo)志,255為歌曲結(jié)束標(biāo)志)-BOFANG_GEQU: MOV P1,#0C0H ;歌名顯示地址 LCALL ENABLE MOV 30H,#00LP2: MOV A,30H MOVC A,A+DPTR INC 30H CJNE A,#254,XIANSHI_GEMING SJMP C1XIANSHI_GEMING: MOV P1,A LCALL WRITE_1602SJMP LP2C1:MOV P1,#0C0H ;歌詞顯示地址LCALL ENABLELP3:MOV A,30H MOVC A,A+DPTR ;取音符碼CJNE A,#0FFH,C6SJMP S0C6:CJNE A,#42,C0 ;音符碼為休止符不開定時(shí)器,直接調(diào)用延時(shí) INC 30HMOV A,30HMOVC A,A+DPTRINC 30HMOV 35H,ALP12: LCALL DELAY_100MS DJNZ 35H,LP12SJMP LP3C0:MOV 36H,AINC
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《家庭親情圖片》課件
- 單位管理制度集合大合集職員管理十篇
- 單位管理制度匯編大合集人員管理篇十篇
- 《孔子世家原文》課件
- 單位管理制度范例合集職工管理篇十篇
- 單位管理制度呈現(xiàn)合集【人事管理篇】十篇
- 九年級(jí)政治東西南北課件
- 七年級(jí)英語單詞課件
- 《生活中的規(guī)則》課件
- 第2單元 社會(huì)主義制度的建立與社會(huì)主義建設(shè)的探索 (B卷·能力提升練)(解析版)
- 2024年《論教育》全文課件
- 生命安全與救援學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 大一中國(guó)近代史綱要期末考試試題及答案
- 文創(chuàng)園項(xiàng)目可行性方案
- 馬工程版《中國(guó)經(jīng)濟(jì)史》各章思考題答題要點(diǎn)及詳解
- OBE理念下的一流專業(yè)和課程建設(shè)
- 一年級(jí)口算天天練(可直接打印)
- 川中干法脫硫
- 船舶PSC檢查表(全船)
- 檳榔黃化病的診斷及防控
- 腫瘤基礎(chǔ)知識(shí)培訓(xùn)
評(píng)論
0/150
提交評(píng)論