基于51單片機(jī)的數(shù)字熱敏溫度計(jì)設(shè)計(jì)論文_第1頁(yè)
基于51單片機(jī)的數(shù)字熱敏溫度計(jì)設(shè)計(jì)論文_第2頁(yè)
基于51單片機(jī)的數(shù)字熱敏溫度計(jì)設(shè)計(jì)論文_第3頁(yè)
基于51單片機(jī)的數(shù)字熱敏溫度計(jì)設(shè)計(jì)論文_第4頁(yè)
基于51單片機(jī)的數(shù)字熱敏溫度計(jì)設(shè)計(jì)論文_第5頁(yè)
已閱讀5頁(yè),還剩25頁(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、信息與電氣工程學(xué)院電子應(yīng)用系統(tǒng)CDIO二級(jí)項(xiàng)目設(shè)計(jì)說(shuō)明書(shū)(2011/2012學(xué)年第二學(xué)期) 題 目 : _數(shù)字熱敏溫度計(jì)_專(zhuān)業(yè)班級(jí) : 電子信息0902班 學(xué)生姓名 : 張 文 盛 學(xué) 號(hào): 090070213 指導(dǎo)教師 :賈少銳、李曉東、馬永強(qiáng)李麗宏、賈東立、劉會(huì)軍設(shè)計(jì)周數(shù) : 設(shè)計(jì)成績(jī) : 2012年6月28日1. 設(shè)計(jì)目的溫度作為一個(gè)重要的物理量,是工業(yè)生產(chǎn)過(guò)程中最普遍、最重要的工藝參數(shù)之一,所以溫度測(cè)量技術(shù)和測(cè)量?jī)x器的研究是一個(gè)重要的課題。隨著時(shí)代的進(jìn)步和發(fā)展,單片機(jī)技術(shù)已經(jīng)伸入到各個(gè)領(lǐng)域,基于單片機(jī)數(shù)字溫度計(jì)與傳統(tǒng)的溫度計(jì)相比,具有讀數(shù)方便,測(cè)溫范圍廣,其輸出溫度采用數(shù)字顯示。本次C

2、DIO題目是利用51單片機(jī)及熱敏電阻設(shè)計(jì)一個(gè)溫度采集系統(tǒng),通過(guò)學(xué)過(guò)的單片機(jī)和數(shù)字電路及面向?qū)ο缶幊痰日n程的知識(shí)設(shè)計(jì)。要求的功能是能通過(guò)串口將采集的數(shù)據(jù)在上位機(jī)窗口顯示,采集的溫度達(dá)一定的精度。2. 設(shè)計(jì)正文2.1 整體系統(tǒng)設(shè)計(jì)思路系統(tǒng)的硬件電路包括微控制器部分(主機(jī)),溫度檢測(cè),人機(jī)對(duì)話(鍵盤(pán)/顯示)三個(gè)主要部分。系統(tǒng)結(jié)構(gòu)框圖和硬件原理圖分別如圖1所示。熱敏電阻NTCPCF8591 AD采集89C51數(shù)據(jù)處理LCD1602顯示串口通信上位機(jī)顯示圖 1 系統(tǒng)設(shè)計(jì)結(jié)構(gòu)框圖溫度檢測(cè)部分采用傳統(tǒng)的熱敏電阻,熱敏電阻的阻值隨環(huán)境溫度變化而變化,變送器將電阻信號(hào)轉(zhuǎn)換成與溫度成正比的電壓信號(hào),經(jīng)A/D轉(zhuǎn)換器

3、將其轉(zhuǎn)換為單片機(jī)可識(shí)別得二進(jìn)制數(shù)字量,單片機(jī)主要控制LCD顯示器顯示正確的溫度值,LCD顯示器實(shí)現(xiàn)顯示功能。由于采集NTC熱敏電阻的時(shí)候需要一個(gè)基準(zhǔn),因此我采用了18B20的溫度作為基準(zhǔn)。它利用了一款新型的溫度檢測(cè)芯片DS18B20,這個(gè)芯片大大簡(jiǎn)化了溫度檢測(cè)模塊的設(shè)計(jì),它無(wú)需A/D轉(zhuǎn)換,可直接將測(cè)得的溫度值以二進(jìn)制形式輸出。該基準(zhǔn)的原理框圖和硬件原理圖如圖2所示:DS18B20溫度采集89C51數(shù)據(jù)處理提供基準(zhǔn)溫度LCD1602顯示圖2 基準(zhǔn)系統(tǒng)結(jié)構(gòu)框圖DS18B20是美國(guó)達(dá)拉斯半導(dǎo)體公司生產(chǎn)的新型溫度檢測(cè)器件,它是單片結(jié)構(gòu),無(wú)需外加A/D即可輸出數(shù)字量,通訊采用單線制,同時(shí)該通訊線還可兼作

