基于51單片機的數字體溫計設計_第1頁
已閱讀1頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  基于STC89C52最小系統(tǒng)的數字體溫計設計</p><p><b>  摘 要</b></p><p>  現代信息技術的三大基礎是信息采集(即傳感器技術)、信息傳輸(通信技術)和信息處理(計算機技術)。傳感器屬于信息技術的前沿尖端產品,尤其是溫度傳感器種類日益繁多,數字溫度傳感器更因適用于各種微處理器接口組成的自動溫度控制系統(tǒng)具有可以克服模擬

2、傳感器與微處理器接口時需要信號調理電路和A/D轉換器的弊端等優(yōu)點,被廣泛應用于工業(yè)控制、電子體溫計、測溫儀器等各種溫度控制系統(tǒng)中。智能溫度傳感器(亦稱數字溫度傳感器)是在20世紀90年代中期問世的。它是微電子技術、計算機技術和自動測試技術(ATE)的結晶。它們內部都包含溫度傳感器、A/D轉換器、信號處理器、存儲器(或寄存器)和接口電路。有的產品還帶多路選擇器、中央控制器(CPU)、隨機存取存儲器(RAM)和只讀存儲器(ROM)。智能溫度

3、傳感器的特點是能輸出溫度數據及相關的溫度控制量,適配各種微控制器(MCU);并且它是在硬件的基礎上通過軟件來實現測試功能的,其智能化程度也取決于軟件的開發(fā)水平。對某些智能溫度傳感器而言,單片機還可通過相應的寄存器來設定其A/D轉換速率(典型產品為MAX6654),分辨力及最大轉換時間(典型產品為DS1624)。隨著時代的</p><p>  關鍵詞:52單片機,DSI8B20,HS1602,體溫計</p&g

4、t;<p>  THE DIGITAL THERMOMETERS DESIGN BASED ON STC89C52’S MINUIMUM SYSTEM</p><p><b>  ABSTRACT</b></p><p>  Modern information technology is based on the three information c

5、ollection (ie, sensor technology), information transfer (ICT) and information processing (computer technology). Sensor belongs to the forefront of cutting-edge information technology products, especially the increasingly

6、 diverse types of temperature sensors, digital temperature sensor is more suitable for a variety of microprocessor interface for the composition of the automatic temperature control system can overcome the analog se</

7、p><p>  Keywords: 52 microcontroller; DSI8B20; HS1602; thermometer目 錄</p><p><b>  1引言1</b></p><p><b>  2總體設計方案3</b></p><p><b>  2.1方案論證3&

8、lt;/b></p><p>  2.1.1單片機系統(tǒng)3</p><p>  2.1.2電源模塊3</p><p>  2.1.3溫度傳感器3</p><p>  2.1.4顯示模塊4</p><p>  2.1.5確定方案4</p><p><b>  2.2總體設計

9、4</b></p><p><b>  3 硬件設計5</b></p><p>  3.1 單片機系統(tǒng)5</p><p>  3.1.1單片機最小系統(tǒng)7</p><p>  3.1.2 復位電路8</p><p>  3.1.3 時鐘振蕩電路8</p><

10、;p>  3.1.4電源模塊9</p><p>  3.2溫度傳感器模塊9</p><p>  3.2.1 DS18B20原理9</p><p>  3.2.2 DS18B20電路連接13</p><p>  3.3 液晶顯示模塊13</p><p>  3.4串口通信模塊14</p>

11、<p><b>  4軟件設計16</b></p><p>  4.1 軟件流程16</p><p>  4.2 DS18B20模塊程序設計17</p><p>  4.2.1 程序流程錯誤!未定義書簽。</p><p>  4.2.2 程序源碼錯誤!未定義書簽。</p><p&

12、gt;  4.3 HS1602驅動程序設計17</p><p>  4.3.1 程序流程錯誤!未定義書簽。</p><p>  4.3.2 程序源碼錯誤!未定義書簽。</p><p>  4.5 RS-232-C串口通信模塊程序設計18</p><p>  4.5.1 單片機端通信程序設計錯誤!未定義書簽。</p>&

13、lt;p>  5測試及結果分析19</p><p><b>  6結 語20</b></p><p><b>  參考文獻21</b></p><p><b>  附 錄22</b></p><p><b>  1引言</b></p

14、><p>  體溫計是在溫度計的基礎上研制成功的。1714年,德國物理學家華倫海特,初期研制的體溫表是把盛著酒精的玻璃管放在冰雪和鹽的混合物里,看玻璃管內酒精降到哪里,刻上一條線,然后把表含入口中,看酒精升到哪里,又刻上一條線。把這兩條線作為固定點,再把兩條線之間分成0~96°。這就是初期的體溫計。后來,華海倫特把冰點定為32°,沸點為212°,發(fā)明了華氏溫標。1742年又發(fā)明了0~10

15、0°的攝氏溫標,從此實現了體溫計的刻度標準化。1865年,英國的阿爾伯特發(fā)明了一種很有特色的體溫計,特點是儲存水銀的細管里有一狹道,當體溫計接觸人體后,水銀很快升到人體實際體溫處,取出后水銀柱不下降,而是在狹道處斷開,使狹道以上部分始終保持體溫度數。這種溫度計受到了臨床的歡迎和普及應用。但是隨著科技的進步,如今,又出現了多種類型的體溫計。</p><p><b> ?、匐娮邮襟w溫計 </

16、b></p><p>  隨著科學技術的發(fā)展,目前已經出現很多類型的新式體溫計。電子式體溫計利用某些物質的物理參數(如電阻、電壓、電流等)與環(huán)境溫度之間存在的確定關系,將體溫以數字的形式顯示出來,讀數清晰,攜帶方便。其不足之處在于示值準確度受電子元件及電池供電狀況等因素影響,不如玻璃體溫計。 </p><p><b>  ②耳溫體溫計 </b></p>

17、;<p>  體溫計一般在腋下、口腔、直腸等處使用,在實際應用中,人們普遍感覺不方便或不舒服。耳式體溫計是通過測量耳朵鼓膜的輻射亮度,非接觸地實現對人體溫度的測量。只需將探頭對準內耳道,按下測量鈕,僅有幾秒鐘就可得到測量數據,非常適合急重病患者、老人、嬰幼兒等使用。 </p><p><b> ?、燮襟w溫計</b></p><p>  不斷發(fā)展的新技術

18、又帶來了一種非常奇特的體溫計,可以叫片式體溫計或點陣式體溫計。這種體溫計只有名片大小,長6-7厘米、寬0.5厘米左右,上面布滿了一些附有數字的排列整齊的圓點。在進行體溫測試后,某一數值以下的圓點會全都變暗,而其余圓點顏色不變,使用者即可根據上述變化確定體溫。這種溫度計價格不高,體積較小,便于攜帶和儲存,本身污染非常小,特別適用于醫(yī)療機構,可以一次性使用,避免交叉感染。 </p><p><b> ?、芗t

19、外體溫計  </b></p><p>  紅外體溫計是通過接受紅外能量而設計的小儀器,其核心部件是一種叫紅外探測器的光電元件,它可以將人體的紅外輻射轉變?yōu)殡妼W信號,再經過電子學放大和處理成體溫數字顯示出來。通過探測鼓膜及周圍組織發(fā)射的紅外線熱量,再通過內置微電腦晶片快速計算出準確的體溫,并且顯示到小數點后一位,解決了傳統(tǒng)體溫計刻度難以辨認的困擾。全新一秒體溫計能在一秒鐘內掃描八次體

20、溫,并顯示出最高的一個溫度讀數,更加確保了測量的準確。 </p><p>  隨著人們生活水平的不斷提高,單片機控制無疑是人們追求的目標之一,它所給人帶來的方便也是不可否定的,其中數字溫度計就是一個典型的例子,但人們對它的要求越來越高,要為現代人工作、科研、生活、提供更好的更方便的設施就需要從數單片機技術入手,一切向著數字化控制,智能化控制方向發(fā)展。</p><p>  本設計所介紹的數字

21、體溫計,具有實用性強、可靠性高,測量精度準確、測量速度快,讀數方便等優(yōu)點,輸出溫度采用數字顯示,在設計中控制器使用STC89C52單片機,溫度傳感器使用DS18B20,用HS1602液晶顯示器實現溫度顯示,用MAX232及串口實現數據傳送,用USB接口實現供電。</p><p><b>  2總體設計方案</b></p><p><b>  2.1方案論證&

22、lt;/b></p><p>  2.1.1單片機系統(tǒng)</p><p>  目前比較流行51系列單片機和凌陽單片機。AT89C51單片機需要用仿真器來實現軟硬件的調試,較為繁瑣;STC89C52八位單片機除具有AT89C51單片機所有的優(yōu)點外,具有更大的程序存儲空間,可在線仿真的功能,方便調試。因此,選用STC89C52八位單片機作為溫度計的主控部分。</p><

23、p><b>  2.1.2電源模塊</b></p><p>  采用普通的直流電源實現電路簡單,而且采用集成電源芯片設計的直流電源電壓比較穩(wěn)定,完全滿足系統(tǒng)各模塊的供電要求,但是普通直流電源體積比較大,變壓器的散熱對測溫精度也有影響,所以采用USB接口直接由電腦供電,完全滿足STC89C52和DS18B20等各模塊的工作電壓范圍。</p><p>  2.1.3

