基于at89s52智能語音溫度計設(shè)計畢業(yè)論文_第1頁
已閱讀1頁,還剩103頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p>  題目: 基于AT89S52智能語音溫度計的設(shè)計</p><p><b>  摘要</b></p><p>  以AT89S52為核心,選用DS18B20單總線數(shù)字溫度傳感器,RT1602液晶顯示器實現(xiàn),液晶顯示當(dāng)前日期、時間和溫度。當(dāng)測量溫度超過設(shè)定的溫度上下限時,啟動蜂鳴器和指示燈報警。溫度顯示穩(wěn)定,且溫度測量誤差≤±1℃,溫度值小數(shù)

2、部分保留兩位有效數(shù)字。增加了攝氏溫度與華氏溫度轉(zhuǎn)換對比顯示功能,設(shè)定了整點語音自動播報時間溫度,手動實時播報時間溫度功能。</p><p>  關(guān)鍵詞:DS18B20;液晶顯示;語音播報;聲光報警</p><p><b>  Abstract</b></p><p>  AT89S52 as the core, choose to single

3、 bus digital temperature sensor DS18B20, DS1302 serial clock chip, RT1602 LCD monitor realization, LCD display the current date, time, weeks and temperature. When measuring temperature over set temperature fluctuation li

4、mit, start with light alarm buzzer. Temperature display stability, and temperature measurement error acuities 1℃, plus or minus temperature the decimal part retained two significant digits. Increased Celsius temperature

5、conversion contrast wit</p><p>  Keyword:DS18B20;LCD;speech function;sounding and light alarm.</p><p><b>  目錄</b></p><p><b>  摘要i</b></p><p>  

6、Abstracti</p><p><b>  1 引言1</b></p><p><b>  2 設(shè)計要求1</b></p><p><b>  3 方案論證1</b></p><p>  3.1 電源模塊2</p><p>  3.2 溫度

7、傳感器模塊2</p><p>  3.3 顯示模塊2</p><p>  3.4 鍵盤控制模塊3</p><p>  3.5 語音播報模塊3</p><p><b>  4 設(shè)計原理4</b></p><p>  4.1單片機模塊4</p><p>  4.1.

8、1單片機介紹4</p><p>  4.1.2 單片機外圍電路設(shè)計6</p><p>  4.1.3 AT89S52復(fù)位電路7</p><p>  4.1.4 AT89S52時鐘電路8</p><p>  4.2 電源模塊9</p><p>  4.3溫度傳感器模塊9</p><p&

9、gt;  4.3.1 DS18B20的測溫原理10</p><p>  4.3.2 DS18B20與AT89S52的接口電路設(shè)計11</p><p>  4.4鍵盤控制模塊11</p><p>  4.5報警模塊12</p><p>  4.6液晶顯示模塊13</p><p>  4.7語音播報模塊14&l

10、t;/p><p>  4.7.1 ISD1420語音芯片錄放音電路設(shè)計14</p><p>  4.7.2 ISD1420與AT89S52接口電路設(shè)計17</p><p><b>  5 軟件部分18</b></p><p>  5.1 開發(fā)工具介紹18</p><p>  5.2系統(tǒng)的主程序

11、設(shè)計18</p><p>  5.2.1鍵盤掃描子程序19</p><p>  5.2.2測量溫度子程序設(shè)計20</p><p>  5.2.3報警子程序21</p><p>  5.2.4實現(xiàn)時鐘功能的程序設(shè)計22</p><p>  5.2.5顯示程序設(shè)計23</p><p> 

12、 5.2.6語音播放子程序24</p><p>  6 仿真結(jié)果數(shù)據(jù)分析25</p><p>  6.1功能仿真和結(jié)果25</p><p><b>  7 結(jié)束語25</b></p><p><b>  參考文獻27</b></p><p>  附錄一:電路圖28

13、</p><p>  附錄二:源程序29</p><p><b>  1 引言</b></p><p>  21世紀(jì)是人類全面進入信息電子化的時代,現(xiàn)代信息技術(shù)的三大基礎(chǔ)是信息采集(即傳感器技術(shù))、信息傳輸(通信技術(shù))和信息處理(計算機技術(shù))。隨著人類探知領(lǐng)域和空間的拓展,使得人們需要獲得的電子信息種類日益增加,需要信息傳遞的速度加快,信息處

14、理能力增強,因此要求與此相對應(yīng)的信息采集技術(shù)――傳感技術(shù)必須跟上信息化發(fā)展的需要。傳感器技術(shù)是人類探知自然界信息的觸覺,為人們認(rèn)識和控制相應(yīng)的對象提供條件和依據(jù)。它屬于信息技術(shù)的前沿尖端產(chǎn)品,尤其溫度傳感器被廣泛用于工農(nóng)業(yè)生產(chǎn)、科學(xué)研究和生活等領(lǐng)域,數(shù)量居各種傳感器之首。近百年來,溫度傳感器的發(fā)展大致經(jīng)歷了以下三個階段:(1)傳統(tǒng)的分立式溫度傳感器 (含敏感元件);(2)模擬集成溫度傳感器/控制器;(3)智能溫度傳感器。目前,國際上新型

15、溫度傳感器正從模擬式向數(shù)字式、由集成化向智能化、網(wǎng)絡(luò)化的方向發(fā)展。作為現(xiàn)代信息技術(shù)的三大核心技術(shù)之一的傳感技術(shù),將是二十一世紀(jì)世界各國在高新技術(shù)發(fā)展方面爭奪的一個重要領(lǐng)域。</p><p><b>  2 設(shè)計要求</b></p><p>  顯示當(dāng)前日期、時間、溫度。</p><p>  當(dāng)測量溫度超過設(shè)定溫度時,啟動報警模塊報警。</

16、p><p>  手動實時播報溫度,時間。</p><p>  溫度顯示穩(wěn)定,誤差≤±1℃。</p><p><b>  3 方案論證</b></p><p>  分析本題,根據(jù)設(shè)計要求先確定了本系統(tǒng)的整體設(shè)計原理框圖如圖所示</p><p>  圖3.1 原理框圖 &l

17、t;/p><p><b>  3.1 電源模塊</b></p><p>  方案一:采用三只干電池作為電源。該方案的優(yōu)點是設(shè)計簡明扼要,成本低;缺點是輸出功率不高,只能勉強驅(qū)動單片機,適合小電流負(fù)載。而且在整個系統(tǒng)工作中,電壓會隨著時間的推移不斷降低,進而出現(xiàn)死機等情況。</p><p>  方案二:采用獨立的穩(wěn)壓電源。電源的穩(wěn)壓的特性較好,能夠保

