MCU工作原理
MCU同溫度傳感器之間通過I2C總線連接。I2C總線占用2條MCU輸入輸出口線,二者之間的通信完全依靠軟件完成。溫度傳感器的地址可以通過2根地址引腳設(shè)定,這使得一根I2C總線上可以同時連接8個這樣的傳感器。MCU需要訪問傳感器時,先要發(fā)出一個8位的寄存器指針,然后再發(fā)出傳感器的地址(7位地址,低位是WR信號)。
傳感器中有3個寄存器可供MCU使用,8位寄存器指針就是用來確定MCU究竟要使用哪個寄存器的。主程序會不斷更新傳感器的配置寄存器,這會使傳感器工作于單步模式,每更新一次就會測量一次溫度。 為了讀出傳感器測量值寄存器中的16位數(shù)據(jù),MCU必須與傳感器進(jìn)行兩次8位數(shù)據(jù)通信。
當(dāng)傳感器上電工作時,默認(rèn)的測量精度為9位,分辨力為0.5 C/LSB(量程為-128.5 C至128.5 C)。本方案采用默認(rèn)測量精度,根據(jù)需要,可以重新設(shè)置傳感器,將測量精度提高到12位。如果只要求作一般的溫度指示,比如自動調(diào)溫器,那么分辨力達(dá)到1 C就可以滿足要求了。這種情況下,傳感器的低8位數(shù)據(jù)可以忽略,只用高8位數(shù)據(jù)就可以達(dá)到分辨力1 C的設(shè)計要求。由于讀取寄存器時是按先高8位后低8位的順序,所以低8位數(shù)據(jù)既可以讀,也可以不讀。
只讀取高8位數(shù)據(jù)的好處有二,第一是可以縮短MCU和傳感器的工作時間,降低功耗;第二是不影響分辨力指標(biāo)。 MCU讀取傳感器的測量值后,接下來就要進(jìn)行換算并將結(jié)果顯示在LCD上。整個處理過程包括:判斷顯示結(jié)果的正負(fù)號,進(jìn)行二進(jìn)制碼到BCD碼的轉(zhuǎn)換,將數(shù)據(jù)傳到LCD的相關(guān)寄存器中。 數(shù)據(jù)處理完畢并顯示結(jié)果之后,MCU會向傳感器發(fā)出一個單步指令。單步指令會讓傳感器啟動一次溫度測試,然后自動進(jìn)入等待模式,直到模數(shù)轉(zhuǎn)換完畢。MCU發(fā)出單步指令后,就進(jìn)入LPM3模式,這時MCU系統(tǒng)時鐘繼續(xù)工作,產(chǎn)生定時中斷喚醒CPU。定時的長短可以通過編程調(diào)整,以便適應(yīng)具體應(yīng)用的需要。
MCU的分類
對于無片內(nèi)ROM型的芯片,必須外接EPROM才能應(yīng)用(如8031)。帶片內(nèi)ROM型的芯片又分為片內(nèi)EPROM型(如87C51)、MASK片內(nèi)掩模ROM型(如8051)、片內(nèi)FLASH型(如89C51)等類型,還有為帶有片內(nèi)一次性可編程ROM(One Time Programming, OTP)的芯片(如97C51)。