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 的朋友,商家提供了模块的程序实例应该对上面的几个函数比较熟悉。 

希望可以帮到你。如有不妥请大家及时指出,谢谢。

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页