18、證整個系統(tǒng)穩(wěn)定工作。</p><p>  綜上分析,為使系統(tǒng)調(diào)試方便,能夠穩(wěn)定工作,必須有可靠電源,所以決定選擇第二種方案。</p><p>  3.2 溫度傳感器模塊</p><p>  方案一:AD590是單片集成的敏感電流源,激勵電壓在+4V—+30V間選擇,其測量范圍為-55攝氏度-150攝氏度,所輸出的電流數(shù)值(微安數(shù))等于絕對溫度K的數(shù)值。AD590具有

19、標(biāo)準(zhǔn)化的輸出和固有的線性關(guān)系,分不同的測溫范圍和精度供設(shè)計者選用,通過微調(diào)電路對AD590的輸出進行修正,可達到很高的測試精度。AD590不需要低電平測量設(shè)備和電橋,可以使用長導(dǎo)線,而不會因為電壓的降低和感應(yīng)的噪聲電壓而產(chǎn)生誤差;它又是一個高阻抗的電流源;對激勵的電壓變化不夠敏感。但是AD590需要把被測溫度轉(zhuǎn)化為電流再通過放大器和A/D轉(zhuǎn)換器才能輸出數(shù)字量送給單片機進行溫度控制。</p><p>  方案二:D

20、S18B20是美國達拉斯半導(dǎo)體公司推出的第一片支持“一線總線”接口的溫度傳感器。它具有微型化、低功耗、高性能、抗干擾能力強、易配微處理器等優(yōu)點,可以將溫度直接轉(zhuǎn)化成串行數(shù)字量供微處理器處理。因此,在溫度測量系統(tǒng)中,采用抗干擾能力強的新型數(shù)字溫度傳感器是解決這些問題的有效方案,新型數(shù)字溫度傳感器DS18B20具有體積更小、精度更高、適用電壓更寬、采用一線總線、可組網(wǎng)優(yōu)點,在實際測溫的過程中取得了良好的測量效果。其供電方式簡單,可用數(shù)據(jù)線供

21、電,所需的外圍器件較少,甚至不需要外圍器件。</p><p>  通過比較,溫度傳感器DS18B20具有更高的性價比,DS18B20能夠構(gòu)建經(jīng)濟的測溫網(wǎng)絡(luò)。因而在本次設(shè)計中,選用的是數(shù)字溫度傳感器DS18B20,故采用的是方案二。</p><p><b>  3.3 顯示模塊</b></p><p>  方案一:采用八位數(shù)碼管,將單片機的數(shù)據(jù)通

22、過數(shù)碼管顯示出來。該方案簡單易行,但所需的元器件較多,且不容易進行操作,可讀性較差,一旦設(shè)定后,很難加入其它的功能,顯示格式受控制,且耗電量大。</p><p>  方案二:采用LCD顯示屏進行顯示。LCD顯示屏是一種低壓、微功耗的顯示器件,只要2-3伏就可以工作了,工作電流僅為幾微安,是其它顯示器無法比擬的,同時可以顯示大量信息,除數(shù)字外,還可以顯示字母,曲線,比傳統(tǒng)的LED數(shù)碼顯示器的畫面有了質(zhì)的提高。雖然L

23、CD顯示器的價格比傳統(tǒng)的LED數(shù)碼管要貴些,但它的顯示效果更好,是當(dāng)今顯示器的主流,所以采用LCD作為顯示器。采用LCD,更容易實現(xiàn)題目的要求,對后續(xù)的功能兼容性高,只需將軟件修改即可,可操作性強,易于度數(shù),采用RT1602兩行十六字符的顯示,能同時顯示時間,溫度。</p><p>  綜上分析,采用第二種方案。</p><p>  3.4 鍵盤控制模塊</p><p&

24、gt;  方案一:4×4矩陣式鍵盤。此方案對于本系統(tǒng)來說無非是浪費I/O占用MCU的資源,不利于系統(tǒng)的擴展,這就使系統(tǒng)的實用性降低,況且本系統(tǒng)根本不需要16個按鍵。</p><p>  方案二:獨立式按鍵。對于獨立式按鍵來說,如果設(shè)置過多按鍵,雖然會占用較多I/O口,給布線帶來不便,此方案適用于按鍵較少的情況。</p><p>  在本設(shè)計中所需要的控制點數(shù)的較少,只需要幾個功能

25、鍵,簡便、易操作、成本低就成了首要考慮的因素。所以此時,可采用獨立式按鍵結(jié)構(gòu)。</p><p>  3.5 語音播報模塊</p><p>  方案一:通過A/D轉(zhuǎn)換器、單片機,存儲器,D\A轉(zhuǎn)換器實現(xiàn)聲音信號的采樣、處理、存儲和實現(xiàn)。首先將聲音信號放大,通過AD轉(zhuǎn)換器采樣將語音模擬信號轉(zhuǎn)換成數(shù)字信號,并由單片機和處理存放到存儲器中,實現(xiàn)錄音操作。在錄、放音過程中由單片機控制D/A轉(zhuǎn)換器,將

26、存儲器中的數(shù)據(jù)轉(zhuǎn)化成聲音信號。此方案安裝調(diào)試復(fù)雜,集成度低,成本也不低。</p><p>  方案二:采用ISD1420語音錄放。ISD1420是采用模擬存取技術(shù)集成的可反復(fù)錄放的20秒語音芯片,掉電語音不丟失,最大可分160段,最小每段語音長度為125ms,每段語音都可由地址線控制輸出,每125ms為一個地址,由A0-A7八根地址線控制。該芯片采用多電平直接模擬量存儲專利技術(shù),每個采樣值可直接存儲在片內(nèi)單個EE

27、PROM單元中,因此能夠非常真實、自然地再現(xiàn)語音、音樂、音調(diào)和效果聲。此外,ISD1420還省去了A/D和D/A轉(zhuǎn)換器,方便擴展更多的功能。</p><p>  綜上所述,選擇方案二,即ISD1420。</p><p><b>  4 設(shè)計原理</b></p><p>  本系統(tǒng)選用的模塊包括:單片機系統(tǒng),電源模塊,LCD顯示模塊,語音播報模塊

28、,溫度傳感器模塊,鍵盤控制模塊,具體的電路圖參照附錄二。</p><p><b>  4.1單片機模塊</b></p><p>  此次的畢業(yè)設(shè)計的核心部分是單片機的控制,給以相關(guān)的命令,按照人們的意愿執(zhí)行相應(yīng)的操作,這次選用的是ATMEL公司生產(chǎn)的常用芯片AT89S52,主要是他的價格便宜,而且是我們通用性較強,容易獲得。</p><p> 

