stm32f1 TFT LCD液晶屏显示汉字不需要建立全字库(可取字模32x32,16x16)

本文介绍了一种在4.3寸TFTLCD屏幕上显示32x32汉字的方法,无需建立复杂字库,仅需取模软件获取所需汉字,通过定义汉字数据结构和显示函数实现简洁高效的汉字显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在准备做19年电子设计大赛本校的校赛题目 数字式相位测量仪,便开始用4.3寸的TFT LCD液晶屏开始显示所测量的相位差,周期,频率数据。然后便开始自己设计界面UI来了。之前一直想写此博客了,但是一直没时间然后拖到了现在。正点原子的视频教程上通过TFT液晶屏显示汉字是通过建立字库进行显示,个人感觉比较繁琐,况且在做比赛或者其它的显示的时候都只需要几个汉字就差不多了,所以不需要这么麻烦去建立字库,只需通过取模软件取出自己所需的汉字,简单明了。

 


一、汉字字模的数据结构定义(32x32字模

1、// 汉字内码索引

2、 // 点阵码数据






二、建立汉字字模表

取模软件的设置如下:

可以看到我们上面的图片中写字体点阵为:宽x高=32x33,但是应该是32x32,也就是我们取模时会多出32个字节,那四位16进制一般都是0,所以我们直接把他给删掉。如下图红色圈出的部分:






三、汉字显示函数编写

//32X32汉字
void PutHZ3232(unsigned short x, unsigned short  y, unsigned char c[2], unsigned int dcolor,unsigned int bgcolor){
	unsigned int i,j,k;

	//TFT_SetWindow(x,y,x+32-1, y+32-1);     //选择坐标位置
	LCD_Set_Window(x,y,32,32);
	LCD_SetCursor(x,y);
	LCD_WriteRAM_Prepare();
	for (k=0;k<40;k++) { //15标示自建汉字库中的个数,循环查询内码
	  if ((codeHZ_32[k].Index[0]==c[0])&&(codeHZ_32[k].Index[1]==c[1])){ 
    	for(i=0;i<128;i++) {
		  unsigned short m=codeHZ_32[k].Msk[i];
		  for(j=0;j<8;j++) {
			if((m&0x80)==0x80) {
				LCD_WR_DATA(dcolor);
				}
			else {
			    LCD_WR_DATA(bgcolor);
				}
			m<<=1;
			}    
		  }
		}  
	  }	
	}

void showhz32str(unsigned int x1,unsigned int y1,unsigned char *str,unsigned int dcolor,unsigned int bgcolor)	 
     {  unsigned char l=0;
        while(*str)
           {
     	   PutHZ3232(x1+l*16,y1,(unsigned char*)str,dcolor, bgcolor);
			str+=2;l+=2;
      }
    }

定义好了接着就可以在main函数里面使用了

具体的工程代码请移步:

数字式相位测量仪(2)stm32f1工程.zip_stm32与FPGA如何通信,收发数-C代码类资源-优快云下载

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蜻蜓队长c

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值