當(dāng)前位置:首頁 > 電源 > 數(shù)字電源
[導(dǎo)讀]全面系統(tǒng)地介紹帶I2C總線接口的10位數(shù)字溫度傳感器AD7416和RISC型8位單片機(jī)PIC16F84,以及與PC機(jī)通信的硬件接線方法和軟件算法設(shè)計,并且提供完整的PC端C程序和單片機(jī)端匯編語言程序。

    摘要:全面系統(tǒng)地介紹帶I2C總線接口的10位數(shù)字溫度傳感器AD7416和RISC型8位單片機(jī)PIC16F84,以及與PC機(jī)通信的硬件接線方法和軟件算法設(shè)計,并且提供完整的PC端C程序和單片機(jī)端匯編語言程序。

    關(guān)鍵詞:AD7416 PIC16F84 I2C總線 單片機(jī)

引言

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

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

1 硬件簡介

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

    1.1 與PC機(jī)的接口簡介

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

表1 三者相互連接的對應(yīng)關(guān)系

AD7416 PIC16F84 PC接口
SDA
SCL
PORT A,0
PORT A,1
 
  PORT B,0
PORT B,1
PORT B,2
SDATA
SCLK
SYNC

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

1.2 AD7416簡介

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

表2 引腳功能說明

引腳名稱 引腳序號 引腳類型

功  能  說  明

SDA 1 I/O I2C總線串行數(shù)據(jù)輸入/輸出傳送線(開漏型)
SCL 2 I I/C總線串行時鐘線(開漏型)
OTI 3 O 溫度超限指示腳,低電平有效(開漏型)
GND 4 - 電源接地腳
A2~A0 5~7 I 串行總線地址低3位連線編程腳
VDD 8 - 電源正極,工作電壓范圍2.7V~5.5V

AD7416具有如下特點(diǎn):10位溫度至數(shù)字轉(zhuǎn)換器;超溫指示端為低電平有效的漏極開路型輸出腳,可以實現(xiàn)“線與”接線方式;I2C兼容的串行接口;可選的串行總線地址,允許在單一總線上連接多達(dá)8個AD7416;低功耗節(jié)電方式(典型2mA);400ms更新速率;55℃~+125℃溫度測量范圍。

AD7416有5個內(nèi)部寄存器。其中4個是數(shù)字寄存器,一個是地址指針寄存器。地址指針寄存器是一個8位寄存器,用于存放指定4個數(shù)據(jù)寄存器的地址碼。對AD7416每一次串行寫操作的第一個數(shù)據(jù)字節(jié)是數(shù)據(jù)寄存器的地址碼,這就是隨后的數(shù)據(jù)字節(jié)要寫入的地址。其實,地址指針寄存器只需最低兩位(記作P1和P0)用來選擇數(shù)據(jù)寄存器,如表3所列。

表3 4個數(shù)據(jù)寄存器的地址分配

P1 P0 數(shù)據(jù)寄存器
0 0 溫度值寄存器(只讀)
0 1 配置寄存器(可讀/寫)
1 0 THYST寄存器(可讀/寫)
1 1 TOTI寄存器(可讀/寫)

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

圖3

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

表4 溫度值寄存器16位布局

D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5~D0
B9 B8 B7 B6 B5 B4 B3 B2 B1 B0 未用

表5 溫度數(shù)據(jù)格式

溫度/℃ 數(shù)字量輸出B9B0 溫度/℃ 數(shù)字量輸出B9~B0
-128 10 0000 0000 +0.25 00 0000 0001
-100 10 01111 0000 +25 0 0011 00100
-25 11 1001 1100 +100 0 1100 10000
-0.25 11 1111 1111 +125 0 1111 10100
0 00 0000 0000 +127 0 1111 11100

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

1.3 PIC16F84簡介

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

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

2 軟件簡介

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

整個軟件采用了模塊化的程序設(shè)計方法。為了實現(xiàn)PIC16F84和AD7416之間I2C協(xié)議之下的串行通信,編寫了一些專用子程序。這些子程序段包括:符號定義、PIC16F84的端口初始化、啟動信號時序產(chǎn)生、停止信號時序產(chǎn)生、發(fā)送字節(jié)、讀取字節(jié)、讀取溫度、向PC機(jī)串行被動發(fā)送等。具體程序見網(wǎng)站www.dpj.com.cn中的程序段0~程序段8。其中兩個比較復(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é)形式會更加精確,在本例中采用的就是2字節(jié)形式。這2個字節(jié)被讀取后,保存到用戶定義的2個寄存器HIHGBYTE和LOWBYTE內(nèi),之后用戶再轉(zhuǎn)移給其它外部器件或設(shè)備,以便作進(jìn)一步地分析等處理。READBYTE子程序的功能相似于SENDBYE子程序的功能。不過,對于讀取過程,需要檢測SDATA線的狀態(tài),并且LOWBYTE寄存器也要作相應(yīng)改動。

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

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

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

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

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

圖7和圖8

3 程序清單

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

結(jié)語

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

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

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