29、 4.1.1單片機介紹</p><p>  CPU即中央處理器的簡稱,是單片機的核心部件,它完成各種運算和控制操作,CPU由運算器和控制器兩部分電路組成。 </p><p>  a. 運算器電路 </p><p>  運算器電路包括ALU(算術(shù)邏輯單元)、ACC(累加器)、B寄存器、狀態(tài)寄存器、暫存器1和暫存器2等部件,運算器的功能是進行算術(shù)運算和邏輯運算。

30、 </p><p><b>  b. 控制器電路</b></p><p>  控制器電路包括程序計數(shù)器PC、PC加1寄存器、指令寄存器、指令譯碼器、數(shù)據(jù)指針DPTR、堆棧指針SP、緩沖器以及定時與控制電路等??刂齐娐吠瓿芍笓]控制工作,協(xié)調(diào)單片機各部分正常工作。 </p><p>  c. 定時器/計數(shù)器 </p><p&g

31、t;  MCS-52單片機片內(nèi)有兩個16位的定時/計數(shù)器,即定時器0和定時器1。它們可以用于定時控制、延時以及對外部事件的計數(shù)和檢測等。 </p><p><b>  d. 存儲器 </b></p><p>  MCS-52系列單片機的存儲器包括數(shù)據(jù)存儲器和程序存儲器,其主要特點是程序存儲器和數(shù)據(jù)存儲器的尋址空間是相互獨立的,物理結(jié)構(gòu)也不相同。 </p>

32、<p>  e. 并行I/O口 </p><p>  MCS-52單片機共有4個8位的I/O口(P0、P1、P2和P3),每一條I/O線都能獨立地用作輸入或輸出。P0口為三態(tài)雙向口,能帶8個TTL門電路,P1、P2和P3口為準(zhǔn)雙向口,負(fù)載能力為4個TTL門電路。 </p><p>  f. 串行I/O口 </p><p>  MCS-521單片機具有一個

33、采用通用異步工作方式的全雙工串行通信接口,可以同時發(fā)送和接收數(shù)據(jù)。 </p><p>  g. 中斷控制系統(tǒng) </p><p>  8051共有5個中斷源,即外中斷2個,定時/計數(shù)中斷2個,串行中斷1個。 </p><p><b>  h. 時鐘電路 </b></p><p>  MCS-52芯片內(nèi)部有時鐘電路,但晶體振

34、蕩器和微調(diào)電容必須外接。時鐘電路為單片機產(chǎn)生時鐘脈沖序列,振蕩器的頻率范圍為1.2MHz~12MHz,典型取值為6MHz。 </p><p><b>  i.總線 </b></p><p>  以上所有組成部分都是通過總線連接起來,從而構(gòu)成一個完整的單片機。系統(tǒng)的地址信號、數(shù)據(jù)信號和控制信號都是通過總線傳送的,總線結(jié)構(gòu)減少了單片機的連線和引腳,提高了集成度和可靠性。

35、 </p><p>  選用單片機的結(jié)構(gòu): </p><p>  1 一個8 位算術(shù)邏輯單元 </p><p>  2 32 個I/O 口4 組8 位端口可單獨尋址 </p><p>  3 兩個16 位定時計數(shù)器 </p><p>  4 全雙工串行通信 </p><p>  5 6 個中斷源

36、兩個中斷優(yōu)先級 </p><p>  6 128 字節(jié)內(nèi)置RAM </p><p>  7 獨立的64K 字節(jié)可尋址數(shù)據(jù)和代碼區(qū) </p><p>  每個8051 處理周期包括12 個振蕩周期每12 個振蕩周期用來完成一項操作如取指令和計算指令執(zhí)行時間可把時鐘頻率除以12 取倒數(shù)然后指令執(zhí)行所須的周期數(shù)因此如果你的系統(tǒng)時鐘是11.059MHz 除以12 后就得到了

37、每秒執(zhí)行的指令個數(shù)為921583條指令取倒數(shù)將得到每條指令所須的時間1.085ms 。</p><p>  AT89S52的管腳圖如圖4.1所示: </p><p>  圖4.1 AT89S52管腳圖</p><p>  4.1.2 單片機外圍電路設(shè)計 </p><p>  本設(shè)計選用的AT89S52是一個低功耗,高性能CMOS 8

38、位單片機,片內(nèi)含4k Bytes ISP(In-system programmable)的可反復(fù)擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80S52引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲單元,功能強大的微型計算機的AT89S52可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價比的解決方案。AT89S52具有如下特點:40個引腳,4k Byt

39、es Flash片內(nèi)程序存儲器,128 bytes的隨機存取數(shù)據(jù)存儲器(RAM),32個外部雙向輸入/輸出(I/O)口,5個中斷優(yōu)先級2層中斷嵌套中斷,2個16位可編程定時計數(shù)器,2個全雙工串行通信口,看門狗(WDT)電路,片內(nèi)時鐘振蕩器。</p><p>  此外,AT89S52設(shè)計和配置了振蕩頻率,并可通過軟件設(shè)置省電模式??臻e模式下,CPU暫停工作,而RAM定時計數(shù)器,串行口,外中斷系統(tǒng)可繼續(xù)工作,掉電模式

40、凍結(jié)振蕩器而保存RAM的數(shù)據(jù),停止芯片其它功能直至外中斷激活或硬件復(fù)位。同時該芯片還具有PDIP、TQFP和PLCC等三種封裝形式。AT89S52單片機綜合了微型處理器的基本功能。</p><p>  當(dāng)AT89S52芯片接到來自溫度傳感器的信號時,其內(nèi)部程序?qū)⒏鶕?jù)信號的類型進行處理,并且將處理的結(jié)果送到顯示模塊、報警模塊、語音播報模塊,發(fā)送控制信號控制各模塊。該模塊在硬件設(shè)計方面,其外圍電路提供能使之工作的晶振

41、脈沖、復(fù)位按鍵,四個I/O口分別用于外圍設(shè)備連接。單片機AT89S52硬件連接圖如圖4.2所示,其中P0接口外接上拉電阻以保證高低電平的準(zhǔn)確性。單片機AT89S52的 I/O端口具體分配與下表4.1:</p><p>  圖4.2單片機與外圍設(shè)備硬件連接圖</p><p>  表4.1 AT89S52的 I/O端口具體分配</p><p>  4.1.3 AT89