4、電源線,即具有寄生電源模式。它具有體積小、精度易保證、無(wú)需標(biāo)定等特點(diǎn),特別適合與單片機(jī)合用構(gòu)成智能溫度檢測(cè)及控制系統(tǒng)。2.2 系統(tǒng)各模塊介紹2.2.1 AT89C51芯片介紹AT89S52 具有以下標(biāo)準(zhǔn)功能:8k 字節(jié) Flash,256 字節(jié) RAM,32 位 I/O 口線,看門(mén)狗定時(shí)器,2 個(gè)數(shù)據(jù)指針,三個(gè) 16 位定時(shí)器/計(jì)數(shù)器,一個(gè) 6 向量 2 級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,AT89S52 可降至 0Hz 靜態(tài)邏輯操作,支持 2 種軟件可選擇節(jié)電模式。AT89C52的引腳圖如圖3 所示。圖 3 AT89C52引腳圖P0 口:P0 口是一個(gè) 8 位漏極開(kāi)路的雙向

5、I/O 口。作為輸出口,每位能驅(qū)動(dòng) 8 個(gè) TTL 邏輯電平。對(duì) P0 端口寫(xiě)“1”時(shí),引腳用作高阻抗輸入。當(dāng)訪問(wèn)外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0 口也被作為低 8 位地址/數(shù)據(jù)復(fù)用。在這種模式下,P0 具有內(nèi)部上拉電阻。在 flash 編程時(shí),P0 口也用來(lái)接收指令字節(jié);在程序校驗(yàn)時(shí),輸出指令字節(jié)。程序校時(shí),需要外部上拉電阻。P1 口:P1 口是一個(gè)具有內(nèi)部上拉電阻的 8 位雙向 I/O 口,p1 輸出緩沖器能驅(qū)動(dòng) 4 個(gè)TTL 邏輯電平。對(duì) P1 端口寫(xiě)“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。P2 口:

6、P2 口是一個(gè)具有內(nèi)部上拉電阻的 8 位雙向 I/O 口,P2 輸出緩沖器能驅(qū)動(dòng) 4 個(gè)TTL 邏輯電平。對(duì) P2 端口寫(xiě)“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)在訪問(wèn)外部程序存儲(chǔ)器或用 16 位地址讀取外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行 MOVX DPTR)時(shí),P2 口送出高八位地址。P3 口:P3 口是一個(gè)具有內(nèi)部上拉電阻的 8 位雙向 I/O 口,p2 輸出緩沖器能驅(qū)動(dòng) 4 個(gè)TTL 邏輯電平。對(duì) P3 端口寫(xiě)“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電

7、阻的原因,將輸出電流(IIL)。P3 口亦作為 AT89C52 特殊功能(第二功能)使用,AT89C52的P3口的第二功能表如表1所示。表1 AT89C52的P3口的第二功能表腳號(hào)第二功能P3.0RXD(串行輸入)P3.1TXD(串行輸出)P3.2INT0(外部中斷 0)P3.3INT0(外部中斷 0)P3.4T0(定時(shí)器 0 外部輸入)P3.5T1(定時(shí)器 1 外部輸入)P3.6WR(外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通)P3.7RD(外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通)RST: 復(fù)位輸入。晶振工作時(shí),RST 腳持續(xù) 2 個(gè)機(jī)器周期高電平將使單片機(jī)復(fù)位。看門(mén)狗計(jì)時(shí)完成后,RST 腳輸出 96 個(gè)晶振周期的高電平。特殊寄存

8、器 AUXR(地址 8EH)上的 DISRTO 位可以使此功能無(wú)效。DISRTO 默認(rèn)狀態(tài)下,復(fù)位高電平有效。ALE/PROG:地址鎖存控制信號(hào)(ALE)是訪問(wèn)外部程序存儲(chǔ)器時(shí),鎖存低 8 位地址的輸出脈沖。在 flash 編程時(shí),此引腳(PROG)也用作編程輸入脈沖。在一般情況下,ALE 以晶振六分之一的固定頻率輸出脈沖,可用來(lái)作為外部定時(shí)器或時(shí)鐘使用。然而,特別強(qiáng)調(diào),在每次訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),ALE 脈沖將會(huì)跳過(guò)。PSEN:外部程序存儲(chǔ)器選通信號(hào)(PSEN)是外部程序存儲(chǔ)器選通信號(hào)。當(dāng) AT89S52 從外部程序存儲(chǔ)器執(zhí)行外部代碼時(shí),PSEN 在每個(gè)機(jī)器周期被激活兩次,而在訪問(wèn)外部數(shù)據(jù)存

