基于MSP430G2553和ds18b20的測(cè)溫系統(tǒng)_第1頁(yè)
基于MSP430G2553和ds18b20的測(cè)溫系統(tǒng)_第2頁(yè)
基于MSP430G2553和ds18b20的測(cè)溫系統(tǒng)_第3頁(yè)
基于MSP430G2553和ds18b20的測(cè)溫系統(tǒng)_第4頁(yè)
基于MSP430G2553和ds18b20的測(cè)溫系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、嵌入式控制系統(tǒng)與應(yīng)用課程論文題 目: 基于MSP430G2553和ds18b20的測(cè)溫系統(tǒng) 院系名稱(chēng): 專(zhuān)業(yè)班級(jí): 學(xué)生姓名: 學(xué) 號(hào): 摘 要為了在現(xiàn)實(shí)生活和工業(yè)生產(chǎn)及過(guò)程控制中準(zhǔn)確測(cè)量溫度,設(shè)計(jì)了一種基于低功耗MSP430單片機(jī)的數(shù)字溫度計(jì),整個(gè)系統(tǒng)通過(guò)單片機(jī)MSP430控制DS18B20讀取溫度,采用LCD1602顯示,溫度傳感器DS18B20與單片機(jī)之間通過(guò)串口進(jìn)行數(shù)據(jù)傳輸,且外圍的整合性高,DS18B20只需一個(gè)端口即可實(shí)現(xiàn)數(shù)據(jù)通信,連接方便,通過(guò)多次實(shí)驗(yàn)證明,該系統(tǒng)的測(cè)試結(jié)果與實(shí)際環(huán)境溫度一致,除了具有接口電路簡(jiǎn)單,測(cè)量精度高,誤差小,可靠性高等特點(diǎn)外,其成本低,功耗低的特點(diǎn)使其擁

2、有更廣闊的應(yīng)用前景。關(guān)鍵字:DS18B20 MSP430G2553單片機(jī) 液晶顯示 目 錄1 引言12 測(cè)溫系統(tǒng)硬件構(gòu)成12.1 硬件設(shè)計(jì)13 軟件設(shè)計(jì)63.1 總體設(shè)計(jì)流程圖63.2 初始化模塊64 實(shí)驗(yàn)展示74.1 實(shí)物整體展示74.2 報(bào)警顯示和蜂鳴器報(bào)警85設(shè) 計(jì) 心 得116本設(shè)計(jì)的不足和反思12參 考 文 獻(xiàn)13附錄14附一:元器件及儀器明細(xì)表14附二:實(shí)驗(yàn)設(shè)計(jì)程序14III1 引言溫度的測(cè)量和控制在儲(chǔ)糧倉(cāng)庫(kù)、智能樓宇空調(diào)控制及其它的工農(nóng)業(yè)生產(chǎn)和科學(xué)研究中應(yīng)用廣泛。溫度檢測(cè)的傳統(tǒng)方法是使用諸如熱電偶、熱電阻、半導(dǎo)體PN結(jié)(如AD590)之類(lèi)的模擬傳感器,經(jīng)信號(hào)取樣電路、放大電路和模

3、數(shù)轉(zhuǎn)換電路處理,獲取表示溫度值的數(shù)字信號(hào),再交由微處理器或DSP處理。被測(cè)溫度信號(hào)從敏感元件接收的非電模擬量開(kāi)始,到轉(zhuǎn)換為微處理器可處理的數(shù)字信號(hào)之間,設(shè)計(jì)者須考慮的線路環(huán)節(jié)較多,相應(yīng)測(cè)溫裝置中元器件數(shù)量難以下降,隨之影響產(chǎn)品的可靠性及體積微小化。由此會(huì)造成整個(gè)檢測(cè)系統(tǒng)有較大的偏差穩(wěn)定性和抗干擾性能都較差。本文設(shè)計(jì)一種基于數(shù)字溫度傳感器DSl8820的小型測(cè)溫系統(tǒng),主控芯片采用TI公司的MSP430單片機(jī),數(shù)字溫度傳感器通過(guò)單總線與單片機(jī)連接,系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,抗干擾能力強(qiáng),適合于惡劣環(huán)境下進(jìn)行現(xiàn)場(chǎng)溫度測(cè)量,可應(yīng)用于倉(cāng)庫(kù)測(cè)溫、樓宇空調(diào)控制和生產(chǎn)過(guò)程監(jiān)控等領(lǐng)域。2 測(cè)溫系統(tǒng)硬件構(gòu)成2.1 硬件設(shè)計(jì)2

