<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于P89LPC922的多點(diǎn)溫度采集系統(tǒng)

          基于P89LPC922的多點(diǎn)溫度采集系統(tǒng)

          作者: 時(shí)間:2016-11-20 來(lái)源:網(wǎng)絡(luò) 收藏
            隨著社會(huì)的進(jìn)步和工業(yè)技術(shù)的發(fā)展,許多產(chǎn)品對(duì)溫度范圍的要求越加嚴(yán)格,尤其在工業(yè)發(fā)展方面,如冶金、鋼鐵、石化、水泥、玻璃等行業(yè)。而目前市場(chǎng)上溫度檢測(cè)儀器大多是單點(diǎn)測(cè)量,不能適應(yīng)當(dāng)今社會(huì)生產(chǎn)高效率要求,且溫度信息精度不高。因此設(shè)計(jì)一種能夠同時(shí)測(cè)量多點(diǎn)溫度,測(cè)量精度高,能夠綜合處理多點(diǎn)溫度信息的測(cè)量系統(tǒng)很有必要。這里提出一種能多路采集、顯示的溫度采集系統(tǒng)設(shè)計(jì)。

            1 系統(tǒng)硬件設(shè)計(jì)

          本文引用地址:http://www.ex-cimer.com/article/201611/318905.htm

            1.1 系統(tǒng)整體結(jié)構(gòu)

            該系統(tǒng)設(shè)計(jì)采用I2C總線(xiàn),單主機(jī)多從機(jī)的工作模式,實(shí)現(xiàn)多點(diǎn)溫度的采集、讀取與顯示。主機(jī)由主控制器、數(shù)碼管顯示、電源、報(bào)警、鍵盤(pán)等模塊組成,完成以下功能:1)主機(jī)通過(guò)按鍵確定進(jìn)入溫度測(cè)量狀態(tài)以及即將讀取溫度的節(jié)點(diǎn):2)主機(jī)從總線(xiàn)上讀取節(jié)點(diǎn)溫度值并顯示;3)空閑時(shí),由按鍵確定進(jìn)入時(shí)間顯示狀態(tài)。時(shí)鐘使用單片機(jī)內(nèi)部的實(shí)時(shí)時(shí)鐘RTC、外部6 MHz晶振,CPU掉電運(yùn)行,每0.5 s喚醒一次;而從機(jī)由數(shù)字溫度傳感器等組成,實(shí)現(xiàn)完成以下功能:1)采集節(jié)點(diǎn)實(shí)時(shí)溫度值;2)響應(yīng)主機(jī)的請(qǐng)求,發(fā)送溫度數(shù)據(jù)。

            基于I2C總線(xiàn)的多點(diǎn)溫度采集系統(tǒng)選用具有硬件I2C總線(xiàn)功能的P89LPC922單片機(jī)作為主控制器,采用具有I2C功能器件的數(shù)字溫度傳感器LM75A和數(shù)碼管顯示驅(qū)動(dòng)及鍵盤(pán)掃描管理器件ZLG7290。LM75A采集節(jié)點(diǎn)實(shí)時(shí)溫度值,并通過(guò)I2c總線(xiàn)發(fā)送溫度數(shù)據(jù),ZLG7290驅(qū)動(dòng)LED數(shù)碼管顯示溫度值和時(shí)間。采用SPXll17設(shè)計(jì)電源模塊提供3.3V電壓。該系統(tǒng)硬件框圖如圖l所示。

            1.2 各模塊電路設(shè)計(jì)

            1.2.1 控制器模塊

            主控制器采用P89LPC922單片機(jī)。該單片機(jī)是一款單片封裝微控制器,適合于那些要求高集成度、低成本的場(chǎng)合,滿(mǎn)足多方面性能要求。其內(nèi)部集成了鍵盤(pán)中斷、串行接口(UART/I2C)、看門(mén)狗定時(shí)器,采用先進(jìn)的2-clock技術(shù),指令執(zhí)行速度是傳統(tǒng)80C51的6倍。支持空閑、掉電、時(shí)鐘預(yù)分頻等多種節(jié)電模式,另外,其4中斷優(yōu)先級(jí)結(jié)構(gòu),為多個(gè)中斷源的處理提供極大的靈活性。

            根據(jù)主控器P89LPC922單片機(jī)的鍵盤(pán)中斷特性,鍵盤(pán)模塊可直接由3個(gè)I/O口控制實(shí)現(xiàn)3個(gè)按鍵,其原理圖如圖2所示。

            本設(shè)計(jì)采用蜂鳴器實(shí)現(xiàn)報(bào)警過(guò)程,使用I/O口的開(kāi)漏方式對(duì)蜂嗚器進(jìn)行控制。指示燈電路是由2個(gè)LED組成,使用I/O口的推挽輸出方式驅(qū)動(dòng)LED。

            1.2.2 溫度采集模塊

            LM75A是一個(gè)使用了內(nèi)置帶隙溫度傳感器和∑-△模數(shù)轉(zhuǎn)換技術(shù)的溫度-數(shù)字轉(zhuǎn)換器。本設(shè)計(jì)使用2片LM75A采集兩點(diǎn)的溫度值,其原理圖如圖3所示。

            1.2.3 顯示模塊

            ZLG7290B是數(shù)碼管顯示驅(qū)動(dòng)及鍵盤(pán)掃描管理器件,能夠直接驅(qū)動(dòng)8位共陰式數(shù)碼管(或64只獨(dú)立的LED)。這里只使用ZLG7290B的數(shù)碼管顯示驅(qū)動(dòng)功能,而沒(méi)有用其鍵盤(pán)功能,因此電路大大簡(jiǎn)化,其原理圖如圖4所示。

            2 軟件程序設(shè)計(jì)

            I2C是一個(gè)多主總線(xiàn),其可由多個(gè)器件控制。一般的I2C器件都具有一個(gè)唯一的地址以保證控制的準(zhǔn)確性,普通I2C總線(xiàn)傳輸速率為100 Kbit/s,在新增的高速模式下其可達(dá)到3.4 Mbit/s的速率,以支持一些高速傳輸?shù)膽?yīng)用,如大容量Flash存儲(chǔ)器。

            LPC900系列單片機(jī)內(nèi)部集成了I2C總線(xiàn),既可作I2C總線(xiàn)上的主控器件,也可作I2C總線(xiàn)上的從器件,同時(shí)其具有4種I2C總線(xiàn)收發(fā)模式:主發(fā)送器模式,主接收器模式,從發(fā)送器模式,從接收器模式。

            本設(shè)計(jì)的I2C軟件包采用硬件I2C總線(xiàn)中斷方式,硬件I2C的總線(xiàn)競(jìng)爭(zhēng)和同步邏輯是軟件無(wú)法模擬的,本軟件包是硬件I2C以主方式工作的,它包括了申請(qǐng)總線(xiàn),發(fā)送字節(jié)數(shù)據(jù),接收字節(jié)數(shù)據(jù)等等,而面對(duì)其他模塊程序的是幾個(gè)歸一化子程序,只要設(shè)置幾個(gè)入口參數(shù),即可調(diào)用。


            圖5和圖6分別為實(shí)時(shí)時(shí)鐘和鍵盤(pán)中斷服務(wù)流程,其中實(shí)時(shí)時(shí)鐘0.5s產(chǎn)生1次中斷,而鍵盤(pán)中采用3個(gè)按鍵,每個(gè)按鍵按下時(shí)均可產(chǎn)生一次中斷。本設(shè)計(jì)主函數(shù)完成CPU掉電運(yùn)行,使系統(tǒng)功耗降至最低,只有在按鍵中斷和實(shí)時(shí)時(shí)鐘中斷時(shí)才會(huì)喚醒CPU。

            3 系統(tǒng)測(cè)試

            3.1 硬件測(cè)試

            利用萬(wàn)用表對(duì)焊接好的電路板進(jìn)行測(cè)試。首先測(cè)試線(xiàn)路部分,各線(xiàn)路連接正常,沒(méi)有出現(xiàn)短路和斷路的現(xiàn)象;其次,上電后,電源燈亮,證明電源連接正常,測(cè)電源電壓輸入為5 V,輸出為3.3 V,電源電路工作正常。其余模塊通過(guò)軟件測(cè)試。

            3.2 軟件測(cè)試

            通過(guò)ZLG7290測(cè)試程序驗(yàn)證I2C總線(xiàn)的傳輸情況,并利用邏輯分析儀來(lái)觀察其時(shí)序,如圖7所示。

            從圖7可以看出,該時(shí)序部分完成的是使第l位數(shù)碼管顯示“0"的過(guò)程,從啟動(dòng)總線(xiàn)到結(jié)束總線(xiàn)的一個(gè)完整過(guò)程。該過(guò)程總共發(fā)送了4個(gè)字節(jié)數(shù)據(jù),在總線(xiàn)啟動(dòng)后發(fā)送的是ZLG7290的從機(jī)地址,后跟一位讀寫(xiě)位O,表命令緩沖區(qū)的首地址,每發(fā)送完一個(gè)字節(jié)后都會(huì)收到一個(gè)應(yīng)答位0,表示接收到數(shù)據(jù)。后面2個(gè)字節(jié)是復(fù)合指令,在這里是按位下載數(shù)據(jù)且譯碼指令,即使第l位數(shù)碼管顯示0。發(fā)送完指令后緊接著是結(jié)束總線(xiàn)條件,表示一次發(fā)送過(guò)程結(jié)束。

            通過(guò)LM75A測(cè)試程序是向從機(jī)發(fā)送數(shù)據(jù),收到應(yīng)答位0后,緊接著發(fā)送從機(jī)子地址,在這里是ZLG7290命令緩沖區(qū)的首地址,每發(fā)送完一個(gè)字節(jié)后都會(huì)收到一個(gè)應(yīng)答位0,表示接收到數(shù)據(jù)。后面2個(gè)字節(jié)是復(fù)合指令,在這里是按位下載數(shù)據(jù)且譯碼指令,即使第1位數(shù)碼管顯示0。發(fā)送完指令后緊接著是結(jié)束總線(xiàn)條件,表示一次發(fā)送過(guò)程結(jié)束。驗(yàn)證I2C總線(xiàn)的接收數(shù)據(jù)的過(guò)程,并利用邏輯分析儀來(lái)觀察其時(shí)序,如圖8所示。

            從圖8可以看出,該時(shí)序部分完成的是讀取溫度值的過(guò)程,也是一個(gè)I2C總線(xiàn)帶重復(fù)起始條件的接受數(shù)據(jù)的過(guò)程。該過(guò)程分發(fā)送和接收兩部分。發(fā)送部分包括發(fā)送從機(jī)地址和從機(jī)子地址,即LM75A的地址90H和LM75A溫度寄存器首地址00H。然后重新啟動(dòng)總線(xiàn)準(zhǔn)備接收數(shù)據(jù),該部分主機(jī)先發(fā)送從機(jī)地址,并跟讀寫(xiě)位l,表示主機(jī)將接收該從機(jī)發(fā)來(lái)的數(shù)據(jù),緊接著主機(jī)接收2個(gè)字節(jié)的數(shù)據(jù),主機(jī)發(fā)送應(yīng)答位后,再發(fā)送停止條件結(jié)束總線(xiàn),表示主機(jī)接收完一次數(shù)據(jù)。

            3.3 系統(tǒng)綜合測(cè)試

            將程序燒進(jìn)P89LPC922,上電后,數(shù)碼管顯示“0000”,通過(guò)按鍵2和按鍵3來(lái)設(shè)置時(shí)鐘初值。當(dāng)讀取的溫度值超過(guò)設(shè)定的溫度值范圍,蜂鳴器會(huì)發(fā)出報(bào)警提示音。這時(shí)可通過(guò)按下按鍵l取消聲音,同時(shí)切換為時(shí)鐘顯示。

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

            本系統(tǒng)為綜合處理多點(diǎn)溫度信息的測(cè)量系統(tǒng),該設(shè)計(jì)系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,操作方便,測(cè)量精度高,速度快,能實(shí)現(xiàn)報(bào)警。該系統(tǒng)的測(cè)溫范圍為-55~+125℃,測(cè)量精度能達(dá)到0.125℃,由于采用I2C總線(xiàn)的結(jié)構(gòu),整個(gè)系統(tǒng)占用主控制器I/O口較少,其余I/O口可留作系統(tǒng)擴(kuò)展之用。該系統(tǒng)可應(yīng)用于植物生長(zhǎng)環(huán)境的溫度檢測(cè),當(dāng)超出植物適宜生長(zhǎng)溫度范同時(shí)將發(fā)出報(bào)警。



          評(píng)論


          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();