9、儲(chǔ)器時(shí),PSEN 將不被激活。EA/VPP:訪問(wèn)外部程序存儲(chǔ)器控制信號(hào)。為使能從 0000H 到 FFFFH 的外部程序存儲(chǔ)器讀取指令,EA 必須接 GND。為了執(zhí)行內(nèi)部程序指令,EA 應(yīng)該接 VCC。在 flash 編程期間,EA 也接收 12V編程電源( VPP)。XTAL1:振蕩器反相放大器和內(nèi)部時(shí)鐘發(fā)生電路的輸入端。XTAL2:振蕩器反相放大器的輸出端。(2)晶振電路晶振電路是單片機(jī)的最小系統(tǒng)的組成部分。典型的晶振取11.0592MHz(因?yàn)榭梢詼?zhǔn)確地得到9600波特率和19200波特率,用于有串口通訊的場(chǎng)合)/12MHz(產(chǎn)生精確的uS級(jí)時(shí)歇,方便定時(shí)操作)。特別注意:對(duì)于31腳(E

10、A/Vpp),當(dāng)接高電平時(shí),單片機(jī)在復(fù)位后從內(nèi)部ROM的0000H開(kāi)始執(zhí)行;當(dāng)接低電平時(shí),復(fù)位后直接從外部ROM的0000H開(kāi)始執(zhí)行。(3)復(fù)位電路復(fù)位電路也是單片機(jī)的最小系統(tǒng)的組成部分。當(dāng)單片機(jī)系統(tǒng)在運(yùn)行中,受到環(huán)境干擾出現(xiàn)程序執(zhí)行錯(cuò)亂的時(shí)候,按下復(fù)位按鈕內(nèi)部的程序自動(dòng)從頭開(kāi)始執(zhí)行。復(fù)位電路的原理是單片機(jī)RST引腳接收到2us以上的電平信號(hào),只要保證電容的充放電時(shí)間大于2US,即可實(shí)現(xiàn)復(fù)位,所以電路中的電容值是可以改變的。按鍵按下系統(tǒng)復(fù)位,是電容處于一個(gè)短路電路中,釋放了所有的電能,電阻兩端的電壓增加引起的。單片機(jī)最小系統(tǒng)復(fù)位電路的極性電容的大小直接影響單片機(jī)的復(fù)位時(shí)間,一般采用1030uF

11、,51單片機(jī)最小系統(tǒng)容值越大需要的復(fù)位時(shí)間越短。2.2.2 PCF8591 AD/DA芯片PCF8591是一個(gè)單片集成、單獨(dú)供電、低功耗、8-bit CMOS數(shù)據(jù)獲取器件。PCF8591具有4個(gè)模擬輸入、1個(gè)模擬輸出和1個(gè)串行I²C總線接口。PCF8591的3個(gè)地址引腳A0, A1和A2可用于硬件地址編程,允許在同一個(gè)I²C總線上接入8個(gè)PCF8591器件,而無(wú)需額外的硬件。在PCF8591器件上輸入輸出的地址、控制和數(shù)據(jù)信號(hào)都是通過(guò)雙線雙向I²C總線以串行的方式進(jìn)行傳輸。PCF8591的功能包括多路模擬輸入、內(nèi)置跟蹤保持、8-bit模數(shù)轉(zhuǎn)換和8-bit數(shù)模轉(zhuǎn)換。

12、PCF8591的最大轉(zhuǎn)化速率由I²C總線的最大速率決定。1、主要技術(shù)指標(biāo)和特性 單獨(dú)供電 PCF8591的操作電壓范圍2.5V-6V 低待機(jī)電流 通過(guò)I2C總線串行輸入/輸出 PCF8591通過(guò)3個(gè)硬件地址引腳尋址 PCF8591的采樣率由I2C總線速率決定 4個(gè)模擬輸入可編程為單端型或差分輸入 自動(dòng)增量頻道選擇 圖4 PCF8591引腳圖PCF8591的模擬電壓范圍從Vss到VDD PCF8591內(nèi)置跟蹤保持電路 8-bit逐次逼近A/D轉(zhuǎn)換器 通過(guò)1路模擬輸出實(shí)現(xiàn)DAC增益 2、ADC0808引腳功能 PCF8591引腳圖如圖4所示AIN0AIN3:模擬信號(hào)輸入端。 A0A3:引