4、.1.1 系統(tǒng)硬件設(shè)計(jì)總方案系統(tǒng)硬件設(shè)計(jì)總方案如圖1所示:電源模塊MSP430G2553DS18B20LCD1602液晶顯示模塊溫度圖1 硬件設(shè)計(jì)方框圖電源系統(tǒng)由miniUSB輸出5V以及芯片LE33組成,實(shí)現(xiàn)對(duì)MSP430G2553核心處理芯片、LCD1602液晶顯示等硬件模塊提供所需電源;顯示部分由LCD1602液晶對(duì)溫度進(jìn)行實(shí)時(shí)顯示;軟件設(shè)計(jì)部分包括模擬串口對(duì)DS18B20數(shù)據(jù)進(jìn)行讀取以及LCD1602液晶的驅(qū)動(dòng)和顯示。2.1.2 MSP430G2553引腳功能說(shuō)明本次設(shè)計(jì)需要用到MSP430單片機(jī)的1腳電源、16腳復(fù)位端、20腳接地端、配置P2.2口為待測(cè)信號(hào)輸入端,P2.0為L(zhǎng)CD片

5、選信號(hào)端,P1為L(zhǎng)CD并行數(shù)據(jù)輸出端,如表1所示。圖2所示為MSP430G2553單片機(jī)的最小系統(tǒng)圖。表1 MSP430G2553引腳及功能說(shuō)明引腳序號(hào)引腳名稱(chēng)功能說(shuō)明1VCC電源正2P2.2頻率信號(hào)輸入端5P2.0LCD片選信號(hào)端6P1.xLCD并行數(shù)據(jù)輸出端13P2.5蜂鳴器報(bào)警16RST復(fù)位腳20GND電源地圖2 MSP430G2553最小系統(tǒng)2.1.3 LCD1602引腳功能說(shuō)明LCD12864液晶顯示屏用到電源接口線,腳背光電源接口線,腳并行接口選擇。LCD1602引腳功能如表2所示。表2 LCD1602引腳功能說(shuō)明引腳序號(hào)引腳名稱(chēng)功能說(shuō)明1VSS模塊的電源地2VDD模塊的電源正端4

6、RS(CS)并行指令/數(shù)據(jù)選擇信號(hào)、串行片選信號(hào)5R/W(SID)并行讀寫(xiě)選擇信號(hào)、串行的數(shù)據(jù)口6E(CLK)并行使能信號(hào)、串行的同步時(shí)鐘15LED_A背光源正極16LED_K背光源負(fù)極(0V)2.1.4 DS18B20說(shuō)明DSl8820是美國(guó)DALLAS公司推出的單總線數(shù)字測(cè)溫芯片。它具有獨(dú)特的單線接口方式,將非電模擬量溫度值轉(zhuǎn)換為數(shù)字信號(hào)輸出僅需占用1位A)端口,能夠直接讀取被測(cè)物體的溫度值,提高了抗干擾能力和測(cè)量精度。它體積小,電壓適用范圍寬(30V一55v),可以采用外部供電方式(如圖1所示),也可以采用寄生電源方式即從數(shù)據(jù)線上獲得電源。用戶(hù)還可以通過(guò)編程實(shí)現(xiàn)9一12位的溫度讀數(shù),即具

7、有可調(diào)的溫度分辨率。因此它的實(shí)用性和可靠性比同類(lèi)產(chǎn)品更高DSl8820采用3腳TO一92封裝,形如三極管:同時(shí)也有8腳SOIC封裝。測(cè)溫范圍為一55一+125。C,在一10一+85范圍內(nèi),精度為±05。每一個(gè)DSl8820芯片的ROM中存放一個(gè)“位ID號(hào):前8位是產(chǎn)品類(lèi)型編號(hào),隨后48位是該器件的自身序號(hào),最后8位是前面56位的循環(huán)冗余校驗(yàn)碼。又因其可采用寄生電源方式供電。因此,一條總線上可以同時(shí)掛接數(shù)個(gè)DSl8820,可方便的實(shí)現(xiàn)多點(diǎn)測(cè)溫系統(tǒng)。另外用戶(hù)還可根據(jù)實(shí)際情況自設(shè)定非易失性溫度報(bào)警上下限值TH和TL(掉電后依然保存)。DSl8820檢測(cè)到的溫度值經(jīng)轉(zhuǎn)換為數(shù)字量后,自動(dòng)存入存

8、儲(chǔ)器中,并與設(shè)定值TH或TL進(jìn)行比較,當(dāng)測(cè)量溫度超出給定范圍時(shí),就輸出報(bào)警信號(hào),并自動(dòng)識(shí)別是高溫超限還是低溫超限。 圖3 DS18B20引腳連接圖4 DS18B20溫度寄存器格式圖5 溫度/數(shù)據(jù)關(guān)系2.1.5 UART轉(zhuǎn)USB電路圖6 UART電路PL2303 是Prolific 公司生產(chǎn)的一種高度集成的RS232-USB 接口轉(zhuǎn)換器,可提供一個(gè)RS232 全雙工異步串行通信裝置與USB 功能接口便利聯(lián)接的解決方案。該器件內(nèi)置USB功能控制器、USB 收發(fā)器、振蕩器和帶有全部調(diào)制解調(diào)器控制信號(hào)的UART, 只需外接幾只電容就

9、可實(shí)現(xiàn)USB 信號(hào)與RS232 信號(hào)的轉(zhuǎn)換,能夠方便嵌入到各種設(shè)備所以2000年左右開(kāi)始經(jīng)常推薦使用該款芯片;該器件作為USB/RS232 雙向轉(zhuǎn)換器,一方面從主機(jī)接收USB 數(shù)據(jù)并將其轉(zhuǎn)換為RS232 信息流格式發(fā)送給外設(shè);另一方面從RS232 外設(shè)接收數(shù)據(jù)轉(zhuǎn)換為USB 數(shù)據(jù)格式傳送回主機(jī)。這些工作全部由器件自動(dòng)完成,開(kāi)發(fā)者無(wú)需考慮固件設(shè)計(jì).3 軟件設(shè)計(jì)3.1 總體設(shè)計(jì)流程圖系統(tǒng)軟件設(shè)計(jì)包括測(cè)量初始化部分、顯示部分、報(bào)警部分。系統(tǒng)軟件整體流程圖如圖7所示。圖7 系統(tǒng)軟件整體設(shè)計(jì)流程圖3.2 初始化模塊設(shè)備初始化包括關(guān)閉看門(mén)

10、狗,I/O口輸入/輸出功能的配置,時(shí)鐘初始化,端口初始化以及液晶初始化,其流程圖如圖8所示。圖8 系統(tǒng)初始化流程圖3.3 顯示模塊首先根據(jù)LCD1602液晶的時(shí)序圖寫(xiě)出液晶驅(qū)動(dòng)函數(shù),并調(diào)用驅(qū)動(dòng)函數(shù)完成在指定位置處顯示字符的功能函數(shù),這樣通過(guò)定時(shí)刷新液晶屏就可以顯示溫度值了。 4 實(shí)驗(yàn)展示4.1 實(shí)物整體展示圖9 實(shí)物整體展示圖4.2 報(bào)警顯示和蜂鳴器報(bào)警當(dāng)溫度t>30時(shí)蜂鳴器報(bào)警,紅燈閃亮模擬通風(fēng)降溫。LCD顯示警告。當(dāng)溫度t<27時(shí)蜂鳴器報(bào)警,黃燈閃亮模擬加熱升溫。LCD顯示警告。當(dāng)溫度27<t<30時(shí)LCD實(shí)時(shí)顯示溫度。圖10 實(shí)物調(diào)試圖圖11 實(shí)物調(diào)試圖5設(shè) 計(jì)

11、心 得通過(guò)嵌入式控制系統(tǒng)與應(yīng)用這門(mén)課,通過(guò)這門(mén)課的學(xué)習(xí),我對(duì)MSP430G2553有了較為深入的了解。這門(mén)課王老師通過(guò)分工合作,同學(xué)講解,同學(xué)討論,以及課后周記總結(jié)這樣的方式來(lái)進(jìn)行的,不僅提高了自己的自學(xué)能力和學(xué)習(xí)主動(dòng)性,而且使自己得到了很多方面基本技能的訓(xùn)練。這次做的設(shè)計(jì)所需要的知識(shí)有很多在書(shū)本上是找不到的,而且這些知道并不是像以前一樣由老師系統(tǒng)的詳細(xì)的教授。所以,這就強(qiáng)迫我去圖書(shū)館和網(wǎng)上查閱資料,不過(guò)這也培養(yǎng)了我查閱資料的能力,讓我受益頗多。在第一節(jié)課上完之后覺(jué)得實(shí)在是無(wú)從下手,根本不知道干什么,對(duì)外電路和內(nèi)電路都十分迷茫,可是后來(lái)通過(guò)同學(xué)之間的分工合作,而且我們先從非常簡(jiǎn)單的小實(shí)驗(yàn)入手,

12、一點(diǎn)一點(diǎn)我就每次可都有了很多收獲,通過(guò)同學(xué)講解中斷,定時(shí)器,計(jì)數(shù)器,捕捉,比較器,PWM,串口,ADC,低功耗,觸屏等,我對(duì)這些知識(shí)能夠拿來(lái)應(yīng)用,并能實(shí)現(xiàn)基本功能要求,能夠把程序弄明白,發(fā)現(xiàn)自己會(huì)的越來(lái)越多,一次課比一次課進(jìn)步。通過(guò)本次實(shí)驗(yàn),讓我對(duì)MSP430G2553芯片的輸入與輸出以及中斷查詢(xún)方式有了一定的了解。MSP430G2553不像我們之前接觸的51單片機(jī)可以直接進(jìn)行位操作,只能運(yùn)用C語(yǔ)言邏輯運(yùn)算。實(shí)驗(yàn)雖然很簡(jiǎn)單,但也費(fèi)了不少功夫。首先,對(duì)CCS軟件操作不熟練,Grace工程可以快速方便地幫助我們配置寄存器,但是自己還不太熟悉。設(shè)置斷點(diǎn)和單步調(diào)試,是一種很好的找到問(wèn)題的方法。而且我學(xué)

13、會(huì)了多文件編寫(xiě)軟件,以后要盡量用多文件操作,把之前寫(xiě)好的程序做成頭文件,方便以后調(diào)用。其次,DS18B20是單總線的通訊。硬件連接較容易,但是時(shí)序要求很?chē)?yán)格,軟件編程一開(kāi)始,讀不出數(shù)據(jù)。千方百計(jì)地調(diào)整時(shí)序,精確延時(shí),依舊沒(méi)有讀出溫度數(shù)據(jù)。查閱大量資料發(fā)現(xiàn),DS18B20的接法不通,會(huì)影響到時(shí)序問(wèn)題。寄生模式和單獨(dú)電源供電模式,他們的時(shí)序一定的區(qū)別。而且電源和地直接接不接10k電阻,時(shí)序也不一樣的。這一塊廢了很大功夫。最后,MSP430的IO口最大6mA,整個(gè)芯片最大電流總和不超過(guò)48mA。然而有源蜂鳴器驅(qū)動(dòng)需要130mA,所以就要加9012NPN三極管來(lái)獲得大電流。9012的常溫最大輸出500

