ASCII 字符点阵字库的制作和使⽤
开发环境:
Win7,Eclipse ,MinGW
1、⽣成ASCII 字符⽂件
0x20~0x7E,先⽤运⾏下⾯这段代码,⽣成⼀个包含全部可打印字符的txt ⽂件:int main(int argc,char *argv[]){ FILE * fp; unsigned char i = 0; fp =
fopen("","w");
if(fp == 0) { perror("open"); return -1; }
for(i=0x20;i<0x7F;i++) { fputc(i,fp);
⽂件,会看到如下⽂本:ascii文件夹怎么创建
2、⽣成字模数据
使⽤字模提取V2.1软件,设置字体为宋体、12,纵向取模,字节倒序(即⾼位在下)。这些设置可以根据实际情况设置。⽤C51格式⽣成字模,⼤⼩是8*16,每个字符⽤16个字节表⽰。如字符A 的显⽰如下:
取模数据为:0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,然后将所有的字模数据复制到⼀个⽂本⽂件,删除其中的空⾏,换⾏,注释等与字模数据⽆关的内容,并将⽂件最后的⼀个逗号改为ASCII 字符的句号,得到⼀个纯字模数据⽂件 3、将字模数据⽂件转换为⼆进制⽂件将 ⽂件中的每个字模数据转换为占⼀个字节的数,将所有的数据填充为⼀个⼆进制⽂件ascii_zk.bin 。这样,按照ASCII 码的顺序,ascii_zk.bin 中每16个字节就可以绘制⼀个字符。⽂件转换的程序如下:
*将⼀个ascii 字符转换
为数 */
unsigned char c2x(char ch){ unsigned char temp=0;
ch<=0x46) temp = 0x0a+(ch-0x41); else if(ch>=0x61 && ch<=0x66)
temp = 0x0a+(ch-0x61); else temp =0xff; return temp;
}//将 转换为⼆进制⽂件int main(void)
{ char buffer[5]; unsigned char ch=0; int i=0;
FILE *frp=0; FILE *fwp=0; 4、字库⽂件ascii_zk.bin 的使⽤ascii_zk.bin ⽂件从ASCII 码的空格(0x20)开始,每16个字节表⽰⼀个字符的点阵字模。以字母A 为例,它的ASCII 码是0x41,那么,它的字模数据的开始位置就是:(0x41-0x20)*16从这个位置开始依次读取16个字节,就是字母A 的字模数据,将其显⽰即可。例:⽤Linux 的终端模拟显⽰点阵字符,终端屏幕中的每个字符位置就是⼀个点,程序如下。#define START 0x20#define DATANUM 0x10int displaychar(FILE *fp,char dispch,char fillch,char start_x,char start_y);int main(void){
FILE* fp=0; int i = 0; const char * teststring="I love
Julia"; fp=fopen("ascii_zk.bi n","r"); 下载:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论