13、腳地址端。 VDD、VSS:電源端。 (2.56V) SDA、SCL:I2C 總線的數(shù)據(jù)線、 時(shí)鐘線。 OSC:外部時(shí)鐘輸入端,內(nèi)部時(shí)鐘輸出端。 EXT:內(nèi)部、外部時(shí)鐘選擇線,使用內(nèi)部時(shí)鐘時(shí) EXT 接地。 AGND:模擬信號(hào)地。 AOUT:D/A 轉(zhuǎn)換輸出端。 VREF:基準(zhǔn)電源端。4 功能描述(1)地址IIC總線系統(tǒng)中的每一片PCF8591通過(guò)發(fā)送有效地址到該地址器件來(lái)激活。該地址包括固定部分和可編程部分??删幊滩糠直匦韪鶕?jù)地址引腳A0、A1和A2來(lái)設(shè)置。在IIC總線協(xié)議中地址必需是起始條件后作為第一個(gè)字節(jié)發(fā)送。地址字節(jié)的最后一位是用于設(shè)置以后數(shù)據(jù)傳輸方向的讀/寫(xiě)。地址設(shè)置如圖 5所示:圖

14、5 PCF8591地址設(shè)置(2)控制字圖 6 控制字格式控制字節(jié)用于實(shí)現(xiàn)器件的各種功能,如模擬信號(hào)由哪幾個(gè)通道輸入等??刂谱止?jié)存放在控制寄存器中。總線操作時(shí)為主控器發(fā)送的第二字節(jié)。其格式如下圖6所示:  其中:D1、D0兩位是A/D通道編號(hào):00通道0,01通道1,10通道2,11通道3        D2  自動(dòng)增益選擇(有效位為1)   D5、D4模擬量輸入選擇:00為四路單數(shù)入、01為三路差分輸入、10為單端與差分配合輸入、11為模擬輸出允許有效   

15、; 當(dāng)系統(tǒng)為A/D轉(zhuǎn)換時(shí),模擬輸出允許為0。模擬量輸入選擇位取值由輸入方式?jīng)Q定:四路單端輸入時(shí)取00,三路差分輸入時(shí)取01,單端與差分輸入時(shí)取10,二路差分輸入時(shí)取11。最低兩位時(shí)通道編號(hào)位,當(dāng)對(duì)0通道的模擬信號(hào)進(jìn)行A/D轉(zhuǎn)換時(shí)取00,當(dāng)對(duì)1通道的模擬信號(hào)進(jìn)行A/D轉(zhuǎn)換時(shí)取01,當(dāng)對(duì)2通道的模擬信號(hào)進(jìn)行A/D轉(zhuǎn)換時(shí)取10,當(dāng)對(duì)3通道的模擬信號(hào)進(jìn)行A/D轉(zhuǎn)換時(shí)取11。    在進(jìn)行數(shù)據(jù)操作時(shí),首先是主控器發(fā)出起始信號(hào),然后發(fā)出讀尋址字節(jié),被控器做出應(yīng)答后,主控器從被控器讀出第一個(gè)數(shù)據(jù)字節(jié),主控器發(fā)出應(yīng)答,主控器從被控器讀出第二個(gè)數(shù)據(jù)字節(jié),主控器發(fā)出應(yīng)答一直到主控器從

16、被控器中讀出第n個(gè)數(shù)據(jù)字節(jié),主控器發(fā)出非應(yīng)答信號(hào),最后主控器發(fā)出停止信號(hào)。(3)A/D轉(zhuǎn)換A/D轉(zhuǎn)換器采用逐次逼近轉(zhuǎn)換技術(shù)。在A/D轉(zhuǎn)換周期將臨時(shí)使用片上轉(zhuǎn)換器和高增益比較器。一個(gè)A/D轉(zhuǎn)換周期總是開(kāi)始于發(fā)送一個(gè)有效讀模式地址給PCF8591之后。A/D轉(zhuǎn)換周期子在應(yīng)答時(shí)鐘脈沖的后延被觸發(fā)。并在傳輸前一次轉(zhuǎn)換結(jié)果時(shí)執(zhí)行(見(jiàn)圖7)圖 7 A/D轉(zhuǎn)換一旦一個(gè)轉(zhuǎn)換周期被觸發(fā),所選通的輸入電壓采樣將保存到芯片并被轉(zhuǎn)換為對(duì)應(yīng)的8位二進(jìn)制碼,取自差分輸入的采樣將被轉(zhuǎn)換為8位二進(jìn)制補(bǔ)碼 轉(zhuǎn)換結(jié)果被保存在ADC數(shù)據(jù)寄存器等待傳輸。如果自動(dòng)增量標(biāo)志被置1,將選擇下一個(gè)通道。在讀周期傳輸?shù)牡谝粋€(gè)字節(jié)包含前一次讀周

17、期的轉(zhuǎn)換結(jié)果代碼,以上電復(fù)位之后讀取的第一個(gè)字節(jié)是0x80。最高A/D轉(zhuǎn)換速率取決于實(shí)際的IIC總線速度。(4)D/A轉(zhuǎn)換發(fā)送給PCF8591的第三個(gè)字節(jié)被存儲(chǔ)到DAC數(shù)據(jù)存儲(chǔ)器,并使用片內(nèi)D/A轉(zhuǎn)換器轉(zhuǎn)換成對(duì)應(yīng)的模擬電壓。這個(gè)D/A 轉(zhuǎn)換器由連接到外部參考電壓的具有256個(gè)接頭的電阻分壓電路和選擇開(kāi)關(guān)組成。接頭譯碼器切換一個(gè)接頭至DAC輸出線。模擬輸出電壓由自動(dòng)清零單位增益放大器緩沖。這個(gè)緩沖放大器可通過(guò)設(shè)置控制寄存器的模擬輸出允許標(biāo)志來(lái)打開(kāi)或關(guān)閉。在激活狀態(tài),輸出電壓將保持到新的數(shù)據(jù)字節(jié)被發(fā)送。提供給模擬輸出AOUT的輸出電壓由下式給出。D/A轉(zhuǎn)換順序的波形圖如圖8 = +圖8 D/A轉(zhuǎn)換

18、(5)振蕩器片上振蕩器產(chǎn)生A/D轉(zhuǎn)換周期和刷新自動(dòng)清零緩沖放大器需要的時(shí)鐘信號(hào)。在使用這個(gè)振蕩器時(shí)EXT引腳必須連接到VSS。在OSC引腳振蕩頻率是可用的。如果EXT引腳被連接到VDD,振蕩輸出OSC將切換到高阻態(tài)以允許用戶(hù)連接外部時(shí)鐘信號(hào)至OSC。6 I2C總線特性I2C總線是不同的IC或模塊之間的雙向兩線通信,這兩條線是串行數(shù)據(jù)線(SDA)和串行時(shí)鐘線(SCL),這兩條線必須通過(guò)上拉電路連接至正電源。數(shù)據(jù)傳輸只能是在總線不忙時(shí)啟動(dòng)。(1)位傳輸 一個(gè)數(shù)據(jù)位在每一個(gè)時(shí)鐘脈沖期間傳輸。SDA線上的數(shù)據(jù)必須在時(shí)鐘脈沖的高電平期間保持穩(wěn)定。這個(gè)期間數(shù)據(jù)線上的改變被當(dāng)作控制信號(hào)。具體時(shí)序如圖 9所示

19、:圖9 位傳輸(2)開(kāi)始或停止條件 數(shù)據(jù)和時(shí)鐘線在總不忙時(shí)保持高電平。在時(shí)鐘為高電平時(shí),數(shù)據(jù)線上的一個(gè)由高到低的變化被定義為開(kāi)始條件。時(shí)鐘為高電平時(shí),數(shù)據(jù)線上的一個(gè)由低到高的變化被定義為停止條件。具體時(shí)序如圖 10所示圖10 開(kāi)始和停止條件(3)系統(tǒng)配置 產(chǎn)生信息的器件稱(chēng)作“發(fā)送機(jī)”,接收信息的器件稱(chēng)作“接收機(jī)”??刂菩畔⒌钠骷Q(chēng)作“主機(jī)”,被控制的器件稱(chēng)作“從機(jī)”。如圖11 所示:圖11 系統(tǒng)配置(4)應(yīng)答在開(kāi)始和停止條件之間從發(fā)送機(jī)傳輸?shù)浇邮諜C(jī)的數(shù)據(jù)字節(jié)數(shù)是沒(méi)有限制的。每個(gè)8位數(shù)據(jù)字節(jié)之后緊跟著一個(gè)應(yīng)答位。應(yīng)答位是由發(fā)送機(jī)放在總線的一個(gè)高電平,而主機(jī)也產(chǎn)生一個(gè)額外的與應(yīng)答有關(guān)的時(shí)鐘脈沖。地

20、址匹配的從接收機(jī)必須在接收每一個(gè)字節(jié)后產(chǎn)生一個(gè)應(yīng)答。在應(yīng)答時(shí)鐘脈沖期間,應(yīng)答的器件必須將SDA線拉低。因此在應(yīng)答相應(yīng)的時(shí)鐘脈沖的高電平期間,SDA線必須保持穩(wěn)定的低電平。在由從機(jī)終止的最后一個(gè)字節(jié),主接收機(jī)必須通過(guò)產(chǎn)生一個(gè)低電平應(yīng)答向發(fā)送機(jī)發(fā)送一個(gè)數(shù)據(jù)結(jié)束信號(hào),這樣發(fā)送機(jī)必須將數(shù)據(jù)線SDA拉高以允許主機(jī)產(chǎn)生停止條件。具體時(shí)序如圖 11所示 圖12 I2C 總線應(yīng)答(5)總線協(xié)議 在開(kāi)始條件后一個(gè)有效的硬件地址必須發(fā)送至PCF8591。讀/寫(xiě)位定義了以后單個(gè)或多個(gè)字節(jié)數(shù)據(jù)傳輸?shù)姆较颉i_(kāi)始條件、停止條件和應(yīng)答位的格式應(yīng)定時(shí)參考I2C總線特性。在寫(xiě)模式數(shù)據(jù)傳輸通過(guò)發(fā)送下一個(gè)數(shù)據(jù)的停止條件或開(kāi)始條件來(lái)

