最終效果展示
OLED屏幕和GY30光照傳感器(BH1750FVI)都連接在一個IIC(I2C)總線上,所以只需要接4根線即可。獲取到的光照強度可以在OLED上實時顯示並通過串口打印。IIC是IO模擬IIC,方便后續代碼的移植到各個單片機平台。
硬件匯總
單片機:STM32F103C8T6
OLED:0.96寸、128*64、驅動芯片是SSD1306(市場上常用)
光照強度傳感器:GY-30,BH1750FVI主控即可
接線方法
IIC總線:SCL--PA1 、 SDA--PA0
串口:TX--PA9 、 RX--PA10
GY30與OLED供電均為3.3V
IIC總線的原理及特點
總線結構
l 總線只需要兩個數據線,分別為:
SCL:時鍾線,維護傳輸時鍾
SDA:數據線,傳輸的數據位
l 總線是板級總線,連接線一般不超過兩米
l 總線的數據線和時鍾線均需要上拉電阻(1~10K,一般為2.2k)
l 總線所有設備均需共地
l 器件地址需要保證唯一性,不做任何設備屏蔽的情況下,總線可掛載設備為127個,因為器件地址默認為寫地址,讀地址需要將其最后一位變為1。
l IIC器件地址羅列:
12864 OLED屏幕:0x78
GY30光照傳感器:0x46 或者 0xB8
IIC總線的信號有以下類別:開始信號、數據信號、應答信號、停止信號
空閑狀態:
當時鍾線和數據線都為高電平是,IIC總線上的所有從設備都處於空閑狀態。
開始信號:
當時鍾線和數據線都為高電平是,數據線從高電平到低電平跳變,則為開始信號
數據信號:
時鍾線高電平時,數據線持續為低電平,當時鍾線降為低電平后,IIC設備將受到1位數據0;時鍾線為高電平時,數據線持續為高電平,當時鍾線降為低電平后,IIC設備將收到1位數據1。在時鍾線高電平的過程中,數據線必須保持穩定,不能變化,否則的話將被誤認為是控制信號。
應答信號:
應答信號一般是在8個數據位發送完成后就需要產生一個
停止信號:
當時鍾線為高電平、數據線為低電平是,數據線從低到高的跳變,則為停止信號
12864 OLED屏幕簡介
l 每個像素點自發光、較LCD屏幕去掉了高亮背光燈,達到了更加省電的效果。
l 體積可更小,厚度可更薄
l 驅動芯片為SSD1306
l 分辨率:128*64
l 電壓:3.3V/5V
l 通信方式:IIC
驅動原理分析:
OLED,又稱為有機電激光顯示、有機發光半導體,其是128*64=8192個像素點組成,每個像素點可以自發光,屏幕可以不能動態改變顏色和灰度值(透明度),所以可以認為只是控制了8192個像素點的亮和滅來顯示各種圖形或字符。
這里兩個是字庫聲明數組:
const unsigned char F6x8[][6]; const unsigned char F8X16[];
可以看出字符ASCII碼字符有大和小兩個規格,分為:
6*8:1個字符占用行6個像素,列8個像素
8*16:1個字符占用行8個像素,列16個像素
另外漢字字庫太大的原因,所以漢字基本都是需要用到的自己再添加進去,通常為16*16像素。
GY-30光強傳感器
l 其使用的主芯片為ROHM-BH1750FVI
l 供電3-5V
l 光強測量范圍:1-65535勒克斯(Lux或lx)
l C傳感器內置16bitAD轉換器
l 直接數字輸出,輸出帶有單位值,無需復雜計算
l 通訊方式IIC
接線說明
IIC地址引腳是確定確定模塊地址的,模塊有兩個地址可選,如果ADDR引腳接VCC則模塊IIC地址為0xB8,如果ADDR引腳接GND則模塊IIC地址為0x46
BH1750FVI手冊重要提取
通訊指令集合
測量模式說明
我們建議您使用H分辨率模式。,H分辨率模式下足夠長的測量時間(積分時間)能夠抑制一些噪聲(包括 50Hz/60Hz)。同時, H分辨率模式的分辨率在 1x下,適用於黑暗場合下(少於 10 1x), H分辨率模式2同樣適用於黑暗場合下的檢測。
異步復位和重置的命令"00000111"
1、 異步重置電源供應時序基礎上將所有寄存器復位序列。請參考本頁的 "VCC和DVI電源供給時序圖供電序列。在DVI="L"時是電源掉電模式。
2、 重置命令重置命令僅對光強度數據寄存器起作用 (指令值為"0")。電源供應時序對其無影響。它的作用是原來清除之前的測量結果。這個命令不能在斷電模式 ,所以在輸入該指令前要設置為通電模式。
程序編寫,實戰
-
IIC編程使用IO模擬IIC,方便后期代碼移植到其它單片機平台
-
OLED屏幕與GY30光照傳感器(BH1750FVI)都在一條IIC總線上,數據線占用IO資源只需要兩條
-
OLED實時顯示光強和串口實時輸出光強
-
光強攜帶標准單位Lux
原文鏈接:https://www.cnblogs.com/dongxiaodong/p/13585644.html
博主微信
微信號:dongxiaodongwx