历史上的今天

今天是:2024年10月16日(星期三)

正在发生

2018年10月16日 | stm32之TFT触摸屏:通过LCD_ShowChar显示的过程分析

发布者:omicron25 来源: eefocus关键字:stm32  TFT触摸屏  LCD_ShowChar 手机看文章 扫描二维码
随时随地手机看文章

    使用TFT触摸屏时,想要对字符串,图形或者数字进行显示时,发现他们的库函数中都有一个最重要的函数LCD_ShowChar,貌似目前很少有人分析这个函数,虽然简单但是还是有点绕的。

    先贴一下这个函数的代码,由于函数显示分为叠加显示和非叠加显示,原理类似,所以只分析非叠加方式的部分应该就都懂了。

void LCD_ShowChar(u16 x,u16 y,u8 num,u8 size,u8 mode)

{    

    u8 temp,t1,t;

u16 y0=y;

u16 colortemp=POINT_COLOR;               

num=num-' ';//得到偏移后的值

if(!mode) //非叠加方式

{

   for(t=0;t

   {   

if(size==12)temp=asc2_1206[num][t];  //调用1206字体

else temp=asc2_1608[num][t]; //调用1608字体                    

       for(t1=0;t1<8;t1++)

{    

       if(temp&0x80)POINT_COLOR=colortemp;

else POINT_COLOR=BACK_COLOR;

LCD_DrawPoint(x,y);

temp<<=1;

y++;

if(x>=lcddev.width){POINT_COLOR=colortemp;return;}//超区域了

if((y-y0)==size)

{

y=y0;

x++;

if(x>=lcddev.width){POINT_COLOR=colortemp;return;}//超区域了

break;

}

}    

   }    

}

    1206字体和1608字体是两种不同的字号,就是一个横向6点,纵向12点,一个横向8点,纵向16点,从判断语句可以看出,二者对应的码表是不一样的,这个码表在工程里搜索一下,在font.h里,是一个二维数组。我们这里使用1608字体,以字母“M”为例。查一下码表中“M”对应的数组,如下:

{0x10,0x04,0x1F,0xFC,0x1F,0x00,0x00,0xFC,0x1F,0x00,0x1F,0xFC,0x10,0x04,0x00,0x00},

    ' '是码表的开始,由字母减去' '得到偏移量,也就是二维数组的第几行。第一个循环开始,就给临时变量temp赋值为数组的第一个值,由于是1608字体,因此也有一个数组中有16个数,第一个循环就是为了让temp遍历这16个数。

    之后第二个循环开始,由于数组中的每一个数均是8位,由于每次循环都会对temp左移一位,因此第二个循环的次数是8次。经if(temp&0x80)判断,如果数字的最高位为1,则进行描点的颜色为字体颜色,如果不是1,则描点颜色为底色。(PS:描点函数LCD_DrawPoint还是很简单滴,总的来说就是向写GRAM寄存器R20h,R21h写入我们希望写的点颜色,基本操作O(∩_∩)O)

    每次移位,y都会自加,第二个循环是8次,而size为16,也就是说数组中每读过两个数,y自加16次之后都会清零,然后x加1,就像列扫描一样,一列16个点结束后会进行到下一列。

    超区域那部分就是说超过size了,描个点就返回啦。下面以“M”为例描述下描点的过程。

    码表前8个

0x10   (0,3)

0x04   (0,13)

0x1F   (1,3),(1,4),(1,5),(1,6),(1,7)

0xFC   (1,8),(1,9),(1,10),(1,11),(1,12),(1,13)

0x1F   (2,3),(2,4),(2,5),(2,6),(2,7)

0x00   无

0x00   无

0xFC  (3,8),(3,9),(3,10),(3,11),(3,12),(3,13)

    码表后8个

0x1F  (4,3),(4,4),(4,5),(4,6),(4,7)

0x00  无

0x1F  (5,3),(5,4),(5,5),(5,6),(5,7)

0xFC  (5,8),(5,9),(5,10),(5,11),(5,12),(5,13)

0x10  (6,3)

0x04  (6,13)

0x00  无

0x00  无

    这个不直观啊,用matlab的scatter(x,y)描个点,正好就是TFT屏幕显示的“M”图形

stm32之TFT触摸屏(ILI9320)(1):通过LCD_ShowChar显示的过程分析
    以上就是ILI9320描点函数LCD_ShowChar(u16 x,u16 y,u8 num,u8 size,u8 mode)的全过程。希望第一次学的小伙伴看了能明白


关键字:stm32  TFT触摸屏  LCD_ShowChar 引用地址:stm32之TFT触摸屏:通过LCD_ShowChar显示的过程分析

上一篇:stm32之滴答定时器(1):滴答定时器在内核的位置
下一篇:STM32的DMA用串口的接收

推荐阅读

截至今年上半年,三星电子的半导体业务部门和SK海力士占韩国前100家公司营业利润总额的40.2%。随着存储芯片价格开始出现下滑,韩国业界对整个国家经济放缓的担忧不断增加。 据相关行业消息及企业评估公司CEO Score日前发布的信息显示,今年上半年,钱100家公司的营业利润总额为82.28万亿韩元(726.2亿美元)。 三星电子的半导体部门在此期间的营业利润...
据外媒报道,当地时间10月15日,科技公司大陆(Continental)宣布与3M公司建立协作评估合作伙伴关系,以评估基础设施到车辆(I2V)接口,此类接口位于与基础设施相关的物体和技术(包括路面标记、显著的标志和其他位于道路环境或附近的地标)以及与车辆相关的技术之间。(图片来源:大陆官网)现在的基础设施在某些方面缺乏一致性、统一性、性能规范和维护...
集微网10月16日消息,昨晚索尼正式推出了索尼Xperia 5 II,索尼Xperia 1 II也正式在国内上市,这是索尼首批支持 5G 的 Xperia 旗舰智能手机,Xperia 5 II是索尼首款支持120Hz高刷新率的手机,8+256GB售价为5999元,11月初上市。索尼Xperia 1 II的12+256版售价7999元10月下旬上市。索尼Xperia 5 II采用6.1英寸OLED屏幕,FHD+分辨率,支持120H...
10月14日晚间,永太科技发布三季报显示,公司主营收入32.73亿元,同比上升32.25%;归母净利润3.75亿元,同比上升65.25%;扣非净利润4.11亿元,同比上升200.79%;负债率57.47%,投资收益5019.73万元,财务费用9422.4万元,毛利率34.56%。永太科技称,报告期内业绩同比增长较多,主要来源于公司锂电材料产品的业绩增长。其中:六氟磷酸锂产品的下游市场需求...

史海拾趣

问答坊 | AI 解惑

设计巧妙简单的声控电子门铃

利用本电路作为门铃时,不需在门前安装按钮开关,来客只需叩一下大门,门铃便会发声。电路如图所示。 电路最大的特点就是利用扬声器做振动输入,又做门铃声输出。     晶体管V2、电位器KP和电容C2组成控制电路,V1、V3、R2、C1组成互 ...…

查看全部问答∨

收集点灯泡验光控制器设计的资料 单片机做的

MCU准备用89C51    然后电流传感器用来测电流  AD转换用那个芯片好?  主要是确定了元器件 电路怎么连。。。。…

查看全部问答∨

spi驱动问题

请教各位大哥: 驱动insmod成功,也创建了节点,但是open就出现错误。内核版本2.6.18,pxa270的片子。 Unable to handle kernel NULL pointer dereference at virtual address 00000019 pgd = c0b7c000 [00000019] *pgd=a0385031, *pte=0000000 ...…

查看全部问答∨

EVC如何获取SD卡的物理盘符?

EVC如何获取SD卡的物理盘符?如:DISK2 …

查看全部问答∨

求救:关于AD6654

   小弟今日购买了一款AD6654/PCBZ评估板,在测试过程中出现几个问题,ADI的售后服务真是不敢恭维,一点忙也帮不上,主要的问题是在使用配套的软件AD6654 Evaluation Software 的过程中,在关于NCO频率的设置的一栏中,几个参数怎么设计 ...…

查看全部问答∨

vs2005+PB6.0打开工程文件弹出missing catalog items in os design

vs2005+PB6.0打开工程文件弹出missing catalog items in os design窗口,为什么会弹出这样的窗口?要如何选择列表里的项目? Item:MS:sysgen_dotnetv35 Item:MS:sysgen_dotnetv35_support Item:MS:sysgen_sdbus2 …

查看全部问答∨

推荐用于测试CE程序的PPC

现需要真机进行CE程序测试,希望价格便宜的PPC,具体蓝牙,无限功能,PPC系统软件可刷到WM5.0,现在选型阶段,不知道哪款最好!谢谢…

查看全部问答∨

发一个PIC的开源机器人!~

PIC的开源机器人!~ [ 本帖最后由 wanghongyang 于 2010-10-7 19:43 编辑 ]…

查看全部问答∨

求助,avr128的串口通信问题

我用AVR128的串口进行数据收发,接收用中断方式,单步执行时,发现数据不能全部接受到,掉了几个字节,也就造成我对这个数组的CRC校验出错,全速运行时,字节全部接收正确,但对接收数组的数据的CRC校验还是错,请问是什么原因呢??急…

查看全部问答∨

四对差分信号转成一对差分信号

本帖最后由 dontium 于 2015-1-23 12:48 编辑 大家好,请问TI的产品线中有没有什么芯片可以把四对差分信号转成一对差分信号。 如有相关信息,可同我交流 Q511294874 …

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved