基于P89LPC922的多點溫度采集系統(tǒng)
1 系統(tǒng)硬件設(shè)計
本文引用地址:http://2s4d.com/article/201611/318905.htm1.1 系統(tǒng)整體結(jié)構(gòu)
該系統(tǒng)設(shè)計采用I2C總線,單主機多從機的工作模式,實現(xiàn)多點溫度的采集、讀取與顯示。主機由主控制器、數(shù)碼管顯示、電源、報警、鍵盤等模塊組成,完成以下功能:1)主機通過按鍵確定進入溫度測量狀態(tài)以及即將讀取溫度的節(jié)點:2)主機從總線上讀取節(jié)點溫度值并顯示;3)空閑時,由按鍵確定進入時間顯示狀態(tài)。時鐘使用單片機內(nèi)部的實時時鐘RTC、外部6 MHz晶振,CPU掉電運行,每0.5 s喚醒一次;而從機由數(shù)字溫度傳感器等組成,實現(xiàn)完成以下功能:1)采集節(jié)點實時溫度值;2)響應(yīng)主機的請求,發(fā)送溫度數(shù)據(jù)。
基于I2C總線的多點溫度采集系統(tǒng)選用具有硬件I2C總線功能的P89LPC922單片機作為主控制器,采用具有I2C功能器件的數(shù)字溫度傳感器LM75A和數(shù)碼管顯示驅(qū)動及鍵盤掃描管理器件ZLG7290。LM75A采集節(jié)點實時溫度值,并通過I2c總線發(fā)送溫度數(shù)據(jù),ZLG7290驅(qū)動LED數(shù)碼管顯示溫度值和時間。采用SPXll17設(shè)計電源模塊提供3.3V電壓。該系統(tǒng)硬件框圖如圖l所示。
1.2 各模塊電路設(shè)計
1.2.1 控制器模塊
主控制器采用P89LPC922單片機。該單片機是一款單片封裝的微控制器,適合于那些要求高集成度、低成本的場合,滿足多方面性能要求。其內(nèi)部集成了鍵盤中斷、串行接口(UART/I2C)、看門狗定時器,采用先進的2-clock技術(shù),指令執(zhí)行速度是傳統(tǒng)80C51的6倍。支持空閑、掉電、時鐘預(yù)分頻等多種節(jié)電模式,另外,其4中斷優(yōu)先級結(jié)構(gòu),為多個中斷源的處理提供極大的靈活性。
根據(jù)主控器P89LPC922單片機的鍵盤中斷特性,鍵盤模塊可直接由3個I/O口控制實現(xiàn)3個按鍵,其原理圖如圖2所示。
本設(shè)計采用蜂鳴器實現(xiàn)報警過程,使用I/O口的開漏方式對蜂嗚器進行控制。指示燈電路是由2個LED組成,使用I/O口的推挽輸出方式驅(qū)動LED。
1.2.2 溫度采集模塊
LM75A是一個使用了內(nèi)置帶隙溫度傳感器和∑-△模數(shù)轉(zhuǎn)換技術(shù)的溫度-數(shù)字轉(zhuǎn)換器。本設(shè)計使用2片LM75A采集兩點的溫度值,其原理圖如圖3所示。
1.2.3 顯示模塊
ZLG7290B是數(shù)碼管顯示驅(qū)動及鍵盤掃描管理器件,能夠直接驅(qū)動8位共陰式數(shù)碼管(或64只獨立的LED)。這里只使用ZLG7290B的數(shù)碼管顯示驅(qū)動功能,而沒有用其鍵盤功能,因此電路大大簡化,其原理圖如圖4所示。
2 軟件程序設(shè)計
I2C是一個多主總線,其可由多個器件控制。一般的I2C器件都具有一個唯一的地址以保證控制的準確性,普通I2C總線傳輸速率為100 Kbit/s,在新增的高速模式下其可達到3.4 Mbit/s的速率,以支持一些高速傳輸?shù)膽?yīng)用,如大容量Flash存儲器。
LPC900系列單片機內(nèi)部集成了I2C總線,既可作I2C總線上的主控器件,也可作I2C總線上的從器件,同時其具有4種I2C總線收發(fā)模式:主發(fā)送器模式,主接收器模式,從發(fā)送器模式,從接收器模式。
本設(shè)計的I2C軟件包采用硬件I2C總線中斷方式,硬件I2C的總線競爭和同步邏輯是軟件無法模擬的,本軟件包是硬件I2C以主方式工作的,它包括了申請總線,發(fā)送字節(jié)數(shù)據(jù),接收字節(jié)數(shù)據(jù)等等,而面對其他模塊程序的是幾個歸一化子程序,只要設(shè)置幾個入口參數(shù),即可調(diào)用。
圖5和圖6分別為實時時鐘和鍵盤中斷服務(wù)流程,其中實時時鐘0.5s產(chǎn)生1次中斷,而鍵盤中采用3個按鍵,每個按鍵按下時均可產(chǎn)生一次中斷。本設(shè)計主函數(shù)完成CPU掉電運行,使系統(tǒng)功耗降至最低,只有在按鍵中斷和實時時鐘中斷時才會喚醒CPU。
3 系統(tǒng)測試
3.1 硬件測試
利用萬用表對焊接好的電路板進行測試。首先測試線路部分,各線路連接正常,沒有出現(xiàn)短路和斷路的現(xiàn)象;其次,上電后,電源燈亮,證明電源連接正常,測電源電壓輸入為5 V,輸出為3.3 V,電源電路工作正常。其余模塊通過軟件測試。
3.2 軟件測試
通過ZLG7290測試程序驗證I2C總線的傳輸情況,并利用邏輯分析儀來觀察其時序,如圖7所示。
從圖7可以看出,該時序部分完成的是使第l位數(shù)碼管顯示“0"的過程,從啟動總線到結(jié)束總線的一個完整過程。該過程總共發(fā)送了4個字節(jié)數(shù)據(jù),在總線啟動后發(fā)送的是ZLG7290的從機地址,后跟一位讀寫位O,表命令緩沖區(qū)的首地址,每發(fā)送完一個字節(jié)后都會收到一個應(yīng)答位0,表示接收到數(shù)據(jù)。后面2個字節(jié)是復(fù)合指令,在這里是按位下載數(shù)據(jù)且譯碼指令,即使第l位數(shù)碼管顯示0。發(fā)送完指令后緊接著是結(jié)束總線條件,表示一次發(fā)送過程結(jié)束。
通過LM75A測試程序是向從機發(fā)送數(shù)據(jù),收到應(yīng)答位0后,緊接著發(fā)送從機子地址,在這里是ZLG7290命令緩沖區(qū)的首地址,每發(fā)送完一個字節(jié)后都會收到一個應(yīng)答位0,表示接收到數(shù)據(jù)。后面2個字節(jié)是復(fù)合指令,在這里是按位下載數(shù)據(jù)且譯碼指令,即使第1位數(shù)碼管顯示0。發(fā)送完指令后緊接著是結(jié)束總線條件,表示一次發(fā)送過程結(jié)束。驗證I2C總線的接收數(shù)據(jù)的過程,并利用邏輯分析儀來觀察其時序,如圖8所示。
從圖8可以看出,該時序部分完成的是讀取溫度值的過程,也是一個I2C總線帶重復(fù)起始條件的接受數(shù)據(jù)的過程。該過程分發(fā)送和接收兩部分。發(fā)送部分包括發(fā)送從機地址和從機子地址,即LM75A的地址90H和LM75A溫度寄存器首地址00H。然后重新啟動總線準備接收數(shù)據(jù),該部分主機先發(fā)送從機地址,并跟讀寫位l,表示主機將接收該從機發(fā)來的數(shù)據(jù),緊接著主機接收2個字節(jié)的數(shù)據(jù),主機發(fā)送應(yīng)答位后,再發(fā)送停止條件結(jié)束總線,表示主機接收完一次數(shù)據(jù)。
3.3 系統(tǒng)綜合測試
將程序燒進P89LPC922,上電后,數(shù)碼管顯示“0000”,通過按鍵2和按鍵3來設(shè)置時鐘初值。當讀取的溫度值超過設(shè)定的溫度值范圍,蜂鳴器會發(fā)出報警提示音。這時可通過按下按鍵l取消聲音,同時切換為時鐘顯示。
4 結(jié)束語
本系統(tǒng)為綜合處理多點溫度信息的測量系統(tǒng),該設(shè)計系統(tǒng)結(jié)構(gòu)簡單,操作方便,測量精度高,速度快,能實現(xiàn)報警。該系統(tǒng)的測溫范圍為-55~+125℃,測量精度能達到0.125℃,由于采用I2C總線的結(jié)構(gòu),整個系統(tǒng)占用主控制器I/O口較少,其余I/O口可留作系統(tǒng)擴展之用。該系統(tǒng)可應(yīng)用于植物生長環(huán)境的溫度檢測,當超出植物適宜生長溫度范同時將發(fā)出報警。
評論