OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5444|回复: 5

以原子的HIFI中OLED的界面为目标,玩转OLED

[复制链接]

22

主题

181

帖子

0

精华

高级会员

Rank: 4

积分
878
金钱
878
注册时间
2014-7-7
在线时间
311 小时
发表于 2015-4-30 08:08:47 | 显示全部楼层 |阅读模式
           原子的OLED的界面很好看,所以自己就想一样也实现这种好看的显示功能,但是,原子的OLED界面不开源,那么,就
自己动动脑子想想是怎么实现的了。
            我使用的是模拟SPI刷新OLED方式,每次都会刷一次全图,即128*8Byte的大小,所以,我建立了1K的缓冲,因为画板
的时候没有注意模拟SPI刷新这么大的图片慢的问题,所以帧率提不上去,下次会更换成硬件SPI方式。不过有的人喜欢用STM32,
以STM32的本事,模拟SPI能刷成STM8这些8位机的硬件SPI方式的速度也说不定,反正我不懂,哈哈哈。
             不说废话,我说说我的方法,我首先建立一个可视缓冲区,OLED_Buff[8][128],不管什么图片,最后直接送进来缓冲区
然后再送到OLED显示就行了,下面贴上我的代码,目前实现的是:高度是8的倍数,长度任意的图片上下左右移动。
[mw_shl_code=c,true]void OLED_DrawBMP( int8_t StartX, int8_t StartY, int8_t X_Len, int8_t Y_Len, const uint8_t *pIMG) { uint8_t S_Page,E_Page; uint8_t S_Line,E_Line; uint8_t i,j,k =0; if( (StartX+X_Len)>127 )//参数保护 return; S_Page = StartY / 8; E_Page = ( StartY+Y_Len ) /8; S_Line = StartY % 8; E_Line = (StartY+Y_Len)%8; //坐标在页开始且高是页的倍数 if( (0 == S_Line) && ( 0 == E_Line ) ) { k = 0; for( i = S_Page; i< E_Page; i++ ) { for( j = StartX; j< StartX+X_Len; j++ ) { OLED_Buff[j] = pIMG[k++]; } } } //坐标不在页开始且高是页的倍数 else if( S_Line == E_Line ) { k = 0; for( i = S_Page; i<= E_Page; i++ ) { if( S_Page == i )//刷第一页 { for( j = StartX; j< StartX + X_Len; j++) { // 用位或是为了不覆盖上方点阵显示 OLED_Buff[j] |= pIMG[k]<<(S_Line); k++; } } else if( (E_Page) == i ) { for( j = StartX; j< StartX + X_Len; j++) { // 用位或是为了不覆盖下方点阵显示 OLED_Buff[j]| = pIMG[k-X_Len]>>(8-S_Line); k++; } } else { for( j = StartX; j< StartX + X_Len; j++) { OLED_Buff[j] = (pIMG[k-X_Len]>>(8-S_Line))|(pIMG[k]<<(S_Line)); k++; } } } } } [/mw_shl_code]
以上,还请原子等各路玩过OLED—GUI的指点指点!
一下,送上视频,http://v.youku.com/v_show/id_XOTQ0NzYxODk2.html
各位,请注意玩这个的时候,如果你不适用并口来刷屏,最好是使用RAM大一点的MCU,然后建立缓冲区来刷,当然,如果你静态显示1234,那当我没说。
写得不好的地方还请各位多多指教

2015/5/6更新:完成字符,汉字字库嵌入SpiFlash中并实现在OLED显示,支持ASCII,汉字混合显示(ASCII要求宽是汉字的一半,同长)
                        调用方式: OLED_DrawStr(x,y,宽度,高度,“字符串”);


V0.0.2.rar

551.17 KB, 下载次数: 656

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2015-4-30 09:44:40 | 显示全部楼层
开往春天的手扶拖拉机
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-4-30 23:14:08 | 显示全部楼层
不错,你可以做的更好。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

22

主题

181

帖子

0

精华

高级会员

Rank: 4

积分
878
金钱
878
注册时间
2014-7-7
在线时间
311 小时
 楼主| 发表于 2015-5-6 10:44:13 | 显示全部楼层
回复【2楼】zuozhongkai:
---------------------------------
回复【3楼】正点原子:
---------------------------------
谢谢原子,必须有超越的目标,哈哈
回复 支持 反对

使用道具 举报

1

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
158
金钱
158
注册时间
2017-11-27
在线时间
46 小时
发表于 2017-12-8 14:00:46 | 显示全部楼层
缺文件呢
回复 支持 反对

使用道具 举报

1

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
158
金钱
158
注册时间
2017-11-27
在线时间
46 小时
发表于 2017-12-13 13:17:42 | 显示全部楼层
文件不全,无法编译
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 19:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表