24、溫度傳感器</p><p>  采用專用的集成溫度傳感器(如AD590、LM35/LM45)和數字化溫度傳感器(DS18B20、DS1620)測溫,數字化溫度傳感器具有接口簡單、直接數字量輸出、精確度高等優(yōu)點。DS18B20是DALLAS公司的最新單線數字溫度傳感器,它是世界上第一片支持“一線總線”接口的溫度傳感器。一線總線獨特而且經濟的特點,使用戶可輕松地組建傳感器網絡,它的測量溫度范圍為-55~+125℃,在

25、-10~+85℃范圍內,精度為±0.5℃,現場溫度直接以“一線總線”的數字方式傳輸,大大提高了系統(tǒng)的抗干擾性,適合于惡劣環(huán)境的現場溫度測量,如:環(huán)境控制、設備或過程控制、測溫類消費電子產品等,DS18B20支持3~5.5V的電壓范圍,使系統(tǒng)設計更靈活、更方便、更便宜、體積更小。DS18B20可以程序設定9~12位的分辨率,精度為±0.5℃,分辨率設定及用戶設定的報警溫度存儲在EPROM中,掉電后依然保存。因此,本方案

26、選用DS18B20作為溫度測量傳感器。</p><p><b>  2.1.4顯示模塊</b></p><p>  由于系統(tǒng)要求實現測量體溫,要顯示的信息不僅可以是溫度值,還可以是簡單的圖形。所以采用HS1602液晶顯示模塊顯示測溫結果。</p><p><b>  2.1.5確定方案</b></p><

27、;p>  為了不失通用性和智能性,本方案采用STC89C52單片機作為控制器,單總線溫度傳感器DS18B20進行溫度采集。電源部分并沒有采用普通的直流電源而利用USB接口通過電腦供電,完全滿足STC89C52和DS18B20等各模塊的工作電壓范圍。并且顯示模塊使用HS1602液晶顯示器。</p><p><b>  2.2總體設計</b></p><p>  本

28、方案設計的系統(tǒng)由單片機系統(tǒng)、溫度傳感器模塊、液晶顯示模塊、單片機復位電路、串口通信模塊和電源模塊組成,其總體架構如圖2.1。</p><p>  圖2.1總體設計方框圖</p><p>  Fig.2.1 Block diagram of the overall design </p><p><b>  3 硬件設計</b></p>

29、;<p><b>  3.1 單片機系統(tǒng)</b></p><p>  方案采用STC89C52單片機作為控制器,完成所有的控制功能,包括:溫度傳感器DS18B20的初始化和讀取溫度值、HS1602液晶模塊驅動、溫度存儲及讀取、和PC機的串口通信。</p><p>  STC89C52是一個低功耗,高性能CMOS 8位單片機,具有如下特點:40個引腳,4k

30、 Bytes Flash片內程序存儲器,128 bytes的隨機存取數據存儲器(RAM),32個外部雙向輸入/輸出(I/O)口,5個中斷優(yōu)先級2層中斷嵌套中斷,2個16位可編程定時計數器,2個全雙工串行通信口,看門狗(WDT)電路,片內時鐘振蕩器。</p><p><b>  1.主要特性:</b></p><p>  ? 8031 CPU與MCS-51 兼容<

31、/p><p>  ? 4K字節(jié)可編程FLASH存儲器(壽命:1000寫/擦循環(huán))</p><p>  ? 全靜態(tài)工作:0Hz-24KHz</p><p>  ? 三級程序存儲器保密鎖定</p><p>  ? 128*8位內部RAM</p><p>  ? 32條可編程I/O線</p><p>  

32、? 兩個16位定時器/計數器</p><p><b>  ? 6個中斷源</b></p><p><b>  ? 可編程串行通道</b></p><p>  ? 低功耗的閑置和掉電模式</p><p>  ? 片內振蕩器和時鐘電路</p><p><b>  2.管

33、腳說明:</b></p><p><b>  VCC:供電電壓。</b></p><p><b>  GND:接地。</b></p><p>  P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數據存儲器,它可以被定義為數

34、據/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。</p><p>  P1口:P1口是一個內部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。</p

35、><p>  P2口:P2口為一個內部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。P2口當用于外部程序存儲器或16位地址外部數據存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內部上拉優(yōu)勢,當對外部八位地址數據存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內容

36、。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。</p><p>  P3口:P3口管腳是8個帶內部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。</p><p>  P3.0 RXD(串行輸入口)</p><p&g

