- /*******************************************************************************
- ** 程序名称:演示使用HZK16点阵字库的程序
- ** 程序描述:使用HZK16实现显示16*16点阵汉字
- ** 性能提升:
- ** 程序版本:V1.0
- ** 程序作者:syrchina
- ** 最后修改:2011年8月16日
- *******************************************************************************/
- #include
- /*******************************************************************************
- ** 函数名称:Bytes_Read_from_HZK16
- ** 函数描述:从字库文件中读取一个汉字的字模点阵数据
- ** 入口参数:unsigned char *s 指向目标汉字的指针,
- char* const chs 用于存储字模的数组首地址
- ** 出口参数:无
- *******************************************************************************/
- void Bytes_Read_from_HZK16(unsigned char *s, char* const chs)
- {
- FILE *fp;
- unsigned long offset;
- offset=((s[0]-0xa1)*94+(s[1]-0xa1))*32; //根据内码找出汉字在HZK16中的偏移位置
- if((fp=fopen("HZK16","r"))==NULL) return; //打开字库文件
- fseek(fp,offset,SEEK_SET); //文件指针偏移到要找的汉字处
- fread(chs,32,1,fp); //读取该汉字的字模
- fclose(fp);
- }
- /*******************************************************************************
- ** 函数名称:Bytes_Display
- ** 函数描述:在屏幕上显示一个汉字
- ** 入口参数:char* const chs 存储了汉字点阵数据的数组首地址
- ** 出口参数:无
- *******************************************************************************/
- void Bytes_Display(char* const chs)
- {
- int i,j;
- for (i=0;i<32;i++)//显示
- {
- if (i%2==0) printf("\n"); //每行两字节,16X16点阵
- for (j=7;j>=0;j--)
- {
- if (chs[i]&(0x1<
- {printf("O");} //由高到低,为1则输出'O',反之输出'-';
- else
- {printf("-");}
- }
- }
- }
- /*******************************************************************************
- ** 函数名称:main
- ** 函数描述:main 函数
- ** 入口参数:无
- ** 出口参数:无
- *******************************************************************************/
- int main(void)
- {
- char chs[32]; //16*16=256个点
- unsigned char s[]="中国"; //要显示的汉字
- Bytes_Read_from_HZK16(&s[0],chs); //去字库中读取汉字字模
- Bytes_Display(chs); //在屏幕上显示这个汉字
- printf("\n");
- Bytes_Read_from_HZK16(&s[2],chs); //去字库中读取汉字字模,注意每个汉字占2个char的存储空间
- Bytes_Display(chs); //在屏幕上显示这个汉字
- return 0;
- }
上一篇:IIC OLED驱动
下一篇:ISD4004语音程序
推荐阅读最新更新时间:2024-03-16 15:02