42、S52復(fù)位電路</p><p>  系統(tǒng)復(fù)位是任何微機系統(tǒng)執(zhí)行的第一步,使整個控制芯片回到默認(rèn)的硬件狀態(tài)下即單片機的片內(nèi)電路初始化,使單片機從一種確定的初態(tài)開始運行。AT89S52的復(fù)位是由外部的復(fù)位電路來實現(xiàn)的。復(fù)位引腳RST通過一個斯密特觸發(fā)器與復(fù)位電路相連,斯密特觸發(fā)器用來抑制噪聲,復(fù)位電路通常采用上電自動復(fù)位和按鈕復(fù)位兩種方式。</p><p>  手動復(fù)位:手動復(fù)位需要人為在復(fù)位

43、輸入端加高電平讓系統(tǒng)復(fù)位。一般采用的方法是在RST端和正電源VCC之間接一個按鍵,當(dāng)按下按鍵后,VCC和RST端接通,RST引腳處有高電平,而且按鍵動作一般是數(shù)十毫秒、大于兩個機器周期的時間,能夠安全的讓系統(tǒng)復(fù)位。</p><p>  上電復(fù)位:上電復(fù)位電路是—種簡單的復(fù)位電路,只要在RST復(fù)位引腳接一個電容到VCC,接一個電阻到地就可以了。上電復(fù)位是指在給系統(tǒng)上電時,復(fù)位電路通過電容加到RST復(fù)位引腳一個短暫的

44、高電平信號,這個復(fù)位信號隨著VCC對電容的充電過程而回落,所以RST引腳復(fù)位的高電平維持時間取決于電容的充電時間。為了保證系統(tǒng)安全可靠的復(fù)位,RST引腳的高電平信號必須維持足夠長的時間。</p><p>  在本設(shè)計中復(fù)位電路的設(shè)計是采用簡單,用得比較廣的復(fù)位電路接法,如圖4.3所示,它具有上電復(fù)位和按鍵復(fù)位的雙重復(fù)位功能。</p><p><b>  圖4.3 復(fù)位電路<

45、/b></p><p>  4.1.4 AT89S52時鐘電路</p><p>  時鐘是單片機的心臟,單片機各功能部件的運行都是以時鐘頻率為基準(zhǔn),有條不紊的一拍一拍地工作。因此,時鐘頻率直接影響單片機的速度,時鐘電路的質(zhì)量也直接影響單片機系統(tǒng)的穩(wěn)定性。常用的時鐘電路有兩種方式:一種是內(nèi)部時鐘方式,另一種為外部時鐘方式。本文用的是內(nèi)部時鐘方式。電路圖4.4所</p>

46、<p><b>  示:</b></p><p>  圖4.4 時鐘電路圖</p><p>  AT89S52單片機內(nèi)部有一個用于構(gòu)成振蕩器的高增益反相放大器,該高增益反向放大器的輸入端為芯片引腳XTAL1,輸出端為引腳XTAL2。這兩個引腳跨接石英晶體振蕩器和微調(diào)電容,就構(gòu)成一個穩(wěn)定的自激振蕩器。</p><p><b>

47、  4.2 電源模塊</b></p><p>  鑒于系統(tǒng)使用的單片機AT89S52和各芯片工作電壓在5V左右。我們選擇了5V穩(wěn)壓電源給單片機和各芯片供電。電路由簡單實用的三端穩(wěn)壓器構(gòu)成,輸入電壓5V,滿足大部分電路的要求,電源電路圖如下圖4.5所示,由于使用了全橋,電壓輸入既可以使用交流輸入,又可以使用正負(fù)直流輸入,能夠防止由于極性接反造成的事故。濾波電容使用電解電容與小電容并聯(lián)的方式,能夠有效消除

48、高頻自激現(xiàn)象。發(fā)光二極管接到電源與地之間,如果電源輸出不正常,發(fā)光二極管都會出現(xiàn)工作異常,提示電源部分故障。</p><p>  圖4.5 電源電路圖</p><p>  4.3溫度傳感器模塊</p><p>  本模塊主要作用是進行溫度采集,然后經(jīng)采集的數(shù)據(jù)送入AT89S52里進行分析處理。在本次設(shè)計中采用了DS18B20作為數(shù)據(jù)采集器,它的精度最少可以精確到0.

49、0625,完全可以用來進行環(huán)境溫度的測量。DS18B20是美國DALLAS 公司生產(chǎn)的單總線數(shù)字溫度傳感器,可把溫度信號直接轉(zhuǎn)換成串行數(shù)字信號供微處理器處理,而且可以在一條總線上掛接任意多個DS18B20芯片,構(gòu)成多點溫度檢測系統(tǒng)無需任何外加硬件。DS18B20 數(shù)字溫度傳感器可提供9~12 位溫度讀數(shù),讀取或?qū)懭隓S18B20 的信息僅需一根總線,總線本身可以向所有掛接的DS18B20 芯片提供電源,而不需額外的電源。由DS18B20

50、 這一特點,非常適合于多點溫度檢測系統(tǒng),硬件結(jié)構(gòu)簡單,方便聯(lián)網(wǎng),在倉儲管理、工農(nóng)業(yè)生產(chǎn)制造、氣象觀測、科學(xué)研究以及日常生活中被廣泛應(yīng)用。</p><p>  4.3.1 DS18B20的測溫原理</p><p>  DS18B20 內(nèi)有一個能直接轉(zhuǎn)化為數(shù)字量的溫度傳感器,其分辨率9,10 ,11 ,12bit 并且可編程,通過設(shè)置內(nèi)部配置寄存器來選擇溫度的轉(zhuǎn)換精度,出廠時默認(rèn)設(shè)置12bit

51、。溫度的轉(zhuǎn)換精度有0.5℃、0.25℃、0.125℃、0.0625℃。溫度轉(zhuǎn)換后以16bit 格式存入便箋式RAM,可以用讀便箋式RAM命令(BEH) 通過1 - Wire 接口讀取溫度信息,數(shù)據(jù)傳輸時低位在前,高位在后。內(nèi)部溫度數(shù)據(jù)格式如圖4.6所示。溫度/數(shù)字對應(yīng)關(guān)系如表4.2所示(分辨率為12bit時)。由于DS18B20單線通信功能是分時完成的,它有嚴(yán)格的時隙概念,因此讀寫時序很重要。操作協(xié)議為:初始化DS18B20(發(fā)復(fù)位脈沖

52、)→發(fā)ROM功能命令→發(fā)存儲器操作命令→處理數(shù)據(jù)。</p><p>  表4.2 溫度和數(shù)據(jù)對應(yīng)表</p><p>  圖4.6 DS1820B內(nèi)部溫度數(shù)據(jù)格式</p><p>  4.3.2 DS18B20與AT89S52的接口電路設(shè)計</p><p>  DS18B20可以從單總線上得到能量并儲存在內(nèi)部電容中,該能量是當(dāng)信號線處于低電平期

