0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于PIC16F84單片機(jī)和AD7416溫度器件實(shí)現(xiàn)溫度檢測(cè)系統(tǒng)的設(shè)計(jì)

電子設(shè)計(jì) ? 來(lái)源:?jiǎn)纹瑱C(jī)與嵌入式系統(tǒng)應(yīng)用 ? 作者:李學(xué)海,董丹,李 ? 2020-04-21 07:59 ? 次閱讀

引言

在測(cè)量儀器儀表中,溫度的檢測(cè)幾乎成為必不可少的部分。傳統(tǒng)的模擬溫度傳感器,如AD590,因外圍電路復(fù)雜、需調(diào)零等缺點(diǎn),給應(yīng)用開(kāi)發(fā)帶來(lái)一些麻煩。利用數(shù)字溫度傳感器配合單片機(jī)來(lái)設(shè)計(jì)各種控制系統(tǒng),越來(lái)越多受到業(yè)內(nèi)人士的推崇。美國(guó)模擬器件公司生產(chǎn)的AD7416是一款功能較多的溫度器件,它在一個(gè)芯片上集成了I2C總線接口、溫度傳感器、10位數(shù)摸轉(zhuǎn)換器和窗口門(mén)限溫度控制器等功能。它與其它數(shù)字溫度傳感器相比具有體積小、編程簡(jiǎn)單等優(yōu)點(diǎn)。

在本文介紹的溫度檢測(cè)系統(tǒng)中,其前端溫度檢測(cè)應(yīng)用的是AD7416,控制器應(yīng)用的是PIC16F84,將探測(cè)到的溫度上傳到上位機(jī)(PC機(jī))。由于PIC16F84單片機(jī)是一款廉價(jià)的低端型號(hào),其內(nèi)部沒(méi)有配置I2C接口UART接口等外圍模塊,因此需要利用虛擬技術(shù)來(lái)模擬I2C和UART的功能,分別與下位器件AD7416和上位機(jī)進(jìn)行通信。文后提供了完整的算法設(shè)計(jì)和程序清單。在此程序基礎(chǔ)上稍加改動(dòng)也可以適用于其它PIC單片機(jī),甚至是其它廠家的單片機(jī),來(lái)實(shí)現(xiàn)同樣的功能。故本文具有比較廣泛的啟發(fā)性和實(shí)用價(jià)值。

1、 硬件簡(jiǎn)介

硬件接線圖如圖1所示,前端電路主要由1片10位串行數(shù)字溫度傳感器AD7416和1片RISC型PIC16F84微控制器組成,上位機(jī)由PC兼容機(jī)擔(dān)當(dāng)。不過(guò),上位機(jī)不是必須的,圖1中給出了可選的相連PC的串行接口。通過(guò)該串口,可把檢測(cè)到的現(xiàn)場(chǎng)溫度值上傳到PC機(jī),以便進(jìn)行實(shí)時(shí)處理、存儲(chǔ)和監(jiān)控。

基于PIC16F84單片機(jī)和AD7416溫度器件實(shí)現(xiàn)溫度檢測(cè)系統(tǒng)的設(shè)計(jì)

1.1 與PC機(jī)的接口簡(jiǎn)介硬件引腳連接關(guān)系如表1所列,其中列出了各引腳的功能。利用PIC16F84端口A的2條引腳與AD7416連接;利用端口B的3條引腳在前端電路與PC機(jī)之間傳送信息,也可以直接傳輸給LED數(shù)碼管驅(qū)動(dòng)電路以供顯示。

PIC16F84單片機(jī)與PC機(jī)的通信接口選用并行打印口,通信方式選用串行同步方式。其中,并行打印口既可以是25芯的D型插口,也可以是36芯的Centronics連接器,如圖2所示。串行同步方式通信的信號(hào)時(shí)序如圖3所示。

1.2 AD7416簡(jiǎn)介

