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

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

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值