`
hzy3774
  • 浏览: 992127 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

单片机控制点阵字符显示及字模提取原理

 
阅读更多

    单片机应用经常会用到液晶显示或者LED点阵屏,是用点阵的方式显示的,要显示汉字或字符的时候会用到字模,字模就是字在点阵上显示时对应的编码。以字模的方式存储图形或者文字,每一个点都需要一个bit位来存储,该位为0代表该像素点不显示,为1代表显示。这样,一个字节就可以存储8个像素点的显示情况。

    一般采用宋体小四号的字符来做显示,这样一个英文字符刚好占8*16个像素;而汉字需要两倍,即16*16像素来显示一个汉字。这样,存储一个英文字符每行8个点需要1个字节存储,一共16行需要16个字节,

 同理一个汉字需要32个


所以如果M这个英文字符按从左到右从上到下的方式从高位到低位取模

0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 
1 1 1 0 1 1 1 0 
0 1 1 0 1 1 0 0 
0 1 1 0 1 1 0 0 
0 1 1 0 1 1 0 0 
0 1 1 0 1 1 0 0 
0 1 0 1 0 1 0 0 
0 1 0 1 0 1 0 0 
0 1 0 1 0 1 0 0 
0 1 0 1 0 1 0 0 
0 1 0 1 0 1 0 0 
1 1 0 1 0 1 1 0 
0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 

 

 其中为1的地方画出了M的形状;如果把0换成空格,由1拼成的M就显示出来了:             

                
                
                
1 1 1   1 1 1   
  1 1   1 1     
  1 1   1 1     
  1 1   1 1     
  1 1   1 1     
  1   1   1     
  1   1   1     
  1   1   1     
  1   1   1     
  1   1   1     
1 1   1   1 1   

 因此,我们要记录16行中每一行由0和1组成的一字节整数的值,就记录了这张位图;  
如第1,2,3行是00000000,它的值为0,第四行是11101110,用十六进制表示就是0xee;

以此类推,得到16个单字节整数:0x00,0x00,0x00,0xEE,0x6C,0x6C,0x6C,0x6C,0x54,0x54,0x54,0x54,0x54,0xD6,0x00,0x00

这些数组可以通过软件计算出来,我们只需要在单片机中通过代码读取这些数据就可以显示出来了,


解析过程与编码这些数据是刚好相反的。

#include <stdio.h>
#include <stdlib.h>

unsigned char am[] = {0x00,0x00,0x00,0xEE,0x6C,0x6C,0x6C,0x6C,0x54,0x54,0x54,0x54,0x54,0xD6,0x00,0x00}; //M

void showM(){
	int i,j;
	unsigned char t;
	for (i = 0; i < 16; ++i) {	//对于每一行
		t = am[i];				//取出代表这一行点的数据
		for (j = 0; j < 8; ++j) {	//对于这行中的每个点
			if (0x80 & t) {		//从左到右如果最左位1,则显示
				printf("MM");
			}else{
				printf("  ");
			}
			t <<= 1;			//将右边的数据往左移动
		}
		printf("\n");
	}
}

int main(void) {
	showM();
	return EXIT_SUCCESS;
}

 

 

 

 然而,对于中文字符,每个汉字每行有16个像素,需要2个字节,所以每行需要对两个字节数据进行打印,所以要增加一个for循环:
#include <stdio.h>
#include <stdlib.h>

unsigned char ch[] = {
		/*--  文字:  播  --*/
		/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
		0x20,0x3C,0x27,0xC0,0x22,0x48,0xF9,0x50,0x27,0xFE,0x20,0xE0,0x29,0x50,0x32,0x4E,
		0x6F,0xFC,0xA2,0x48,0x22,0x48,0x23,0xF8,0x22,0x48,0x22,0x48,0xA3,0xF8,0x42,0x08
};

void showM()
{
	int i, j;
	unsigned char t, u;		//分别表示一个汉字每行的左半边8像素和右半边8像素
	for (i = 0; i < 16; ++i)
	{	//对于每一行
		t = ch[i * 2];				//取出代表这一行点的数据
		u = ch[i * 2 + 1];
		for (j = 0; j < 8; ++j)//打印左半边像素
		{	//对于这行中的每个点
			if (0x80 & t)
			{		//从左到右如果最左位1,则显示
				printf("MM");
			}
			else
			{
				printf("  ");
			}
			t <<= 1;			//将右边的数据往左移动
		}
		for (j = 0; j < 8; ++j)//打印右半边像素
		{	//对于这行中的每个点
			if (0x80 & u)
			{		//从左到右如果最左位1,则显示
				printf("MM");
			}
			else
			{
				printf("  ");
			}
			u <<= 1;			//将右边的数据往左移动
		}
		printf("\n");
	}
}

int main(void) {
	showM();
	return EXIT_SUCCESS;
}


 打印结果:
    MM              MMMMMMMM    
    MM    MMMMMMMMMM            
    MM      MM    MM    MM      
MMMMMMMMMM    MM  MM  MM        
    MM    MMMMMMMMMMMMMMMMMMMM  
    MM          MMMMMM          
    MM  MM    MM  MM  MM        
    MMMM    MM    MM    MMMMMM  
  MMMM  MMMMMMMMMMMMMMMMMMMM    
MM  MM      MM    MM    MM      
    MM      MM    MM    MM      
    MM      MMMMMMMMMMMMMM      
    MM      MM    MM    MM      
    MM      MM    MM    MM      
MM  MM      MMMMMMMMMMMMMM      
  MM        MM          MM      
 这样就显示了一个汉字。

 

 

 

  • 大小: 12.7 KB
  • 大小: 9.2 KB
  • 大小: 209 KB
  • 大小: 17.9 KB
分享到:
评论

相关推荐

    8X8点阵LED显示屏字模提取软件(测试版).zip

    总之,"8X8点阵LED显示屏字模提取软件(测试版)"是为简化8X8点阵LED显示屏的字符编程工作而开发的一款工具,它能有效提高开发效率,使得在有限的空间内展示清晰、美观的文字内容成为可能。通过这款软件,用户能够更加...

    单片机 点阵 字模提取软件

    单片机字模提取软件是专门用于为单片机编程设计的一款工具,它主要用于生成点阵字模,以便在单片机的显示设备上显示文本信息。点阵字模是将字符转换为二进制矩阵的形式,每一个点代表一个像素,这种格式适合于资源...

    lcd取模工具-用于单片机点阵液晶字模的提取

    LCD取模工具是一种专门用于单片机开发中的图形界面设计软件,主要功能是帮助开发者从汉字、英文字符、符号等中提取点阵字模,以便在单片机控制的点阵液晶显示器上正确显示文本信息。这个工具简化了点阵字体的处理...

    单片机显示屏造字工具字模提取V2.2.zip

    单片机显示屏造字工具字模提取V2.2是一个专为单片机显示屏设计的软件,主要用于生成和编辑文字的点阵数据。在嵌入式系统和物联网应用中,单片机通常需要显示简单的字符信息,而这些字符的显示就需要预先将其转换成...

    点阵字模提取

    点阵字模提取是单片机编程中一个重要的技术环节...总之,点阵字模提取是单片机控制LED显示的基础,理解并掌握这一技术有助于实现各种创意的显示应用。在实际操作中,应结合具体需求选择合适的字模提取方法和显示策略。

    单片机编程字模提取软件

    单片机编程中,字模提取是一个重要的环节,特别是在显示汉字和图像时。字模,简单来说,就是字符或图像在特定硬件上的二进制表示形式,用于在显示器或者LCD等设备上显示。"单片机编程字模提取软件"正是这样一种工具...

    8×8LED显示屏字模提取软件

    通过这款8×8LED显示屏字模提取软件,开发者可以轻松处理各种字符和图案,为单片机控制的LED显示项目提供强大的支持。无论是设计简单的文字显示,还是复杂的图像动画,都能通过这个工具得到有效的帮助。同时,它还...

    单片机字模提取 电子信息课程设计

    这里,我们将深入探讨“8ld字模提取”这一主题,它是单片机编程中用于控制LED点阵屏显示字符的一种常见方法。 8ld字模提取主要针对8x8像素的LED点阵,这种点阵常用于简单的字符显示,例如在电子钟、电子显示屏或...

    字模提取软件

    总之,字模提取软件是嵌入式系统开发中的重要辅助工具,它们帮助开发者高效地处理字符显示问题,使单片机或微控制器能够呈现出清晰、美观的文字信息。了解并熟练掌握这些软件的使用,将大大提高开发工作的效率和质量...

    16X16字模提取软件.zip

    16x16字模提取软件是一个工具,它可以帮助开发者从字体库中提取特定尺寸(16像素宽x16像素高)的字符图形,以便在资源有限的设备上有效地显示文本。 1. **字模概念**: - 字模是每个字符以二进制或灰度图像形式...

    单片机字模提取软件

    - LCD/LED显示:将字模数据加载到单片机内存,控制显示驱动芯片进行点阵扫描,呈现字符。 - OLED屏幕:同样利用字模数据驱动OLED显示,实现文本信息的显示。 - 按键输入:配合键盘扫描电路,通过字模匹配实现按键...

    点阵字模转换(提取)工具

    点阵字模转换工具是一种专门用于处理点阵字体的软件,它可以帮助用户将特定的字符或文字转换成点阵格式,以便在单片机或其他嵌入式系统中使用。点阵字模是数字图像的一种表示方式,尤其适用于资源有限的微控制器环境...

    三种取字模软件:Img2Lcd和PCtoLCD2002和字模提取V2.2

    Img2Lcd是一种功能,通常用于将图像转换为适合在液晶显示屏上显示的格式。这种转换通常涉及将...生成的字模数据可以存储在文件中,然后通过特定的液晶控制器或驱动器加载到LCD 2002显示屏上以显示相应的字符或图像。

    单片机开发 字模 提取 .7z

    在单片机应用中,字模提取是一项常见的任务,主要用于处理显示界面,特别是字符和图形的显示。字模,全称为字符模型,是字符在特定分辨率下的一种二进制表示,通常用于点阵液晶显示器或者LED点阵屏等设备。 字模...

    8*8点阵字模生成

    8*8点阵字模生成是一个在嵌入式系统或微控制器编程中常见的技术,尤其在显示字符或图案时非常有用。在这个特定的场景中,我们提到的"8*8点阵字模生成器"是一种工具,它允许用户选择特定的图案,并自动生成相应的字模...

    字模提取及将字模数据通过串口下载到单片机

    综上所述,字模提取与串口通信是单片机开发中的关键技术,它们结合使用可以实现从主机向单片机远程更新显示内容,这对于嵌入式系统的动态显示和实时信息更新至关重要。在实际项目中,需要根据具体需求选择合适的串口...

    字模提取V2·1ZIMO21.rar

    总的来说,"字模提取V2·1ZIMO21"这样的工具为单片机开发提供了便利,使得在有限的硬件资源下,也能实现清晰、高效的字符显示。对于初学者或专业开发者来说,掌握字模提取技术及其应用,是提升单片机项目性能和用户...

    8X8点阵取字模软件

    8X8点阵取字模软件是专为单片机显示设计的一款实用工具,它极大地简化了在单片机系统中处理字符显示的过程。在单片机编程中,尤其是在涉及低资源设备时,通常需要使用点阵字模来实现文本显示。8X8点阵指的是每个字符...

    单片机提取字模软件

    在设计涉及文本显示的项目时,如LCD或LED显示屏,字模提取就显得尤为重要。 字模,简单来说,就是将字符转化为二进制数据的过程,这些数据可以被单片机解析并在屏幕上显示。每个字符都有对应的一串二进制位,这串位...

Global site tag (gtag.js) - Google Analytics