AD7416是一個(gè)帶有溫度超限功能的10位串行數(shù)字溫度傳感器,采用8引腳的SOIC或μSOIC封裝。其內(nèi)部結(jié)構(gòu)如圖4所示,引腳布局如圖5所示,引腳功能如表2所列。

表2 引腳功能說(shuō)明

AD7416具有如下特點(diǎn):10位溫度至數(shù)字轉(zhuǎn)換器;超溫指示端為低電平有效的漏極開(kāi)路型輸出腳,可以實(shí)現(xiàn)“線與”接線方式;I2C兼容的串行接口;可選的串行總線地址,允許在單一總線上連接多達(dá)8個(gè)AD7416;低功耗節(jié)電方式(典型2mA);400ms更新速率;55℃~+125℃溫度測(cè)量范圍。AD7416有5個(gè)內(nèi)部寄存器。其中4個(gè)是數(shù)字寄存器,一個(gè)是地址指針寄存器。地址指針寄存器是一個(gè)8位寄存器,用于存放指定4個(gè)數(shù)據(jù)寄存器的地址碼。對(duì)AD7416每一次串行寫(xiě)操作的第一個(gè)數(shù)據(jù)字節(jié)是數(shù)據(jù)寄存器的地址碼,這就是隨后的數(shù)據(jù)字節(jié)要寫(xiě)入的地址。其實(shí),地址指針寄存器只需最低兩位(記作P1和P0)用來(lái)選擇數(shù)據(jù)寄存器,如表3所列。

溫度值寄存器是一個(gè)16位只讀寄存器,其高10位以2的補(bǔ)碼格式儲(chǔ)存由模數(shù)轉(zhuǎn)換器產(chǎn)生的10位溫度測(cè)量讀數(shù);配置寄存器是一個(gè)8位讀/寫(xiě)寄存器,用來(lái)設(shè)置AD7416的工作方式;THYST回滯溫控點(diǎn)設(shè)置寄存器是一個(gè)16位的讀/寫(xiě)寄存器,其高9位存儲(chǔ)以2的補(bǔ)碼格式表示下限溫控點(diǎn)設(shè)定值;TOTI上限溫控點(diǎn)設(shè)置寄存器一個(gè)16位讀/寫(xiě)寄存器,其高9位存儲(chǔ)以2的補(bǔ)碼格式表示上限溫控點(diǎn)設(shè)定值。AD7416上電時(shí)地址指針指向溫度值寄存器,2個(gè)溫控點(diǎn)分別指定TOTI=80℃和THYST=75℃。這樣的缺省設(shè)置使得AD7416可以獨(dú)立用作一個(gè)恒溫控制器,而不需要與串行總線連接以及受控于其它主控器件。

AD7416以10位2的補(bǔ)碼格式表示溫度數(shù)值,在16位溫度值寄存器中的存儲(chǔ)方式如表4所列。表5列出了幾個(gè)溫度數(shù)值的編碼示例。

為了避免在噪聲環(huán)境下的誤觸發(fā),AD7416內(nèi)部集成了一個(gè)故障排隊(duì)計(jì)數(shù)器。假若故障排隊(duì)值設(shè)定為4,則必須連續(xù)4次(400ms)周期性地測(cè)量溫度值大于TOTI或者小于THYST預(yù)定值,OTI端才送出有效電平。該條件只要不滿足,排隊(duì)計(jì)數(shù)器就會(huì)被自動(dòng)復(fù)位,OTI端也就不會(huì)錯(cuò)誤地輸出有效電平,從而抑制了噪聲干擾。

1.3 PIC16F84簡(jiǎn)介

PIC16F84是18引腳CMOS工藝的RISC微控制器,只有35條指令并且全部指令均為統(tǒng)一長(zhǎng)度14位。它有1×14KB的片內(nèi)Flash程序存儲(chǔ)器,36×8KB的通用寄存器和64×8KB的E2PROM數(shù)據(jù)存儲(chǔ)器。它有13個(gè)通用I/O引腳。每個(gè)引腳有吸納25mA或輸出20mA的能力。PIC16F84還有一個(gè)8位的定時(shí)器/計(jì)數(shù)器和一個(gè)自帶PC時(shí)鐘源的看門(mén)狗監(jiān)視器。

PIC16F84由于具有Flash工藝特性,所以它極適合于那些可能會(huì)經(jīng)常改動(dòng)程序的應(yīng)用。例如,用戶可以隨時(shí)改動(dòng)已經(jīng)出廠產(chǎn)品中的單片機(jī)程序,以增加或調(diào)整產(chǎn)品的功能。另外,它內(nèi)部的E2PROM型數(shù)據(jù)存儲(chǔ)器不僅有掉電保護(hù)數(shù)據(jù)的功能,更重要的是它是由單片機(jī)內(nèi)部進(jìn)行控制操作的,即外部電路無(wú)法對(duì)其進(jìn)行讀寫(xiě)。因此,它有極高的數(shù)據(jù)保密性。這使得PIC16F84在加密性產(chǎn)品,如智能IC卡、密碼鎖、電子防盜系統(tǒng)等方面有很廣泛的應(yīng)用。PIC16F84引腳布局如圖6所示。

2、 軟件簡(jiǎn)介

為本應(yīng)用項(xiàng)目開(kāi)發(fā)的軟件程序,可以對(duì)AD7416內(nèi)部的寄存器編程,以及從這些數(shù)據(jù)寄存器讀取溫度值。PIC16F84扮演著上傳下達(dá)的角色,單片機(jī)端的軟件程序采用了匯編語(yǔ)言。AD7416一側(cè)的通信程序,將利用并行端口RA來(lái)模擬I2C總線協(xié)議,控制AD7416的工作方式,并且讀取它的溫度測(cè)量值。PC機(jī)一側(cè)的通信程序,將利用并行端口RB來(lái)連接PC的并行打印機(jī)口,把所收集到的溫度上傳給PC機(jī),PC機(jī)端的軟件程序采用的是C語(yǔ)言。

整個(gè)軟件采用了模塊化的程序設(shè)計(jì)方法。為了實(shí)現(xiàn)PIC16F84和AD7416之間I2C協(xié)議之下的串行通信,編寫(xiě)了一些專(zhuān)用子程序。這些子程序段包括:符號(hào)定義、PIC16F84的端口初始化、啟動(dòng)信號(hào)時(shí)序產(chǎn)生、停止信號(hào)時(shí)序產(chǎn)生、發(fā)送字節(jié)、讀取字節(jié)、讀取溫度、向PC機(jī)串行被動(dòng)發(fā)送等。具體程序見(jiàn)網(wǎng)站www.dpj.com.cn中的程序段0~程序段8。其中兩個(gè)比較復(fù)雜的程序段還給出了流程圖,如圖7和圖8所示。

2.1 采集溫度數(shù)據(jù)

在發(fā)送字節(jié)子程序SENDBYTE被調(diào)用以后,AD7416就作好了提供溫度數(shù)據(jù)的準(zhǔn)備。從AD7416中讀取溫度數(shù)據(jù),既可以1字節(jié)形式,也可以2字節(jié)形式。以2字節(jié)形式會(huì)更加精確,在本例中采用的就是2字節(jié)形式。這2個(gè)字節(jié)被讀取后,保存到用戶定義的2個(gè)寄存器HIHGBYTE和LOWBYTE內(nèi),之后用戶再轉(zhuǎn)移給其它外部器件或設(shè)備,以便作進(jìn)一步地分析等處理。READBYTE子程序的功能相似于SENDBYE子程序的功能。不過(guò),對(duì)于讀取過(guò)程,需要檢測(cè)SDATA線的狀態(tài),并且LOWBYTE寄存器也要作相應(yīng)改動(dòng)。