37、t;  P3.1 TXD(串行輸出口)</p><p>  P3.2 /INT0(外部中斷0)</p><p>  P3.3 /INT1(外部中斷1)</p><p>  P3.4 T0(記時器0外部輸入)</p><p>  P3.5 T1(記時器1外部輸入)</p><p>  P3.6 /WR(外部數據存儲器寫選

38、通)</p><p>  P3.7 /RD(外部數據存儲器讀選通)</p><p>  P3口同時為閃爍編程和編程校驗接收一些控制信號。</p><p>  RST:復位輸入。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。</p><p>  ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在

39、FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。</p><p>  /PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數據存儲器時,這兩次有效的/PSEN信號將不出現。</p><p>  /EA/VPP:當/EA

40、保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內部程序存儲器。注意加密方式1時,/EA將內部鎖定為RESET;當/EA端保持高電平時,此間內部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。</p><p>  XTAL1:反向振蕩放大器的輸入及內部時鐘工作電路的輸入。</p><p>  XTAL2:來自反向振蕩器的輸出。<

41、/p><p>  3.1.1單片機最小系統(tǒng)</p><p>  單片機最小系統(tǒng)應用是指僅使用單片機內部資源輔以必須的外圍電路所構建的簡單的應用系統(tǒng)。它包括兩方面的內容:單片機的選擇和單片機最小系統(tǒng)的設計。通過單片機的選擇,最大限度滿足應用系統(tǒng)對硬件資源的要求。最小應用系統(tǒng)設計則是指單片機最基本的、最通常的外圍電路設計。任何一個復雜的應用系統(tǒng)都是以最小應用系統(tǒng)為基礎,通過搭接外部功能模塊的方法實

42、現的。</p><p>  單片機最小系統(tǒng)的功能主要如下:</p><p>  ?單片機能夠運行用戶程序</p><p>  ?用戶可以復位單片機</p><p>  ?具有相對強大的外部擴展功能</p><p>  圖3.1 單片機最小系統(tǒng)原理框圖</p><p>  Fig.3.1 Smal

43、lest Microcontroller system block diagram</p><p>  3.1.2 復位電路</p><p>  在單片機系統(tǒng)中,一般需要一個硬件復位電路,用于用戶的手動復位。常用的復位電路由一個電阻、一個電容和一個按鈕組成,其原理圖如圖所示。在接通電源后,自動實現自動復位操作。在接通電源條件下,通過按鈕操作是單片機實現復位。上電自動復位時通過外部復位電容來

44、實現的,手動復位通過單片機復位引腳經電阻和電源接通而實現的。</p><p><b>  圖3.2 復位電路</b></p><p>  Fig.3.2 Reset Circuit</p><p>  3.1.3 時鐘振蕩電路</p><p>  在單片機系統(tǒng)中,一般在單片機引腳XTAL1和XTAL2之間接一個晶振和兩個

45、電容,這樣就構成了內部振蕩方式,由于在單片機內部有一個高增益反相放大器,外接一個晶振后,構成了自激振蕩器并產生振蕩時鐘脈沖。其電路圖如圖所示。 </p><p>  圖3.3 時鐘振蕩電路</p><p>  Fig.3.3 Oscillation circuit</p><p><b>  3.1.4電源模塊</b></p>&

46、lt;p>  本方案采用USB口通過電腦直接供電,電路連接簡單易實現。</p><p><b>  圖3.4 電源電路</b></p><p>  Fig.3.1 Power Modules</p><p>  3.2溫度傳感器模塊</p><p>  3.2.1 DS18B20原理</p><

47、p>  DS18B20 采用3 腳TO-92 封裝或8 腳SOIC 封裝,管腳排列如圖3所示。圖中GND 為地,DQ 為數據輸入/輸出端(即單線總線),該腳為漏極開路輸出,常態(tài)下呈高電平,Vcc 是外部+5V 電源端,不用時應接地,NC 為空腳。</p><p>  圖3.5 DS18B20的外部結構</p><p>  Fig.3.5 DS18B20 external struc

48、ture</p><p>  DS18B20內部主要包括寄生電源、溫度傳感器、64 位激光ROM 單線接口、存放中間數據的高速暫存器(內含便箋式RAM),用于存儲用戶設定的溫度上下限值的TH 和TL 解發(fā)器存儲與控制邏輯、8 位循環(huán)冗余校驗碼(CRC)發(fā)生器等七部分,內部結構如圖3.6。</p><p>  圖3.6 DS18B20內部結構</p><p>  F

49、ig.3.6 DS18B20 internal structure</p><p>  寄生電源由二極管VD1、VD2 和寄生電容C 組成,電源檢測電路用于判定供電方式,寄生電源供電時,VDD 端接地,器件從單線總線上獲取電源,在DQ 線呈低電平時,改由C上的電壓Vc繼續(xù)向器件供電。該寄生電源有兩個優(yōu)點:第一,檢測遠程溫度時無需本地電源;第二,缺少正常電源時也能讀ROM。若采用外部電源VDD,則通過VD2 向器件

