432|2

1268

帖子

0

资源

纯净的硅(高级)

【平头哥RVB2601创意应用开发】+LCD屏显示功能扩展 [复制链接]

在RVB2601开发板上配有LCD显示屏,通过它可以解决信息显示的需要。稍感不足的是在例程中只提供了一个图片显示的功能,却未提供对相应的字符及数值显示函数的支持,因此需要按自己的需求来进行扩展。

为此可以参照例程中的函数Fill_RAM()来设计字符显示函数。

函数Fill_RAM()的内容为:

void Fill_RAM(unsigned char Data)
{
    unsigned char i, j;
    for (i = 0; i < 8; i++) 
    {
        Set_Start_Page(i);
        Set_Start_Column(0x00);
        for (j = 0; j < 128; j++) 
        {
            Write_Data(Data);
        }
    }
}

其主要是将满屏的显示存储器填入指定的数据,共8*128个字节。

若显示一个8*16点阵的字符,则需要2*16个字节。相应的字模可通过工具软件来提取或直接选取相应的字库数组来使用,例如使用OLED屏的字库就可以解决问题。

其字库的数组格式为:

unsigned char  const  F8X16 [][16]=

{

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},// 0

{0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00},//! 1

{0x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//" 2

...

}

 

实现字符显示的函数为:

void  ShowChar(unsigned char col,unsigned char row,unsigned char num)
{
         unsigned char i,j;
         num=num-' ';
         for(i=0;i<2;i++)
         {
            Set_Start_Page(row/8+i);
            Set_Start_Column(col);
            for(j=0;j<8;j++)
            {
                Write_Data(F8X16 [num][i*8+j]);
            }
         }
} 

 

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

void show_string(unsigned char col,unsigned char row,unsigned char *s)
{
         while(*s!='\0')
         {
                   ShowChar(col,row,*s++);
                   col+=8;
                   if(col>127)
                   {
                            col=0;
                            row+=16;
                   }
         }
}

 

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

int main(void)
{
    board_yoc_init();
    oled_init();
    show_string(10, 8, "RVB2601");
    show_string(10, 24, "OLED test");
    while (1);
    return 0;
}

image-20220511224027-1.png  

图1 字符显示效果

 

数值显示的函数为:

void ShowNum(uint8_t  col,uint8_t  row,uint32_t num,uint8_t len)
{
    uint8_t t,temp;
    uint8_t enshow=0;
    for(t=0;t<len;t++)
    {
        temp=(num/oled_pow(10,len-t-1))%10;
        if(enshow==0&&t<(len-1))
        {
            if(temp==0)
            {
                LCD_ShowChar( col +8*t,  row,' ');
                continue;
            }
            else
            {
                enshow=1;
            }
        }
        LCD_ShowChar( col+8*t,  row,temp+'0');
    }
}

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

int main(void)
{
    board_yoc_init();
    oled_init();
    show_string(10, 8, "RVB2601");
    show_string(10, 24, "OLED test");
    ShowNum(10,40,123,3);
    while (1);
    return 0;
}

image-20220511224027-2.png  

图2 数值显示效果

 

通过对LCD屏的显示功能扩展,再遇到信息显示问题解决起来就方便许多。


回复

1151

帖子

3

资源

版主

加油补作业。。。。差不多了吧

点评

还差传感器与音频方面的  详情 回复 发表于 2022-5-12 09:54

回复

1268

帖子

0

资源

纯净的硅(高级)

lugl4313820 发表于 2022-5-12 06:47 加油补作业。。。。差不多了吧

还差传感器与音频方面的


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

查找数据手册?

EEWorld Datasheet 技术支持

最新文章 更多>>
    关闭
    站长推荐上一条 1/10 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表