53、間消耗,在信號線為高電平時能量得到補充,這種供電方式稱為</p><p>  寄生電源供電。DS18B20也可以由3~5.5V的外部電源供電。所以在硬件上,DS18B20與單片機的連接有兩種方法,一種是VCC接外部電源,GND接地,I/O與單片機的I/O線相連;另一種是用寄生電源供電,此時UDD、GND接地,I/O接單片機I/O。無論是內(nèi)部寄生電源還是外部供電,I/O口線要接5KΩ左右的上拉電阻.我們采用的是第一

54、種連接方法, 如圖4.7所示:把DS18B20數(shù)據(jù)線與AT89S52的P2.0,再加上上拉電阻。</p><p>  圖4.7 DS18B20與AT89S52的接口電路</p><p><b>  4.4鍵盤控制模塊</b></p><p>  按鍵的開關(guān)狀態(tài)通過一定的電路轉(zhuǎn)換為高、低電平狀態(tài)。按鍵閉合過程在相應(yīng)的I/O端口形成一個負(fù)脈沖。閉合

55、和釋放過程都要經(jīng)過一定的過程才能達到穩(wěn)定,這一過程是處于高、低電平之間的一種不穩(wěn)定狀態(tài),稱為抖動。</p><p>  本系統(tǒng)中用到四個功能控制按鍵,用P2的4個I/O口接4個獨立式按鍵即可滿足需要,軟件消除抖動,當(dāng)發(fā)現(xiàn)有鍵按下時,延時10-20ms再查詢是否有鍵按下,若沒有鍵按下,說明上次查詢結(jié)果為干擾或抖動;若沒有鍵按下,說明上次查詢結(jié)果為干擾或抖動;若仍有鍵按下,則說明閉合鍵已穩(wěn)定。準(zhǔn)確判斷去執(zhí)行相應(yīng)的程序

56、。電路圖如圖4.8所示。</p><p>  圖4.8 鍵盤控制電路</p><p><b>  4.5報警模塊</b></p><p>  報警模塊的工作原理是當(dāng)溫度傳感器檢測到的溫度高于溫度的上限或低于溫度的下限設(shè)定值時單片機的P2.6發(fā)出高電平信號促使PNP三極管導(dǎo)通點亮發(fā)光二極管,蜂鳴器也發(fā)出響聲,產(chǎn)生聲光報警。電路圖如圖4.9所示。&

57、lt;/p><p><b>  圖4.9 報警電路</b></p><p><b>  4.6液晶顯示模塊</b></p><p>  該模塊是由RT1602液晶顯示器件組成, 第3腳: VL為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對

58、比度。第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。第5腳:RW為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當(dāng)RS和RW共同為低電平時可以寫入指令或者顯示地址,當(dāng)RS為低電平RW為高電平時可以讀忙信號,當(dāng)RS為高電平RW為低電平時可以寫入數(shù)據(jù)。第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。由上可知1602基本操作時序如表4。其第15~

59、16腳:背光電源腳。RT1602與單片機的應(yīng)用連接電路圖如圖4.10所示。</p><p>  表4.3 LCD1602基本操作時序</p><p>  圖4.10 液晶顯示模塊接口電路</p><p><b>  4.7語音播報模塊</b></p><p>  本模塊采用的核心語音芯片ISD1402語音芯片是美國ISD

60、(Information Storage Device)公司的產(chǎn)品。它包括時鐘振蕩器、128K可編程電擦除只讀存儲器(EEPROM)、低噪前置放大器、自動增益控制電路、抗干擾濾波器、差分功率放大器等電路。ISD1400系列語音芯片采用直接存儲模擬信號,自動待機省電,可編程電擦除只讀存儲和總線技術(shù)。ISD1400是一種具有高保真、錄音數(shù)據(jù)永久保存、省電、適用于同單片機接口特點的新一代語音芯片。ISD1420是ISD1400系列中錄音時長為

61、20s語音芯片。ISD1420是采用模擬存取技術(shù)集成的可反復(fù)錄放的20秒語音芯片,掉電語音不丟失,最大可分160段,最小每段語音長度為125ms,每段語音都可由地址線控制輸出,每125ms為一個地址,由A0-A7八根地址線控制。</p><p>  4.7.1 ISD1420語音芯片錄放音電路設(shè)計</p><p>  分段錄音時,ISD1420的A0-A7用作地址輸入線,A6、A7不可同時

62、為高電平,所以地址范圍為00H-9FH,即為十進制碼0-159 共160個數(shù)值。這表明ISD1420的EEPROM模擬存儲器最多可被劃分為160個存儲單元,也就是說ISD1420最多可存儲160個語音段,語音段的最小時間長度為0.125S。不同分段的選擇是通過對A0-A7端接不同的高低電平來實現(xiàn)。</p><p>  ISD1420分段錄音可以通過硬件(開關(guān))來實現(xiàn)也可以通過軟件編程來實現(xiàn)。圖4.11為硬件實現(xiàn)錄

63、音和放音的電路圖。</p><p>  圖4.11 語音芯片錄音和放音電路</p><p>  其中ISD1420各引腳說明如下:</p><p>  A0-A7—地址輸入端,當(dāng)A6和A7不全為高電平時,A0-A7為分段錄音信息地址線,不同的地址對應(yīng)不同的錄音片斷。</p><p>  MIC—話筒輸入端,話筒輸入信號通過電容交流耦合至此引腳

64、并傳給片上預(yù)放大器,耦合電容C7的值和該端內(nèi)阻R7(10K)決定語音信號通頻帶下限頻率。</p><p>  MICREF—話筒參考輸人端,MICREF是預(yù)放大器的反相輸入端,配合外電路可使片上預(yù)放大器具有較高的噪聲抑制比和共模抑制比。</p><p>  ANA IN—模擬信號輸人端,對于話筒輸入,ANA IN 引腳應(yīng)通過外部電容C4與ANA OUT引腳連接,耦合電容C4決定片上控制預(yù)放

65、大器通頻帶的下限頻率。</p><p>  ANA OUT—預(yù)放大器的輸出端,預(yù)放大器的電壓增益取決于AGC電平,對于小信號輸入電平,其增益最大為24dB,對于強信號,增益較低。</p><p>  AGC—自動增益控制端,AGC 動態(tài)地調(diào)整預(yù)放大器增益,使加至MIC輸入端的非失真信號的范圍擴展。內(nèi)阻抗(5歐)和外部電容決定AGC的響應(yīng)時間,外部電容和外部電阻的RC時間常數(shù)決定AGC的釋放

