A little thing made by myself-output Chinese characters (complete code)

Something like this
Insert picture description here

Insert picture description here

.h file

#ifndef _LED_H_
#define _LED_H_

#define Max 8
#include<stdio.h>

#define out_string0  printf("李"); 
#define out_string1  printf("名"); 
#define out_string2  printf("扬"); 
#define out_string3  printf("蒙"); 
#define out_string4  printf("健"); 
#define out_string5  printf("忠"); 
#define out_string6  printf("罗"); 
#define out_string7  printf("忠"); 

int temp[Max][32]=
{
    
    
//	0x00,0x00,0x3F,0xF8,0x24,0x48,0x24,0x48,0x24,0x48,0x3F,0xF8,0x02,0x00,0x04,0x00,
//	0x0F,0xF0,0x10,0x10,0x68,0x20,0x04,0x40,0x02,0x80,0x03,0x00,0x1C,0x00,0xE0,0x00,/*"罗",0*/
//	
//	0x01,0x00,0x21,0x08,0x21,0x08,0x3F,0xF8,0x00,0x00,0x1F,0xF0,0x10,0x10,0x10,0x50,
//	0x14,0x50,0x12,0x90,0x11,0x10,0x12,0x92,0x24,0x4A,0x28,0x4A,0x40,0x06,0x80,0x02,/*"岚",1*/
//	
	
	0x01,0x00,0x01,0x00,0x7F,0xFC,0x03,0x80,0x05,0x40,0x09,0x20,0x31,0x18,0xC1,0x06,
	0x0F,0xE0,0x00,0x40,0x00,0x80,0xFF,0xFE,0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00,/*"李",0*/
			
	0x02,0x00,0x02,0x00,0x07,0xF0,0x08,0x10,0x14,0x20,0x62,0x40,0x02,0x80,0x01,0x00,
	0x06,0x00,0x1F,0xF8,0xE8,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x0F,0xF8,0x08,0x08,/*"名",1*/
	
	0x10,0x00,0x11,0xF8,0x10,0x10,0x10,0x20,0xFC,0x40,0x10,0x80,0x11,0xFE,0x14,0x92,
	0x18,0x92,0x30,0x92,0xD1,0x12,0x11,0x22,0x12,0x22,0x14,0x42,0x50,0x94,0x21,0x08,/*"扬",2*/
	
	0x08,0x20,0xFF,0xFE,0x08,0x20,0x7F,0xFE,0x40,0x02,0x8F,0xE4,0x00,0x00,0x7F,0xFC,
	0x06,0x00,0x3B,0x08,0x04,0xB0,0x19,0xC0,0x62,0xA0,0x0C,0x98,0x72,0x86,0x01,0x00,/*"蒙",0*/
	
	0x10,0x20,0x10,0x20,0x10,0xFC,0x2E,0x24,0x23,0xFE,0x62,0x24,0x64,0xFC,0xA4,0x20,
	0x2E,0xFC,0x22,0x20,0x22,0x20,0x2B,0xFE,0x24,0x20,0x26,0x20,0x29,0xFE,0x30,0x00,/*"健",1*/
	
	0x01,0x00,0x01,0x00,0x3F,0xF8,0x21,0x08,0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,
	0x01,0x00,0x01,0x00,0x08,0x88,0x48,0x84,0x48,0x12,0x48,0x12,0x87,0xF0,0x00,0x00,/*"忠",2*/

};

#endif

 

.c file

#include<stdio.h>
#include"led.h" 
#define N 6//输出汉字个数 

/*************************************************************
***************取模方式 :阴码-逐行式-顺向-16进制-C51-后缀为 ,
*************************************************************/
//函数声明 
void Sixteen_ten(int temp[32],char c,int num);
void draw(int temp[32][8],char c,int num);
void show_two(int tmp[32][8]);

/**************************************************************
*************输入:0-7 
*************返回:无 
*************功能:选择输出的中文汉字-可以在led里面修改 
**************************************************************/ 
void select(int n)
{
    
    
	switch(n)
	{
    
    
		case 0:out_string0 break;
		case 1:out_string1 break;
		case 2:out_string2 break;
		case 3:out_string3 break;
		case 4:out_string4 break;
		case 5:out_string5 break;
		case 6:out_string6 break;
		case 7:out_string7 break;
		default:printf("输入有错!");break; 
	}	
}
/**************************************************************
*************输入:temp[][]传入的16进制数组
 				char c输出的字符
				int num 传入0或1用来选择输出的是字符还是汉字 
*************返回:无 
*************功能:16进制转为10和10进制转为2进制 
**************************************************************/
void Sixteen_ten(int temp[][32],char c,int num)
{
    
    
	int value=7;
	int j=0,i=0,t=0,k=0;
	int change=0;
	int tmp[32][8]={
    
    0};
	int sixteen_to_ten[8]={
    
    0};
	
	for(i=0;i<N;i++)
	{
    
    
		for(j=0;j<32;j++)
		{
    
    
			change=(int)temp[i][j];//16进制转10 
			for(k=7;k>=0;k--)//10进制转2 
			{
    
    
				sixteen_to_ten[k]=change%2;
				tmp[j][k]=sixteen_to_ten[k];
				change=change/2;
			}
		}
		draw(tmp,c,num);
		printf("\n");
	}
	//show_two(tmp);	
}
/**************************************************************
*************输入:tem[][]传入的2进制数组
*************返回:无 
*************功能:输出2进制 
**************************************************************/
void show_two(int tmp[32][8])
{
    
    
	int i=0,j=0;
	//输出2进制	
	for(i=0;i<32;i++)
	{
    
    
		printf("tmp[%d][]=",i);
		for(j=0;j<8;j++)
		{
    
    
			printf("%d",tmp[i][j]);
		}
		printf("\n");
	}	
	 
}
/**************************************************************
*************输入:temp[][]传入的2进制数组
				char c输出的字符
				int num 传入0或1用来选择输出的是字符还是汉字 
*************返回:无 
*************功能:打印-即显示函数 
**************************************************************/
void draw(int temp[32][8],char c,int num)
{
    
    
	int i=0,j=0;
	for (i=0;i<32;i++)//行 
	{
    
    
		for (j=0;j<8;j++)//列 
		{
    
    
			switch(num)//0-1选择输出的是字符还是汉字 
			{
    
    
				case 1:
				if (temp[i][j]==1)//规定当2进制有1时输出 
				{
    
    
					printf("%c",c);
				}
				else
				{
    
    
					printf(" ");
				}break;
				
				case 0:
				if (temp[i][j]==1)
				{
    
    					
					select(0); 
				}
				else
				{
    
    
					printf("  ");
				}break;
			}
		}
		//因为要两个temp[0][8] 和temp[1][8]才构成16*16的第一行 
		//所以两个二维数组换一行 
		if ((i+1)%2==0)
		{
    
    
			printf("\n");	
		}	
	}
	
}

int main()
{
    
    
		
	char c=0;
	int num=0;
	printf("请输入想要输出的字符:\n");
	scanf("%c",&c);
	printf("请输入0或1,1-输出字符,0-输出文字\n");
	scanf("%d",&num);
	Sixteen_ten(temp,c,num);
	
	return 0;
} 

Guess you like

Origin blog.csdn.net/qq_45774073/article/details/112290982