正点原子4.3寸电容屏显示任意大小汉字以及图片显示
今天在做毕业设计时候,为了让内容显示更加好看,我在考虑使用整点原子探索者显示任意大小汉字,发现正点原子的开发板历程中都是通过SD卡内容读取,而且相对来说比较麻烦,下面介绍一种可以通过数据存储少量汉字的方法。这个方法是借鉴一个博主的方法,但是他的只能固定显示16*16或者24*24的方法,本来想引用下那位博主的文章,但因为扒的文章太多的情况,我也没有找到,非常感谢这位博主的文章。我在这个基础上对函数做了一些修改,可以实现显示任意大小的汉字,但是目前显示的长宽必须相等,不相等的情况我还没尝试过。
首先对PCtoLC2002的设置
目前这个地方需要注意一点,就是字模每行显示数据的设置和在外框中的设计要一样。
首先贴出函数(此函数是我借鉴博主的原版,非常感谢这位博主)
void Test_Show_DESIGNER_Font24(u16 x,u16 y,u8 index,u16 color)
{ u8 temp,t,t1;u16 y0=y; for(t=0;t<72;t++)//每个24*24的汉字点阵 有72个字节{ if(t<24)temp=Designer[index*3][t]; //前24个字节else if(t<48)temp=Designer[index*3+1][t-24]; //中24个字节 else temp=Designer[index*3+2][t-48]; //后24个字节for(t1=0;t1<8;t1++){if(temp&0x80)LCD_Draw_Point(x,y,color);//画实心点else LCD_Draw_Point(x,y,BACK_COLOR); //画空白点(使用背景色)temp<<=1;y++;if((y-y0)==24){y=y0;x++;break;}} }
}
Designer是我个人命名的二维数组名字,移植时可以进行修改。首先我们对这个函数做一个分析
这是我生成的一组数组,我们首先对这个数组进行一个分析,24*24等于576,总共有72字节的长度。每个字有三行,每行长度是24,所以代码的写法如下
for(t=0;t<72;t++)//每个24*24的汉字点阵 有72个字节{ if(t<24)temp=SCHOOL_CLASS[index*3][t]; //前24个字节else if(t<48)temp=SCHOOL_CLASS[index*3+1][t-24]; //中24个字节 else temp=SCHOOL_CLASS[index*3+2][t-48]; //后24个字节for(t1=0;t1<8;t1++)//处理一个字节
所以当我们想将字体编程48乘48大小时,我们可以做一个类比
48乘48 字体每行长度是48,总共六行,总共288字节,所以修改后的代码为:
void Test_Show_title_Font48(u16 x,u16 y,u8 index,u16 color)
{ u16 temp,t,t1;u16 y0=y; for(t=0;t<288;t++)//每个48*48的汉字点阵 有288个字节 需要进行六次判断{ if(t<48)temp=title[index*6][t]; //前48个字节 1else if(t<96)temp=title[index*6+1][t-48]; //48~96个字节 2 else if(t<144)temp=title[index*6+2][t-96]; //96~144个字节 3else if(t<192)temp=title[index*6+3][t-144]; //4else if(t<240)temp=title[index*6+4][t-192]; //5else if(t<288)temp=title[index*6+5][t-240]; //6for(t1=0;t1<8;t1++){if(temp&0x80)LCD_Draw_Point(x,y,color);//画实心点else LCD_Draw_Point(x,y,BACK_COLOR); //画空白点(使用背景色)temp<<=1;y++;if((y-y0)==48){y=y0;x++;break;}} }
}
因此我们可以通过这个方法对这个函数修改,可以实现任意大小汉字的显示。
顺便写一下图片的显示函数:
关于图片的配置:
注意分辨率的大小需要一样,不然会造成显示的图片混乱问题,后续直接调用以下函数既可。
#define LCD_HEIGHT 800 //此处是你的屏幕分辨率
#define LCD_WIDTH 480
/****************************************************
函数名:LCD_DrawPoint
形参:x,y:坐标
返回值:POINT_COLOR:此点的颜色
函数功能:画点函数
****************************************************/
void LCD_DrawPoint_user(u16 x,u16 y,u16 c)
{ LCD_SetCursor(x,y); //设置光标位置 LCD_WriteRAM_Prepare(); //开始写入GRAMLCD->LCD_RAM=c;
}
/**************************************************************************
***** 函数名: LCD_Show_Photo()
***** 功能: 显示指定大小图片
***** 参数: x0 开始位置,y0开始位置 ,high高度,width 宽度 ,bmp 图片数据数组
***** 返回值: 无
****************************************************************************/
void LCD_Show_Photo(int x0,int y0,int width,int high,const unsigned char photo[])
{int x,y;u32 c;int p = 0;for( y = y0 ; y < (high+y0) ; y++ ){for( x = x0 ; x < (width+x0) ; x++ ){c = photo[p+1] | (photo[p]<<8) ;//竖屏if ( ( (x) < LCD_WIDTH) && ( (y) < LCD_HEIGHT) )//横屏//if ( ( (x) < LCD_HEIGHT) && ( (y) < LCD_WIDTH) )LCD_DrawPoint_user(x,y,c); p = p + 2 ;}}
}
正点原子4.3寸电容屏显示任意大小汉字以及图片显示相关推荐
- STM32F407虚拟键盘--4.3寸电容屏构建思路以及工程代码例程。(免费)
前言: 第一次利用F407成功编写虚拟键盘,本文章通过分享自己编写程序的思路与步骤的心路历程.该工程讲解清晰,适合新手,其中有很多细节,请读者仔细阅读,工程程序源码放在最后(免费,百度网盘自提). 硬 ...
- 【正点原子FPGA连载】第三十九章OV7725摄像头RGB-LCD显示实验 -摘自【正点原子】新起点之FPGA开发指南_V2.1
1)实验平台:正点原子新起点V2开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609758951113 2)全套实验源码+手册+视频下载地址:ht ...
- 单片机设计 游戏_五子棋+黄金矿工+贪吃蛇(STM32、4.3寸电容屏)
单片机设计 游戏_五子棋+黄金矿工+贪吃蛇(STM32.4.3寸电容屏) 想要更多项目私wo!!! 一.电路设计 此电路由STM32F1精英版和4.3寸电容屏TFTLCD组成. 二.运行效果 三.部分 ...
- NUC972-5寸电容屏-linux-drv-chrdevbase
NUC972-5寸电容屏-linux-drv-chrdevbase drv_chrdevbase.c #include <linux/types.h> #include <linux ...
- STM32正点原子TFT-LCD1.3寸(240x240)液晶显示屏移植
吐槽 屏幕太贵了....40多一块,而且还只有1.3寸.记录本篇的目的是为了我换了更大的屏幕,为了以后需要特此记录. 如何移植 我相信各位都拘泥于库,有人用hal库,有人用标准库等等,万变不离其宗,库 ...
- 【正点原子FPGA连载】第四十四章MT9V034摄像头HDMI显示实验 -摘自【正点原子】新起点之FPGA开发指南_V2.1
1)实验平台:正点原子新起点V2开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609758951113 2)全套实验源码+手册+视频下载地址:ht ...
- 【正点原子FPGA连载】 第二十四章 RTC实时时钟LCD显示实验-摘自【正点原子】领航者ZYNQ之FPGA开发指南_V2.0
1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...
- FT5X06 如何应用在10寸电容屏(linux-3.5电容屏驱动简析移植10寸电容屏驱动到Android4.2) (by liukun321咕唧咕唧)
这是几个月以前的东西了,在彻底遗忘之前拿出来好好写写.做个笔记,也算是造福后来人了.在做这个项目之前,没有做过电容屏的驱动,印象中的电容触摸屏是不需要校正的.IC支持多大的屏就要配多大的屏.但是拿到需 ...
- STM32 利用cubemx配置正点原子4.3寸TFT-LCD 驱动芯片NT35510
主控芯片是STM32F103ZET6 利用CUBEMX配置可以省去初始化函数中的初始化GPIO.FSMC和时钟等步骤 原理图 4.3寸的也是通用的 # CUBEMX配置 特别注意,除了配置这些外,还要 ...
最新文章
- php非,PHP实现非对称加密
- 移植Python2到TQ2440
- 2019牛客暑期多校训练营(第十场)
- 让不支持h5新标签的浏览器支持新标签
- java千万用户实现实时排名_想知道谁是你的最佳用户?基于Redis实现排行榜周期榜与最近N期榜...
- 苹果挂端口方法_调音台变身直播声卡的方法
- 信奥中的数学:前缀和与差分、大整数开方技巧
- 保持进程在Shell退出后能继续运行的方法
- php入门案例,thinkphp3.2.1入门之--简单案例实现
- 多种富文本编辑器的对比
- 自动化运维工具 puppet
- 什么是计算机病毒?中国黑客教父告诉你
- 抓包工具charles下载安装(破解版)
- 冒险岛079单机搭建流程
- 如何利用魔棒工具抠图_10秒教你如何用PS魔棒工具抠图
- 任正非讲话稿400篇_重磅干货丨任正非讲稿400篇(1994—2018)
- java实现中国象棋 源代码
- CSV文件用Excel打开各种问题
- 免费全平台直播推流软件OBS Studio应用
- CentOS7安装OpenStack(Rocky版)-02.安装Keyston认证服务组件(控制节点)
热门文章
- 现代控制理论输出y_现代控制理论-3
- 骁龙870和麒麟980哪个好 骁龙870和麒麟980对比哪个更强
- Linux游戏产业迎来新曙光
- 由正则表达式提取 html action的属性值,谈零宽断言
- 3D小游戏——3D版俄罗斯方块
- 如何入门网络安全_网络安全自学
- 22 款终端生产力工具,效率飞起!
- 3dmax:3dmax三维VR渲染设置之高级灯光渲染(常规参数设置—灯光类型、阴影贴图、区域阴影、强度颜色衰减、衰退、远距衰减、聚光灯参数、大气和效果mental ray间接照明)图文教程之详细攻略
- 现代人的焦虑症或许根源在于网络社交过于频繁!?
- 【介绍】好用的网页查词插件(greasy fork 插件):iciba划词翻译