新聞中心

EEPW首頁 > 光電顯示 > 設(shè)計(jì)應(yīng)用 > 環(huán)境光監(jiān)測(cè)器:在 LCD 上顯示測(cè)量值

環(huán)境光監(jiān)測(cè)器:在 LCD 上顯示測(cè)量值

作者: 時(shí)間:2023-06-09 來源: 收藏

該項(xiàng)目系列的總體目標(biāo)是設(shè)計(jì)一個(gè)智能環(huán)境光監(jiān)視器,它可以分析室內(nèi)光線水平并執(zhí)行相應(yīng)的響應(yīng)操作,例如控制燈調(diào)光器。在開發(fā)這個(gè)項(xiàng)目的過程中,我們需要一種方便的方法來表示電流和電壓幅度的模數(shù)轉(zhuǎn)換值。

本文引用地址:http://m.butianyuan.cn/article/202306/447518.htm

該項(xiàng)目系列的總體目標(biāo)是設(shè)計(jì)一個(gè)智能環(huán)境光監(jiān)視器,它可以分析室內(nèi)光線水平并執(zhí)行相應(yīng)的響應(yīng)操作,例如控制燈調(diào)光器。在開發(fā)這個(gè)項(xiàng)目的過程中,我們需要一種方便的方法來表示電流和電壓幅度的模數(shù)轉(zhuǎn)換值。因此,我們將從編寫固件開始,該固件可以將存儲(chǔ)在變量中的普通數(shù)字轉(zhuǎn)換為一系列單獨(dú)的數(shù)字,然后這些數(shù)字將決定我們將哪些像素?cái)?shù)據(jù)陣列傳輸?shù)? 模塊。
該固件旨在顯示三位數(shù)測(cè)量值,單位為毫伏、伏特、微安或毫安。如果顯示的單位是伏特或毫安,位數(shù)字后的小數(shù)點(diǎn)將自動(dòng)啟用。這意味著顯示接口可以處理從 0 μA 到 9.99 mA 的電流幅度和從 0 mV 到 9.99 V 的電壓幅度。但是,這個(gè)范圍的大部分將永遠(yuǎn)不會(huì)被使用——光傳感器的輸出電流為 5 mA, ADC 無法測(cè)量高于其參考電壓的電壓,在本設(shè)計(jì)中為 2.4 V。
端口輸入輸出

環(huán)境光監(jiān)測(cè)器:在 LCD 上顯示測(cè)量值

您可以參閱本文 以獲取有關(guān)使用交叉開關(guān)和將引腳配置為輸入或輸出的更深入信息。如上圖所示,SPI 信號(hào)被啟用并路由到連接到相應(yīng) 信號(hào)的引腳。SPI片選信號(hào)由固件控制,輸出到P0.1,因?yàn)閮?nèi)置的SPI從機(jī)選擇信號(hào)與接口不兼容。  
外設(shè)和中斷
在項(xiàng)目的這個(gè)階段,我們只需要兩個(gè)外設(shè):SPI 和 Timer4。SPI 配置為 3 線主機(jī)模式,時(shí)鐘分頻器設(shè)置為產(chǎn)生 875 kHz 的 SPI 時(shí)鐘頻率。

環(huán)境光監(jiān)測(cè)器:在 LCD 上顯示測(cè)量值

SPI 中斷被啟用是因?yàn)?SPI 傳輸由 SPI 中斷服務(wù)例程中的狀態(tài)機(jī)控制。傳輸每個(gè)字節(jié)后都會(huì)觸發(fā)中斷。Timer4 用于短延遲,例如 LCD 模塊數(shù)據(jù)表中指定的設(shè)置和保持延遲。一個(gè) Timer4 計(jì)數(shù)約為 490 ns,因此如果我們需要 6 μs 的延遲,我們將 Timer4 寄存器設(shè)置為零并等待計(jì)數(shù)達(dá)到 12。

環(huán)境光監(jiān)測(cè)器:在 LCD 上顯示測(cè)量值

固件
該項(xiàng)目的固件可分為三個(gè)主要部分:LCD 通信接口、將存儲(chǔ)在變量中的數(shù)字轉(zhuǎn)換為一系列單獨(dú)數(shù)字的函數(shù)以及更新 LCD 像素?cái)?shù)據(jù)陣列的例程。
液晶界面
我們使用多行更新模式與 LCD 通信,如前一篇文章所述。當(dāng)微控制器啟動(dòng)時(shí),它將 LCD 清除為所有白色像素。隨后通過將 128 位像素?cái)?shù)據(jù)寫入一個(gè)或多個(gè)行地址來更新 LCD。所有 LCD 更新均由“LCDControl.c”源文件中的 UpdateLCD() 函數(shù)啟動(dòng),數(shù)據(jù)傳輸過程在 SPI 中斷服務(wù)程序中繼續(xù)進(jìn)行。該項(xiàng)目中的 LCD 通信接口包括對(duì)我們?cè)谥拔恼轮惺褂玫膬?nèi)容的一項(xiàng)改進(jìn):每次調(diào)用 UpdateLCD() 都可以通過將適當(dāng)?shù)男泻鸵恍械刂贩湃?LCDLineStart 和 LCDLineStop 變量來指定要更新顯示的 哪一部分 。

環(huán)境光監(jiān)測(cè)器:在 LCD 上顯示測(cè)量值

將數(shù)字轉(zhuǎn)換為數(shù)字
重要的是要理解存儲(chǔ)在變量中的數(shù)值與我們用來可視化數(shù)值的一系列數(shù)字根本不同。一個(gè)變量只是一個(gè)由 1 和 0 組成的序列;這個(gè)序列可以用多種方式解釋——例如,解釋為無符號(hào)整數(shù)、有符號(hào)整數(shù)或浮點(diǎn)值。然后需要進(jìn)一步轉(zhuǎn)換,以視覺形式表達(dá)這個(gè)解釋值。將變量值轉(zhuǎn)換為一系列數(shù)字或字符的標(biāo)準(zhǔn) C 語言方法是庫(kù)中包含的 printf() 函數(shù)。但盡可能避免庫(kù)例程是明智的,主要是因?yàn)樵O(shè)計(jì)自己的代碼更有趣、更有價(jià)值、更有啟發(fā)性。不過,也有實(shí)際的好處。



關(guān)鍵詞: 光監(jiān)測(cè)器 LCD

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