




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
PAGEPAGE1目錄摘要第一章緒論第二章方案論證及設計2.1語音存儲回放系統方案論證2.2方案討論及確定第三章單片機介紹3.1單片機簡介3.2單片機編程語言介紹3.3系統單片機選擇3.4AT89S52引腳功能介紹3.5定時器0和1使用第四章硬件設計4.1單片機系統硬件的設計4.1.1整體電路設計4.1.2供電電路圖設計4.1.3鍵盤、顯示電路設計4.1.4存儲器設計4.2模擬音頻電路設計4.2.1MIC電路設計4.2.2放大濾波電路設計4.2.3ADC設計4.2.4DAC設計4.2.5音頻功率放大器設計第五章軟件設計5.1KeilC51簡介5.2主程序流程圖5.3各個模塊程序介紹5.3.1鍵盤子程序設計5.3.2顯示子程序設計5.3.3ADC子程序設計5.3.4DAC子程序設計5.3.5定時中斷服務子程序 致謝參考文獻
摘要本系統以單片機89S52為核心,選用由2片62256組成RAM陣列,作為語音的數字化信號的存儲器件,將外部數據存儲空間擴大至64KB。利用AM和DPCM方法對數據進行壓縮以加長存儲時間。本文闡述了實用可靠的設計方案。
第一章緒論磁帶語音存儲手段應用還比較廣泛,目前,隨著數字化信號處理技術的不斷提高,單片機、數字信號處理器以及語音處理大規模集成電路的進步,語音合成,語音識別,語音存儲和回放技術的應用越來越廣泛,盡管現在各種語言合成芯片,語音處理應用電路有許多,但都需要增加硬件投資,在一些由單片機構成的測控系統中,由于單片機接口有限,還需要擴寬硬件接口線路,本文介紹的語音存儲與回放系統中,沒有使用專用的語音處理芯片,不需擴寬接口電路,只利用一般的單片機測控系統中都有的硬件電路(如A/D、D/A、存儲器等)就能完成語音信號的數字化處理,即能完成語音的存儲與回放,實現單片機測控系統的語音提示報警及語音提示操作。因此特別適用于單片機測控系統,為單片機測控系統的語音報警及語音提示操作在幾乎不需增加硬件投資情況下的語音處理提供了一種思路。
第二章方案論證及設計2.1語音存儲回放系統方案論證方案一:ADC+MCU+DAC方案數字化語音存儲與回放系統的基本思想是將模擬語音信號通過模數轉換器A/D轉換成數字信號,再通過單片機控制存儲在存儲器中,回放時,由單片機控制將數據從存儲器中讀出,然后通過數模轉換器D/A轉換成模擬信號,經放大在揚聲器或耳機上輸出語音。本設計方案系統總體結構框圖如圖2.1所示:圖2.1方案一系統總體框圖方案二:專用語音芯片方案如采用ISD1110/ISD1420系列語言芯片。ISD1110/ISD1420系列單片錄放時間8至20秒,音質好。芯片采用CMOS技術,內含震蕩器、話筒前置放大、自動增益控制、防混淆濾波器、平滑濾波器、揚聲器驅動及EEPROM陣列。最小的錄放系統僅需麥克風、喇叭、兩個按鈕、電源及少數電阻電容。在錄放操作結束后,芯片自動進入低功耗節電模式、功耗僅0.5uA。ISD1110/ISD1420系列有唯一的錄音控制和邊緣/電平觸發兩種放音控制。不分段時外圍線路最簡,也可按最小段長為單位任意組合分段,參見表1-1“最大段數”芯片提供若干操作模式,大大提高了控制的靈活性。芯片采用多電平直接模擬量存儲專利技術,每個采樣直接存儲在片內單個EEPROM單元中,因此能夠非常真實、自然地再現語音、音樂、音調各效果,避免了一般固體錄音電路因量化和壓縮造成的量化噪聲和“金屬聲”。采樣頻率從5.3,6.4到8.0KHz,對音質僅有輕微影響。片內信息可保存100年(無需后備電源),EEPROM單片可反復錄音十萬次。這個方案的系統圖如下:控制控制電路鍵盤語音芯片LED顯示揚聲器揚聲器電源如圖1,
本系統使用8031作為CPU,由CPU來控制語音合成芯片TC8830AF,使其工作在CPU控制模式下。當系統進行語音再生時,由CPU控制語音合成電路中的語音芯片來讀取其外接的存儲器內部的語音信息,并合成語音信號,再通過語音輸出電路,進行語音報站和提示。CPU同時通過程序讀取漢字信息,送入LED點陣顯示電路來進行漢字提示。當汽車到達某站時,汽車司機通過鍵盤來控制本系統進行工作,并且,系統將使用狀態指示電路,向司機指示出當前的行駛方向及站號(如與實際方向不符,司機可通過鍵盤來調整)。當系統進行語音錄制時,語音信號通過語音輸入電路輸入給語音合成電路中的語音合成芯片,由語音合成芯片進行數據處理,并將生成的數字語音信息存儲到語音存儲芯片中,從而建立語音庫。
部分電路的設計1.語音處理圖2.2方案二系統設計框圖2.2方案討論及確定ADC+MCU+DAC方案的特點是應用比較靈活,可以實現很多語音壓縮處理等算法。專用語音芯片方案特點有使用方便的單片錄放系統,外部元件最少,重現優質原聲,沒有常見的背景噪音,具有自動節電模式等。由于畢業設計的主要目的是鞏固大學學過的知識,培養綜合運用所學的基礎知識,提高學生獨立解決問題的能力,所以選擇第一種ADC+MCU+DAC方案
第三章單片機介紹3.1單片機簡介3.1.1單片機概述單片微機(Single-ChipMicrocomputer)簡稱單片機,也有的叫做微處理(Micro-Processor簡寫μP)或微控制器(Micro-Controller簡寫μC),通常統稱微型處理部件(MicroControllerUnit簡寫MCU)。一般的說,單片機就是在一塊硅片上集成CPU、RAM、ROM、定時器/計數器、和多種I/O的完整的數字處理系統。二十世紀,微電子、IC集成電路行業發展迅速,其中單片機行業的發展最引人注目。單片機功能強、價格便宜、使用靈活,在計算機應用領域中發揮著極其重要的作用。從INTEL公司于1971年生產第一顆單片機Intel-4004開始,開創了電子應用的“智能化”新時代。單片機以其高性價比和靈活性,牢固樹立了其在嵌入式微控制系統中的“霸主”地位,在PC機以286、386、Pentium、PⅢ高速更新換代的同時,單片機卻“始終如一”保持旺盛的生命力。例如,MCS-51系列單片機已有十多年的生命期,如今仍保持著上升的態勢就充分證明了這一點。3.1.2單片機的結構與組成目前,單片機的系統結構有兩種類型:一種是將程序和數據存儲器分開使用,即哈佛(Harvard)結構,當前的單片機大都是這種結構。另一種是采用和PC機的馮.諾依曼(VonNeumann)類似的原理,對程序和數據存儲器不作邏輯上的區分,用來存放用戶程序,可分為EPROM、OTP、ROM和FLASH等類。EPROM型內存編程后其內容可用紫外線擦除,用戶可反復使用,故特別適用于開發過程,但EPROM型單片機價格很高。具有ROM型(掩膜型)內存的單片機價格最低,它適用于大批量生產。由于ROM型單片機的代碼只能由生產廠商在制造芯片時寫入,故用戶要更改程序代碼就十分不便,在產品未成熟時選用ROM型單片機風險較高。OTP型(一次可編程)單片機介于EPROM和ROM型單片機之間,它允許用戶自己對其編程,但只能寫入一次。OTP型單片機生產多少完全可由用戶自己掌握,不存在ROM型有最小起訂量和掩膜費問題,另外,該類單片機價格已同掩膜型十分接近,故特別受中小批量客戶的歡迎。Flash型(閃速型)單片機允許用戶使用編程工具或在線快速修改程序代碼,且可反復使用,故一推出就受到廣大用戶的歡迎。Flash型單片機,即可用于開發過程,也可用于批量生產,隨著制造工藝的改進,Flash型單片機價格不斷下降,使用越來越普遍,它已是現代單片機的發展趨勢。隨機內存(RAM):用來存放程序運行時的工作變量和數據,由于RAM的制作工藝復雜,價格比ROM高得多,所以單片機的內部RAM非常寶貴,通常僅有幾十到幾百個字節。RAM的內容是易失性(也有的稱易揮發性)的,掉電后會丟失。最近出現了EEPROM或FLASH型的數據存儲器,方便用戶存放不經常改變的數據及其它重要信息。單片機通常還有特殊寄存器和通用寄存器,它們是單片機中存取速度最快的內存,但通常存儲空間很小。3.1.3中央處理器(CPU)是單片機的核心單元,通常由算術邏輯運算部件ALU和控制部件構成。CPU就象人的大腦一樣,決定了單片機的運算能力和處理速度。并行輸入/輸出(I/O)口:通常為獨立的雙向口,任何口既可以用作輸入方式,又可以作輸出方式,通過軟件編程來設定。現代的單片機的I/O口也有不同的功能,有的內部具有上拉或下拉電阻,有的是漏極開路輸出,有的能提供足夠的電流可以直接驅動外部設備。I/O是單片機的重要資源,也是衡量單片機功能的重要指針之一。串口輸入/輸出口:用于單片機和串行設備或其它單片機的通信。串行通信有同步和異步之分,這可以用硬件或通用串行收發器件來實現。不同的單片機可能提供不同標準的串行通信接口,如UART、SPI、I2C、MicroWire等。3.1.4定時器/計數器(T/C)單片機內部用于精確定時或對外部事件(輸入信號如脈沖)進行計數,有的單片機內部有多個定時/計數器。3.1.5系統時鐘通常需要外接石英晶體或其它振蕩源來提供時鐘信號輸入,也有的使用內部RC振蕩器。以上是單片機的基本構成,現代的單片機又加入了許多新的功能部件,如模擬/數字轉換器(A/D)、數字/模擬轉換器(D/A)、溫度傳感器、液晶(LCD)驅動電路、電壓監控、看門狗(WDT)電路、低壓檢測(LVD)電路等等3.2單片機編程語言介紹對于51系列單片機,現有四種語言支持,即匯編、PL/M,C和BASIC。BASIC通常附在PC機上,是初學編程的第一種語言。一個新變量名定義之后可在程序中作變量使用,非常易學,根據解釋的行可以找到錯誤而不是當程序執行完才能顯現出來。BASIC由于逐行解釋自然很慢,每一行必須在執行時轉換成機器代碼,需要花費許多時間不能做到實時性。BASIC為簡化使用變量,所有變量都用浮點值。BASIC是用于要求編程簡單而對編程效率和運行速度要求不高的場合。PL/M是Intel從8080微處理器開始為其系列產品開發的編程語言。它很像PASCAL,是一種結構化語言,但它使用關鍵詞去定義結構。PL/M編譯器好像匯編器一樣可產生緊湊代碼。PL/M總的來說是“高級匯編語言”,可詳細控制著代碼的生成。但對51系列,PL/M不支持復雜的算術運算、浮點變量而無豐富的庫函數支持。學習PL/M無異于學習一種新語言。C語言是一種源于編寫UNIX操作系統的語言,它是一種結構化語言,可產生壓縮代碼。C語言結構是以括號{}而不是子和特殊符號的語言。C可以進行許多機器級函數控制而不用匯編語言。與匯編相比,有如下優點:對單片機的指令系統不要求了解,僅要求對51的內存結構有初步了解寄存器分配、不同內存的尋址及數據類型等細節可由編譯器管理程序有規范的結構,可分為不同的函數。這種方式可使程序結構化將可變的選擇與特殊操作組合在一起的能力,改善了程序的可讀性編程及程序調試時間顯著縮短,從而提高效率提供的庫包含許多標準子程序,具有較強的數據處理能將已編好程序可容易的植入新程序,因為它具有方便的模塊化編程技術C語言作為一種非常方便的語言而得到廣泛的支持,C語言程序本身并不依賴于機器硬件系統,基本上不做修改就可根據單片機不同較快地移植過來。51的匯編語言非常像其它匯編語言。指令系統比第一代微處理器要強一些。51的不同存儲區域使得其復雜一些。盡管懂得匯編語言不是你的目的,看懂一些可幫助你了解影響任何語言效率的51特殊規定。例如,懂得匯編語言指令就可以使用在片內RAM作變量的優勢,因為片外變量需要幾條指令才能設置累加器和數據指針進行存取。要求使用浮點和啟用函數時只有具備匯編編程經驗才能避免生成龐大的、效率低的程序,這需要考慮簡單的算術運算或先算好的查表法。最好的單片機編程者應是由匯編轉用C而不是原來用過標準C語言的人。由此來看,單片機有著微處理器所不具備的功能,它可單獨地完成現代工業控制所要求的智能化控制功能,這是單片機最大的特征。3.3系統單片機選擇本系統以MCS-51單片機成員中的AT89S52為控制核心。AT89S52是美國ATMEL公司生產的低功耗,高性能CMOS8位單片機,片內含4kbytes的可系統編程的Flash只讀程序內存,器件采用ATMEL公司的高密度、非易失性存儲技術生產,兼容標準8051指令系統及引腳。它集Flash程序內存既可在線編程(ISP)也可用傳統方法進行編程及通用8位微處理器于單片芯片中,ATMEL公司的功能強大,低價位AT89S52單片機可為您提供許多高性價比的應用場合,它靈活應用于各種控制領域。主要性能參數:(1)與MCS-51產品指令系統完全兼容(2)4K字節在系統編程(ISP)Flash閃速內存(3)1000次擦寫周期(4)4.0-5.5V的工作電壓范圍(5)全靜態工作模式:0Hz—33MHz(6)三級程序加密鎖(7)2568字體內部RAM(8)32個可編程I/O口線(9)3個16位定時/計數器(10)8個中斷源(11)全雙工串行UART通道(12)低功耗空閑和掉電模式(13)中斷可從空閑模喚醒系統(14)看門狗(WDT)及雙數據指針(15)掉電標識和快速編程特性(16)靈活的在系統編程(ISP—字節或頁寫模式)其內部結構結構如圖2.1所示:圖3.1單片機內部結構圖3.4看門狗電路由于單片機自身的抗干擾能力比較差,尤其在一些條件比較惡劣、噪聲大的場合,常會出現單片機因為受外界干擾而導致死機的現象,造成系統不能正常工作。設置看門狗是為了防止單片機死機、提高單片機系統抗干擾性的一種重要途徑。一個完整的單片機應用系統應該是一個軟、硬件的結合體,在系統正常工作時,會受到各種外界干擾因素的影響。這種外界干擾輕者導致系統內部數據出錯,重者將嚴重影響程序的運行。因此單片機應用系統的開發一定要考慮系統可靠性的設計,以滿足系統在現場苛刻環境下的正常運行,而“看門狗”則是系統可靠性設計的重要一環。在一個單片機應用系統中,所謂的“看門狗”是指在系統設計中通過軟件或硬件方式在一定的周期內監控單片機或其它CPU的運行情況。如果在規定的時間內沒有收到來自單片機或其它CPU的觸發信號,則系統會強制復位,以保證系統在受到干擾時仍能夠維持正常的工作狀態。在單片機系統中,看門狗的設計一般采用硬件和軟件結合兩種方式。3.4.1軟件看門狗軟件看門狗是利用單片機片內閑置的定時器/計數器單元作為看門狗,在單片機程序中適當的插入監控指令,當程序出現異常或進入死循環時,利用軟件將程序計數器PC賦予初始值,強制性的使程序重新開始運行。使用軟件看門狗的具體實現方法如下。1.首先在初始化程序中設置好定時器/計數器的方式控制寄存器(TMOD)
和定時時間的初值,并開中斷。2.根據定時器的定時時間,在主程序中按一定的間隔插入復位定時器的指令,既插入監控指令,兩條指令間的時間間隔應該小于定時時間,否則看門狗將發生錯誤動作。3.在定時器的中斷服務程序中設置一條無條件轉移指令,將程序計數器PC轉移到初始化程序的入口。軟件看門狗的最大特點是無須外加硬件電路,經濟性好。當然,如果片內的定時器/計數器被占用,就需要尋求其它的設計方式了。3.4.2硬件看門狗專用硬件看門狗是指一些集成化的或集成在單片機內的專用看門狗電路,它實際上是一個特殊的定時器,當定時時間到時,發出溢出脈沖。從實現角度上看,該方式是一種軟件與片外專用電路相結合的技術,硬件電路連接好后,在程序中適當地插入一些看門狗復位的指令,保證程序正常運行時看門狗不溢出。而當程序運行異常時,看門狗超時發出溢出脈沖,通過單片機的RESET引腳使單片機復位。這種方式中,看門狗能否可靠有效地工作,與硬件組成及軟件的控制策略都有密切的關系。目前常用的集成看門狗電路很多,如MAX705-708、MAX813L、X5043/5045等。看門狗電路可以分為內看門狗和外看門狗。看門狗電路是指看門狗的硬件電路包含在單片機內部,如Microchip的16C5x系列,MOTOROLA的68C05系列,51內核中比較典型的有Atmel公司的AT89C55WD、AT89S8252,Winbond公司的W77E58,SST公司的SST89C58以及Philips公司87系列的多種型號的單片機等。對于沒有看門狗定時器的單片機或是認為內部看門狗不可靠時,可以采用外部看門狗定時器。外部看門狗電路既可以用專用看門狗芯片,也可由普通芯片實現。3.5AT89S52引腳功能介紹1.電源引腳Vcc和GNDVcc:電源電壓,GND(10腳):接地端。2.時鐘電路引腳XTALl和XTAL2。XTAL2(18腳):接外部晶體和微調電容的一端。在內它是振蕩電路反相放大器的輸出端,振蕩電路的頻率就是晶體的固有頻率。要檢查單片機的振蕩電路是否正確工作,可用示波器查看XTAL2端是否有脈沖信號輸出。XTAL1(19腳):接外部晶體的微調電容的另一端。在片內它是振蕩電路反相放大器的輸入端。若需采用外部時鐘電路時,該引腳輸入外部時鐘脈沖如圖2.2,2.3所示:圖3.2AT89S51單片機晶振接法3.控制信號引腳RSTRES(8腳)“RST是復位信號輸入端,高電平有效。當此輸入端保持兩個機器周期(24個時鐘振蕩周期)的高電平時,可以完成復位操作。圖3.3外部時鐘電路4.I/O(輸入/輸出)P0、P1、P2和P3標準51單片機,如8051、8031、AT89C51、AT89S51、P89C51等有4個I/O(輸入/輸出)口,分別為:P0口(39—32腳):P0口是一個漏極開路的8位雙向埠。作為漏極八路的輸出端口,每次能驅動8個Ls型TTL負載。當P0口作為輸入口使用時,其先向鎖存器(地址80H)寫入全1,此時P0口的全部引腳懸空,叫作為高阻抗輸入。P1口(1—8腳):P1口是一個帶上拉電阻的8位準雙向I/O端口每一位能驅動(吸收成輸出電流)4個LS型TTL負載。在P1口作為輸入口使用時,應先向P1口鎖存器(地址90H)寫入全1,上拉電阻接成高電平。P2口(21—28腳):P2口是一個帶內部上接電阻的8位準雙向埠。P2口的每一位能驅動4個LS型TTL負載。P3口(21—28腳):P3口是一個帶內部上接電阻的8位準雙向埠。P3口的每一位能驅動(吸收或輸出電流)4個LS型TTL負載。P3口與其它的I/O埠有很大區別,它除作為—般準雙向I/O口外,每個引腳還具有專門的功能,見表3-1。表3-1端口引腳功能P1口也是一個準雙向口,作通用I/O口使用。其電路結構見圖3.4圖3.4P1口作通用I/O口使用輸出驅動部分內部有上拉負載電阻與電源相連。實質上拉電阻是兩個場效應管(FET)并在一起,—個FET為負載管,其電阻固定;另一個FET可工作在導通或截止兩種狀態,使其總電阻值變化近為0或阻值很大兩種情況。當阻值近似為0時,可將引腳快速上拉至全高電平,當阻值很大時,P1口為高阻輸入狀態。當P1口輸出高電平時,能向外提供拉電流負載,所以不必再接上拉電阻。在埠用作輸入時,也必須先向對應的鎖存器寫入“1”,使FET截止。由于片內負載電阻較大,約20k—3.6定時器0和1使用定時和計數功能由特殊功能寄存器TMOD的控制位C/T進行選擇。這兩個定時/計數器有4種操作模式,通過TMOD的M1和M0選擇兩個定時/計數器的模式0、1和2都相同。模式3不同如下所述模式模式0將定時器設置成模式0時類似8048定時器,即8位計數器帶32分頻的預分頻器。圖3.5所示為模式0工作方式。此模式下定時器寄存器配置為13位元寄存器,當計數從全為1翻轉為全為0時定時器中斷標志位TFn置位。當TRn=1同時GATE=0或INTn=1時定時器計數置位GATE時允許由外部輸入。INTn控制定時器,這樣可實現脈寬測量,TRn為TCON寄存器內的控制位圖3。模式0的操作對于定時器0及定時器1都是相同的兩個不同的GATE位,TMOD.7和TMOD.3分別分配給定時器0及定時器1。圖3.5定時器/計數器/0/1的模式0:13定時器/計數器模式1模式1除了使用了THn及TLn全部16位元外其它與模式0相同。模式2此模式下定時器寄存器作為可自動重裝的8位計數器TLn。如圖3.6所示,TLn的溢出不僅置位TFn,而且將THn內容重新裝入TLnTHn。內容由軟件預置重裝時,THn內容不變。模式2的操作對于定時器0及定時器1是相同的。圖3.6定時器寄存器模式3在模式3中定時器1停止計數效果與將TR1設置為0相同.此模式下定時器0的TL0及TH0作為兩個獨立的8位計數器圖3.7為模式3時的定時器0邏輯TL0占用定時器0的控制位C/T、GATE、TR0、INT0及TF0。TH0限定為定時器功能計數器周期占用定時器1的TR1及TF1此時TH0控制定時器1中斷。模式3可用于需要一個額外的8位定時器的場合定時器0工作于模式3時80C51看似有3個定時器/計數器當定時器0工作于模式3時定時器1可通過開關進入/退出模式3,它仍可用作串行端口的波特率發生器或者應用于任何不要求中斷的場合。圖3.7定時器/計數器/0/1的模式3:雙8位計數器
第四章硬件設計4.1單片機系統硬件的設計本設計單片機選用合適的51系列單片機為系統核心,加以數碼管、電阻、電容、晶振、按鍵開關等器件做其外圍電路。4.1.1單片機最小系統51單片機選用AT89S52。單片機及外圍電路如圖4.1。圖4.1單片機及外圍電路對于AT89S52單片機,其最小系統只需要電源、上電復位電路、時鐘電路就能工作。由于我們的程序存儲器(ROM)采用內部Flash存儲單元,所以單片機上的EA接高。時鐘電路的晶振采用12M的晶振,它由JZ、兩個33pF電容和單片機內部的OSC電路組成,為單片機提供12MHz的時鐘信號源。微處理器系統在開始工作時必須對微處理器內部的寄存器等進行復位,使各個寄存器的值設為預定狀態才能順利開始工作。復位電路的好壞決定著單片機能否正常工作。復位電路基本功能是在系統上電時提供復位信號,直至系統電源穩定后,撤銷復位信號。為可靠起見,電源穩定后還要經過一定的延時才撤銷復位信號,主要是防止由于電源開關或插頭分合過程中引起的抖動。復位電路可以使用專用復位芯片,也可以用電阻電容搭建。本文從可靠性和成本考慮最終選用電阻電容來搭建復位電路。對于51內核的單片機,RST是復位信號輸入端,高電平有效。當此輸入端保持兩個機器周期(24個時鐘振蕩周期)的高電平時,可以完成復位操作。當單片機加電時由于RC充電的效果,使得復位腳保持一會高電平使單片機內部寄存器徹底復位。 74HC573為地址鎖存器,51單片機的低8位地址總線地址是和數據總線復用的,而RAM的地址總線地址和數據總線是分開的,所以要用地址鎖存器把低8位地址和數據分開,常用的地址鎖存器有74LS/HC373和74LS/HC573,這里選用74HC573。4.1.2供電電路圖設計 單片機系統供電需要+5V電壓,而音頻放大器需要+12V和-12V雙電源供電。所以本系統需要三組電源,如圖4.2所示。圖4.2單片機供電電路圖4.1.3鍵盤電路設計鍵盤是標準的輸入設備,實現鍵盤有兩種方案:一是采用現有的一些芯片實現鍵盤掃描,如8279,CH451,LMC9768等,還有就是用軟件實現鍵盤掃描。使用現成的芯片可以節省CPU的開銷,但增加了成本,而用軟件實現具有較強的靈活性,也只需要很少的CPU開銷,可以節省開發成本。本文便使用軟件實現鍵盤的掃描。常見的鍵盤可分為獨立按鍵式鍵盤和行列掃描式鍵盤。獨立按鍵式鍵盤應用在需要少量按鍵的情況,按鍵和單片機的I/O口線直接連接。而行列掃描式鍵盤用在按鍵需求較多的情形下。考慮到血壓計面向大多數人群,需操作簡單,所以采用獨立按鍵式鍵盤。獨立式鍵盤電路如圖4.3所示。其中P10、P11、P12、P13為51單片機的IO口。圖4.3按鍵電路圖理論上當按鍵按下或彈起時,可以相應的產生低電平或高電平,但實際并非如此。鍵盤按鍵一般都采用觸點式按鍵開關。當按鍵被按下或釋放時,按鍵觸點的彈性會產生抖動現象。即當按鍵按下時,觸點不會迅速可靠地接通,當按鍵釋放時,觸點也不會立即斷開,而是要經過一段時間的抖動刁才能穩定下來,按鍵材料不同,抖動時間也各不相同。按鍵抖動可能導致單片機將一次按鍵操作識別為多次操作,一般采用硬件電路或軟件程序來消除。圖4.4按鍵抖動示意圖一次完整的按鍵過程,如圖4.4所示,包含以下幾個階段。1、等待階段:此時按鍵尚未按下,處于空閑階段;2、閉合抖動階段:此時鍵剛剛按下,但信號處于抖動狀態,系統在檢測時應消抖延時,約5ms到20ms;3、有效閉合階段:此時抖動己經結束,一個有效按鍵動作己經產生,系統應該在此時執行按鍵功能,或將按鍵編碼記錄下來,待鍵彈起時再執行其功能;4、釋放抖動階段:許多時候編程人員并不在此時消抖延時,但最好也執行一次消抖延時,以防止誤操作;5、有效釋放階段:若設計要求在按鍵抬起時才執行功能,則應當在此時進行按鍵功能的處理。按鍵擊鍵的類型有多種劃分方式:按擊鍵時間分:短擊和長擊;按擊鍵次數分:單擊和連擊;按特殊功能分:雙擊或組合鍵等。功能分析如下:(1)短擊,用戶快速按下單個按鍵,然后立即釋放;(2)長擊,用戶長時間按下一個按鍵。如某些重要的功能鍵,復位,為防止用戶誤操作;(3)連擊,實現連續操作效果,如連續加1或減1;(4)復合按鍵,用戶同時按下兩個或多個按鍵,實現某些特殊功能;(5)無鍵按下,當用戶在一定時間內未按任何按鍵,執行某些特殊的操作,如自動進入待機態或節能態。從單片機串口輸出的信號先送到左邊的移位寄存器(74HC164),由于移位脈沖的作用,使數據向右移,達到顯示的目的。移位寄存器74HC164還兼作數碼管的驅動,如圖4.5所示。圖4.5數碼管顯示電路4.1.4存儲器設計存儲器采用2片32k*8的RAMHY62256組成,如圖,其中U9的地址空間為0000H-7FFFH,U10的地址空間為8000H-0FFFFH,使用U10時,單片機IO口P3.3必須為高,P3.3為低時選中的是ADC,與非門輸出高,U10無效。如圖4.6所示。圖4.6儲存器電路4.2模擬音頻電路設計4.2.1MIC電路設計MIC采用駐機體MIC,當駐極體話筒MIC拾到微弱聲音信號以后,便在MIC兩端產生信號電流,R42將信號電流轉裝換成電壓信號,經過電容器C17、C18耦合到運算放大器的進行放大。MIC工做時需要偏壓MICBISE。這里用VREF作為MICBISE,R35、E5組成RC低通濾波器,為MIC提供比較干凈的偏壓。4.2.2放大濾波電路設計放大器采用運算過放大器組成的差分放大器,這樣能有效地避免干擾,提高信噪比,運放采用被發燒友稱作“運放皇”通用音頻運放NE5532,其噪聲低,價格便宜。放大器的放大倍數設為20倍,調試時可適當調整放大倍數使音量合適。圖4.8中右邊的放大器組成低通濾波器。圖4.8放大濾波電路設計由于語音信號的帶寬為200Hz-3400HZ,涉及頻譜混疊現象,低通濾波器的過渡帶衰必須較快。我們采用有源二階濾波器的方案.4.2.3ADC設計ADC采用通用ADC0809,ADC0809是帶有8位A/D轉換器、8路多路開關以及微處理機兼容的控制邏輯的CMOS組件。它是逐次逼近式A/D轉換器,可以和單片機直接接口。(1)ADC0809的內部邏輯結構如圖4.9。圖4.9ADC0809的內部邏輯結構ADC0809由一個8路模擬開關、一個地址鎖存與譯碼器、一個A/D轉換器和一個三態輸出鎖存器組成。多路開關可選通8個模擬通道,允許8路模擬量分時輸入,共用A/D轉換器進行轉換。三態輸出鎖器用于鎖存A/D轉換完的數字量,當OE端為高電平時,才可以從三態輸出鎖存器取走轉換完的數據。IN0-IN7:為8條模擬量輸入通。ADC0809地址輸入和控制線:4條。ALE為地址鎖存允許輸入線,高電平有效。當ALE線為高電平時,地址鎖存與譯碼器將A,B,C三條地址線的地址信號進行鎖存,經譯碼后被選中的通道的模擬量進轉換器進行轉換。A,B和C為地址輸入線,用于選通IN0-IN7上的一路模擬量輸入。ST為轉換啟動信號。當ST上跳沿時,所有內部寄存器清零;下跳沿時,開始進行A/D轉換;在轉換期間,ST應保持低電平。EOC為轉換結束信號。當EOC為高電平時,表明轉換結束;否則,表明正在進行A/D轉換。OE為輸出允許信號,用于控制三條輸出鎖存器向單片機輸出轉換得到的數據。OE=1,輸出轉換得到的數據;OE=0,輸出數據線呈高阻狀態。D7-D0為數字量輸出線。CLK為時鐘輸入信號線。因ADC0809的內部沒有時鐘電路,所需時鐘信號必須由外界提供,通常使用頻率為500KHZADC與51單片機接口如圖4.10,由于只采用1個通道,這里選用IN-0,所以三個地址線全接地。時鐘信號采用單片機輸出的ALE,為2MHz。ADC0809對輸入模擬量要求:信號單極性,電壓范圍是0-5V,若信號太小,必須進行放大;輸入的模擬量在轉換過程中應該保持不變,如若模擬量變化太快,則需在輸入前增加采樣保持電路。前邊放大器其輸出的信號為雙極性,這里R45、R46實現雙極性到單極性轉換。圖4.10ADC與51單片機接口電路圖ADC的片選采用單片機IO口P3.3,當P3.3為低時有效。4.2.4DAC設計DA轉換器的作用是將存儲的數字語音信號轉換為模擬語音信號,由于一般的DA轉換器都能達到1us的轉換速率,足夠滿足題目的要求,故我們在此選用了通用DA轉換器DAC0832。DI0~DI7:數據輸入線,TLL電平。ILE:數據鎖存允許控制信號輸入線,高電平有效。CS:片選信號輸入線,低電平有效。WR1:為輸入寄存器的寫選通信號。XFER:數據傳送控制信號輸入線,低電平有效。WR2:為DAC寄存器寫選通輸入線。Iout1:電流輸出線。當輸入全為1時Iout1最大。Iout2:電流輸出線。其值與Iout1之和為一常數。Rfb:反饋信號輸入線,芯片內部有反饋電阻。Vcc:電源輸入線(+5v~+15v)Vref:基準電壓輸入線(-10v~+10v)AGND:模擬地,摸擬信號和基準電源的參考地。DGND:數字地,兩種地線在基準電源處共地比較好。其與單片機連接方式如圖4.11,片選采用單片機IO口P3.2,當P3.2為低時有效。圖4.11DAC與單片機連接方式4.2.5音頻功率放大器設計經帶DAC輸出的聲音回放信號,其幅度為0-5v,足以用耳機來收聽,可不接任何放大器。但考慮到實際中經常會用到喇叭外放,故在本系統中增加外放功能,前端放大器采用通用型音頻功率放大器LM386來完成。電路如圖4.12。該電路增益為50—200,連續可調,最大大不失真輸出功率為325mw。輸出端接C4、R9串聯電路,以校正喇叭的頻率特性,防止高頻自激。腳7接220uF去耦電容,以消除低頻自激。為便于該功故在高增益情況下工作.這里將不使用的輸入端腳2對地短路。圖4.12音頻放大電路設計
第五章軟件設計本設計軟件采用C語言設計。5.1KeilC51簡介1.對于8051單片機,現有四種語言支持,即匯編、FI/M、C和BASIC.C是一種源于編寫UNIx操作系統的語言,它是一種結構化語言,可產生緊湊代碼.C結構是以括號()而不是字和特殊符號的語言.C可以進行許多機器級函數控制而不用匯編語言.與匯編相比,有如下優點:(1)對單片機的指令系統不要求了解,僅要求對8051的存貯器結構有初步了解(2)寄存器分配、不同存貯器的尋址及數據類型等細節可由編譯器管理;(3)程序有規范的結構,可分為不同的函數,這種方式可使程序結構化;(4)具有將可變的選擇與特殊操作組合在一起的能力,改善了程序的可讀性;(5)關鍵字及運算函數可用近似人的思維過程方式使用;(6)編程及程序調試時間顯著縮短,從而提高效率;(7)提供的庫包含許多標準子程序,具有較強的數據處理能力;(8)已編好程序可容易地植入新程序,因為它具有方便的模塊化編程技術.8051系列單片機作為工業標準地位,從1985年開始就有8051單片機的C語言編譯器。簡稱C51。C51程序結構與一般C語言沒有什么差別.一個C51程序大體上是一個函數定義的集合,在這個集合中有僅有一個名為main的函數(主函數).主函數是程序的入口,主函數中的所有語句執行完畢,則程序執行結束.C5l提供的數據結構是以數據類型的形式出現的,C51的數據類型如下所示:我們最常用的KeilC5l編譯器具體支持的數據類型有:位型(bit)、無符號字符(unsignedchar)、有符號字符(signedchar)、無符號整型(unsignedint)、有符號整型(signedint)、無符號長型(unsignedlong)、有符號長型(signedlong)、浮點(float)和指針類型等。2.C51數據的存貯類型與805l存貯器結構:KeilC51編譯器完全支持8051單片機的硬件結構,可完全訪問8051硬件系統的所有部分.該編譯器通過將變量、常量定義成不同的存貯類型(data,Nata,idata,pdata,xdata,code)的方法,將它們定位在不同的存貯區中。存貯類型與8051單片機實際存貯空間的對應關系如表5-1所示。表5-1存貯類型與存貯空間的對應關系當使用存貯類型data,Nata定義常量和變量時,C5l編譯器會將它們定位在片內數據存貯區中(片內RAM),這個存貯區根據8051單片機CPU的型號不同,其長度分別為64,128,256或512字節.以今天的標準來看,這個存貯區不很大,但它能快速收發各種數據.外部數據存貯器從物理上講屬于單片機的一個組成部分,但用這種存貯器存放數據,在使用前必須將它們移到片內數據存貯區中.片內數據存貯區是存放臨時性傳遞變量或使用頻率較高的變量的理想場所.為了能直接訪問這些特殊功能寄存器SFR,KeilC51提供了一種自主形式的定義方法,這種定義方法與標準C語言不兼容,只適用于對8051系列單片機進行C編程.這種定義的方法是引入關鍵字“sfr”,語法如下:例:sfrSCON=0x98;/*串口控制寄存器地址98H*/sfrTMOD=0x89;/*定時/計數器模式控制寄存器地址89H*/在典型的8051應用問題中,經常需要單獨訪問SFR中的位,C51的擴充功能使之成為可能。特殊位(sbit)的定義,像SFR一樣不與標推C兼容,使用關鍵字“sbit”可以訪問。位尋址對象。例:sbitCY=PSW^7;\*定義CY位為PSW.7地址為0xD7,*\sbitbeep=P3.^6;\*定義位變量beep為I/OP3.6*\5.2主程序流程圖5.3各個模塊程序介紹5.3.1鍵盤子程序設計本設計硬件電路的輸入采用4個按鍵,具體程序為:Unsignedchargetkey(void){ucharkeytmp;P1=0xff;keytmp=~(P1)&0xff;if(keytmp==0){km=0;kp=0;}//nokeyisONelse//anykeyisON { if(km==0) km=1; //置按鍵抖動標志else //按鍵已去抖 {if(kp==0) //按鍵沒有處理,下面是按鍵處理代碼 //置按鍵處理標志 {kp=1; return(keytmp); } } }return0;}5.3.2顯示子程序//串行LED碼表codeunsignedcharled[]={0xfc,0x60,0xda,0xf2,0x66,//0~40xb6,0xbe,0xe0,0xfe,0xf6,//5~90x9e,0x2a,0x7a,//End 0x00};//Space //===================顯示========================= voidmputchar(charx){SBUF=led[x];while(TI==0);TI=0;}voidDisplay(longintx)//功能:將變量在3位串行顯示器上顯示出來{unsignedchary,zf=0,qian;x=60*30000/x;//將周期換算為頻率,需修正y=x%10;mputchar(y);x=x/10;y=x%10; qian=qian/10; if(qian==0&&y==0) mputchar(0x0d); elsemputchar(y); if(qian==0) mputchar(0x0d); elsemputchar(qian);}5.3.3ADC子程序設計#defineADC0809XBYTE[0x08000]//P3.3=0P33=0;//片選選擇ADC buff=ADC0809;//讀數據 P33=1;//片選選擇RAM *p=buff;//存儲數據5.3.4DAC子程序設計P32=1; buff=*p;//讀存儲器數據 P32=0;//片選選擇DAC DAC0832=buff;//將數據送至DAC,進行DA變換 P32=1;5.3.5定時中斷服務子程序本設計語音采樣率為8KHz,采用單片機定時器產生8k的采樣時序,和播放時DAC的轉換時序。定時器初始化:TMOD=0X01;//設置定時器0TH0=0XFF;//定時時間設為0.128ms,8k/s采樣率TL0=0X82;EA=1;//開總中斷ET0=1;TR0=1;//定時計數起開始計數定時中斷服務子程序:timer0()interrupt1using1{uintbuff;if(RECORD) {P33=0; buff=ADC0809; P33=1; *p=buff; }if(PLAY) {P32=1; buff=*p; P32=0; DAC0832=buff; P32=1; }p++;TH0=0XFF;TL0=0X82;TR0=1;}致謝通過本次畢業設計,我在指導老師*****教授的精心指導和嚴格要求下,獲得了豐富的理論知識,極大地提高了實踐能力,并對當前電子領域的研究狀況和發展方向有了一定的了解,單片機領域這對我今后進一步學習計算機方面的知識有極大的幫助。另外,此次畢業設計還獲得了*******各位領導和老師的大力支持。在此,我忠心感謝*****老師以及******同學的指導和幫助。在未來的工作和學習中,我將以更好的成績來回報各位領導和老師。
參考文獻[1]楊文龍編.《單片機原理及應用》.西安:西安電子科技大學出版社,2000[2]馬忠梅等.《單片機的C語言應用程序設計》.北京航空航天大學出版社,1997[3]ATMLE8-BitMicrocontrollerAT89S52DATESHEET.0368D-B–12/97[4]路勇,高文煥主編.《電子電路實驗及仿真》.北京:清華大學出版社,1999[5]SCM1602LCM使用說明書。長沙太陽人電子有限公司。[6]馮建華,單片機應用系統設計與產品開發,人民郵電出版社,2004[7]周立功,DP668使用說明文檔,廣州周立功單片機發展有限公司,2003[8]StuartBall,嵌入式微處理器系統設計實例,電子工業出版社,2004《單片機原理及應用》課程設計說明書設計題目:基于AT89C52單片機的音樂盒的設計學院:專業班級:設計者:學號:指導老師:
目錄摘要…………………4概述……………5音樂盒的發音原理……………62.1播放音樂的原理……………62.2音符頻率的產生……………62.3節拍頻率的產生……………8硬件電路設計…………………93.1硬件電路……………………93.2整體硬件電路………………103.3原理說明…………………103.4鍵盤按鍵…………………10軟件設計………114.1程序設計流程………………114.2設計源程序代碼……………12仿真及調試……………………165.1調試………165.2仿真………165.3程序調試中出現的問題及解決的辦法………17設計小結………18
附錄元件清單…………………19
基于AT89C52單片機的音樂盒的設計【摘要】:隨著人類社會的發展,人們對視覺、聽覺方面的享受提出了越來越高的要求。小小的音樂盒可以給人們帶來美好的回憶,提高人們的精神文化享受。傳統的音樂盒多是機械型的,體積笨重,發音單調,不能實現批量生產。本文設計的音樂盒是以單片機為核心元件的電子式音樂盒,體積小,重量輕,能演奏和旋音樂,功能多,使用方便,可以批量生產,具有一定的商業價值。【關鍵詞】:音樂盒;單片機
概述傳統的音樂盒多是機械音樂盒,其工作原理是通過齒輪帶動一個帶有鐵釘的鐵桶轉動,鐵桶上的鐵釘撞擊鐵片制成的琴鍵,從而發出聲音。但是,機械式的音樂盒體積比較大,比較笨重,且發音單調。水、灰塵等外在因素,容易使內部金屬發音條變形,從而造成發音跑調。另外,機械音樂盒放音時為了讓音色穩定,必須放平不能動搖,而且價格昂貴,不能實現大批量生產。本文設計的音樂盒,是基于單片機設計制作的電子式音樂盒。與傳統的機械式音樂盒相比更小巧,音質更優美且能演奏和弦音樂。電子式音樂盒動力來源是電池,制作工藝簡單,可進行批量生產,所以價格便宜。基于單片機制作的電子式音樂盒,控制功能強大,可根據需要選歌,使用方便。所放歌曲的節奏可以根據需要進行設置,根據存儲容量的大小,可以盡可能多的存儲歌曲。另外,可以設計彩燈外觀效果,增設放歌時間、序號顯示燈功能,使音樂盒的功能更加豐富,如圖1-1所示。圖1-1單片機音樂盒功能框圖第2章音樂盒的發音原理2.1播放音樂的原理發音原理:播放一段音樂需要的是兩個元素,一個是音調,另一個是音符。首先要了解對應的音調,音調主要由聲音的頻率決定,同時也與聲音強度有關。對一定強度的純音,音調隨頻率的升降而升降;對一定頻率的純音、低頻純音的音調隨聲強增加而下降,高頻純音的音調卻隨強度增加而上升。另外,音符的頻率有所不同。基于上面的內容,這樣就對發音的原理有了一些初步的了解。音符的發音主要靠不同的音頻脈沖。利用單片機的內部定時器/計數器0,使其工作在模式1,定時中斷,然后控制P3.7引腳的輸出音樂。只要算出某一音頻的周期(1/頻率),然后將此周期除以2,即為半周期的時間,利用定時器計時這個半周期時間,每當計時到后就將輸出脈沖的I/O反相,然后重復計時此半周期時間再對I/O反相,就可在I/O腳上得到此頻率的脈沖。2.2音符頻率的產生音符及定時器初始值:例如:中音1(do)的音頻=523HZ,周期T=1/523s=1912定時器/計數器0的定時時間為:T/2=1912/2=956定時器956的計數值=定時時間/機器周期=956/1=956(時鐘頻率=12MHZ)裝入T0計數器初值為65536-956=64580將64580裝入T0寄存器中,啟動T0工作后,每計數956次時將產生溢出中斷,進入中斷服務時,每次對P3.0引腳的輸出值進行取反,就可得到中音DO(523HZ)的音符音頻。將51單片機內部定時器工作在計數器模式1下,改變計數初值TH0,TL0以產生不同的頻率。下表2-1是C調各音符頻率與計數初值T的對照表:表2-1C調各音符頻率與計數初值T的對照表音符頻率(Hz)/初值()音符頻率(Hz)/初值()低1DO262/63627中1DO523/64580高1DO1042/65056低2RE294/63835中2RE589/64687高2RE1245/65134低3M330/64021中3M661/64780高3M1318/65157低4FA350/64107中4FA700/64822高4FA1397/65178低5SO393/64264中5SO786/64900高5SO1568/65217低6LA441/64402中6LA882/64969高6LA1760/65252低7SI495/64526中7SI990/65031高7SI1967/65282音符、音符編碼及定時器初始值:為了產生音符,必須求出音符低音5—高音5的計數初值。例如C調的低1DO的THTL=65536-50000/262=63627,中音DO的THTL=65536-500000/523=64580,高音DO的THTL=65536-500000/1042=65056。為了方便寫譜,對其進行簡單的編碼,在編程時,根據音符編碼查找對應的計數初值。比如說音樂是C調的,那么出現低音的5SO,直接將代碼寫為1;出現低音6LA,直接寫一個2的代碼;出現低音7SI,直接寫一個3代碼。表2-2音符編碼表音符音符編碼音符音符編碼不發音0低5SO1低6LA2低7SI3中1DO4中2RE5中3M6中4FA7中5SO8中6LA9中7SIA高1DOB高2REC高3MD高4FAE高5SOF高6LAG2.3節拍頻率的產生節拍的產生與編碼:音樂中的節拍用延時時間產生。例如,1拍=0.4s,1/4拍=0.1s,以此類推。假設1/4拍執行一次延時程序,則1/2拍就執行兩次延時程序,所以只要求出1/4拍的延時時間,其余節拍就是它的倍數。為了方便,將節拍數也進行了編碼,并且計算了樂譜節拍編程時的延時時間,如表2-3和表2-4所示。表2-3節拍數編碼表按1/4拍為一個延時時間的節拍編碼與節拍對應的表按1/8拍為一個延時時間的節拍編碼與節拍對應的表節拍編碼節拍節拍編碼節拍節拍編碼節拍節拍編碼節拍11/466/411/866/822/488/422/888/833/4A10/433/8A10/844/4C12/444/8C12/855/4F15/455/8表2-4樂譜節拍編程時的時間延時表樂譜節拍1/4拍的延時時間樂譜節拍1/8拍的延時時間4/4125ms4/462ms3/4187ms3/494ms2/4250ms2/4125ms音符編碼和節拍編碼完成后,在編程時,每個音符占一個字節,高四位是音符編碼,低四位是節拍編碼。
第3章硬件電路設計3.1硬件電路設計中用到了AT89C52單片機,3*3鍵盤,蜂鳴器等硬件電路常用元器件。3.1.1時鐘電路由單片機XTAL1、XTAL2引腳外接晶振(12MHz)及起振電容C1、C2(均為30pf)組成。如圖3-1所示:圖3-1時鐘復位電路3.1.2按鍵輸入電路由3*3矩陣鍵盤組成,P3口作為輸入控制按鍵,其中P3.4~P3.6掃描行,P3.0~P1.2掃描列。圖3-2按鍵輸入電路
3.2整體硬件電路如圖3-3所示:圖3-3音樂盒硬件電路原理圖3.3原理說明:當鍵盤有鍵按下時,判斷鍵值,啟動計數器T0,產生一定頻率的脈沖,驅動蜂鳴器,放出樂曲。(1)
硬件電路中用P3口控制按鍵,其中P3.0~P3.2掃描列,P3.4~P1.6掃描行;(2)
用P1.0口控制蜂鳴器;(3)
電路為12MHz晶振頻率工作,起振電路中C1,C2均為30pf。3.4鍵盤按鍵鍵盤按鍵分布如下:按鍵功能說明:1—5五首歌曲6上一首歌曲7關機8暫停9下一首歌曲123456789第4章軟件設計本程序可以實現該課程設計的基本要求,并可以通過按鍵播放達10首歌曲。4.1程序設計流程程序設計流程圖如圖4-1所示:主程序開始主程序開始初始化計數器T0,計時器T1等待按鍵,是否有按鍵?包括播放鍵,暫停鍵,停止鍵依據按鍵碼演奏對應的歌曲初始化計數器T0,計時器T1等待按鍵,是否有按鍵?包括播放鍵,暫停鍵,停止鍵依據按鍵碼演奏對應的歌曲 NNYY圖4-1程序設計流程圖
4.2設計源程序代碼ORG0000HLJMPMAINORG000BH;定時器T0溢出中斷入口地址LJMPTT0ORG001BH;定時器T1溢出中斷入口地址LJMPT1INTORG1000HMAIN:MOVSP,#70HLCALLINITIL;內存初始化WAIT:LCALLKEYLJMPWAITKEY: ;鍵盤掃描NOP NOPLCALLKSJNZK1 ;有按鍵轉到K1MOVA,37HLCALLSOPXN:LJMPKEYK1:LCALLKSJNZK2LJMPKEYK2: ;讀鍵盤MOVR2,#0FEHMOVR4,#00HK3:MOVA,R2MOVP3,AMOVA,P3JBACC.4,L1;為1跳轉,第一行無按鍵MOVA,#01HLJMPLKL1:JBACC.5,L2MOVA,#04HLJMPLKL2:JBACC.6,NEXT1MOVA,#07HLK:ADDA,R4PUSHACCK4:LCALLDELAY1LCALLKSJNZK4 ;若同時有其他按鍵,則等待(同時按視為無效)MOVR3,#07HCLRAMOVR0,#30HMOVR1,#31HMM1:MOVA,@R1;鍵值給37HMOV@R0,AINCR0INCR1DJNZR3,MM1POPACCMOV@R0,ARETNEXT1:INCR4 ;列掃描MOVA,R2JNBACC.2,N2LJMPN1N2:LJMPKEYN1:RLAMOVR2,ALJMPK3KS:MOVA,#0F0H;判斷P1口MOVP3,ANOPNOPMOVA,P3CPLAANLA,#0F0HRETDELAY1:;延時2.55ms63×4×1us×10+10×3×1usSETBRS0DL:MOVR5,#0AHDL2:MOVR6,#63DL3:NOPNOPDJNZR6,DL3DJNZR5,DL2CLRRS0RETINITIL: ;30H~37H初值為零MOVR3,#08HMOVR0,#30HM1:MOV@R0,#00HINCR0DJNZR3,M1CLRP1.0RET;按鍵值播放歌曲SOP:MOVA,37HCJNEA,#01H,A11MOV52H,#HIGHTABLE10MOV53H,#LOWTABLE10LCALLMAIN0A11:CJNEA,#02H,A22MOV52H,#HIGHTABLE20MOV53H,#LOWTABLE20LCALLMAIN0A22:CJNEA,#03H,A33MOV52H,#HIGHTABLE30MOV53H,#LOWTABLE30LCALLMAIN0A33:CJNEA,#04H,A44MOV52H,#HIGHTABLE40MOV53H,#LOWTABLE40LCALLMAIN0A44:CJNEA,#05H,A55MOV52H,#HIGHTABLE50MOV53H,#LOWTABLE50LCALLMAIN0A55:RETDELAY:MOVR4,#05D1:MOVR5,#0FFHDJNZR5,$DJNZR4,D1RET MAIN0:MOVTMOD,#11H;播放歌曲程序MOVIE,#8AHMOVTH1,#3CHMOVTL1,#0B0H LCALLKSJNZTTM12MOV40H,#00HNEXT20:MOVA,40HMOVDPH,52HMOVDPL,53HMOVCA,@A+DPTRMOVR2,AJZSTOPANLA,#0FHMOVR1,AMOVA,R2SWAPAANLA,#0FHJNZSINGCLRTR0JMPW1SING:DECAMOV22H,ARLAMOVDPTR,#TABLE00MOVCA,@A+DPTRMOVTH0,AMOV21H,AMOVA,22HRLAINCAMOVCA,@A+DPTRMOVTL0,AMOV20H,ASETBTR0SETBTR1W1:LCALLDELAY30INC40HLCALLKS;有鍵跳出JNZSTOPLJMPNEXT20STOP:CLRTR0CLRTR1CLRP1.0LJMPMAIN0TTM12:LCALLK2MOVA,37HCJNEA,#08H,TTM13 ;暫停CLRTR1CLRP1.0LCALLDELAY1TTM120:LCALLKSLCALLDELAY1JZTTM120LCALLK2MOVA,37HCJNEA,#08H,TTM120 SETBTR1LJMPNEXT20TTM13:CJNEA,#09H,TTM14 ;下一曲MOVA,52HINCAMOV52H,AMOVA,53HINCAMOV53H,AMOVA,36HINCAMOV37H,ALJMPTTM2TTM14:CJNEA,#06H,TTM2 ;上一曲MOVA,52HDECAMOV52H,AMOVA,53HDECAMOV53H,AMOVA,36HDECAMOV37H,A TTM2:RETTT0:PUSHACC;定時器中斷子程序0PUSHPSWMOVTL0,20HMOVTH0,21HCPLP1.0 ;獲得脈沖POPPSWPOPACCRETI;定時器中斷子程序1T1INT:MOVTH1,#3cHMOVTL1,#0b0HRETIDELAY30: MOVR7,#2W2:MOVR4,#125W3:MOVR3,#248DJNZR3,$DJNZR4,W3DJNZR7,W2DJNZR1,DELAY30RETTABLE00:DW64580,64684,64777,6482;音符DW64898,64968,65030,64260DWTABLE10: ;第一首《精忠報國》DB66H,52H,36H,22H,12H,12H,22H,32H,98H,84H,82H,92H,14H,12H,22HDB32H,52H,22H,42H,38H,66H,52H,36H,22H,12H,22H,22H,32H,98HDB24H,22H,32H,54H,52H,32H,92H,12H,92H,82H,98H,66H,52H,36H,22HDB12H,12H,22H,32H,98H,84H,82H,92H,14H,12H,22H,32H,52H,22H,42H,38HDB66H,52H,36H,22H,12H,22H,22H,32H,98H,24H,22H,32H,54H,52H,32HDB22H,12H,92H,82H,98H,14H,24H,34H,44H,64H,0B4H,64H,32H,52HDB62H,0B2H,62H,52H,38H,24H,22H,32H,54H,52H,62H,52H,32H,32H,22H,38HDB64H,0B4H,64H,32H,52H,62H,0B2H,62H,52H,38H,22H,22H,22H,32H,52H,52HDB52H,62H,7FH,74H,04H,58H,6FHDB00TABLE20: ;第二首《月亮代表我的心》DB02H,82HDB16H,32H,54H,02H,52HDB0A6H,32H,54H,02H,52HDB64H,74H,0B6H,64HDB52H,5CH,32H,22HDB16H,12H,14H,32H,22HDB16H,12H,14H,22H,32HDB26H,12H,94H,22H,32HDB2CHDB32H,52HDB36H,22H,14H,54HDB0ACH,92H,0A2HDB96H,0A2H,96H,82HDB3CH,54HDB36H,22H,14H,54HDB0ACH,92H,0A2HDB16H,12H,14H,22H,32HDB2CH,02H,82HDB16H,32H,56H,12HDB0A6H,32H,56H,52HDB66H,72H,0B6H,62HDB62H,52H,58H,32H,22HDB16H,12H,14H,32H,22HDB16H,12H,14H,22H,32HDB26H,92H,0A4H,12H,22HDB1CHDB00TABLE30: ;第三首《大海》DB82H,92H,12H,14H,12H,14H,92H,82H,12H,14H,22H,14H,92H,12H,22H,24HDB22H,24H,12H,92H,22H,24H,32H,24H,32H,52H,62H,54H,52H,64H,52H,32HDB22H,32H,22H,12H,94H,82H,92H,12H,14H,12H,14H,94H,1CHDB82H,92H,12H,14H,12H,14H,92H,82H,12H,14H,22H,14H,92H,12H,22H,24HDB22H,24H,12H,92H,22H,24H,32H,24H,32H,52H,62H,54H,52H,64H,52H,32HDB22H,32H,22H,12H,94H,82H,92H,12H,14H,12H,14H,22H,12H,1CH,32H,52HDB62H,64H,62H,64H,0B2H,62H,52H,54H,62H,54H,32H,22HDB12H,14H,12H,14H,24H,3CH,32H,22H,12H,14H,12H,14H,0B2H,62H,52H,54H,62H,54H,32H,52HDB66H,0B2H,0B4H,62H,52H,5CH,32H,52H,62H,64H,62H,64H,0B2H,62H,52H,54HDB62H,54
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《母親家活動策劃書》課件
- 2024年11月社區護理試題+答案(附解析)
- 10月高級養老護理員練習題庫及答案(附解析)
- 裝潢設計在數碼產品包裝的未來感考核試卷
- 電子節能照明設備環保認證考核試卷
- 教育技術學的理論基礎
- 臺州網絡安全運維招聘注意事項信息
- 各國學前教育體系比較研究
- 《復習指南:出師表》課件
- 電力設備故障預測分析考核試卷
- 廠區保安培訓試題及答案
- 資質掛靠設計院合同協議
- 2025年海淀高三二模語文試題及答案
- 新聞記者職業資格2024年筆試考試題庫含答案
- 2025-2030中國食品中的X射線檢查系統行業市場發展趨勢與前景展望戰略研究報告
- 豌豆上公主PPT課件
- 艾滋病防治條例PPT課件
- 學生入團申請推薦表
- 當代教育心理學(陳琦劉儒德主編第二版)章節總結
- 七年級數學下冊第5章軸對稱與旋轉單元綜合測試卷新版湘教版
- 渡槽設計計算書
評論
0/150
提交評論