OpenEdv-开源电子网

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

LCD显示字符问题

[复制链接]

1

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2016-9-28
在线时间
22 小时
发表于 2016-12-9 02:46:16 | 显示全部楼层 |阅读模式
1金钱
/**
* @brief  在 ILI9341 显示器上显示一个英文字符
* @param  usX :在特定扫描方向下字符的起始X坐标
* @param  usY :在特定扫描方向下该点的起始Y坐标
* @param  cChar :要显示的英文字符
* @param  usColor_Background :选择英文字符的背景色
* @param  usColor_Background :选择英文字符的前景色
* @retval 无
*/
void ILI9341_DispChar_EN ( uint16_t usX, uint16_t usY, const char cChar, uint16_t usColor_Background, uint16_t usColor_Foreground )
{
        uint8_t ucTemp, ucRelativePositon, ucPage, ucColumn;

       
        ucRelativePositon = cChar - ' ';
       
        ILI9341_OpenWindow ( usX, usY, macWIDTH_EN_CHAR, macHEIGHT_EN_CHAR );
       
        ILI9341_Write_Cmd ( macCMD_SetPixel );       
       
        for ( ucPage = 0; ucPage < macHEIGHT_EN_CHAR; ucPage ++ )
        {
                ucTemp = ucAscii_1608 [ ucRelativePositon ] [ ucPage ];
               
                for ( ucColumn = 0; ucColumn < macWIDTH_EN_CHAR; ucColumn ++ )
                {
                        if ( ucTemp & 0x01 )
                                ILI9341_Write_Data ( usColor_Foreground );
                       
                        else
                                ILI9341_Write_Data ( usColor_Background );                                                               
                       
                        ucTemp >>= 1;               
                       
                }/* 写完一行 */
               
        }/* 全部写完 */
       
}



________________________________________________

有语句不理解的我已经标注为红色了,特别是这一句

ucRelativePositon = cChar - ' ';


nChar 是英文字符
nChar - ‘ ’ 是什么意思????


最佳答案

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

就是去掉空格前面的ACSII码,因为ACSII空格前的都是控制字符
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

26

主题

105

帖子

0

精华

高级会员

Rank: 4

积分
894
金钱
894
注册时间
2015-10-25
在线时间
117 小时
发表于 2016-12-9 02:46:17 | 显示全部楼层
就是去掉空格前面的ACSII码,因为ACSII空格前的都是控制字符
回复

使用道具 举报

1

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2016-9-28
在线时间
22 小时
 楼主| 发表于 2016-12-9 03:00:15 | 显示全部楼层
百度了下,说是减去偏移量
回复

使用道具 举报

9

主题

58

帖子

0

精华

高级会员

Rank: 4

积分
542
金钱
542
注册时间
2016-2-24
在线时间
61 小时
发表于 2016-12-9 09:14:07 | 显示全部楼层
估计ucAscii_1608的第一个字符是空格。因此输入的Ascii码,减去空格的Ascii码,得到的结果就是ucAscii_1608中的对应字符位置。
回复

使用道具 举报

33

主题

481

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
5075
金钱
5075
注册时间
2013-10-4
在线时间
654 小时
发表于 2016-12-9 09:28:48 | 显示全部楼层
楼上正解
回复

使用道具 举报

1

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2016-9-28
在线时间
22 小时
 楼主| 发表于 2016-12-9 12:33:51 | 显示全部楼层
#ifndef __FONT_H
#define __FONT_H           


/*
* 常用ASCII表,偏移量32,大小:16(高度)* 8 (宽度)
*/
const unsigned char ucAscii_1608 [ 95 ] [ 16 ] = {       //@Fixedsys,阴码点阵格式,逐行逆向取摸
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",0*/
{0x00,0x00,0x00,0x18,0x3C,0x3C,0x3C,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00},/*"!",1*/
{0x00,0x00,0x00,0x66,0x66,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*""",2*/

额~~第一个确实是空格  有点思路了 自己在看看
回复

使用道具 举报

1

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2016-9-28
在线时间
22 小时
 楼主| 发表于 2016-12-9 18:58:04 | 显示全部楼层
chen5903710 发表于 2016-12-9 12:33
#ifndef __FONT_H
#define __FONT_H           

nChar - ‘ ’   空格就是32  偏移量  
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-25 07:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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