21、約束。總線協(xié)議具體時(shí)序如圖13,14所示:圖13 寫(xiě)模式的總線協(xié)議,D/A轉(zhuǎn)換圖14 讀模式的總線協(xié)議,A/D轉(zhuǎn)換2.2.3 NTC熱敏電阻熱敏電阻是熱電阻的一種,所以說(shuō),原理都是溫度引起電阻變化。但是現(xiàn)在熱電阻一般都被工業(yè)化了,基本是指PT100,CU50等常用熱電阻他兩的區(qū)別是:一般熱電阻都是指金屬熱電阻(PT100)等,熱敏電阻都是指半導(dǎo)體熱電阻由于半導(dǎo)體熱電阻溫度系數(shù)要比金屬大10100倍以上,能檢測(cè)出10-6的溫度變化,而且電阻值可在0.1100k間任意選擇。所以稱(chēng)為熱敏電阻但是熱敏電阻阻值隨溫度變化的曲線呈非線性,而且每個(gè)相同型號(hào)的線性度也不一樣,并且測(cè)溫范圍比較小。所以工業(yè)上一般

22、用金屬熱電阻也就是我們平常所說(shuō)的熱電阻。而熱敏電阻一般用在電路板里,比如像通常所說(shuō)的可以類(lèi)似于一個(gè)保險(xiǎn)絲。由于其阻值隨溫度變化大,可以作為保護(hù)器使用。當(dāng)然這只是一方面,它的用途也很多,如熱電偶的冷端溫度補(bǔ)償就是靠熱敏電阻來(lái)補(bǔ)償。另外,由于其阻值與溫度的關(guān)系非線性嚴(yán)重所以元件的一致性很差,并不能像熱電阻一樣有標(biāo)準(zhǔn)信號(hào)。熱敏電阻工作原理NTC是Negative Temperature Coefficient 的縮寫(xiě),意思是負(fù)的溫度系數(shù),泛指負(fù)溫度系數(shù)很大的半導(dǎo)體材料或元器件,所謂NTC熱敏電阻器就是負(fù)溫度系數(shù)熱敏電阻器。它是以錳、鈷、鎳和銅等金屬氧化物為主要材料,采用陶瓷工藝制造而成的。這些金屬氧

23、化物材料都具有半導(dǎo)體性質(zhì),因?yàn)樵趯?dǎo)電方式上完全類(lèi)似鍺、硅等半導(dǎo)體材料。溫度低時(shí),這些氧化物材料的載流子(電子和孔穴)數(shù)目少,所以其電阻值較高;隨著溫度的升高,載流子數(shù)目增加,所以電阻值降低。NTC熱敏電阻器在室溫下的變化范圍在10O1000000歐姆,溫度系數(shù)-2%-6.5%。NTC熱敏電阻器可廣泛應(yīng)用于溫度測(cè)量、溫度補(bǔ)償、抑制浪涌電流等場(chǎng)合。應(yīng)用設(shè)計(jì):NTC 熱敏電阻的基本物理物性有:電阻值、B值、耗散系數(shù)、時(shí)間常數(shù)。電 阻 值 R(k):電阻值可以近似地用如下公式表達(dá):其中: R1、R2 為絕對(duì)溫度下T1、T2 時(shí)的電阻值(k); B:B值(K)B 值: B (K):B值反映了兩個(gè)溫度之間

24、的電阻變化,可用下述公式計(jì)算:其中: R1、R2 絕對(duì)溫度T1、T2時(shí)的電阻值()耗 散 系 數(shù) (mW/):耗散系數(shù)是指熱敏電阻消耗的功率與環(huán)境溫度變化之比:其中:W 熱敏電阻消耗的功率(mW) T 熱平衡時(shí)的溫度 To 周?chē)h(huán)境溫度 I 在溫度T時(shí)通過(guò)熱敏電阻電流 R 在溫度T時(shí)熱敏電阻的電阻值() 時(shí)間常數(shù) (sec.): 熱敏電阻在零功率狀態(tài)下,當(dāng)環(huán)境溫度由一個(gè)特定溫度向另一個(gè)特定溫度突變時(shí), 溫度變化63.2%所需時(shí)間。熱敏電阻的溫度阻值特性曲線如圖15所示:圖15 電阻溫度特性2.3 系統(tǒng)仿真測(cè)試確定好方案后,用Protues軟件搭建好系統(tǒng)電路,將寫(xiě)好的程序下載進(jìn)仿真圖中,運(yùn)行結(jié)果