66、時間。</p><p>  SP+、SP- —喇叭輸出端,該端可直接驅(qū)動16歐的喇叭。</p><p>  XCLK—外接時鐘輸入端,ISD1420具有內(nèi)部時鐘,一旦接人外部時鐘,內(nèi)部時鐘會自動失去作用。改電路不用外部時鐘該引腳接地,一般不推薦使用外部時鐘,除非要求時鐘信號特別精確。</p><p>  RECLED—工作狀態(tài)指示端,在錄音或放音時該端輸出低電平,可

67、驅(qū)動一個LED來指示狀態(tài)。在錄音過程中指示燈一直亮著,在放音結(jié)束時,指示燈閃爍一下。</p><p>  PLAYE—邊沿觸發(fā)放音控制端,該端輸人一低脈沖,芯片即進入放音狀態(tài),直至遇到信息結(jié)束標(biāo)記(EOM)或到存儲空間的末尾時回放過程結(jié)束,電路自動進入準(zhǔn)備狀態(tài)。回放過程中PLAYE變化不會影響回放過程。</p><p>  PLAYL—電平觸發(fā)放音控制端,該端電平變?yōu)榈碗娖讲⒈3?,芯片進入

68、放音狀態(tài),放音過程持續(xù)到該端電平由低變高或遇到信息結(jié)束標(biāo)記(EOM),結(jié)束后電路進入準(zhǔn)備狀態(tài)。</p><p>  REC—錄音觸發(fā)端,REC 一旦變?yōu)榈碗娖?,芯片就進入錄音狀態(tài),REC的權(quán)限優(yōu)先于PLAYE和PLAYL,在放音期間若遇REC 接低電平時,放音就會立即停止并轉(zhuǎn)入錄音狀態(tài)開始錄音。錄音期間REC 應(yīng)始終保持低電平,REC變高或存儲空間變滿時錄音過程結(jié)束,這時在錄音截止的地方會記錄一個信息結(jié)束標(biāo)記(E

69、OM)。</p><p>  VCCD、VCCA—數(shù)字電源正端和模擬電源正端。</p><p>  VSSD、VSSA—數(shù)字地和模擬地。</p><p>  電路實現(xiàn)錄音功能說明如下,S1、S2、S3分別是控制錄音和放音按鍵,當(dāng)按下S1時開始錄音,S2、S3為兩種方式的放音按鍵,當(dāng)按一下S2時開始放音,是下降沿觸發(fā)的,而S3為電平控制的,必須一直按著此鍵直至放音結(jié)束

70、。LED和限流電阻組成錄放音指示電路,當(dāng)錄音結(jié)束、錄音超出時限(存儲器溢出)或放音結(jié)束時,ISD1420的25腳呈高電平,LED熄滅。對ISD1420進行分段錄音之前要先列出語音信息與分段地址的對照表,如表4.4所示。然后檢查電路連接、接線和電源情況。并通過對照表來設(shè)置8個開關(guān)選擇要錄音的地址,最后按下錄音鍵直至錄音結(jié)束,松開錄音鍵,重復(fù)此操作就可以將自己需要錄入的內(nèi)容全部錄入到芯片中。另外,A0和A1都需要接地,因為我們要確保分段間隔

71、不小于0.5S,所以至少要四段,否則錄音的信息可能會重疊,導(dǎo)致放音時達不到自己的要求。用戶錄制的語音每一段結(jié)束后芯片自動設(shè)有段結(jié)束標(biāo)志(EOM),芯片錄滿后設(shè)有溢出標(biāo)志(OVF)。</p><p>  表4.4 分段語音信息與地址對照表</p><p>  4.7.2 ISD1420與AT89S52接口電路設(shè)計</p><p>  ISD1420錄音和放音電路可以通

72、過硬件開關(guān)控制。本設(shè)計錄音是用硬件控制,但是播報溫度放音是通過AT89S52來控制的。單片機某一段的起始地址進行放音操作,遇到段結(jié)束標(biāo)志(EOM)即自動停止放音,單片機收到段結(jié)束標(biāo)志(EOM)就開始觸發(fā)下一段語音的起始地址,如此控制,即可以將很多、不同段的語音組合在一起成一句話放音出來,實現(xiàn)語音的自動組合。ISD1420與AT89S52的接口連接入下:AT89S52的P1端口連接地址線ISD1420的A0-A7,ISD1420放音電路通

73、過AT89S52的P3.3口控制PLAYER放音。具體連接圖見圖4.11。</p><p><b>  5 軟件部分</b></p><p>  5.1 開發(fā)工具介紹 </p><p>  單片的使用除了硬件,同樣也要軟件的使用,我們寫匯編程序編程CPU可執(zhí)行的機器碼有兩種方法,一種是手工匯編,一種是機器匯編。機器匯編通過匯編軟件變?yōu)闄C器碼,

74、用于MSC-51單片機的匯編軟件有早期的A51,隨著單片機開發(fā)技術(shù)的不斷發(fā)展,從使用普通匯編語言到高級語言的不斷發(fā)展,Keil是目前最流行開發(fā)MCS-51系列單片機的軟件。Keil c51匯編,PLM語言和C語言的程序設(shè)計,界面友好。Keil是美國keil software公司出品的52系列兼容單片機c語言開發(fā)系統(tǒng)。用過匯編語言后再使用C語言來開發(fā),體會更加深刻。 </p><p>  Keil C51軟件提供豐

75、富的庫,與匯編相比,C語言在功能上,結(jié)構(gòu)上,可讀性,可維護性上有明顯的優(yōu)勢,因而易學(xué)易用函數(shù)和功能強大的集成開發(fā)調(diào)試工具,全Windows界面。另外重要的一點,只要看一下編譯后生產(chǎn)的匯編代碼,就能體會到KeilC51DE 生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解,在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。</p><p>  5.2系統(tǒng)的主程序設(shè)計</p><p>

76、  主程序是在程序運行的過程中必須先經(jīng)過初始化,包括鍵盤程序,測量程序,以及各個控制端口的初始化工作。系統(tǒng)在初始化完成后就進入讀取溫度測量程序,實時的測量當(dāng)前的溫度,得到溫度后判斷溫度是否超過溫度設(shè)置的上下限。超出(低于)溫度上下限,調(diào)用報警子程序。再顯示電路在LCD上顯示。系統(tǒng)軟件設(shè)計的總體流程圖5.1所示</p><p>  圖5.1 主程序流程圖</p><p>  5.2.1鍵盤掃

