单片机解密 单片机破解 芯片解密 IC解密 设为首页 │ 网站地图 │ 联系我们     
  
仿真器 编程器 ARM/DSP/USB CPLD/FPGA/SOPA 单片机开发板
实验仪 工控板卡 适配器 其它产品 测试/分析仪
 
 
  IT搜索 
  热门关键词:仿真器 编程器 ARM/DSP/USB CPLD/FPGA/SOPA 单片开发机 实验仪 工控板卡 适配器 其他产品 测试/分析仪
 
  单片机原理
 
  技术人生
 
  解密技术
 
  单片机学习
 
 
   文章内容
 
点阵汉字显示原理
汉字内码
  在电脑中,所有的数据都是以0和1保存的,按不同的数据操作,可以得到不同的结果。对于显示英文操作,由于英文字母种类很少,只需要8位(一字节)即可。而对于中文,常用却有6000以上,于是我们的DOS前辈想了一个办法,就是将ASCII表的高128个很少用到的数值以两个为一组来表示汉字,即汉字的内码。而剩下的低128位则留给英文字符使用,即英文的内码。
汉字字模
  得到了汉字的内码后,还仅是一组数字,那又如何在屏幕上去显示呢?这就涉及到文字的字模,字模虽然也是一组数字,但它的意义却与数字的意义有了根本的变化,它是用数字的各位信息来记载英文或汉字的形状,如英文的'A'在字模中是这样记载的:



而中文的“你”在字模中却是这样记载的:


  在硬件系统内,英文的字模信息一般固化在ROM里,中文的字模信息一般记录在汉字库文件HZK16里。

采用汉字字模点阵数据批量生成工具(下载)汉字字模工具 产生的随意字模 如何在点阵LED或LCD中显示汉字?

假设你采用16x16点阵汉字,水平扫描。

显示汉字为“模”,用产生如下字模

unsigned char mo[]={
0x00,0x00, 0x10,0x90, 0x10,0x94, 0x13,0xFE,
0x7C,0x90, 0x11,0xFC, 0x19,0x04, 0x35,0xFC,
0x35,0x04, 0x51,0xFC, 0x50,0x40, 0x17,0xFE,
0x10,0x90, 0x11,0x08, 0x16,0x06, 0x00,0x00
};

代码如下:

unsigned char cmp_w[8]={128,64,32,16,8,4,2,1};

void FontDisplay(int x, int y, unsigned char * FontModule)
{
    for(int row=0;row<16;row++)
    {
        for(int c=0;c<8;c++)
            if((FontModule[row*2]&cmp_w[c])!=0)
                putpixel(c+x,row+y,15);
        for(c=0;c<8;c++)
            if((FontModule[row*2+1]&cmp_w[c])!=0)
                putpixel(c+8+x,row+y,15);
}

main(){

FontDisplay(5,10,mo);

}

24x24点阵代码示例(水平扫描):

unsigned char mo[]={
0x00,0x00,0x00, 0x00,0x00,0x00, 0x07,0x0C,0xC0, 0x06,0x0C,0xC0,
0x06,0x0C,0xDC, 0x06,0x7F,0xF0, 0x06,0xCC,0xC0, 0x1F,0xF0,0x70,
0x06,0x3F,0xF0, 0x07,0x30,0x70, 0x0F,0xBF,0xF0, 0x0E,0xF0,0x70,
0x1E,0xF0,0x70, 0x1E,0x3F,0xF0, 0x36,0x06,0x18, 0x06,0xFF,0xFC,
0x06,0x07,0x00, 0x06,0x0F,0x80, 0x06,0x0C,0xE0, 0x06,0x38,0x7C,
0x06,0xE0,0x18, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00
};
unsigned char cmp_w[8]={128,64,32,16,8,4,2,1};

void FontDisplay(int x, int y, unsigned char * FontModule)
{
    for(int row=0;row<24;row++)
    {
        for(int c=0;c<8;c++)
            if((FontModule[row*3]&cmp_w[c])!=0)
                putpixel(c+x,row+y,15);
        for(c=0;c<8;c++)
            if((FontModule[row*3+1]&cmp_w[c])!=0)
                putpixel(c+8+x,row+y,15);
        for(c=0;c<8;c++)
            if((FontModule[row*3+2]&cmp_w[c])!=0)
                putpixel(c+16+x,row+y,15);
     }
}

main(){

FontDisplay(5,10,mo);

}

putpixel函数:

putpixel(int x,int y,int color)

x,y为坐标,color为颜色值.该函数在(x,y)点设定象素的颜色.由于硬件的不同,也许提供的函数不同,用户可把此函数作为参考,必要时用硬件提供的函数取而代之.

 
单片机解密,单片机解密,芯片解密,IC解密
 
公司简介 | 新闻动态 | 新品推荐 | 产品信息 | 下载中心 | 解密服务 | 项目开发 | 技术主页 | 网上订购 | 网站地图 | 谷歌地图
地址:深圳市南山区高新技术产业园中区科文路中钢大厦东 电话:李小姐,易小姐0755-26001683 26008661 手机:18123979133,18138851533
粤ICP备15080534号-1 版权所有:深圳市华宇晶电子科技有限公司 单片机解密,芯片解密公司,芯片解密,IC解密