原创 128*64OLED液晶屏(SSD1306驱动)调试经验

2019-4-3 16:49 8128 18 5 分类: MCU/ 嵌入式 文集: 调试经验
128*64 OLED液晶屏,IIC通信接口,驱动芯片SSD1306
Part 1:IIC通信
根据IIC时序图,写出IIC通信的各个功能,封装成函数,采用软件模拟IIC,使用单片机上两个IO口充当SDA和SCL两根线。
 


Part 2:液晶屏调试
驱动芯片是SSD1306,很常用,资料很多
先看两个函数

写命令函数,写入0x78,表示选中器件。器件地址可以通过电阻不同的连接改变,具体参考使用说明。写入0x00,表示接下来要向芯片内写入的是指令。

同上,不过写入0x40,表示接下来要向芯片内写入的是数据。

接下来看给定的芯片初始化函数

写入命令0x20是表明要设置内存地址模式,后续的第三个写入的命令,是所选择得具体模式,有三种:水平地址模式(00),垂直地址模式(01),页地址模式(10)

水平地址模式:当处于此模式时,列地址指针将自动增加1。如果列地址指针到达列终止地址, 列地址指针将复位到列起始地址, 且页地址指针将自动增加1。即是从起点开始横着写,写到头以后回到下一行的列起始地址。

垂直地址模式:当处于此模式时, 页地址指针将自动增加1。如果页地址指针到达页终止地址, 页地址指针将复位到页起始地址, 且列地址指针将自动增加1。即是从起点开始竖着写,写到头以后回到下一列的页起始地址。

页地址模式:当处于此模式时,  列地址指针将自动增加1。如果列地址指针到达列终止地址, 列地址指针将复位到列起始地址, 但页地址指针不会改变。
为了写入下一页的内容, 必须设置新的页地址和列地址。

页地址看起来麻烦,但是行列都是可控的,这里选择的就是页地址模式。

在页地址模式下,需要如下指令来确定起始点的行列地址

指令0xby,表明起始地址是第y页,也就是第y行,由于使用的是12864,所以最多8行,故y的范围是0-7;

列起始地址由指令0x1m和0x0n来确定,m是高四位,n是低四位,使用12864,则m,n合起来的8位数数值范围在0-127之间。


根据以上所述,自己编写了一个以某行某列为起始位置的字符的显示函数,如下:

fill_data是需要写入的字符的编码构成的数组。

至此,可以在屏幕上任意位置显示想要显示的字符。

Part 3:其他资料补充

1,打点方式

2,OLED其他控制指令(转载,侵删)


3,取模软件:
连续输入多个字获得的数据,和单个单个输入这些字获得数据一致,都只是简单的实现字的显示,并不包含位置信息,需要自己决定显示的起始位置,打点的列数,打点的页数。

该软件也可以设置字的上下左右移动,但是也只是将空白处不显示,等于是将原字符+空白来起到移动效果,具体显示在液晶屏的什么位置,还是需要自己来定来写。

作者: 狂野的牛哥, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-3867932.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

curton 2019-4-23 15:44

好资源 学习了

houzelong_108081826 2019-4-8 09:18

用FPGA驱过SSD1306,是有点小麻烦。
相关推荐阅读
狂野的牛哥 2020-06-12 10:24
DC是怎样综合RTL级设计的?
学习书籍《数字IC设计-方法、技巧与实践》笔记对于软件DC(Design Compiler)而言,综合=翻译+优化+映射。翻译:是将RTL级描述转换成DC常用的布尔表达,优化是根据设计目标优化电路结构...
狂野的牛哥 2019-10-29 11:08
秋招整理
签订三方结束秋招已经快一周了,想着回忆整理一下自己的秋招经历,留作纪念,也希望能帮助需要的人。坐标hf,目的城市hf或者wh,所以找工作的重点其实还是放在wh,hf和长三角区域,诸如北京,珠三角以及其...
狂野的牛哥 2019-08-16 20:55
步进电机驱动芯片TMC260使用经验
项目需要使用步进电机的驱动芯片,几经比较,选用了德国的TMC260,非常好用,工作起来稳健。芯片有两个完整的H桥,所以可用来控制两个直流电机或者一个二相四线步进电机。具体参数查看datasheet,大...
狂野的牛哥 2019-07-25 10:53
时序约束之偏移(OFFSET)约束
笔记本上整理记载了时序约束中的偏移约束,上传图片保存,以备日后查阅使用。...
狂野的牛哥 2019-06-20 16:34
ZYNQ学习笔记之First Project
做了第一个Project该工程功能:PS内部定时器开启定时,PL端GPIO连接按键和LED,通过按键按下产生从PL到PS的中断,中断服务程序是控制LED灯做流水灯闪烁,间隔时间为来自于定时器的1s。同...
狂野的牛哥 2019-06-20 15:30
ZYNQ学习笔记之时钟相关
通常模式下,锁相环PLL是启动的,PS-CLK提供时钟信号,经过三路PLL,分别是:ARM PLL,产生时钟用于CPU和互联;IO PLL,产生时钟用于IO外围设备;DDR PLL,产生时钟用于DDR...
EE直播间
更多
我要评论
2
18
关闭 站长推荐上一条 /3 下一条