2個(gè)字節(jié)的讀取過(guò)程需要主控器(即PIC16F84),在每個(gè)字節(jié)的讀取之后分別輸出不同的應(yīng)答(ACK)信號(hào)電平。為了利用同一個(gè)數(shù)據(jù)讀取程序,提供2種不同的ACK信號(hào)電平,需要查看ACKSTAUS寄存器的bit1,由該位的狀態(tài)決定所需ACK信號(hào)脈沖的類(lèi)型。

2.2 通過(guò)打印口向PC機(jī)上傳數(shù)據(jù)

PC機(jī)的打印口提供了一種從PIC單片機(jī)到PC機(jī)傳送數(shù)據(jù)的簡(jiǎn)易途徑,以便在PC機(jī)上進(jìn)行數(shù)據(jù)的記錄和監(jiān)測(cè)等處理。由于對(duì)打印機(jī)端口功能的討論超出了本文的關(guān)注范圍,因此文中只涉及一些必要的相關(guān)內(nèi)容。隨后所介紹的僅是一個(gè)如何以最少連線(僅需要3條)實(shí)現(xiàn)溫度數(shù)據(jù)傳送給PC機(jī)的簡(jiǎn)明范例。單片機(jī)其它的I/O端口引腳還可以留作它用。單片機(jī)向PC機(jī)每次傳送16位的溫度值,并且是以高位(MSB)開(kāi)始傳送的。PC機(jī)與單片機(jī)之間的三條接口連接,分別定義為SYNC(串行同步)、SDATA(串行數(shù)據(jù))和SCLK(串行時(shí)鐘)。

當(dāng)PIC16F84從AD7416讀取一次溫度測(cè)量結(jié)果,它將把SYNC線電平拉低以通知PC機(jī),并且開(kāi)始一個(gè)計(jì)數(shù)器的遞減過(guò)程。如果在該計(jì)數(shù)器遞減到0之前,還沒(méi)有檢測(cè)到來(lái)自PC機(jī)時(shí)鐘的(SCLK)上升沿,則將SYNC電平恢復(fù)到高電平,以中止本次數(shù)據(jù)的發(fā)送。這種設(shè)計(jì)方法允許在未連接PC機(jī),或PC機(jī)端軟件沒(méi)有運(yùn)行時(shí),仍然能令PIC16F84繼續(xù)讀取溫度數(shù)據(jù)。

當(dāng)PIC16F84檢測(cè)到SCLK的上升沿時(shí),就利用溫度數(shù)據(jù)的最高位(MSB)來(lái)設(shè)置SDATA。隨后繼續(xù)監(jiān)視SCLK線,并且當(dāng)該線變低時(shí),一個(gè)用戶定義的位計(jì)數(shù)器減1。再等待另一個(gè)SCLK上升沿,以便繼續(xù)發(fā)送后續(xù)數(shù)據(jù),直到16位數(shù)據(jù)全部發(fā)送完畢。在發(fā)送完后,將SCLK線拉高以告知PC機(jī)此發(fā)送過(guò)程結(jié)束。

3、程序清單

程序清單包括完整的單片機(jī)端匯編語(yǔ)言程序和PC機(jī)端的C高級(jí)語(yǔ)言程序。詳見(jiàn)網(wǎng)站www.dpj.com.cn。

4、結(jié)語(yǔ)

可以說(shuō),本文提供了一個(gè)具有借鑒意義的溫度檢測(cè)系統(tǒng)的軟硬件開(kāi)發(fā)參考模型。在此基礎(chǔ)上,如果PC機(jī)端軟件利用VB或VC設(shè)計(jì)成圖形界面就更方便于用戶操作。如果利用PIC16F84的其它I/O端口引腳再擴(kuò)展幾條I2C總線,并且每條總線上掛接1~8片AD7416,則可以形成一個(gè)更加完善的分布式多點(diǎn)溫度檢測(cè)系統(tǒng)。

