久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

發一個字庫生成器

作者:佚名   來源:本站原創   點擊數:  更新時間:2012年09月07日   【字體:

  這個生成器適用于12232液晶。暫時功能不多。也就只有倒序輸出功能。輸出的是16×16的點陣字符,所以也能用在LED點陣上。

使用命令:
cc foo.c -o foo

  編譯。并且還需要漢字庫(HZK16),我這里就不提供下載了,畢竟BYET給咱的流量是有限的,不過這種USDOS的東西一搜一大把。全部代碼下載:http://www.zg4o1577.cn/f/ddcd2.rar

上代碼:

/****************************************** 
 * FILE disp.c
 * @ Ubuntu Linux GCC
 * Need HZK16
 * Write By 萬致遠@rzy.co.cc
******************************************/ 

#include<stdio.h> 
#include <iconv.h>
#include <memory.h>
#include <string.h>
#include <stdlib.h>
FILE *fp; 
unsigned char vb;
//轉換成單片機的格式
void hanzi16(char *s) 
{ 

 char buffer[32]; 
 register i,j,k; 
 unsigned char x,y,z;
 unsigned char qh,wh; 
 unsigned long location; 
 unsigned int st_len;
 unsigned char outbuf[32];
 st_len=strlen(s);
 while(*s) 
 { 
 qh=*s-0xa0; 
 wh=*(s+1)-0xa0; 
 location=(94*(qh-1)+(wh-1))*32L; 
 fseek(fp,location,SEEK_SET); 
 fread(buffer,32,1,fp); 
 for(i=0;i<32;i++)
 {
	outbuf[i]=0x00;
 }
if(vb==1) printf("/******點陣*******\n");
 for(i=0;i<16;i++) 
	{
 for(j=0;j<2;j++) 
	{
 for(k=0;k<8;k++) 
	{
    	  if(((buffer[i*2+j]>>(7-k))&0x1)!=0) 
	  {
		x=8*j+k;
		y=i;
			//printf("X=%d\n",x);
			//printf("Y=%d\n",y);
		if(y>7)
		{
			x=x+16;
			//printf("Y[FIX]=%d\n",y);
			y=(y-8);
			
		}
			y=7-y;
			outbuf[x]=outbuf[x] | (0x80>>y);	
		if(vb==1) printf("1");
	  }
	  else
	  {
		if(vb==1) printf("0");
	  }
	}
	}
	if(vb==1) printf("\n");
	}
	if(vb==1) printf("*******點陣結束********/\n");
	printf("{");
	for(i=0;i<32;i++)
	{
		if(i!=31)
		{
		printf("0x%X,",outbuf[i]);
		}
		else
		{
		printf("0x%X}",outbuf[i]);
		}
	}
 s+=2;
	if(*s!='\0')
	{
		printf(",\n");
	}
	else
	{
		printf("\n};\n");
	}
 } 
} 


int code_convert(char *from_charset,char *to_charset,char *inbuf,int inlen,char *outbuf,int outlen)
{
  iconv_t cd;
  int rc;
  char **pin = &inbuf;
  char **pout = &outbuf;

  cd = iconv_open(to_charset,from_charset);
  if (cd==0)
    return -1;
  memset(outbuf,(size_t)0,(size_t)outlen);
  if (iconv(cd,pin,&inlen,pout,&outlen) == -1)
    return -1;
  iconv_close(cd);
  return 0;
}

int u2g(char *inbuf,int inlen,char *outbuf,int outlen)
{
 	return code_convert("utf-8","gb2312",inbuf,inlen,outbuf,outlen);
}

int main(int argc,char *argv[])  
{
	char* str=0;
	if(argv[1]==NULL)
	{
		printf("//請輸入字符串!\n");
		return;
	}
	if(strcmp(argv[1],"-help")==0)
	{
	printf("用法:%s <-help> <文字> <-v> > foo.c\n",argv[0]);
	printf("本軟件支持16*16的中文字符輸出,不支持英文。\n");
	printf("-v	控制是否在C程序中輸出點陣字\n");
	printf("-help	用于顯示本幫助信息\n");
	printf("本軟件運行需要HZK16的支持.\n");
	printf("BUG反饋:http://www.rwzy.co.cc\n");
	printf("	dv.xw@qq.com\n");
	printf("萬致遠		 2012.8.5\n");
	return;
	}
	vb=0;
 	if((fp=fopen("HZK16","rb"))==NULL) 
	{ 
	printf("//無法打開HZK16文件,請檢查!\n"); 
	return;
	} 
	printf("/*---------------------\n");
	printf("生成的以下字的字庫:%s\n",argv[1]);
	str=(char*)realloc(str,strlen(argv[1])+1);
	printf("字庫由萬致遠HZK軟件建立。");
	if(argv[2]!=NULL)
	{		
		if(strcmp(argv[2],"-v")==0)
		{
		printf("使用點陣顯示模式\n");
		vb=1;
		}
	}
	printf("HZ就是您需要的漢字庫\n----------------*/\n");
	printf("unsigned char __code HZ[][32]={\n");//一個漢字32字節
	u2g(argv[1],strlen(argv[1])+1,str,strlen(argv[1])+1);//strlen(argv[1])+1
	hanzi16(str);//轉換格式
	fclose(fp); 
}
關閉窗口

相關文章

主站蜘蛛池模板: 91一区二区 | 国产在线二区 | 亚洲国产第一页 | 中文字幕成人 | 国产成人福利 | 免费一区二区 | 国产乱精品一区二区三区 | 日本中文字幕日韩精品免费 | 中文一区 | 97av在线| 亚洲精品一区二区在线观看 | 国产精品视频入口 | 午夜合集| 精品一区二区三区中文字幕 | 91精品国产91久久久久久最新 | 欧美日韩不卡合集视频 | 国产一区在线免费观看视频 | av香港经典三级级 在线 | 中文字幕免费在线观看 | 精品日韩电影 | 国产成人综合亚洲欧美94在线 | 97精品国产一区二区三区 | 日韩av免费在线电影 | 成人二区三区 | 影视先锋av资源噜噜 | 91香蕉视频在线观看 | 国产精品毛片无码 | 超碰超碰| 日韩欧美精品在线 | 午夜欧美一区二区三区在线播放 | 国产精品日韩欧美一区二区三区 | 羞羞视频网站免费观看 | 国精日本亚洲欧州国产中文久久 | 成人国产精品色哟哟 | 亚洲高清视频在线 | 国产精品视频一区二区三区 | 亚洲二区视频 | 亚洲精品久久久久中文字幕二区 | 盗摄精品av一区二区三区 | 欧美五月婷婷 | 亚洲性在线 |