0.96寸IIC通信OLED的使用

最開始使用OLED 是開發一個小項目,用於顯示各種數據,使用的控制芯片是STC8A系列的單片機,這個芯片相對於傳統的51單片機還是有點區別,另外還有一些外設。具體可以下載官方資料查看。本文主要是講解OLED。

首先是接口使用的是IIC,STC8A有自帶的IIC,但我沒有使用,使用普通IO口模擬IIC。IIC協議的時序這裏不做詳解。這裏主要注意是由於發送數據到屏時SCL腳和SDA腳的速度太快導致顯示不正常,所以我在操作時序那增加了適當的延時就可以了,但是不能延時過長,太長影響其他程序的實時性。

舉個例子:

void IIC_Start()
{
    _nop_();
    _nop_();
    _nop_();
    _nop_(); 
    OLED_SCLK_Set();
    _nop_();
    _nop_();
    _nop_();
    _nop_();  
    OLED_SDIN_Set();
    _nop_();
    _nop_();
    _nop_();
    _nop_();  
    OLED_SDIN_Clr();
    _nop_();
    _nop_();
    _nop_();
    _nop_(); 
    OLED_SCLK_Clr();
    _nop_();
    _nop_();
    _nop_();
    _nop_(); 
}加了幾個空指令。

另外,看過別人的顯示覺得不太合理,首先是每次改變顯示是都要進行刷屏,這樣讓人覺得屏幕有閃動的感覺。使用體驗不好。所以我做了一些小改動,就是再要顯示的區域先寫入空白,相當於在指定區域進行刷新,再在那個區域寫入想要的數據。這樣的話就不用每次都進行刷屏。

例如我寫的幾行代碼:            OLED_ShowString(86,0,"    ",16);
                                                    OLED_ShowNum(86,0,Power_Number * 50 + 50,4,16);  

如果有從網上買過OLED 的朋友,商家提供了模塊的程序實例應該對上面的幾個函數比較熟悉。 

希望可以幫到你。如有不妥請大家及時指出,謝謝。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章