總之,采用數(shù)字溫度傳感器,可以使設(shè)計(jì)者完全 打破傳統(tǒng)的設(shè)計(jì)模式(傳感器+ADC),從而大大簡(jiǎn)化了設(shè)計(jì)方案,提高了電路的可靠性。

責(zé)任編輯:gt


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6030

    文章

    44491

    瀏覽量

    632019
  • 檢測(cè)系統(tǒng)
    +關(guān)注

    關(guān)注

    3

    文章

    945

    瀏覽量

    42996
  • 總線
    +關(guān)注

    關(guān)注

    10

    文章

    2859

    瀏覽量

    87914
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    PIC16F84單片機(jī)的中文資料

    PIC16F84單片機(jī)的內(nèi)部硬件資源:學(xué)些PIC 單片機(jī),在Microchip 尚未推出其他Flash 系列的情況下,很多菜鳥(niǎo)都是從PIC16F84
    發(fā)表于 08-26 15:00

    數(shù)字溫度傳感器AD7416及其應(yīng)用

    數(shù)字溫度傳感器AD7416 及其應(yīng)用AD7416 是美國(guó)模擬器件公司(ADI)出品的單片數(shù)字溫度
    發(fā)表于 12-05 09:06

    用AD7416+PIC16F84+PC機(jī)構(gòu)建的測(cè)溫系統(tǒng)

    在測(cè)量?jī)x器儀表中,溫度檢測(cè)幾乎成為必不可少的部分。傳統(tǒng)的模擬溫度傳感器,如AD590,因外圍電路復(fù)雜、需調(diào)零等缺點(diǎn),給應(yīng)用開(kāi)發(fā)帶來(lái)一些麻煩。利用數(shù)字溫度傳感器配合
    發(fā)表于 03-08 11:44

    PIC16F84中文資料

    PIC16F84單片機(jī)的內(nèi)部結(jié)構(gòu),如圖1所示的框圖。由圖1看出,其基本組成可分為四個(gè)主要部分,即運(yùn)算器ALU和工作寄存器W;程序存儲(chǔ)器;數(shù)據(jù)存儲(chǔ)器和輸入/輸出(I/O)口;堆棧存儲(chǔ)器和定
    發(fā)表于 01-17 23:33 ?636次下載

    用AD7416+PIC16F84+PC機(jī)構(gòu)建的測(cè)溫系統(tǒng)

    全面系統(tǒng)地介紹帶I2C 總線接口的10 位數(shù)字溫度傳感器AD7416 和RISC 型8 位單片機(jī)PIC16F84,以及與PC
    發(fā)表于 04-15 09:23 ?21次下載

    基于PIC16F84單片機(jī)的IC卡智能水表設(shè)計(jì)

    本文介紹了一種基于低功耗芯片PIC16F84 的IC 卡智能水表的設(shè)計(jì),文中給出了系統(tǒng)的硬件設(shè)計(jì)和軟件設(shè)計(jì)。該IC 卡水表具有低成本、低功耗、可靠性高等優(yōu)點(diǎn),可廣泛應(yīng)用于各城市供
    發(fā)表于 06-18 10:16 ?115次下載

    數(shù)字式溫度傳感器AD7416及其應(yīng)用

    本文詳細(xì)介紹了新型數(shù)字式溫度傳感器AD7416的功能、特點(diǎn)及使用方法,并給出了應(yīng)用實(shí)例。通過(guò)實(shí)踐應(yīng)用,可知AD7416 測(cè)溫范圍寬、準(zhǔn)確度高、連接及編程簡(jiǎn)單。關(guān)鍵詞: AD7416;I
    發(fā)表于 07-03 09:50 ?50次下載

    PIC16F84單片機(jī)的內(nèi)部硬件資源

    PIC16F84 單片機(jī)的內(nèi)部硬件資源:學(xué)些PIC 單片機(jī),在Microchip 尚未推出其他Flash 系列的情況下,很多菜鳥(niǎo)都是從PIC16F8
    發(fā)表于 08-25 18:35 ?94次下載

    數(shù)字溫度傳感器AD7416及其應(yīng)用

    AD7416 是美國(guó)模擬器件公司(ADI)出品的單片數(shù)字溫度傳感器,其片內(nèi)寄存器可以設(shè)置高/低溫度門(mén)限,并可通過(guò)I2C 接口對(duì)內(nèi)部寄存器進(jìn)行
    發(fā)表于 11-26 14:54 ?39次下載

    I2C接囗芯片AD7416溫度采樣匯編語(yǔ)言程序設(shè)計(jì)

    論述了基于數(shù)字溫度傳感器的單片機(jī)溫度測(cè)控系統(tǒng)。把PC機(jī)實(shí)現(xiàn)減法運(yùn)算的方法運(yùn)用到MCU的匯編語(yǔ)言
    發(fā)表于 03-02 14:31 ?44次下載

    PIC單片機(jī)循環(huán)程序?qū)嵗?/a>

    在這里介紹一種定時(shí)程序,說(shuō)明循環(huán)程序在PIC單片機(jī)上的應(yīng)用。筆者仍以PIC16F84單片機(jī)為例建立其定時(shí)源程序清單
    發(fā)表于 04-26 10:25 ?3122次閱讀

    PIC8位單片機(jī)的基本組成

    PIC系列8位單片機(jī)為適應(yīng)各種不同的用途,有多種型號(hào)可供選用。但是,盡管PIC單片機(jī)有不同的檔次和型號(hào),但其最基本的組成則大同小異。因此,在這里先從型號(hào)
    發(fā)表于 11-15 14:47 ?1920次閱讀
    <b class='flag-5'>PIC</b>8位<b class='flag-5'>單片機(jī)</b>的基本組成

    溫度傳感器AD7416的工作原理及應(yīng)用解析

    AD7416掛接在同一個(gè)串行總線上。該溫度傳感器可廣泛應(yīng)用于數(shù)據(jù)采集系統(tǒng)中的環(huán)境溫度監(jiān)測(cè)、工業(yè)過(guò)程控制、電池充電以及個(gè)為計(jì)算機(jī)等系統(tǒng)
    發(fā)表于 03-08 14:25 ?4502次閱讀
    <b class='flag-5'>溫度</b>傳感器<b class='flag-5'>AD7416</b>的工作原理及應(yīng)用解析

    采用單片機(jī)AT89C2051和AD7416芯片實(shí)現(xiàn)多路溫濕度循環(huán)檢測(cè)系統(tǒng)的設(shè)計(jì)

    單片機(jī)AT89C2051來(lái)實(shí)現(xiàn)對(duì)AD7416的信號(hào)采集和輸出控制,硬件設(shè)計(jì)簡(jiǎn)單可靠,系統(tǒng)溫度節(jié)點(diǎn)可擴(kuò)展性強(qiáng)。為確保
    發(fā)表于 04-12 11:55 ?1834次閱讀
    采用<b class='flag-5'>單片機(jī)</b>AT89C2051和<b class='flag-5'>AD7416</b>芯片<b class='flag-5'>實(shí)現(xiàn)</b>多路溫濕度循環(huán)<b class='flag-5'>檢測(cè)</b><b class='flag-5'>系統(tǒng)</b>的設(shè)計(jì)

    AD7416通過(guò)仿真I2C?接口連接到PIC16F84

    AD7416通過(guò)仿真I2C?接口連接到PIC16F84
    發(fā)表于 04-19 12:15 ?6次下載
    <b class='flag-5'>AD7416</b>通過(guò)仿真I2C?接口連接到<b class='flag-5'>PIC16F84</b>