基于51單片機音樂盒
摘要隨著科學技術的不斷發展帶動著電子行業的地位越來越重,現在電子產品幾乎在社會的各個領域都可以見到。這些技術的發展有效的帶動著社會生產力的發展和信息化的提高,同時電子產品也越來越智能。 本設計采用單片機控制喇叭實現一個小型音樂盒,即電子音樂盒的設計。采用了8歐/0.5W小喇叭發聲來實現歌曲的播放,能保持基本音調不變,流暢播放出歌曲并可以通過按鍵進行上下曲切換和開始/暫停并且使用LCD1602顯示播放的歌曲序號和名稱。同時進行歌曲播放計時。還添加了DS18B20對環境溫度的采集,并實時顯示出來。主控芯片采用STC89C51單片機。功能鍵盤采用微動開關,實現上下曲切換和開始/暫停播放功能;揚聲器由單片機的P2.0口進行控制,實現歌曲播放。 ABSTRACTWith the continuous development of science and technology, the status of the electronics industry is becoming more and more important. Now the electronic products can be seen in almost every field of the society. The development of these technologies is effective to promote the development of social productive forces and the improvement of information technology, while the electronic products are becoming more and more intelligent. This design uses the single chip microcomputer to realize a small music box, namely the electronic music box. The use of 8 /0.5W small speakers sound to achieve the song's play, to maintain the basic tone unchanged, smooth playback of songs and can be played on the keys to switch and start / pause and the use of LCD1602 to display the songs and the number of songs. At the same time to play a time song. Also added DS18B20 to the environmental temperature collection, and real-time display. Main control chip using STC89C51 microcontroller. Function keyboard uses micro switch, the switch of the upper and lower music and start / pause playback function; the speaker is controlled by the P2.0 port of the single chip microcomputer, and the song is played.
目錄 摘 要 ABSTRACT 1 引言 1.1 選題背景 1.2 音樂盒的意義 1.3 本課題研究主要內容 2 系統硬件方案選擇 2.1 硬件方案的選擇 2.1.1 主控芯片的選擇 2.1.2 顯示器件的選擇 2.1.3 溫度傳感器的選擇 2.2 系統總體方案 3 音樂盒設計原理 3.1 播放音樂的原理 3.2 音符頻率的產生 3.3 節拍頻率的產生 4 系統硬件電路設計 4.1 STC89C51單片機系統設計 4.1.1 STC89C51的概述 4.1.2 STC89C51單片機的最小系統 4.2 LCD1602液晶顯示的介紹 4.2.1 LCD1602的概述 4.2.2 LCD1602的工作原理 4.3 DS18B20溫度傳感器的介紹 4.3.1 DS18B20的概述 4.3.2 DS18B20的工作原理 4.4 揚聲器部分 4.5 獨立按鍵電路的設計 4.6 原理圖繪制軟件的介紹 4.7 系統硬件測試 5 系統軟件部分設計 5.1 軟件開發環境的介紹 5.2 系統主要函數設計 5.2.1主函數的設計 5.2.2 LCD1602顯示函數的設計 5.2.3 DS18B20溫度采集函數的設計 5.3 系統軟件測試 6 結論 參考文獻 附錄A:原理圖 附錄B:源程序
1 引言
1.1 設計背景音樂盒的起源,可追溯至中世紀歐洲文藝復興時期。當時為使教會的鐘塔報時,而將大小的鐘表裝上機械裝置,被稱為“可發出聲音的組鐘”。音樂盒有著300多年的發展歷史,是人類文明發展的歷史見證。 傳統的音樂盒多是機械音樂盒,其工作原理是通過齒輪帶動一個帶有鐵釘的鐵桶轉動,鐵桶上的鐵釘撞擊鐵片制成的琴鍵,從而發出聲音。但是,機械式的音樂盒體積比較大,比較笨重,且發音單調。水、灰塵等外在因素,容易使內部金屬發音條變形,從而造成發音跑調。另外,機械音樂盒放音時為了讓音色穩定,必須放平不能動搖,而且價格昂貴,不能實現大批量生產。 現今,音樂盒的制造,延襲傳統,結合現代,正日益成為人們或為了典藏一段歲月,或為了收藏一份情感,或出于對音樂的追求,或對于舊時代的懷念,或為了居室的美化,等等,而得到眾多品位人士的追求。 1.2 音樂盒的意義 音樂盒的起源,可以追溯到中世紀歐洲文藝復興時期。當時為了使教會的鐘塔報時,而將大小的鐘表裝上了機械裝置,被稱之為“可發出聲音的組鐘”。音樂盒已有著300多年的發展歷史,是人類文明發展的歷史見證。 傳統的音樂盒大多是機械音樂盒,其工作的原理是通過齒輪來帶動一個帶有鐵釘的鐵桶轉動,鐵桶上的鐵釘撞擊用鐵片制成的琴鍵,從而發出聲音。但是,機械式的音樂盒體積較大,比較笨重,并且發音單調。水和灰塵等外在因素,容易使得內部金屬發音條變形,從而會造成發音跑調。此外,機械音樂盒放音時為了能讓音色穩定,必須要放平不能動搖,而且價格昂貴,不能夠實現大批量生產。 1.3 本設計研究主要內容 利用STC89C51單片機,結合LCD顯示模塊、喇叭、放大電路 ,完成音樂盒的播放;具體設計實現的功能如下 (1)通過按鍵控制多首音樂播放,并可通過按鍵選擇一個開始,一個暫停,一個翻上首,一個翻下首; (2)通過顯示電路顯示播放歌曲名和編號; (3)通過DS18B20實時采集環境溫度并顯示。 (4)能夠對歌曲播放時長進行計時,并顯示。
2 系統硬件方案選擇本章節主要介紹系統所用到的器件的選擇與對比,進行綜合的對比考慮選擇出最適合本設計的一組方案。 2.1 硬件方案的選擇在硬件電路的搭建之前必須明確設計的方案,通過各個模塊之間進行比較選擇出最適合本設計的硬件,以發揮器件的最大功效。 2.1.1 主控芯片的選擇方案一: 采用STC89C51單片機作為主控芯片。STC89C51是宏晶科技公司生產的一款低功耗、高性能的八位CMOS微處理器,片內具有8k在線編程Flash存儲器。STC89C51單片機的內核采用的是MCS-51內核,指令完全兼容MCS-51,但是該單片機越做了升級使得芯片具有很多傳統的51單片機不具備的功能,例如該芯片還有4K的EEPROM存儲,在需要使用到掉電存儲數據的時候就可以直接使用單片機內部的存儲,不在需要在外接存儲芯片進行存儲。STC89C51單片機具有的開發簡單、可在線編程下載、成本低是非常不錯的選擇。 方案二: 采用MSP430單片機作為主控芯片。MSP430單片機稱之為混合信號處理器,它可以將多個不同功能的模擬電路、數字電路模塊和微處理器集成在一個芯片上,MSP430系列單片機是美國德州儀器 (TI)1996年開始推向市場的一種16位超低功耗、具有精簡指令集(RISC)的混合信號處理器(Mixed Signal Processor)。該系列單片機多應用于需要電池供電的便攜式儀器儀表中。而卻開發難度相對比較大、價格昂貴。所以在一些簡單的設計中不宜采用。 方案三: 采用PIC16F877A單片機作為主控芯片。PIC16F877A是由Microchip公司所生產開發的新產品,屬于PICmicro系統8位單片機微機,具有Flash程序內存功能,可反復擦寫程序。但是開發成本高,難度相對大。 綜合上述的描述,考慮到資源的合理利用和成本以及開發的難易程度最終決定采用宏晶科技的STC89C51單片機作為主控芯片。 2.1.2 顯示器件的選擇方案一: 采用LED數碼管動態掃描顯示。LED數碼管的價格適中,對于顯示數字或者簡單的字母會比較合適。但是采用動態掃描法與單片機連接時占用CPU的I/O口較多,并且由于單片機的IO口輸出電流不夠,所以需要一個驅動電路,通過驅動電路放大電流后控制數碼管,還有就是采用數碼管進行顯示的話顯示的內容多了對于電路的焊接機會增大難得容易焊接錯誤。 方案二: 采用LCD1602液晶顯示屏。LCD1602液晶又叫LCD1602字符型液晶。液晶顯示功能強大,可以同時顯示出16*2即32個字符,可包括數字、字母、符號、或者自定義字符。LCD1602液晶顯示器中的每一個字符都是由5*7的點陣組成。LCD1602采用并行數據傳輸也可以采用串行數據傳輸,控制簡單,和市面上的大多基于HD44780液晶的控制原理完全相同。 方案三: 采用LCD12864液晶顯示屏。帶中文字庫的128X64是一種具有4位/8位并行、2線或3線串行多種接口方式,其顯示分辨率為128×64,內置8192個16*16點漢字,和128個16*8點ASCII字符集。利用該模塊靈活的接口方式和簡單、方便的操作指令,可構成全中文人機交互圖形界面。可以顯示8×4行16×16點陣的漢字,也可完成圖形顯示,低電壓低功耗是其又一顯著特點。雖然LCD12864液晶顯示的功能強大,但是顯示的內容偏大造成了,顯示空間的浪費,再來該液晶的成本高。 綜合上述的描述,最終根據本設計中的功能要求考慮采用LCD1602液晶顯示器比較合理。 2.1.3 溫度傳感器的選擇方案一: 使用熱敏電阻作為傳感器,用熱敏電阻與一個相應阻值電阻相串聯分壓,利用熱敏電阻阻值隨溫度變化而變化的特性,采集這兩個電阻變化的分壓值,并進行A/D轉換。此設計方案需用A/D轉換電路,增加硬件成本而且熱敏電阻的感溫特性曲線并不是嚴格線性的,會產生較大的測量誤差。 方案二: 采用模擬溫度傳感器AD590,該傳感器的輸出電流會隨溫度的變化而變化,從而需要設計電路轉換成電壓的變化,進而通過A/D轉換后接到單片機中,這種方法固然麻煩,而卻費用比較高,而卻在電流電壓轉換和A/D轉換中會產生誤差。 方案三: 采用數字式溫度傳感器DS18B20,此類傳感器為數字式傳感器而且僅需要一條數據線進行數據傳輸,易于與單片機連接,可以去除A/D模塊,降低硬件成本,簡化系統電路。另外,數字式溫度傳感器還具有測量精度高、測量范圍廣等優點。 所以最終我們采用數字型DS18B20作為溫度采集芯片。 2.2 系統總體方案通過上述對各個模塊介紹,我們最終選擇了STC89C51作為本設計的主控芯片,采用DS18B20采集溫度,通過LCD1602顯示歌曲名稱和序號和溫度值,并可以通過按鍵實現歌曲的開始/暫停播放,上下曲的切換等功能。 本設計的具體的系統方案如下圖2.1所示。 圖2.1 系統方案
3 音樂盒設計原理3.1 播放音樂的原理 發音原理:播放一段音樂需要的是兩個元素,一個是音調,另一個是音符。首先要了解對應的音調,音調主要由聲音的頻率決定,同時也與聲音強度有關。對一定強度的純音,音調隨頻率的升降而升降;對一定頻率的純音、低頻純音的音調隨聲強增加而下降,高頻純音的音調卻隨強度增加而上升。另外,音符的頻率有所不同。基于上面的內容,這樣就對發音的原理有了一些初步的了解。 音符的發音主要靠不同的音頻脈沖。利用單片機的內部定時器/計數器0,使其工作在模式1,定時中斷,然后控制P2.0引腳的輸出音樂。只要算出某一音頻的周期(1/頻率),然后將此周期除以2,即為半周期的時間,利用定時器計時這個半周期時間,每當計時到后就將輸出脈沖的I/O反相,然后重復計時此半周期時間再對I/O反相,就可在I/O腳上得到此頻率的脈沖。 3.2 音符頻率的產生 音符及定時器初始值: 例如:中音1(do)的音頻=523HZ,周期T=1/523s=1912us 定時器/計數器0的定時時間為:T/2=1912/2us=956s 定時器956us的計數值=定時時間/機器周期=956us/1s=956(時鐘頻率=12MHZ) 裝入T0計數器初值為65536-956=64580 將64580裝入T0寄存器中,啟動T0工作后,每計數956次時將產生溢出中斷,進入中斷服務時,每次對P2.0引腳的輸出值進行取反,就可得到中音DO(523HZ)的音符音頻。將51單片機內部定時器工作在計數器模式1下,改變計數初值TH0,TL0以產生不同的頻率。下表,3-1是C調各音符頻率與計數初值T的對照表。 表3-1 C調各音符頻率與計數初值T的對照表 音符、音符編碼及定時器初始值: 為了產生音符,必須求出音符低音5-高音5的計數初值。例如C調的低1DO的THTL=65536-50000/262=63627,中音DO的THTL=65536-500000/523=64580,高音DO的THTL=65536-500000/1042=65056。為了方便寫譜,對其進行簡單的編碼,在編程時,根據音符編碼查找對應的計數初值。比如說音樂是C調的,那么出現低音的5SO,直接將代碼寫為4;出現低音6LA,直接寫一個5的代碼;出現低音7SI,直接寫一個6代碼。具體編碼表如表3-2所示。 表3-2 音符編碼表 3.3 節拍頻率的產生節拍的產生與編碼: 音樂中的節拍用延時時間產生。例如1拍=0.4s,1/4拍=0.1s,以此類推。假設1/4拍執行一次延時程序,則1/2拍就執行兩次延時程序,所以只要求出1/4拍的延時時間,其余節拍就是它的倍數。為了方便,將節拍數也進行了編碼,并且計算了樂譜節拍編程時的延時時間。 4 系統硬件電路設計本章節主要介紹本設計中各個部分電路的設計原理。通過各個模塊的功能描述了解其工作原理以及在設計的中作用。 4.1 STC89C51單片機系統設計4.1.1 STC89C51的概述STC89C51是STC公司生產的一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統可編程Flash存儲器。STC89C51使用經典的MCS-51內核,但做了很多的改進使得芯片具有傳統51單片機不具備的功能。在單芯片上,擁有靈巧的8 位CPU和在系統可編程Flash,使得STC89C51為眾多嵌入式控制應用系統提供高靈活、非常有效的解決方案。具有以下標準功能:8k字節Flash,512字節RAM,32位I/O口線,看門狗定時器,內置4KB EEPROM,MAX810復位電路,3個16位定時器/計數器,4個外部中斷,一個7向量4級中斷結構(兼容傳統51的5向量2級中斷結構),全雙工串行口。另外STC89X52 可降至0Hz 靜態邏輯操作,支持2種軟件可選擇節電模式。空閑模式下,CPU停止工作,允許RAM、定時器/計數器、串口、中斷繼續工作。掉電保護方式下,RAM內容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止。最高運作頻率35MHz,6T/12T可選。 4.1.2 STC89C51單片機的最小系統單片機最小系統說的通熟易懂的話就是以最少的元器件組成能讓單片機工作起來的系統,接下來開始介紹51單片機最小系統必備的器件及其作用。 首先電源這對于一個電子產品的話是必不可少,它提供能源給系統運作,在本設計中由于51單片機的工作電壓在4.5~5.5V之間都可以正常工作所以我們采用了USB電源線連接手機充電器插頭或者5V的移動電源給系統進行供電。 其次晶振電路,XTAL1和XTAL2 是獨立的輸入和輸出反相放大器,它們可以被配置為使用石英晶振的片內振蕩器,或者是器件直接由外部時鐘驅動。圖4.1中采用的是內時鐘模式,即采用利用芯片內部的振蕩電路,在XTAL1、XTAL2 的引腳上外接定時元件(一個石英晶體和兩個電容),內部振蕩器便能產生自激振蕩。一般來說晶振可以在1.2~12MHz 之間任選,甚至可以達到24MHz 或者更高,但是頻率越高功耗也就越大。在本實驗套件中采用的12M 的石英晶振。和晶振并聯的兩個電容的大小對振蕩頻率有微小影響,可以起到頻率微調作用。當采用石英晶振時,電容可以在20 ~40pF 之間選擇(本設計使用30pF);當采用陶瓷諧振器件時,電容要適當地增大一些,在30~50pF 之間。通常選取30pF 的陶瓷電容就可以了。 圖4.1 晶振電路 再來就是復位電路,復位電路分為:上電自動復位和開關復位。圖4.2 中所示的復位電路就包括了這兩種復位方式。上電瞬間,電容兩端電壓不能突變,此時電容的負極和RESET 相連,電壓全部加在了電阻上,RESET 的輸入為高,芯片被復位。隨之+5V電源給電容充電,電阻上的電壓逐漸減小,最后約等于0,芯片正常工作。并聯在電容的兩端為復位按鍵,當復位按鍵沒有被按下的時候電路實現上電復位,在芯片正常工作后,通過按下按鍵使RST管腳出現高電平達到手動復位的效果。一般來說,只要RST 管腳上保持10ms 以上的高電平,就能使單片機有效的復位。圖中所示的復位電阻和電容為經典值,實際制作是可以用同一數量級的電阻和電容代替,讀者也可自行計算RC 充電時間或在工作環境實際測量,以確保單片機的復位電路可靠。 圖4.2 復位電路 完整的STC89C51單片機最小系統電路圖如圖4.3所示。 圖4.3 STC89C51單片機最小系統 4.2 LCD1602液晶顯示的介紹4.2.1 LCD1602的概述LCD1602液晶也叫LCD1602字符型液晶,它是一種專門用來顯示字母、數字、符號等的點陣型液晶模塊。它由若干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因為如此所以它不能很好地顯示圖形。LCD1602液晶模塊采用HD44780控制器,HD44780具有簡單而功能較強的指令集,可以實現字符移動,閃爍等功能,LCD1602與單片機MCU通訊可采用8位或4位并行傳輸兩種方式,HD44780控制器由兩個8位寄存器,指令寄存器(IR)和數據寄存器(DR)忙標志(BF),顯示數RAM(DDRAM),字符發生器ROMA(CGOROM)字符發生器RAM(CGRAM),地址計數器RAM(AC)。IR用于寄存指令碼,只能寫入不能讀出,DR用于寄存數據,數據由內部操作自動寫入DDRAM和CGRAM,或者暫存從DDRAM和CGRAM讀出的數據,BF為1時,液晶模塊處于內部模式,不響應外部操作指令和接受數據,DDTAM用來存儲顯示的字符,能存儲80個字符碼,CGROM由8位字符碼生成5*7點陣字符160中和5*10點陣字符32種.8位字符編碼和字符的對應關系, CGRAM是為用戶編寫特殊字符留用的,它的容量僅64字節,可以自定義8個5*7點陣字符或者4個5*10點陣字符,AC可以存儲DDRAM和CGRAM的地址,如果地址碼隨指令寫入IR,則IR自動把地址碼裝入AC,同時選擇DDRAM或CGRAM,LCD1602液晶實物圖如圖4.4所示。 圖4.4 LCD1602液晶實物圖 4.2.2 LCD1602的工作原理LCD1602一共具有11條指令,單片機發送這些指令到LCD1602上就可以完成一些特定的功能,比如清屏,開關顯示等等。LCD1602自己帶有字庫在顯示的時候可以直接調用字庫進行顯示,當然如果字庫中沒有的字符也可以根據需要自己自定義字符寫入CGROM中,自定義字符的分辨率為5*8而卻自定義字符數量有限需要合理的安排使用,最多可以自定義8個字符,將自定義字符字模寫入LCD的CGROM中后就可以隨意的調用,調用的方式和正常顯示字符是一樣的。 控制LCD1602液晶顯示器只要會對LCD1602進行讀狀態操作、寫指令操作、讀數據操作、寫數據操作即可具體的操作對應的引腳電平如表4-1所示。 表4-1 LCD1602操作指令對應的引腳電平
| | | | | | | RS=L,R/W=L,D0-D7=指令碼,E=高脈沖 | | RS=H,R/W=L,D0-D7=數據,E=高脈沖 | | | | | |
上表中E為使能端;RS為寄存器選擇,當RS=H時表示選擇數據寄存器,RS=L時選擇指令寄存器;R/W為信號線,R/W=H時執行讀操作,R/W=L時執行寫操作。LCD1602具體的讀操作時序如圖4.5,寫操作時序如圖4.6所示。 圖4.5 LCD1602讀操作時序圖 圖4.6 LCD1602寫操作時序圖 在使用時候將D0-D7連接到51單片機的P0上方便進行數據的傳輸,而V0口接一個可調電位器,當調節電位器位置改變時接入V0的電壓也隨之變化進行顯示的清晰度也隨之變化,所以在實際時采用電位器而不采用固定阻值的電阻就是為了能夠方便的調節以使用在電壓不同的場合。具體LCD1602電路圖如圖4.7所示。 圖4.7 LCD1602電路圖 4.3 DS18B20溫度傳感器的介紹4.3.1 DS18B20的概述DS18B20溫度傳感器是美國DALLAS半導體公司最新推出的一種改進型智能溫度傳感器,與傳統的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據實際要求通過簡單的編程實現9~12位的數字值讀數方式。DS18B20的性能特點如下:獨特的單線接口僅需要一個端口引腳進行通信;多個DS18B20可以并聯在惟一的三線上,實現多點組網功能;無須外部器件;可通過數據線供電,電壓范圍為3.0~5.5v;零待機功耗;溫度以9或12位二進制數字表示;用戶可定義報警設置;報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件;負電壓特性,電源極性接反時,溫度計不會因發熱而燒毀,但不能正常工作;DS18B20溫度傳感器引腳圖如圖4.8所示。 圖4.8 DS18B20溫度傳感器引腳圖 4.3.2 DS18B20的工作原理根據DS18B20的通訊協議,主機(單片機)控制DS18B20完成溫度轉換必須經過三個步驟:每一次讀寫之前都要對DS18B20進行 復位操作,復位成功后發送一條ROM指令,最后發送RAM指令,這樣才能對DS18B20進行預定的操作。復位要求主CPU將數據線下拉500微秒,然后 釋放,當DS18B20收到信號后等待16~60微秒左右,后發出60~240微秒的存在低脈沖,主CPU收到此信號表示復位成功。下面表4-2為ROM指令表,表4-3位RAM指令表。 表3-2 DS18B20 ROM指令表 | 約定代碼 | | | 33H | 讀DS1820溫度傳感器ROM中的編碼(即64位地址) | | 55H | 發出此命令之后,接著發出 64 位 ROM 編碼,訪問單總線上與該編碼相對應的 DS1820 使之作出響應,為下一步對該DS1820 的讀寫作準備。 | | 0FOH | 用于確定掛接在同一總線上 DS1820 的個數和識別 64 位 ROM地址。為操作各器件作好準備。 | | 0CCH | 忽略 64 位 ROM 地址,直接向 DS1820 發溫度變換命令。適用于單片工作。 | | 0ECH | 執行后只有溫度超過設定值上限或下限的片子才做出響應。 |
表4-3 DS18B20 RAM指令表 | 約定代碼 | | | 44H | 啟動DS1820進行溫度轉換,12位轉換時最長為750ms(9位為93.75ms)。結果存入內部9字節RAM中。 | | 0BEH | | | 4EH | 發出向內部RAM的3、4字節寫上、下限溫度數據命令,緊跟該命令之后,是傳送兩字節的數據。 | | 48H | 將RAM中第3、4字節的內容復制到EEPROM中。 | | 0B8H | 將EEPROM中內容恢復到RAM中的第2、3字節。 | | 0B4H | 讀DS1820的供電模式。寄生供電時DS1820發送“0”,外接電源供電 DS1820發送“1”。 |
DS18B20單總線控制時序圖如圖4.9所示。 圖4.9 DS18B20單總線操作時序圖 當DS18B20接收到溫度轉換命令后,開始啟動轉換。轉換完成后的溫度值就以16位帶符號擴展的二進制補碼形式存儲在高速暫存存儲器的第1、2字節。單片機可以通過單線接口讀出該數據,讀數據時低位在先,高位在后,數據格式以0.0625℃/LSB形式表示。 當符號位s=0時,表示測得的溫度值為正值,可以直接將二進制位轉換為十進制;當符號位s=1時,表示測得的溫度值為負值,要先將補碼變成原碼,再計算十進制數值。輸出的二進制數的高5位是符號位,最后4位是溫度小數點位,中間7位是溫度整數位。表4-4是一部分溫度值對應的二進制溫度數據。 表4-4 DS18B20輸出的溫度值 在使用時候DS18B20的I/O引腳接一個10K的上拉電阻。具體的電路圖如圖4.10所示。 圖4.10 DS18B20電路圖 4.4 揚聲器部分揚聲器采用的是直徑4CM,8歐,0.5W的小喇叭,播放聲音準確清楚。通過一端接地,一端接PNP三極管的集電極,三極管的基級接一個可調電阻,進行調節揚聲器發出的聲音,具體電路如下4.11。 
圖4.11 揚聲器驅動電路 4.5 獨立按鍵電路的設計本設計中設置有按鍵電路,通過幾個獨立按鍵進行人機交互。按鍵通過一點連接單片機的I/O口一端連接電源地。這樣設計是因為單片機的I/O在懸空沒有作為輸出的情況下是默認高電平的,在按鍵沒有按下則相當于該I/O處于懸空狀態。當按下后I/O口的電平就會被拉低,這樣單片機只需要進行循環的檢測I/O口是否有出現低電平就可以判斷是否有按鍵按下,當然這種按鍵是金屬解除的方式所以會有抖動紋波的情況,所以在程序中需要適當的加上短暫的延時消抖。具體電路如圖4.12所示。 
圖4.12 獨立按鍵電路 三個按鍵的功能分別為: 第一個按鍵:實現上一曲播放。 第二個按鍵:實現開始/暫停播放切換。 第三個按鍵:實現下一曲播放。 4.6 原理圖繪制軟件的介紹Altium Designer是Altium公司于2004年推出的電路設計軟件版本,該軟件能實現從概念設計,頂層設計直到輸出生產數據以及這之間的所有分析驗證和設計數據的管理。當前比較流行的Protel 98、Protel 99 SE和Protel DXP,就是它的前期版本。 Altium Designer2004已不是單純的PCB(印制電路板)設計工具,而是由多個模塊組成的系統工具,分別是SCH(原理圖)設計、SCH(原理圖)仿真、PCB(印制電路板)設計、Auto Router(自動布線器)和FPGA設計及嵌入式軟件開發等,覆蓋了以PCB為核心的整個物理設計。該軟件將項目管理方式、原理圖和PCB圖的雙向同步技術、多通道設計、拓樸自動布線以及電路仿真等技術結合在一起,為電路設計提供了強大的支持。 與較早的版本Protel99相比,Altium Designer 2004不僅在外觀上顯得更加豪華、人性化,而且極大地強化了電路設計的同步化,同時整合了VHDL和FPGA設計系統,其功能大大加強了。 4.7 系統硬件測試系統硬件電路的測試主要是檢測電路是否出現漏焊、短路、斷路、虛焊、一些具有方向的元件是否方向弄錯、電路設計錯誤等情況。 對于漏焊、元件方向弄錯的檢測方法是將實物電路板對照著PCB圖的線路,檢查每一個元件和導線在實物上是否有出現。如果發現沒有或者對不上的情況下需及時的重新對照確定漏焊時及時的補焊。 對于短路、斷路、虛焊這些情況采用數字萬用表。將數字萬用表打到二極管檔位,然后通過紅表筆和黑表筆碰一起,萬用表會發出鳴叫警示。根據這個原理就可以用來檢測短路、斷路、虛焊。在需要檢測的元件或導線的兩端用兩根表筆檢測,如果導通蜂鳴器會鳴叫,如果斷開蜂鳴器不叫。這樣根據我們所需要檢測的情況,在結合檢測的現象就可以測出線路是否有問題。
5 系統軟件部分設計5.1 軟件開發環境的介紹本設計采用 Keil μVision4進行編程實現。Keil C51是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發系統,與匯編相比,C語言在功能上、結構性、可讀性、可維護性上有明顯的優勢,因而易學易用。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調試器等在內的完整開發方案,通過一個集成開發環境(uVision)將這些部分組合在一起。運行Keil軟件需要WIN98、NT、WIN2000、WINXP等操作系統。如果你使用C語言編程,那么Keil幾乎就是你的不二之選,即使不使用C語言而僅用匯編語言編程,其方便易用的集成環境、強大的軟件仿真調試工具也會令你事半功倍。 5.2 系統主要函數設計5.2.1主函數的設計主函數void main()是程序的入口函數,一個完整的程序必須要包含該函數。在該函數的開頭一般都是先對單片機和一些外圍器件需要進行初始化才能正常使用的器件進行初始化和重新賦值一些變量,初始化完后進去死循環,如果不進入死循環程序運行一次就會退出,如果加入死循環程序就會不斷地進行循環達到實時檢測執行的目的。在主程序的設計中需要注意的是主函數中不宜放過多的代碼,具體的代碼一般都是采用函數進行封裝然后在主函數進行調用,這樣也可以方便閱讀修改。具體流程圖如下4.1所示。 圖4.1 主函數流程圖 5.2.2 LCD1602顯示函數的設計LCD1602的顯示只需要嚴格的按照廠家的時序要求進行編程就可以完成顯示。LCD602的液晶顯示首先需要將需要顯示地方的地址通過命令寫入,然后將數據按順序的進行寫入即可。在寫入地址后顯示第一個內容后地址會自動加一。函數名lcd1602_write_character(uchar x,uchar y,uchar *p),參數為x,y,*s,其中的x,y表示在液晶顯示屏上的位置坐標,*s是需要顯示的字符數組。軟件根據輸入需要顯示的位置坐標計算出地址。顯示函數流程圖如5.2所示。 圖5.2 顯示子函數流程圖 5.2.3 DS18B20溫度采集函數的設計首先需要對溫度傳感器DS18B20進行采集溫度需要在主函數開始的時候先對DS18B20進行初始化,初始化的目的是配置傳感器的寄存器使DS18B20的轉換精度為12位。初始化完成后就可以對DS18B20進行操作讀取溫度。對DS18B20讀取溫度先需要讓DS18B20復位然后如果總線上只有一個傳感器的話可以跳過讀系列號直接進行啟動溫度轉換,然后在進行一次復位同樣跳過系列號的匹配,然后發送讀取溫度指令,最后讀取溫度寄存器。讀取完后將數據進行轉換成實際溫度即可。具體流程圖如圖5.4所示。 圖5.4 DS18B20溫度采集流程圖 5.3 系統軟件測試測試所需的工具:KEIL軟件、系統硬件、PL2303下載器等。 系統的軟件方面通過KEIL軟件進行編寫,將編寫好的程序生成.HEX文件后通過PL2303下載器下載到單片機中。通過觀察整個系統運行的狀態,然后進行反復的修改調試程序,最終得到一個完善的程序。 (1)在向LCD1602液晶發送清屏指令的時候,LCD1602并未成功的清楚屏幕。 解決方法:通過查閱LCD1602的使用手冊,得到清屏的指令的確是0x01和程序上寫的完全相同,而卻顯示屏可以顯示出內容這表明程序發送指令是沒有錯誤的,但是顯示并未清屏。于是懷疑是否發送了清屏指令后里面進去下一個內容的顯示,而LCD1602的處理速度不夠,所以并未正真的執行清屏指令。通過添加40ms的延時后,重新下載進程序后發現清屏指令被執行了。通過仔細的閱讀手冊發現,LCD1602清屏的確需要1.64ms的執行時間,最終程序采用了4ms的延時。
6 結論經過制作設計的這段時間的努力終于將本設計方案要求基本實現。由于時間、水平和經驗有限,設計的作品還存在著一些的不足之處。 對于這次設計來說既是一次機遇,又是一次挑戰。在這次的設計過程中,本人學到了很多東西,通過自己的實踐,增強了動手能力。通過實際工程的設計也使我了解到書本知識和實際應用的差別。在實際應用中遇到很多的問題,這都需要我對問題進行具體的分析,并一步一步地去解決它。
參考文獻[1] 蘇鐵力,傳感器及其接口技術[M],北京:中國石化出版社.1998 [2] 中國電子學會,傳感器與執行器大全[M],北京:電子工業出版社.1998 [3] 白雪冰,張延林,等,單片機原理及應用[M],哈爾濱:東北林業大學出版社.2006 [4] 謝運祥,歐陽森等,電力電子單片機控制技術[M],北京:機械工業出版.2007 [5] 王洪業,傳感器技術[M],長沙:湖南科學技術出版社.1995 [5] 李光飛,單片機課程設計實例指導,北京:北京航空航天大學出版社.2004 [6] 王法能,單片機原理及應用,科學出版社.2004 [7] 樓然苗,李光飛,51系列單片機設計實例[M],北京:北京航空航天大學出版社.2003 [8] 胡汗才,單片機原理與接口技術[M],清華大學出版社.2004 [9] 王萍,電子技術實驗教程,機械工業出版社.2009 [10] 朱定華,戴淑萍,單片機微機原理與應用[M],清華大學出版社.2003 [11] 劉勇 編 數字電路 電子工業出版社 2004 [12] 陳正振 編 電子電路設計與制作 廣西交通職業技術學院信息工程系 2007 [13] 楊子文 編 單片機原理及應用 西安電子科技大學出版社 2006 [14] 陳汝全.電子技術常用器件應用手冊.北京:機械工業出版社,2004.10. [15] 郝曉劍,楊述平,張連紅.儀器電路設計與應用.北京:電子工業出版社,2007.6. [16] 畢滿清,王黎明,高文華.模擬電子技術基礎.北京:電子工業出版社,2008.6. [17] 韓焱,張艷花,王康誼.電子技術基礎.北京:電子工業出版社,2009.6. [18] 童長飛.CSO5lF系列單片機開發與C語言編程.北京:北京航空航天大學出版社,2005.
完整的Word格式文檔51黑下載地址:
|