14、mA電流。6本設(shè)計(jì)的不足和反思最為一個(gè)溫度監(jiān)控系統(tǒng),應(yīng)該加上按鈕,當(dāng)溫度異常,蜂鳴器報(bào)警時(shí),按下復(fù)位按鈕,蜂鳴器停止報(bào)警,但是紅燈繼續(xù)閃爍。當(dāng)故障排除后,紅燈滅,系統(tǒng)恢復(fù)正常。如果一分鐘后故障沒(méi)有排除,蜂鳴器再次報(bào)警。檢測(cè)的實(shí)時(shí)溫度應(yīng)該通過(guò)UART上傳到上位機(jī),記錄下來(lái)。參 考 文 獻(xiàn)1 胡大可. MSP430系列超低功耗16位單片機(jī)M. 北京航空航天大學(xué)出版社, 2001.2 童詩(shī)白, 華成英. 模擬電子技術(shù)基礎(chǔ)(第四版),清華大學(xué)出版社, 2006. 3 MSP430G2553 Data Sheet. 4 MSP430中文手冊(cè). 5 Op37 Data Sheet.6 MSP430G2系列

15、單片機(jī)原理與實(shí)踐教程.7 MSP-EXP430G2系列單片機(jī)試驗(yàn)板使用指南.附錄附一:元器件及儀器明細(xì)表見(jiàn)另外excel文檔。附二:實(shí)驗(yàn)設(shè)計(jì)程序/* * main.c */#include"msp430g2553.h"#include "LCD1602.h"#include "DS18b20.h"int main( void ) / Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; P1DIR =0XFF; P2DIR = BIT0+BIT1

