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