77、描子程序</p><p>  對于系統(tǒng)來說,鍵輸入程序是整個鍵盤控制應(yīng)用系統(tǒng)的核心。當(dāng)所設(shè)的功能鍵按下時,本系統(tǒng)應(yīng)完成該鍵所設(shè)的功能。本系統(tǒng)具體實現(xiàn)功能如下表5.1。按鍵閉合過程在相應(yīng)的I/O端口形成一個負(fù)脈沖。閉合和釋放過程都要經(jīng)過一定的過程才能達到穩(wěn)定,這一過程是處于高、低電平之間的一種不穩(wěn)定狀態(tài),稱為抖動。為了保證CPU對鍵一次閉合,僅作一次鍵輸入處理,必須去抖動影響。本設(shè)計采用軟件去抖的辦法是在檢測到有按

78、鍵按下時,執(zhí)行一個5-10ms的延遲程序后在確認(rèn)該鍵電平是否仍保持閉合狀態(tài)電平,如保持閉合狀態(tài)電平則確認(rèn)為真正鍵按下的狀態(tài),從而消除了抖動影響。鍵盤子程序流程圖如下5.2所示(延時子程序未在流程圖中畫出)。</p><p>  表5.1 按鍵功能表</p><p>  圖5.2 鍵盤子程序流程圖</p><p>  5.2.2測量溫度子程序設(shè)計</p>

79、<p>  由在整個語音溫度計的設(shè)計中是以正確采集溫度為前提的,因為如果溫度采集就不正確,那么即使后續(xù)電路如顯示和報溫電路均正確,最后的結(jié)果仍然不能達到我們所要的目標(biāo),也就是不能正確的對環(huán)境溫度進行顯示和報溫,所以關(guān)于DS18B20的溫度采集是非常重要的。DS18B20單線通信功能是分時完成的,它有嚴(yán)格的時隙概念,因此讀寫時序很重要。操作協(xié)議為:初始化DS18B20(發(fā)復(fù)位脈沖)→發(fā)ROM功能命令→發(fā)存儲器操作命令→處理數(shù)據(jù)

80、。其測溫子程序流程圖如5.3所示。部分控制DS18B20指令功能如表5.2所示:</p><p>  圖5.3 測溫度子程序流程圖</p><p>  表5.2 控制DS18B20指令表</p><p>  5.2.3報警子程序</p><p>  初始默認(rèn)上下限報警值,或鍵盤設(shè)定報警值,取量實時測溫度值與溫度上下限值比較,超過報警范圍,導(dǎo)通

81、三極管,觸發(fā)蜂鳴器與指示燈報警,當(dāng)實時溫度恢復(fù)到報警范圍內(nèi)溫度時,自動停止報警。流程圖如圖5.4所示</p><p>  圖5.4 報警子程序流程圖</p><p>  5.2.4實現(xiàn)時鐘功能的程序設(shè)計</p><p>  本系統(tǒng)的時鐘直接用單片機的定時器編程以實現(xiàn)時鐘,節(jié)省硬件。TMOD=0x01定時器T0初始化方式1。定時時間=(65536-T0初值)*時鐘周期

82、*12。本設(shè)計中定時時間50ms,時鐘周期為12M,顧TH0=0x3c;TL0=0xb0時鐘實現(xiàn)流程圖如圖15.5所示:</p><p>  圖5.5 時鐘功能實現(xiàn)流程圖</p><p>  5.2.5顯示程序設(shè)計</p><p>  本設(shè)計使用的LCD1602基本操作時序如下表4.2。清楚基本操作時序就可以完成寫指令和寫數(shù)據(jù)到LCD中的子函數(shù)設(shè)計。在子函數(shù)中為了使

83、液晶顯示更加穩(wěn)定,可以最簡短的延時。</p><p>  顯示模式包括當(dāng)前溫度顯示,時間顯示模式,溫度上下限,他們實現(xiàn)都是先初始化調(diào)用顯示字符串子程序后再調(diào)用顯示指定位置字符子程序,具體看顯示當(dāng)前溫度子程序流程圖如圖5.6所示:</p><p>  圖5.6 顯示當(dāng)前溫度子程序流程圖 </p><p>  5.2.6語音播放子程序</p><p&

84、gt;  單片機語根據(jù)語音信息與分段地址的對照表和當(dāng)前溫度組合出播報當(dāng)前的溫度語音數(shù)據(jù)地址,再通過P3.3控制語音芯片放音,把處理的數(shù)據(jù)地址通過P1端口寫給語音芯片,程序流程如圖5.7所示:</p><p>  圖5.7 語音播放子程序</p><p>  6 仿真結(jié)果數(shù)據(jù)分析</p><p>  6.1功能仿真和結(jié)果</p><p>  各

85、項功能仿真方法及仿真結(jié)果如下表6.1</p><p>  表6.1 各項功能仿真方法及結(jié)果</p><p><b>  7 結(jié)束語</b></p><p>  本文設(shè)計的語音溫度計,即可用于人民生活中的日常用品,還可以單獨作為系統(tǒng)為了保證某特定環(huán)境溫度維持在設(shè)定的范圍內(nèi),以保證工作系統(tǒng)在穩(wěn)定的狀態(tài)下工作。本文設(shè)計的語音溫度計成本很低,如果采用大

86、批量生產(chǎn)的話,生產(chǎn)成本會更低,可以帶來一定的經(jīng)濟效益。</p><p>  經(jīng)過這段時間的方案論證、系統(tǒng)的硬件和軟件的設(shè)計、系統(tǒng)的仿真和調(diào)試。查閱了大量的關(guān)于傳感器、單片機及其接口電路、以及控制方面的理論。經(jīng)過了一番特殊的體驗后,靠用所學(xué)的專業(yè)知識來解決問題。檢查了自己的知識水平,使我對自己有一個全新的認(rèn)識。通過這次畢業(yè)設(shè)計,不僅鍛煉自己分析問題、處理問題的能力,還提高了自己的動手能力。這些培養(yǎng)和鍛煉對于我們這些

87、即將走向工作崗位的大學(xué)生來說,是很重要的。</p><p>  這次畢業(yè)設(shè)計基本的完成了任務(wù)書的要求,實現(xiàn)了溫度的控制和語音播報。通過仿真表明系統(tǒng)的設(shè)計是正確的,可行的。但是由于設(shè)計者的設(shè)計經(jīng)驗和知識水平有限,本文設(shè)計的語音溫度計還存在許多不足和缺陷。</p><p><b>  參考文獻</b></p><p>  [1] 余小平等.電子系統(tǒng)

