3424|4

1532

帖子

1

TA的资源

五彩晶圆(初级)

楼主
 

【安信可蓝牙开发板PB-02-Kit测评】OLED 屏的显示驱动 [复制链接]

尽管安信可蓝牙开发板PB-02-Kit是面向蓝牙应用而设计的,但也不妨碍我们为它配置更多的外设以丰富功能,例如为它配上一个OLED屏来显示信息。

为了节省引脚资源,这里使用的是I2C接口的OLED屏,该显示屏与开发板的连接关系为:

SCL—P1

SDA—P2

为此,对所用引脚的配置语句为:

hal_gpio_pin_init(P1, OEN);

hal_gpio_write(P1, 1);

hal_gpio_pin_init(P2, OEN);

hal_gpio_write(P2, 1);

为输出高低电平,所定义的语句为:

#define OLED_SCLK_Clr()                hal_gpio_write(P1, 0);

#define OLED_SCLK_Set()               hal_gpio_write(P1, 1)

#define OLED_SDIN_Clr()               hal_gpio_write(P2, 0);

#define OLED_SDIN_Set()               hal_gpio_write(P2, 1);

OLED屏的初始化函数为:

void OLED_Init(void)
{
    Write_IIC_Command(0xAE); //display off
    Write_IIC_Command(0x40);//--set start line address
    Write_IIC_Command(0xb0);//Set Page Start Address for Page Addressing Mode,0-7
    Write_IIC_Command(0xc8);//Set COM Output Scan Direction
    Write_IIC_Command(0x81);//--set contrast control register
    Write_IIC_Command(0xff);
    Write_IIC_Command(0xa1);//--set segment re-map 0 to 127
    Write_IIC_Command(0xa6);//--set normal display
    Write_IIC_Command(0xa8);//--set multiplex ratio(1 to 64)
    Write_IIC_Command(0x1F);
    Write_IIC_Command(0xd3);//-set display offset
    Write_IIC_Command(0x00);//-not offset
    Write_IIC_Command(0xd5);//--set display clock divide ratio/oscillator frequency
    Write_IIC_Command(0xf0);//--set divide ratio
    Write_IIC_Command(0xd9);//--set pre-charge period
    Write_IIC_Command(0x22);
    Write_IIC_Command(0xda);//--set com pins hardware configuration
    Write_IIC_Command(0x02);
    Write_IIC_Command(0x8d);//--set DC-DC enable
    Write_IIC_Command(0x14);
    Write_IIC_Command(0xdb);//--set vcomh
    Write_IIC_Command(0x49);//0x20,0.77xVcc
    Write_IIC_Command(0xaf);//--turn on oled panel
}

为了测试OLED屏的可驱动性,所设计的测试函数为:

void OLED_Clearb(void)
{
    uint8_t i,n;
    for(i=0;i<8;i++)
    {
        OLED_WR_Byte(0xb0+i,OLED_CMD);
        OLED_WR_Byte(0x00,OLED_CMD);
        OLED_WR_Byte(0x10,OLED_CMD);
        for(n=0;n<128;n++) OLED_WR_Byte(0xf0,OLED_DATA);
    }
}

在下载程序后,其测试效果如图1所示。

 

图1测试效果

在完成了驱动测试后,通过添加字符显示及字符串显示函数即可实现字符显示功能。

实现字符串显示的函数为:

void OLED_ShowString(uint8_t x,uint8_t y,uint8_t *chr,uint8_t Char_Size)
{
    unsigned char j=0;
    while (chr[j]!='\0')
    {       
            OLED_ShowChar(x,y,chr[j],Char_Size);
            x+=8;
            if(x>120)
            {
                x=0;
                y+=2;
            }
            j++;
    }
}

实现图2所示显示效果的主程序为:

int app_main(void)
{
        /* Initialize the operating system */
        osal_init_system();
        osal_pwrmgr_device( PWRMGR_BATTERY );
        hal_gpio_pin_init(P1, OEN);
        hal_gpio_write(P1, 1);
        hal_gpio_pin_init(P2, OEN);
        hal_gpio_write(P2, 1);
        hal_gpio_pin_init(P31, IE);
        OLED_Init();
        OLED_Clearb();
        while(hal_gpio_read(P31));
        OLED_Clear();
        OLED_ShowString(20,0,"PB-02-kit",16);
        OLED_ShowString(20,2,"jinglixixi",16);
        while(1)
        {
                delay(1000);
                hal_gpio_write(P34, 1);
                hal_gpio_write(P0, 1);
                delay(1000);
                hal_gpio_write(P34, 0);
                hal_gpio_write(P0, 0);
        }
        /* Start OSAL */
        osal_start_system(); // No Return from here
        return 0;
}

经程序下载,其显示效果如图2所示。

 

图2字符显示效果

有了OLED屏的显示功能,后面再有信息其显示的任务就可以交它完成了!

此帖出自无线连接论坛

最新回复

IIC的oled,很适合消费类的产品。瞬间高大上。   详情 回复 发表于 2021-12-1 09:34
点赞 关注
 

回复
举报

6828

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

用I2C接口配备一个OLED屏,也节省了资源

此帖出自无线连接论坛

点评

两者的确很搭!  详情 回复 发表于 2021-12-1 09:57
 
 

回复

994

帖子

3

TA的资源

一粒金砂(高级)

板凳
 

IIC的oled,很适合消费类的产品。瞬间高大上。

此帖出自无线连接论坛
 
 
 

回复

1532

帖子

1

TA的资源

五彩晶圆(初级)

4
 
machinnneee 发表于 2021-12-1 09:34 IIC的oled,很适合消费类的产品。瞬间高大上。

此帖出自无线连接论坛
 
 
 

回复

1532

帖子

1

TA的资源

五彩晶圆(初级)

5
 
Jacktang 发表于 2021-12-1 07:22 用I2C接口配备一个OLED屏,也节省了资源

两者的确很搭!

此帖出自无线连接论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
快速回复 返回顶部 返回列表