切换到宽版
  • 21008阅读
  • 30回复

[C51]爱折腾~入了几块OLED屏幕,试试用STC单片机驱动 [复制链接]

上一主题 下一主题
离线cjft
 

发帖
1325
M币
4067
专家
17
粉丝
19311
只看楼主 倒序阅读 我要置顶 楼主  发表于: 2018-02-11
— 本帖被 發騷友 执行加亮操作(2018-02-12) —
    事情的起因是这样的,一天我百无聊赖地浏览着论坛的帖子,突然看到了这么一个帖子:
STC15硬件SPI驱动96*96 OLED屏
1.12寸的OLED屏,跟常用的0.96寸的12864差不多价格,还比它大一些,而且是少见的绿色,立马顺着链接摸到店铺,发现不少平价OLED屏,一时没忍住就剁手了几块不同的屏……
   两天后快递包裹就来了,卖家很良心地给了STM32的例程和对应屏幕芯片的驱动IC的DataSheet,可是鄙人不才,玩不转STM32啊,只会在C51里if来if去,或者搬运网上的代码……花了几天研究卖家给的代码、帖子里的代码、数据手册以及之前驱动各种液晶屏的经验,终于得到了以下成果:

首先是绿色的96×96的OLED,支持16级灰度:
先刷一张图

这里从上到下分别是
1、8×16的精简ASCII字符显示
2、16×16中文字符显示
3、int变量直接显示,支持前面的零不显,也就是100不会显示成00100,做电压显示之类需要一直动态刷新的数字显示很方便
4、任意位置显示4位灰度图像
**想必大家注意到了,这里的65432怎么这么暗,因为这里所有的显示函数都支持设定16级的亮度等级,毕竟这是灰度屏这功能可不能浪费了

至于图像是怎么显示的,我是先用PhotoShop把图片处理成96×96的4位bmp格式图片,再用MATLAB写了个脚本

最后把数据导出到excel里:


然后复制粘贴到数组里面就行啦,因为是灰度图,一个像素要占用4个bit,所以数组非常庞大(要4.5KB)

关于汉字的取模,设置如下图,取模软件就是喜闻乐见的“PCtoLCD2002”啦。


然后是一块128×96的OLED,和上面的屏数据格式是一样的,仅有的区别就是分辨率不同和初始化命令不同:
图片


文字


对了,这里英文显示我特意写了个自动换行功能,同样一条命令

效果如下




零零散散讲了一大堆,关键的源代码我也会放出来哟,两个屏的驱动全都使用了STC8A8K64S4A12的硬件SPI,使用STC15的话,SPI初始化函数需要小改一下。
程序方面有比较详细的说明,两个头文件共用codetab和chinesetab两个字模文件。

接下来放个下期预告
下次折腾这个RGB565的彩色OLED屏,我已经驱动成功了



本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
本帖最近打赏记录:共6条打赏 ,M币+133 ,专家+1
离线20768797

发帖
2130
M币
2892
专家
2
粉丝
45
只看该作者 1楼 发表于: 2018-02-11
请登录后查看
离线九斤

发帖
12485
M币
2264
专家
36
粉丝
129
只看该作者 2楼 发表于: 2018-02-11
请登录后查看
本帖最近打赏记录:共1条打赏 ,M币+15
离线cjft

发帖
1325
M币
4067
专家
17
粉丝
19311
只看该作者 3楼 发表于: 2018-02-11
回 20768797 的帖子
请登录后查看
离线dianziguan

发帖
6058
M币
5483
专家
8
粉丝
438
只看该作者 4楼 发表于: 2018-02-11
请登录后查看
离线1165403447

发帖
62
M币
1055
专家
0
粉丝
1
只看该作者 5楼 发表于: 2018-02-11
请登录后查看
离线yumeitao

发帖
15081
M币
5866
专家
4
粉丝
87
只看该作者 6楼 发表于: 2018-02-11
请登录后查看
离线sadate

发帖
247
M币
1177
专家
2
粉丝
34
只看该作者 7楼 发表于: 2018-02-11
请登录后查看
离线旧宅毛毛

发帖
661
M币
667
专家
3
粉丝
70
只看该作者 8楼 发表于: 2018-02-11
离线小茅

发帖
2304
M币
1611
专家
6
粉丝
40
只看该作者 9楼 发表于: 2018-02-12
请登录后查看
快速回复
限80 字节
“新手上路”发帖需审核后才能显示(请认真发帖),达到数码9级后取消此限制
 
上一个 下一个