88、設(shè)計[M] .北京航空航天大學(xué)出版社.2007 133-135</p><p>  [2] 何立民等.單片機中級教程原理與應(yīng)用[M].北京航空航天大學(xué)出版 社.1999 [3] 趙建領(lǐng).51系列單片機開發(fā)寶典[M].電子工業(yè)出版社.2007</p><p>  [4] 李東生等.Protel 99SE電路設(shè)計教程[M].電子工業(yè)出版社.2007</p><p&

89、gt;  [5] 郭天祥.新概念51單片機C語音教程[M].電子工業(yè)出版社.2008</p><p>  [6] 王細(xì)榮.文獻信息檢索與論文寫作[M].上海交通大學(xué)出版社.2009</p><p>  [7] 馬令坤等.電子工藝實訓(xùn)教程[M].西安電子科技大學(xué)出版社.2005</p><p>  [8] Dallas公司. DS18B20 Resolution On

90、e – Wire Digital Thermometer. [G].2000</p><p>  [9] ISD公司.Datebook of Voice Recoding&Playback Ics [G].2000.[11]DALLAS. High Precision l-wire® Digital Thermometer[EB

91、/OL].http: //www.dalsemi.com.</p><p>  [10]DALLAS. Understanding and Using Cyclic Redundancy Checks with Dallas Semiconductor iButtonTM Products[EB/OL].http://www.dalsemi.com.</p><p><b>  

92、附錄一:電路圖</b></p><p><b>  附錄二:源程序</b></p><p>  /***********************語音溫度計**************************</p><p>  *****************************************************

93、*****/</p><p>  /***********以下源代碼是主程序部分main.c**********/</p><p>  #include <at89x51.h></p><p>  #include "LCD1602.h"</p><p>  #include "clock.h&quo

94、t;</p><p>  #include "key.h"</p><p>  #include "DS18B20.h"</p><p>  #include "temp.h"</p><p>  #include "BEEP.h"</p><

95、p>  #include "ISD1420.h"</p><p>  #include "speakTEMP.h"</p><p>  void delayMs(unsigned int ms) //延時K*1ms,12.000mhz</p><p>  { unsigned char j;</p>&

96、lt;p>  while(ms--)</p><p>  {for(j=0; j<=125; j++);}</p><p><b>  }</b></p><p>  void init() //主初始化</p><p>  { P1=0xff;

97、 //初始化p1口,全設(shè)為1 </p><p><b>  P3=0xff;</b></p><p>  top_temp = 30;</p><p>  bottom_temp = 1;</p><p>  delayMs(500); </p><p&

98、gt;  initLCM( ); </p><p>  initClock();</p><p>  initTemp();</p><p><b>  BEEP = 1;</b></p><p><b>  }</b></p><p>  void main(void)&

99、lt;/p><p>  { init( ); //初始化</p><p><b>  while (1)</b></p><p>  { scan_key(); //鍵盤掃描子函數(shù)</p><p>  delayMs(10);</p>&l

100、t;p>  ReadTemperature( ); // 讀取溫度子函數(shù)</p><p>  if(temp > top_temp || temp < (char)bottom_temp) beep();</p><p>  displayTemp(); //顯示溫度子函數(shù)</p><p>  if(DisplayTimeFlag

101、) //判斷顯示模式</p><p>  displayClock(); //顯示時間子函數(shù)</p><p><b>  else</b></p><p>  displayTempLim(); //顯示溫度上下限子函數(shù)</p><p>  delayMs(10);</p><p>

102、;<b>  }</b></p><p><b>  }</b></p><p>  /***********以下源代碼是顯示子程序 LCD1602.h 部分**********/</p><p>  #ifndef__LCD1602_H__</p><p>  #define __LCD1

103、602_H__</p><p>  #include <at89x51.h></p><p>  #include <intrins.h></p><p>  #define BUSY 0x80 //lcd忙檢測標(biāo)志</p><p>  #define DATAPORT P0</p&g

104、t;<p>  sbit LCM_RS=P3^7;//數(shù)據(jù)/命令端</p><p>  sbit LCM_RW=P3^6;//讀/寫選擇端</p><p>  sbit LCM_EN=P2^7; //LCD使能信號</p><p>  void delay_LCM(unsigned int); //LC

105、D延時子程序延時ms</p><p>  void initLCM(void); //LCD初始化子程序</p><p>  void lcd_wait(void); //LCD檢測忙子程序</p><p>  void WriteCommandLCM(unsigned char WCLCM,unsigne

106、d char BusyC); //寫指令到ICM子函數(shù)</p><p>  void WriteDataLCM(unsigned char WDLCM); //寫數(shù)據(jù)到LCM子函數(shù)</p><p>  void DisplayOneChar(unsigned

107、 char X,unsigned char Y,unsigned char DData); //顯示指定坐標(biāo)的一個字符子函數(shù)</p><p>  void DisplayListChar(unsigned char X,unsigned char Y,unsigned char code *DData); //顯示指定坐標(biāo)的一串字符子函

108、數(shù)</p><p>  void delay_LCM(unsigned int k) //延時K*1ms,12.000mhz</p><p>  { unsigned int i,j;</p><p>  for(i=0;i<k;i++)</p><p>  {for(j=0;j<60;j++)</p>

109、<p><b>  {;}</b></p><p><b>  }</b></p><p><b>  } </b></p><p>  void WriteCommandLCM(unsigned char WCLCM,unsigned char BusyC)</p>&l

110、t;p>  //寫指令到LCM子函數(shù)</p><p>  { if(BusyC)lcd_wait();</p><p>  DATAPORT=WCLCM;</p><p>  LCM_RS=0; // 選中指令寄存器</p><p>  LCM_RW=0; // 寫模式

111、</p><p>  LCM_EN=1; </p><p>  _nop_(); _nop_(); _nop_(); </p><p>  LCM_EN=0; </p><p><b>  }</b></p><p>  void WriteDataLCM(unsigned c

112、har WDLCM) // 寫數(shù)據(jù)到LCM子函數(shù)</p><p>  { lcd_wait( ); //檢測忙信號 </p><p>  DATAPORT=WDLCM;</p><p>  LCM_RS=1; // 選中數(shù)據(jù)寄存器</p><p>  LCM_RW=0;

113、 // 寫模式</p><p><b>  LCM_EN=1;</b></p><p>  _nop_(); _nop_(); _nop_();</p><p>  LCM_EN=0;}</p><p>  void lcd_wait(void) // lcm內(nèi)部等待函數(shù)</p><p

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論