25、如圖16所示:圖 16 系統(tǒng)原理圖及仿真結(jié)果2.4 系統(tǒng)程序設(shè)計(jì)思路圖 17 串口發(fā)送數(shù)據(jù)仿真串口發(fā)送數(shù)據(jù)仿真圖如圖 17所示:2.4 系統(tǒng)程序設(shè)計(jì)本溫度采集系統(tǒng)采用的主控芯片是AT89C51,利用NTC熱敏采集溫度,由PCF8591的AD芯片將NTC的電壓值轉(zhuǎn)換成二進(jìn)制值,由18B20溫度傳感器采集的溫度作為NTC的基準(zhǔn),利用公式計(jì)算出熱敏電阻的溫度值,然后讓LCD1602顯示,并且將溫度通過(guò)串口通信發(fā)送到上位機(jī)的顯示窗口中,程序流程圖如圖18所示:開(kāi)始PCF8591初始化液晶1602初始化PCF8591采集溫度對(duì)采集的電壓值進(jìn)行數(shù)據(jù)處理液晶顯示結(jié)束18B20提供基準(zhǔn)圖18 程序流程圖具體的

26、程序設(shè)計(jì)如下:2.4.1 主程序模塊(main.c)#include"config.h"#include"lcd.h"/*指示燈相關(guān)的位定義*/sbit D1=P22;sbit D2=P23;sbit D3=P24;/*全局變量*/char temp16,tempo16;uchar AD_result;float Tempre,NTC_Tempre;/*函數(shù)名*void System_init()*功 能 *系統(tǒng)初始化*參 數(shù) *說(shuō) 明 *對(duì)液晶和I2C的初始化*/void System_init()LCD_init();Uart_init();/*函數(shù)

27、名*void LCD_DIS()*功 能 *顯示函數(shù)*參 數(shù) *說(shuō) 明 */void LCD_DIS()sprintf(char *)temp,"T=%7.4bfC",Tempre);sprintf(char *)tempo,"NTC:%5bd",AD_result);LCD_Str_DIS(char *)temp,1,0);LCD_Str_DIS(char *)tempo,0,0);/*函數(shù)名*void AD_Work()*功 能 *模數(shù)轉(zhuǎn)換模塊函數(shù)*參 數(shù) *說(shuō) 明 */void AD_Work()AD_init();AD_start();AD_wr

28、ite(0x90);AD_respons();AD_write(0x03);AD_respons();AD_end();AD_start();AD_write(0x90);AD_respons();AD_write(0x03);AD_respons();AD_start();AD_write(0x91);AD_respons();AD_result=AD_read();/P1=AD_result;AD_respons();AD_end();/*函數(shù)名*void Date_Done()*功 能 *數(shù)據(jù)處理函數(shù)*參 數(shù) *說(shuō) 明 */void Date_Done()NTC_Tempre=(AD_r

29、esult+204)/3.0;/*函數(shù)名*void Uart_Work()*功 能 *串口發(fā)送數(shù)據(jù)函數(shù)*參 數(shù) *說(shuō) 明 */void Uart_Work()static float t;if(t!=Tempre)t=Tempre;Uart_sendstr(temp);Uart_sendbyte('n');/*函數(shù)名*void main()*功 能 *主函數(shù)*參 數(shù) *說(shuō) 明 */void main()System_init();while(1)LCD_DIS();Tempre=DS1820_readt();AD_Work();/Date_Done();Uart_Work();

30、2.4.2 PCF8591模數(shù)數(shù)模轉(zhuǎn)換(AD.c)#include<config.h>sbit sda=P20;sbit scl=P21;/*函數(shù)名*void AD_init()*功 能 *參 數(shù) *說(shuō) 明 */void AD_init()sda=1;delay();scl=1;delay();/*函數(shù)名*void AD_start()*功 能 *參 數(shù) *說(shuō) 明 */void AD_start()sda=1;delay();scl=1;delay();sda=0;delay();/*函數(shù)名*void AD_end()*功 能 *參 數(shù) *說(shuō) 明 */void AD_end()sd

