侵权投诉
订阅
纠错
加入自媒体

基于Apollo2 SDK上OLED屏幕的实现

2019-04-01 14:32
润欣科技
关注

显示效果如下图:

(图10)文字显示效果

9.OLED屏幕图片显示

照片显示和文字显示原理相同,也是点亮相对应的像素点。

该函数当中,x0 ,y0表示的是图片所显示的的起始坐标,x1 表示的是图片像素的x轴所占的像素,y1表示的是页数(0-7)

将想要显示的图片,转换成BMP格式之后,通过PCtolCD2002的图片模式进行转换。设置如下:选择阴码,逆向,十六进制输出。

(图11)图片取模选项设置

(图12)图片取模界面

将所生成的十六进制数据进行,修改对齐后,装到BMP数组当中。在主函数当中就可以直接显示了,效果如下图。

(图13)图片显示效果

后记

在调试当中遇到的一些需要注意的点:

1、在freeRTOS下,使用OLED屏幕的话,需要预先启用SPI相对于的IOM 口。

需要用到函数:

am_hal_pwrctrl_periph_enable(uint32_t ui32Peripheral)进行相应的配置。同理在进行低功耗处理的时候,可以关闭SPI接口。

am_hal_pwrctrl_periph_enable(uint32_t ui32Peripheral)

am_hal_debug_assert_msg(ONE_BIT(ui32Peripheral),

"Cannot enable more than one peripheral at a time.");

//

// Begin critical section.

//

AM_CRITICAL_BEGIN_ASM

//

// Enable power control for the given device.

//

AM_REG(PWRCTRL, DEVICEEN) |= ui32Peripheral;

//

// End Critical Section.

//

AM_CRITICAL_END_ASM

//

// Wait for the power to stablize.  Using a simple delay loop is more

// power efficient than a polling loop.

//

am_hal_flash_delay(AM_HAL_PWRCTRL_DEVICEEN_DELAYCYCLES / 3);

//

// Quick check to guarantee we're good (should never be more than 1 read).

//

POLL_PWRSTATUS(ui32Peripheral);

2、OLED屏幕在进行Clear的时候,屏幕不干净

(图14)屏幕刷新有残留

原因是:写到寄存器第一列和第二列的数据被驱动芯片当做乱码并在 显示屏的最后一列显示出来。修改如下:

把程序中“所有 X”轴的值改成 132,如下图定义的是 X 轴与 Y 轴。

同时,clear函数里面,循环发送数据的次数,也应该从n<128 改为 n<132。

3、图片显示函数

void OLED_DrawBMP(unsigned char x0, unsigned char y0,unsigned char x1,

unsigned char y1,unsigned char BMP[])

unsigned int j=0;

unsigned char x,y;

if(y1%8==0) y=y1/8;

else y=y1/8+1;

for(y=y0;y<y1;y++)

OLED_Set_Pos(x0,y);

for(x=x0;x<x1;x++)

OLED_WR_Byte(BMP[j++],OLED_DATA);

在使用该函数的时候,首先要注意的是,y1表示的是页数(0-7)也就是前文指的page,而不是你所给照片取模的Y轴的像素。其次在照片取模当中,尽量控制为128*64的大小。如果图片大小无法满足,则在使用OLED_DrawBMP()的时候,x与x1的数据差应该就是你图片的像素大小。

例如:

我的照片大小为 (92 X 60 ),如果选择屏幕显示的起始坐标点为(0,0)

则函数为:OLED_DrawBMP(0,0,92,7,BMP);

但是当你想移动图片的位置,修改为

OLED_DrawBMP(18,0,92,7,BMP);显示的结果会出现乱码。正确的方式是改为OLED_DrawBMP(18,0,110,7,BMP);

文章来源:润欣科技Fortune微信公众号

<上一页  1  2  3  
声明: 本文由入驻维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。

发表评论

0条评论,0人参与

请输入评论内容...

请输入评论/评论长度6~500个字

您提交的评论过于频繁,请输入验证码继续

暂无评论

暂无评论

    电子工程 猎头职位 更多
    扫码关注公众号
    OFweek电子工程网
    获取更多精彩内容
    文章纠错
    x
    *文字标题:
    *纠错内容:
    联系邮箱:
    *验 证 码:

    粤公网安备 44030502002758号