OpenEdv-开源电子网

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

oled字库与ascll编码对应问题

[复制链接]

3

主题

7

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2017-9-17
在线时间
8 小时
发表于 2017-9-26 21:11:37 | 显示全部楼层 |阅读模式
15金钱
void OLED_ShowChar(u8 x,u8 y,u8 chr,u8 size,u8 mode)
{                                  
        u8 temp,t,t1;
        u8 y0=y;
        u8 csize=(size/8+((size%8)?1:0))*(size/2);                //得到字体一个字符对应点阵集所占的字节数
        chr=chr-' ';//得到偏移后的值                 
    for(t=0;t<csize;t++)
    {   
                if(size==12)temp=asc2_1206[chr][t];                  //调用1206字体
                else if(size==16)temp=asc2_1608[chr][t];        //调用1608字体
                else if(size==24)temp=asc2_2412[chr][t];        //调用2412字体
                else return;                                                                //没有的字库
        for(t1=0;t1<8;t1++)
                {
                        if(temp&0x80)OLED_DrawPoint(x,y,mode);
                        else OLED_DrawPoint(x,y,!mode);
                        temp<<=1;
                        y++;
                        if((y-y0)==size)
                        {
                                y=y0;
                                x++;
                                break;
                        }
                }           
    }         
}  中chr=chr-'  ‘是什么意思例程有这样一条语句  OLED_ShowString(0,0,"ALIENTEK",24);  经过各种调用把 A赋值给chr 但是A的ascll是65   ' '是94 chr=chr-'  ‘减一下不就是-29吗 但是程序确实显示了一个A可是字库中是
{0x00,0x04,0x00,0x3C,0x03,0xC4,0x1C,0x40,0x07,0x40,0x00,0xE4,0x00,0x1C,0x00,0x04},/*"A",33*/   是33啊  真的搞不懂

最佳答案

查看完整内容[请看2#楼]

chr=chr-' ';//得到偏移后的值 ------------定义的字库是从 空格 开始的, 请看:/* *********************************************** 8×16点阵西文字库文件,字的横向8点构成一字节, 左边点在字节的高位,字符点阵四角按: 左上角→右上角→左下角→右下角取字 ********************************************** */ const unsigned char ASCII_16_Dot[ ] = { /* CHAR_20 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00, ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

15

主题

172

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1276
金钱
1276
注册时间
2016-5-31
在线时间
499 小时
发表于 2017-9-26 21:11:38 | 显示全部楼层
chr=chr-' ';//得到偏移后的值 ------------定义的字库是从 空格 开始的,
请看:/*
***********************************************
8×16点阵西文字库文件,字的横向8点构成一字节,
左边点在字节的高位,字符点阵四角按:
左上角→右上角→左下角→右下角取字
**********************************************
*/

const unsigned char ASCII_16_Dot[  ] = {
/*    CHAR_20 */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*!   CHAR_21 */
0x00,0x00,0x18,0x3C,0x3C,0x3C,0x18,0x18,
0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00,

/*"   CHAR_22 */
0x00,0x66,0x66,0x66,0x24,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*#   CHAR_23 */
0x00,0x00,0x00,0x6C,0x6C,0xFE,0x6C,0x6C,
0x6C,0xFE,0x6C,0x6C,0x00,0x00,0x00,0x00,

/*$   CHAR_24 */
0x18,0x18,0x7C,0xC6,0xC2,0xC0,0x7C,0x06,
0x86,0xC6,0x7C,0x18,0x18,0x00,0x00,0x00,

/*%   CHAR_25 */
0x00,0x00,0x00,0x00,0xC2,0xC6,0x0C,0x18,
0x30,0x60,0xC6,0x86,0x00,0x00,0x00,0x00,

/*&   CHAR_26 */
0x00,0x00,0x38,0x6C,0x6C,0x38,0x76,0xDC,
0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00,

/*'   CHAR_27 */
0x00,0x30,0x30,0x30,0x60,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*(   CHAR_28 */
0x00,0x00,0x0C,0x18,0x30,0x30,0x30,0x30,
0x30,0x30,0x18,0x0C,0x00,0x00,0x00,0x00,

/*)   CHAR_29 */
0x00,0x00,0x30,0x18,0x0C,0x0C,0x0C,0x0C,
0x0C,0x0C,0x18,0x30,0x00,0x00,0x00,0x00,


/*以下省略部分为: 其它的字库点阵数据*/
/*
******
******

******
*/

}

那么从这个字库中,就可以得到: 例如左括号“ (” 在字库中的偏移就是:
0x28 -0x20 =0x08;  
这就是程序语句  char =char -' ';  //说明:单引号内的字符是 空格!!!


回复

使用道具 举报

15

主题

172

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1276
金钱
1276
注册时间
2016-5-31
在线时间
499 小时
发表于 2017-9-26 21:33:30 | 显示全部楼层
还要提醒楼主的就是: 字库数据,是点阵字库,知道这些了,你就明白了!
回复

使用道具 举报

3

主题

7

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2017-9-17
在线时间
8 小时
 楼主| 发表于 2017-9-27 19:25:58 | 显示全部楼层
xfcjava3 发表于 2017-9-26 21:33
还要提醒楼主的就是: 字库数据,是点阵字库,知道这些了,你就明白了!

我懂了  谢谢啦
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-19 20:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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