31、a=0;delay();scl=1;delay();sda=1;delay();/*函數(shù)名*void AD_write(uchar dat)*功 能 *參 數(shù) *說(shuō) 明 *寫(xiě)數(shù)據(jù)時(shí)序:scl=1時(shí)保持?jǐn)?shù)據(jù),scl=0時(shí)變化數(shù)據(jù)*/void AD_write(uchar dat)uchar i,temp;temp=dat;for(i=8;i>0;i-)dat=dat<<1;scl=0;delay();sda=CY;delay();scl=1;delay();scl=0;delay();sda=1;delay();/*函數(shù)名*uchar AD_read()*功 能 *參 數(shù) *說(shuō)

32、 明 *讀時(shí)序:scl=1時(shí)讀數(shù)據(jù),scl=0時(shí)變化*/uchar AD_read()uchar i,k;scl=0;delay();sda=1;delay();for(i=8;i>0;i-)scl=1;delay();k=(k<<1)|sda;delay();scl=0;delay();return k;/*函數(shù)名*void AD_respons()*功 能 *參 數(shù) *說(shuō) 明 *respons sda=0;norespons sda=1*/void AD_respons()uchar i;scl=1;delay();while(sda=1)&&(i<

33、250)i+;scl=0;delay();2.4.3 LCD液晶顯示(LCD.c)#include"lcd.h"/*與液晶相關(guān)的參數(shù)*/sbit RS=P26;sbit RW=P25;sbit LCDE=P27;char buf16;/*函數(shù)名*void LCD_init()*功 能 *液晶初始化函數(shù)*參 數(shù) *說(shuō) 明 */void LCD_init()LCD_Wcom(0x38);delay_ms(5);LCD_Wcom(0x38);delay_ms(5);LCD_Wcom(0x38);delay_ms(5);LCD_Wcom(0x0c);delay_ms(5);LCD_

34、Wcom(0x06);delay_ms(5);LCD_Wcom(0x01);delay_ms(5);/*函數(shù)名*bit lcd_busy()*功 能 *檢測(cè)液晶狀態(tài),是否忙*參 數(shù) *返回狀態(tài) 1:忙 0:不忙*說(shuō) 明 *RS=0 RW=1 LCDE=1,讀狀態(tài)字(檢測(cè)忙主要是第8位)*/bit lcd_busy()bit result;RS=0;RW=1;LCDE=1;delay_ms(5);result=(bit)(P0&0x80);LCDE=0;return result;/*函數(shù)名*LCD_Wcom(uchar com)*功 能 *液晶寫(xiě)命令函數(shù)*參 數(shù) *說(shuō) 明 *RS=0

35、RW=0 LCDE高脈沖,寫(xiě)指令*/void LCD_Wcom(uchar com)while(lcd_busy();RS=0;RW=0;LCDE=0;P0=com;delay_ms(5);LCDE=1;delay_ms(5);LCDE=0;/*函數(shù)名*LCD_Wdat(uchar dat)*功 能 *液晶寫(xiě)數(shù)據(jù)函數(shù)*參 數(shù) *說(shuō) 明 *RS=1 RW=0 LCDE高脈沖,寫(xiě)數(shù)據(jù)*/void LCD_Wdat(uchar dat)while(lcd_busy();RS=1;RW=0;LCDE=0;P0=dat;delay_ms(5);LCDE=1;delay_ms(5);LCDE=0;/*函數(shù)

36、名*void lcd_pos(bit x,uchar y)*功 能 *液晶顯示位置設(shè)置函數(shù)*參 數(shù) *x:行設(shè)置 y:列設(shè)置*說(shuō) 明 *x=0在第一行顯示,x=1在第二行顯示*y對(duì)應(yīng)列,取值從0到15*/void lcd_pos(bit x,uchar y) if(x) LCD_Wcom(0x80+0x40+y);elseLCD_Wcom(0x80+y);/*函數(shù)名*void LCD_clr()*功 能 *液晶清屏函數(shù)*參 數(shù) *說(shuō) 明 *寫(xiě)0x01指令即清屏*/void LCD_clr()LCD_Wcom(0x01);delay_ms(5);/*函數(shù)名*void LCD_out(char *

37、s)*功 能 *發(fā)送串*參 數(shù) *說(shuō) 明 */void LCD_out(char *s)while(*s)LCD_Wdat(*s+);/*函數(shù)名*void LCD_Str_DIS(char*addr,bit x,uchar y)*功 能 *在指定位置顯示指針?biāo)傅淖址?參 數(shù) *說(shuō) 明 */void LCD_Str_DIS(char *addr,bit x,uchar y)lcd_pos(x,y);LCD_out(addr);2.4.4 串口通信模塊(UART.c)#include"config.h"uint Uart_rcv,Uart_send;uchar flag_uart;void Uart_init()TMOD|=0x20;TH1=0xfd;TL1=0xfd;EA=1;TR1=1;SM0=0;SM1=1;REN=1;ES=1;void Uart_sendbyte(uchar dat)SBUF=dat;while(!TI);TI=0;void Uart_sendstr(char *str)while(*str!='0')Uart_sendbyte(*str);str+;void Uart() interrupt 4if(RI=1)RI=0;Uart_rcv=SBUF;Uart_send=Ua

溫馨提示

  • 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)論