16、+BIT2+BIT3+BIT4+BIT5; / P2DIR=BIT3+BIT4+BIT5; unsigned int t; LCD1602_Init(); DS18b20_Init(); while(1) P2OUT&=BIT3;/紅燈滅 P2OUT&=BIT4;/綠燈滅 / P2OUT&=BIT5;/蜂鳴器關(guān) t=get_one_temperature(); if(t>=300) P2OUT|=BIT3;/紅燈亮 LCD1602_write_string(1,1,"warning!"); LCD1602_write_string(2,0,&q

17、uot;hig-"); LCD1602_display_temperature(2,4,t); P2OUT|=BIT5;/蜂鳴器kai if(t<=270) P2OUT|=BIT4;/綠燈亮 LCD1602_write_string(1,1,"warning!"); LCD1602_write_string(2,0,"low-"); LCD1602_display_temperature(2,4,t); P2OUT|=BIT5;/蜂鳴器kai if(t<300&&t>270) P2OUT&=BIT5;/

18、蜂鳴器關(guān) LCD1602_write_string(1,1,"The temprature "); LCD1602_write_string(2,0,"is "); LCD1602_display_temperature(2,4,t); /* * DS18b20.H * * Created on: 2015-6-28 * Author: Administrator */#ifndef DS18B20_H_#define DS18B20_H_#include"msp430g2553.h"/* 引腳定義 */#define DQ_1 P2

19、OUT |= BIT2#define DQ_0 P2OUT &= BIT2#define DQ_in P2DIR &= BIT2#define DQ_out P2DIR |= BIT2#define DQ_val (P2IN & BIT2)/* 命令字符定義 */#define Read_ROM 0x33 /讀ROM#define Match_ROM 0x55 /匹配ROM#define Skip_ROM 0xcc /跳過(guò)ROM#define Search_ROM 0xf0 /搜索ROM#define Alarm_Search 0xec /告警搜索#define Con

20、vert_Temperature 0x44 /溫度轉(zhuǎn)換#define Read_Scratchpad 0xbe /讀暫存存儲(chǔ)器9字節(jié)內(nèi)容#define Write_Scratchpad 0x4e /寫(xiě)暫存存儲(chǔ)器,寫(xiě)的是TH and TL ,接著發(fā)送兩位數(shù)據(jù)就可以/* 定義變量 */extern unsigned int Check_val;/初始化檢測(cè)變量/extern unsigned int Temp;/存放溫度/extern unsigned int Temp_l;/存放溫度低四位/extern unsigned int Temp_h;/存放溫度高四位/* 函數(shù)定義 */extern v

21、oid DS18b20_Port_Init(void);extern unsigned int DS18b20_Init(void);extern void DS18b20_write_byte(unsigned int dat);extern unsigned int DS18b20_read_byte(void);extern unsigned int get_one_temperature(void);#endif /* DS18B20_H_ */* * DS18B20.C * * Created on: 2015-6-28 * Author: Administrator */#incl

22、ude"msp430g2553.h"/* DQ 接 p2.4 */#include"DS18b20.h"void DS18b20_Port_Init(void) P2DIR = BIT2;/* DS18b20 操作時(shí)序: 1.DS18b20 初始化 2.對(duì)64位ROM進(jìn)行操作 讀ROM 搜索ROM 跳過(guò)ROM 告警搜索 3.對(duì)寄存器進(jìn)行操作 包括讀取溫度 4.精度默認(rèn)的為0.0625 ,無(wú)法重新設(shè)定,沒(méi)找到相應(yīng)的指令 相對(duì)應(yīng)的轉(zhuǎn)換時(shí)間為750ms*DS18b20 初始化方法: 1 主機(jī)發(fā)送 480 - 960 us 的低電平,釋放總線 2 等待 15 -

23、 60 us 3 檢測(cè)DQ上是否有低電平出現(xiàn) 有:復(fù)位成功 ,通常時(shí)間為 60-240 us 無(wú):復(fù)位失敗 , 繼續(xù)等待 4 DQ上出現(xiàn)低電平后,低電平持續(xù)15us,然后DS18b20開(kāi)始對(duì)單片機(jī)發(fā)送的數(shù)據(jù)進(jìn)行采樣*/unsigned int DS18b20_Init(void) unsigned Check_val; DQ_out; DQ_0; _delay_cycles(600); DQ_1; _delay_cycles(60); DQ_in; _NOP(); if(DQ_val=1) Check_val = 0; /初始化失敗 if(DQ_val=0) Check_val = 1; /初

24、始化成功 _delay_cycles(10); DQ_out; DQ_1; _delay_cycles(100); return Check_val;/*DS18b20 寫(xiě)數(shù)據(jù)方法: 1 DS18b20 是“一位一位”的寫(xiě)0和1 2 每寫(xiě)一次1或0為一個(gè)周期,每個(gè)周期約為 45 - 60 us 3 DQ拉低 1 us ,表示寫(xiě)周期開(kāi)始,釋放總線,讓DQ隨寫(xiě)入的值變化 4 若寫(xiě)1: DQ拉高至少60us,保證在采樣周期內(nèi)采到的值均為高 5 若寫(xiě)0: DQ拉低至少60us,保證在采樣周期內(nèi)采到的值均為低 6 釋放總線* 單片機(jī)發(fā)送數(shù)據(jù)時(shí),是從寫(xiě)的數(shù)據(jù)的最高位開(kāi)始發(fā)送*/void DS18b20_w

25、rite_byte(unsigned int dat) unsigned int i; for(i = 0; i < 8;i+) DQ_0; _delay_cycles(2); if(dat & 0X01) DQ_1; else DQ_0; _delay_cycles(60); dat >>= 1; DQ_1; _delay_cycles(10); /*DS18b20 讀數(shù)據(jù)方法: 1 DS18b20 是“一位一位”的讀0和1 2 每讀一次1或0為一個(gè)周期,每個(gè)周期約為 45 - 60 us 3 DQ拉低 1 us ,表示讀周期開(kāi)始,釋放總線,讓DQ隨DS18b20傳

26、送的值變化 4 若傳1:則檢測(cè)到高電平,持續(xù)時(shí)間為60us左右,所以檢測(cè)一次后要延時(shí)60us,再檢測(cè)下一位傳送的數(shù)據(jù) 5 若傳0:則檢測(cè)到低電平,持續(xù)時(shí)間為60us左右*DS18b20 傳送數(shù)據(jù)是從最低位開(kāi)始傳*所以單片機(jī)在接受數(shù)據(jù)時(shí),存儲(chǔ)變量一共移動(dòng)8次,將所有數(shù)據(jù)都接收并回到最高位*/unsigned int DS18b20_read_byte(void) unsigned i; unsigned int byte = 0; for(i = 0;i < 8;i+) byte >>= 1; DQ_0; _delay_cycles(2); DQ_1; _delay_cycle

27、s(2); DQ_in; _NOP(); if(DQ_val) byte |= 0x80; _delay_cycles(60); DQ_out; DQ_1; _delay_cycles(10); return byte;/*當(dāng)用一個(gè)DS18b20進(jìn)行溫度測(cè)量時(shí)步驟1.初始化2.跳過(guò)ROM3.控制寄存器: 溫度轉(zhuǎn)換 ,讀取ROM , 讀取溫度低8位 , 溫度高8位注意的是,一定要初始化兩次*/unsigned int get_one_temperature(void) /只讀取了整數(shù),沒(méi)讀取小數(shù)的部分 unsigned int Temp_l=0,Temp_h=0,Temp=0; float f_

28、temp; DS18b20_Init(); DS18b20_write_byte(Skip_ROM); DS18b20_write_byte(Convert_Temperature); _delay_cycles(500000); DS18b20_Init(); DS18b20_write_byte(Skip_ROM); DS18b20_write_byte(Read_Scratchpad); Temp_l=DS18b20_read_byte(); Temp_h=DS18b20_read_byte(); / Temp_l>>=8; Temp_h<<=8; Temp=Te

29、mp_h+Temp_l; f_temp=Temp*0.0625; /18b20的分辨率是0.0625 Temp=f_temp*10+0.5; /乘以10表示小數(shù)點(diǎn)后面取一位,加0.5是四舍五入 return Temp; /Temp是整型/* * LCD1602.H * * Created on: 2015-6-28 * Author: Administrator */#ifndef LCD1602_H_#define LCD1602_H_#include"msp430g2553.h"#define rs_0 P2OUT &= BIT1#define rs_1 P2O

30、UT |= BIT1#define en_0 P2OUT &= BIT0#define en_1 P2OUT |= BIT0/* 函數(shù)定義*/extern void LCD1602_Port_Init(void);extern void LCD1602_write_command(unsigned int com);extern void LCD1602_write_data(unsigned int dat);extern void LCD1602_Init(void);extern void LCD1602_set_position(unsigned int x,unsigned

31、int y);extern void LCD1602_write_string(unsigned int x,unsigned int y,unsigned char *str);extern void LCD1602_display_temperature(unsigned int x,unsigned int y,unsigned int temp);extern void LCD1602_write_varia(unsigned int x,unsigned int y,unsigned int varia,unsigned int n);#endif /* LCD1602_H_ */*

32、 * LCD1602.C * * Created on: 2015-6-28 * Author: Administrator */#include"msp430g2553.h"#include"LCD1602.h"/* 數(shù)字變量顯示定義*/char Digital=0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39;void LCD1602_Port_Init(void) P1DIR |= 0XFF; P2DIR |= BIT0 + BIT1 ;void LCD1602_write_command(unsi

33、gned int com) rs_0; P1OUT=com; _delay_cycles(500); en_1; _delay_cycles(500); en_0;void LCD1602_write_data(unsigned int dat) rs_1; P1OUT=dat; _delay_cycles(500); en_1; _delay_cycles(500); en_0;void LCD1602_Init(void) LCD1602_write_command(0x38); /5*7點(diǎn)陣,雙行顯示 LCD1602_write_command(0x0c); /0x0f 有光標(biāo), LCD1602_write_command(0x01); /清屏 LCD1602_write_command(0x06); /寫(xiě)入數(shù)據(jù)后,光標(biāo)右移,顯示屏不動(dòng) void LCD1602_set_position(unsigned int x,unsigned int y) if(x=1) LCD16

溫馨提示

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

評(píng)論

0/150

提交評(píng)論