急需任意点阵字模提取软件,谢谢
/***************************************************** 16*128 LED点阵屏 C 程序 ****************************************************** 声明: 本程序供大家学习之用,用勿用于商业用途。
尊重版权。
编写:邓椿薪 时间:2006年1月20日 晚 邮箱:love2151@xinhuanet.com ******************************************************* //595连级输出数据,138行驱动。
P0_1为移动速度高速/*点阵显示汉字程串口输出字符数据, //P2口输出行扫描信号,P2_7输出595锁存信号。
*/ #define uchar unsigned char #define uint unsigned int #include #include uchar yid,h,d=12; //YID为移动计数器,H为行段计数器。
uint zimuo,zimuo1; //字模计数器 uchar BUFF[18]; //缓存 void in_data(void); //调整数据 void rxd_data(void); //发送数据 void in_data1(char h); void rxd_data1(void); void sbuf_out1(void); void sendsw(uchar k); //发送段代码 void sbuf_out(void); //16段扫描 void key(void); sbit AN1=P3^4; sbit AN2=P3^5; sbit clk=P3^3; unsigned code sw[16]={0x7f,0x6f,0x5f,0x4f,0x3f,0x2f,0x1f,0x0f,0xf7, 0xf6,0xf5,0xf4,0xf3,0xf2,0xf1,0xf0}; /*16行段码*/ /********************************************/ void main(void) { uchar i; zimuo1=sizeof(hanzi)-6*32;//(zishu+9)*32; yid=0; zimuo=0; while(1) { while(yid { for(i=0;izimuo1) //总数减7个字。
zimuo=0; } } void sbuf_out1() { char i; for(h=0;h{ in_data1(h); clk=1; rxd_data1(); if(h>=16) else i=h; sendsw(sw[i]); } } /******************************************************/ void in_data1(char h) { char s,i; if(h>=16) {i=(h-16); for(s=5;s>=0;s--) //h为向后先择字节计数器,zimuoo为向后先字计数器 { // if(zimuo%32) BUFF[2*s+1]=hanzi[zimuo+1+32*s+2*i]; //把第一个字模的第一个字节放入BUFF1中,第二个字模和第一个字节放入BUFF3中 BUFF[2*s]=hanzi[zimuo+0+32*s+2*i]; // 把第一个字模的第二个字节放入BUFF0中,第二个字模的第二个字节放入BUFF1中 } } else { i=h; for(s=5;s>=0;s--) //h为向后先择字节计数器,zimuoo为向后先字计数器 { // if(zimuo%32) BUFF[2*s+1]=hanzi[zimuo+1+32*s+2*i]; //把第一个字模的第一个字节放入BUFF1中,第二个字模和第一个字节放入BUFF3中 BUFF[2*s]=hanzi[zimuo+0+32*s+2*i]; // 把第一个字模的第二个字节放入BUFF0中,第二个字模的第二个字节放入BUFF1中 } } } /*******************************************************/ void rxd_data1(void) //串行发送数据 { char s; for(s=0;s { SBUF=255-BUFF[s];//把BUFF中的字节从大到小移位相或后发送输出。
while(!TI);TI=0; //等待发送中断 } } void sendsw(uchar k) { TI=0; SBUF=k; while(!TI);TI=0; clk=0; } void key(void) { uchar a,b; if(AN1==0) { for(a=0;a } if(AN1==0) {while(AN1==0) {} if(AN1) {d++; if(d>100) d=100; } } } if(AN2==0) {for(a=0;a } if(AN2==0) {while(AN2==0) {} if(AN2) {d--; if(d==0) d=1; } } } } 不是我写的,但我想会对你有用。
求64*16点阵取字模软件。
太郁闷了,从网上搜索半天都没我要的像...
在正式版中,用户可生成自己需要的各种小字库,也可以生成自定义的国标一二级汉字库。
0.生成自定义的小字库:0.使用PCTOLCD的各种调整功能调整出您需要的文字样式,如字体,字样(下划,倾斜,加粗),大小(各种点阵大小的字体,可锁定点阵本身大小(如16*16),然后在这个固定的点阵大小内调节文字的大小(例如在16*16的点阵中居中显示12*12大小的汉字)1.将您需要的汉字和符号集中形成一个文本文件2.使用“导入文本”的按钮3.确认“生成二进制字库”被选中(建议选中"生成索引文件"原因后析)4.点“开始生成”按钮,选择生成的字库文件名5.然后耐心等待一段时间(与处理文本大小有关),在此期间建议不要动键盘和鼠标。
6.字库生成完毕.1.生成国标一二级汉字库0.使用PCTOLCD的各种调整功能调整出您需要的文字样式,如字体,字样(下划,倾斜,加粗),大小(各种点阵大小的字体,可锁定点阵本身大小(如16*16),然后在这个固定的点阵大小内调节文字的大小(例如在16*16的点阵中居中显示12*12大小的汉字).1.使用“导入文本”的按钮2.点右下角"生成国标汉字库"按钮.3.选择字库文件名后单击确定4.耐心等待一段时间后既得到生成的汉字库(时间视具体机器而定).生成汉字库结构介绍本软件使用的汉字库采用与HZK16相近似的结构,即按照输入汉字的顺序依次排列各汉字的点阵数据,以生成的16*16点阵汉字库举例介绍16*16点阵汉字库点阵大小16*16,所以每个汉字点阵数据占用32个字节.用户要使用生成的16*16点阵小字库中的点阵数据,可以在程序中采用如下算法:0.在生成的字库汉字列表中得到该汉字的偏移量,也就是汉字的记录号HzNum1.将其*32(HzNum*32)即可得出该汉字点阵在字库中的偏移地址.3.以这个偏移地址为起点,连续读取文件中的32个字节,既为该汉字的点阵信息.实际上,对于本软件生成的16*16点阵的国标汉字库是采用区位码排列的,所以与标准的HZK16结构是一样的,完全可以互换使用.例如生成一个24*48点阵,楷体,倾斜的汉字库,0.由于每个汉字占用24*48/8= 144个字节,所以用户可先读取生成的索引列表找到该汉字的记录号.1.将记录号*144即得到该汉字在字库中的偏移地址.2.以这个偏移地址为起点,在字库文件中连续读取144个字节,即为该汉字的点阵信息.对于其他点阵汉字库的使用方法,可以依次类推……当然,如果不选中“生成二进制字库”的复选框,生成的字库将是文本格式的字模数据,采用那种方式完全取决于您的需要了完美版新增生成英文点阵字库功能,使用方法同上。
单片机”中”字点阵显示编程设计怎么弄的?
我用vb.net做过一个1602取模的程序。
具体思想是构造像素类继承label类,然后加入一个boolean类型的点击标志,写点击事件。
再构造行类继承groupbox,加入需要数量的像素控件,再构造点阵类继承groupbox,放入需要数量的行控件。
思想就是分组,逐层管理。
串口通信我不会,所以没办法帮你更多。
自己努力一下,不要做伸手党。
自己写代码对自己今后有好处的。
LCD1602 显示汉字
1602显示字符是5*8的点阵。
字符和字符之间,还有一个点的空间。
用它显示汉字,效果很不理想,做成产品,恐怕没有人会买。