50、供電。</p><p>  光刻ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼,序列開始8位(28H)是產品類型標號,接著的48位是DS18B20自身的序列號,最后8位是前面56位的循環(huán)冗余校驗碼(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一個DS18B20都各不相同,這樣就可以實現一根總線上掛接多個DS18B20的目的。</p><p> 

51、 DS18B20 測量溫度時使用特有的溫度測量技術。其內部的低溫度系數振蕩器能產生穩(wěn)定的頻率信號f0,高溫度系數振蕩器則將被測溫度轉換成頻率信號f。當計數門打開時,DS18B20 對f0 計數,計數門開通時間由高溫度系數振蕩器決定。芯片內部還有斜率累加器,可對頻率的非線性予以被償。測量結果存入溫度寄存器中。一般情況下的溫度值應為9 位(符號點1位),但因符號位擴展成高8 位,故以16 位編碼形式讀出,表3.1給出了溫度和數字量的關系。&

52、lt;/p><p>  表3.1 DS1820 溫度數字對應關系表</p><p><b>  Table 3.1</b></p><p>  DS1820 digital temperature mapping table</p><p>  DS18B20溫度傳感器的內部存儲器包括一個高速暫存RAM和一個非易失性的可

53、電擦除的E2RAM,后者存放高溫度和低溫度觸發(fā)器TH、TL和結構寄存器。暫存存儲器包含了8個連續(xù)字節(jié),前兩個字節(jié)是測得的溫度信息,第一個字節(jié)的內容是溫度的低8位,第二個字節(jié)是溫度的高8位,第三個和第四個字節(jié)是TH、TL的易失性拷貝,第五個字節(jié)是結構寄存器的易失性拷貝,這三個字節(jié)的內容在每一次上電復位時被刷新,第六、七、八個字節(jié)用于內部計算,第九個字節(jié)是冗余檢驗字節(jié),如表3.2所示。</p><p>  表3.2

54、 DS18B20暫存器分布</p><p>  該字節(jié)各位的意義為TM R1 R0 1 1 1 1 1 ,低五位一直都是1 ,TM是測試模式位,用于設置DS18B20在工作模式還是在測試模式,在DS18B20出廠時該位被設置為0,用戶不用改動,R1和R0用來設置分辨率,DS18B20出廠時被設置為12位,分辨率設置如表3.3所示。 </p><p>  表3.3 分辨率設置表</p&

55、gt;<p>  Table 3.3 resolution settings table</p><p>  根據DS18B20的通訊協(xié)議,主機控制DS18B20完成溫度轉換必須經過三個步驟:每一次讀寫之前都要對DS18B20進行復位,復位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對DS18B20進行預定的操作。復位要求主CPU將數據線下拉500微秒,然后釋放,DS18B20收到信號后等

56、待16~60微秒左右,后發(fā)出60~240微秒的存在低脈沖,主CPU收到此信號表示復位成功。ROM命令令和暫存器的命令如表3.4。</p><p>  表3.4 DS18B20暫存器的命令</p><p>  3.2.2 DS18B20電路連接</p><p>  由于DS18B20 工作在單總線方式,其硬件接口非常簡單,僅需利用系統(tǒng)的一條I/ O線與DS18B20

57、的數據總線相連即可,如圖3.7所示。</p><p>  圖3.7 DS18B20電路</p><p>  Fig.3.7DS18B20 circuit</p><p>  3.3 液晶顯示模塊</p><p>  HS1602采用標準的16腳接口,其中VSS為地電源,VDD接5V正電源,V0為液晶顯示模塊對比度調整端,接正電源時對比度最弱

58、,接地電源時對比度最高,可以通過一個10K的電位器調整對比度。RS為寄存器選擇,高電平時選擇數據寄存器,低電平時選擇指令寄存器。RW為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作,當RS和RW共同為低電平時可以寫入指令或者顯示地址,當RS為低電平RW為高電平時可以讀忙信號,當RS為高電平RW為低電平時可以寫入數據。E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。BLA和BLK為背光電源,BLA接5V正電源,BLK接G

59、ND。D0~D7為8位雙向數據線。</p><p>  用HS1602液晶顯示模塊顯示字符或字符串之前必須對其進行初始化,HS1602液晶顯示模塊的初始化流程如下:</p><p>  ?初始化過程(復位過程)</p><p><b>  ?延時15ms</b></p><p>  ?寫指令38H(不檢測忙信號)<

60、/p><p><b>  ?延時5ms</b></p><p>  ?寫指令38H(不檢測忙信號)</p><p><b>  ?延時5ms</b></p><p>  ?寫指令38H(不檢測忙信號)</p><p>  (以后每次寫指令、讀/寫數據之前均需檢測忙信號)</

61、p><p>  ?寫指令38H:顯示模式設置</p><p>  ?寫指令38H:顯示關閉</p><p>  ?寫指令01H:顯示清屏</p><p>  ?寫指令06H:顯示光標移動設置</p><p>  ?寫指令0CH:顯示開關及光標位置</p><p>  HS1602液晶顯示模塊可以和單

62、片機STC89C52直接接口,電路如圖3.8所示。</p><p>  圖3.8 STC89C52和HS1602液晶模塊連接電路</p><p>  Fig.3.8 STC89C52 and HS1602 LCD modules circuit</p><p><b>  3.4串口通信模塊</b></p><p>  

63、RS-232C標準(協(xié)議)的全稱是EIA-RS-232C標準,其中EIA(Electronic Industry Association)代表美國電子工業(yè)協(xié)會,RS(recommended standard)代表推薦標準,232是標識號,C代表RS232的最新一次修改,在這之前,有RS232B、RS232A,它規(guī)定連接電纜和機械、電氣特性、信號功能及傳送過程。RS-232C適合于數據傳輸速率在0~20000b/s范圍內的通信。</

64、p><p>  PC機常用DB-9連接器作為提供多功能I/O卡或主板上COM1和COM2兩個串行接口的連接器,它只提供異步通信的9個信號,9針串口功能見表3.9,并且對電纜長度也有要求: RS-232C標準規(guī)定,若不使用MODEM,在碼元畸變小于4%的情況下,DTE和DCE之間最大傳輸距離為15m(50英尺)??梢娺@個最大的距離是在碼元畸變小于4%的前提下給出的,為了保證碼元畸變小于4%的要求,接口標準在電氣特性中規(guī)

65、定,驅動器的負載電容應小于2500pF。 </p><p>  表3.5 9針串口功能一覽表</p><p>  本方案對RS-232-C接口采用3線制(RXD、TXD、GND)軟握手的零MODEM方式進行單片機和PC之間的數據通信,即PC機和單片機的發(fā)送數據線(TXD)與接收數據(RXD)交叉連接,二者的地線(GND)直接相連,其它信號線如握手信號線均不用,而采用軟件握手。但由于RS-

66、232-C的邏輯電對地是對稱的,與TTL、MOS 邏輯電平完全不同,邏輯0電平規(guī)定為+5~ +15V之間,邏輯1是電平為-5~ -15V之間,因此利用MAX232芯片進行電平轉換,電路連接如圖3.9。</p><p>  圖3.9 RS-232-C通信連接電路</p><p>  Fig.3.9 RS-232-C communication link circuit</p>

67、<p><b>  4軟件設計</b></p><p><b>  4.1 軟件流程</b></p><p>  按照硬件設計中的模塊劃分,軟件設計可以分為三部分:DS18B20模塊程序設計、HS1602驅動程序設計、單片機主程序設計。主流程如圖4.1。</p><p>  圖4.1 數字體溫計主程序流程圖&l

68、t;/p><p>  Fig.4.1 Digital thermometers main program flow chart</p><p>  4.2 DS18B20模塊程序設計</p><p>  DS18B20模塊程序主要完成DS18B20的初始化和溫度的讀取操作。程序流程如圖4.2。</p><p>  圖4.2 DS18B20模塊程

69、序流程圖</p><p>  Fig.4.2 DS18B20 module program flow chart</p><p>  4.3 HS1602驅動程序設計</p><p>  HS1602液晶驅動主要完成HS1602的初始化以及字符和字符串的顯示。流程如圖4.3。</p><p>  圖4.3 HS1602液晶驅動程序流程圖<

70、;/p><p>  Fig.4.3 HS1602 LCD driver flow chart</p><p>  4.5 RS-232-C串口通信模塊程序設計</p><p>  STC89S52單片機串行口是全雙工串行通信口,有4 種工作方式:方式0作移位寄存器使用;方式1是波特率可變的8位UART;方式2是波特率固定為兩種的9位UART;方式3是波特率可變的9位UA

71、RT。在與PC機通信時我們選用方式1來循環(huán)向PC機發(fā)送數據。程序流程如圖4.4。</p><p>  圖 4.4單片機串口通信程序流程圖</p><p><b>  5測試及結果分析</b></p><p><b>  6結 語</b></p><p>  經過兩個多月的努力,《基于STC89C5

72、2單片機最小系統(tǒng)數字體溫計設計》 論文終于完成,在整個設計過程中,出現過很多的難題,但都在老師和同學的幫助下順利解決了,在不斷的學習過程中我體會到:寫論文是一個不斷學習的過程,從最初剛寫論文時對單片機的模糊認識到最后能夠對單片機有深入的了解,我體會到實踐對于學習的重要性。以前只是聽說過單片機這個名詞,但并沒有深入的學習,通過做這次的設計,不僅讓我了解到了單片機的功能,并且培養(yǎng)了我嚴謹的學習態(tài)度及實踐能力。雖然,我的設計還有不足之處,但是

73、看著自己繪制的電路圖,以及設計成品,心心中充滿了喜悅之情,因為它凝結了我一點一滴的心血。</p><p>  通過學年論文設計,我深刻體會到要做好一個完整的論文及設計的理論功底、高深的學術造詣、嚴謹的治學態(tài)度和胸懷寬宏的高尚品質,讓我受益匪淺,終身難忘。希望這次的經歷能在以后學習中激勵我繼續(xù)進步。</p><p><b>  參考文獻</b></p>&

74、lt;p>  [1] 張洪潤等,《電子線路與電子技術》,北京,清華大學出版社,2005.</p><p>  [2] 王松武等,《電子創(chuàng)新設計與實踐》,北京,國防工業(yè)出版社,2005.</p><p>  [3] 李建忠,《單片機原理及應用》,西安,西安電子科技大學出版社,2002.</p><p>  [4] 黃智偉等,《全國大學生電子設計競賽訓練教程》,北

75、京,電子工業(yè)出版社,2004.</p><p>  [5] 樊昌信等.通信原理.北京,國防工業(yè)出版社,2001.</p><p>  [6] STC89C52.PDF.</p><p>  [7] DS18B20.PDF.</p><p>  [8] HS1602.PDF.</p><p>  [9] 何希才,新型集成

76、電路及應用實例,北京,科學出版社,2002.</p><p>  [10] 李朝青,《理及接口技術(簡明修訂版)》,杭州,北京航空航天大學出版社,1998.</p><p>  [11] 常敏等,《51單片機應用程序開發(fā)與實踐》,北京,電子工業(yè)出版社,2009.</p><p>  [12] 戴仙金,《51單片機及其C語言程序開發(fā)實例》,北京,清華大學出版社,200

77、8</p><p><b>  附 錄</b></p><p>  附錄1 總體完全電路圖</p><p>  附錄2 各模塊程序源碼</p><p>  1 DS18B20模塊程序源碼</p><p>  uchar DataH;</p><p>  uchar Dat

78、aL;</p><p>  unsigned long Data;</p><p>  void Delay (uchar us)</p><p><b>  {</b></p><p>  while (--us);</p><p><b>  }</b></p&g

79、t;<p>  bit init_18b20()</p><p><b>  {</b></p><p>  uchar n=0;</p><p>  bit flag=0;</p><p><b>  DQ=1;</b></p><p><b> 

80、 _nop_();</b></p><p><b>  DQ=0;</b></p><p>  Delay(255);</p><p>  Delay(20); </p><p><b>  DQ=1;</b></p><p>  Delay(55);<

81、/p><p>  if(DQ==0) flag=1; </p><p>  else flag=0; </p><p>  Delay(100);</p><p><b>  DQ=1;</b></p><p>  return flag;</p&g

82、t;<p><b>  }</b></p><p>  void write1820_byte (uchar wr) </p><p><b>  {</b></p><p><b>  uchar i;</b></p><p>  for (i=0

83、;i<8;i++)</p><p><b>  {</b></p><p><b>  DQ=0;</b></p><p><b>  _nop_();</b></p><p>  DQ=wr&0x01;</p><p>  Delay(2

84、0);//45us</p><p><b>  DQ=1;</b></p><p><b>  wr>>=1;</b></p><p><b>  } </b></p><p><b>  }</b></p><p>

85、  uchar read1820_byte (void) </p><p><b>  {</b></p><p>  uchar i,u=0;</p><p>  for(i=0;i<8;i++)</p><p><b>  {</b></p><p>

86、;<b>  DQ=0;</b></p><p><b>  u>>=1;</b></p><p><b>  DQ=1;</b></p><p><b>  if(DQ==1)</b></p><p>  u|=0x80; &l

87、t;/p><p>  Delay(18);//40us</p><p><b>  }</b></p><p>  return(u); </p><p><b>  }</b></p><p>  void DataCoding(unsigned char ddH ,

88、unsigned char ddL)</p><p><b>  {</b></p><p>  Data = ddH * 256 + ddL;</p><p>  Data = Data * 625;</p><p><b>  }</b></p><p>  void G

89、et_temperarue(void)</p><p><b>  {</b></p><p>  if (init_18b20 ())</p><p><b>  {</b></p><p>  write1820_byte (0xcc); //skip rom</p>&

90、lt;p>  write1820_byte (0x44); //temp convert</p><p><b>  }</b></p><p>  Delay(35);</p><p>  if (init_18b20 ())</p><p>  { </p>&l

91、t;p>  write1820_byte (0xcc); //skip rom</p><p>  write1820_byte (0xbe); //read temp</p><p>  DataL = read1820_byte();</p><p>  DataH = (read1820_byte()&0x0f);

92、</p><p>  DataCoding( DataH, DataL );</p><p><b>  }</b></p><p><b>  }</b></p><p>  2 HS1602液晶模塊程序源碼</p><p><b>  //液晶初始化</

93、b></p><p>  void lcd_init(void)</p><p><b>  {</b></p><p>  delay_nms(15);</p><p>  lcd_write_command(0x38,0);//顯示模式設置三次(此時不管lcd空閑與否)</p><p>

94、  delay_nms(5);</p><p>  lcd_write_command(0x38,0);</p><p>  delay_nms(5);</p><p>  lcd_write_command(0x38,0);</p><p>  delay_nms(5);</p><p>  lcd_write_co

95、mmand(0x38,1);//顯示模式設置(從此之后均需lcd空閑)</p><p>  lcd_write_command(0x08,1);//顯示關閉</p><p>  lcd_write_command(0x01,1);//顯示清屏</p><p>  lcd_write_command(0x06,1);//顯示光標移動設置</p><

96、p>  lcd_write_command(0x0c,1);//顯示開及光標設置</p><p><b>  }</b></p><p>  //寫指令函數: E=高脈沖 RS=0 RW=0</p><p>  // command為指令,wait_en指定是否要檢測LCD忙信號</p><p>  void lc

97、d_write_command(unsigned char command,unsigned char wait_en) </p><p><b>  {</b></p><p>  uchar xdata *dig;</p><p>  if(wait_en)wait_enable(); //若wait_en為1,則要檢測LCD忙信號,等待

98、其空閑</p><p>  dig=&DIGPORT;</p><p>  *dig=command;</p><p><b>  }</b></p><p>  //寫數據函數: E =高脈沖 RS=1 RW=0</p><p>  void lcd_write_data(unsigne

99、d char char_data)</p><p><b>  {</b></p><p>  uchar xdata *dig;</p><p>  dig=&DIGPORT1;</p><p>  wait_enable(); //等待LCD空閑</p><p>  *dig=cha

100、r_data;</p><p><b>  }</b></p><p>  //正常讀寫操作之前必須檢測LCD控制器狀態(tài)</p><p>  //E=1 RS=0 RW=1;DB7: 0 LCD控制器空閑,1 LCD控制器忙。</p><p>  //檢測忙信號,等待LCD空閑函數</p><p>

101、;  void wait_enable(void)</p><p><b>  {</b></p><p>  lcd_RS=0;//RS=0</p><p>  lcd_RW=1;//RW=1</p><p><b>  _nop_();</b></p><p>  RD=

102、0;//E=1</p><p><b>  lcd_E=1;</b></p><p>  while(busy);//等待LCD_DB7為0</p><p>  RD=1;//E=0</p><p><b>  lcd_E=0;</b></p><p><b>  

103、}</b></p><p>  //指定位置顯示一個字符:第一行位置0~15,第二行16~31</p><p>  //顯示一個字符函數</p><p>  //參數position指定位置0~31,char_data為要顯示的字符</p><p>  void display_a_char(unsigned char posit

104、ion,unsigned char char_data) </p><p><b>  {</b></p><p>  unsigned char position_tem;</p><p>  if(position>=0x10)</p><p>  position_tem=position+0xb0;<

105、/p><p><b>  else</b></p><p>  position_tem=position+0x80;</p><p>  lcd_write_command(position_tem,1);</p><p>  lcd_write_data(char_data);</p><p>&

106、lt;b>  }</b></p><p>  void display_a_string(unsigned char col,unsigned char *ptr) </p><p><b>  {</b></p><p>  unsigned char col_tem,i;</p><p>  col

107、_tem=col<<4;</p><p>  for(i=0;i<16;i++)</p><p>  display_a_char(col_tem++,*(ptr+i));</p><p><b>  }</b></p><p>  3 單片機串口通信程序源碼</p><p> 

108、 void Rs232_int(void)</p><p><b>  {</b></p><p>  SCON = 0x50;</p><p>  TMOD = 0x20;</p><p>  TH1 = 0xFD;</p><p>  TL1 = 0xFD;</p&g

109、t;<p>  TR1 = 1; </p><p><b>  }</b></p><p>  void sent_data(unsigned char Dat)</p><p><b>  {</b></p><p>  SBUF=Dat;//sent_da

110、ta:mov sbuf,a</p><p>  while(!TI);//jnb ti,$</p><p>  TI=0;//clr ti</p><p><b>  }</b></p><p>  sent_data(0x7e);</p><p>  sent_da

溫馨提示

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

評論

0/150

提交評論