野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14158|回复: 4

stm32字模制作

[复制链接]
发表于 2015-3-6 21:30:02 | 显示全部楼层 |阅读模式
火哥    我用的是例程里面模块显示英文字符的字模   但我觉得太小了  我想变大一点  
就用光盘课件里面那个字模制作软件制作了24*12的字模
怎么和原来的字模不一样了?是分为95个一维数组保存的   例程是一个二维数组保存的 这是为啥?
回复

使用道具 举报

发表于 2015-3-6 21:53:49 | 显示全部楼层
不一样的话,可以研究一下它生成字模的原理,再根据它编写显示程序
回复 支持 反对

使用道具 举报

发表于 2015-3-7 08:34:41 | 显示全部楼层
本帖最后由 11kxmx 于 2015-3-7 09:04 编辑

例程中字符显示程序并不适合24*12的字模,不管你是一维数组或二维数组,字模代码存放的顺序是一样的,就是字节数不一样,24*12字模占48字节,水平像素非8的整数倍,还需补齐,字模扫描顺序和生成格式都可以自行设置,自己制字模,自己编程序,更容易弄清原理 多试, 无非就是会左右颠倒,上不颠倒 或两个半边字 最坏的是根本看不出字形 根据现象基本能够判断问题出在哪里
我制作的32*16字模格式如下,不可能刚好是这个样子,经过简单编辑
const unsigned char asc2_3216[95][64]={
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
/* ! */
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x03,0x80,
0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x01,0x00,0x01,0x00,0x01,0x00,
0xFF,0xFF,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,
0x03,0x80,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
/* " */
......
显示程序如下:
//* 显示32*16的字符*/ 逐行扫描 可用逐列扫描的数据代替上面表格看显示的是什么样子
void LCD_DispChar3216(uint16_t x, uint16_t y, uint8_t ascii, uint16_t color)
{
   uint16_t page, column,temp1,temp2, i;
i = ascii - ' ';
LCD_OpenWindow(x, y, 16, 32); //16 *32
LCD_ILI9341_CMD(0X2C);

for( page=0; page < 64; page+=2 )//每个字占64字节,一行需2个字节
{
  temp1 = asc2_3216;
  temp2 = asc2_3216[page+1];//可尝试将page+1变到temp1看是会么现象
  for( column=0; column < 8; column++ )
  {
   if( temp1 & 0x80 )//高位在前,若低位在前应该temp1 & 0x01
   {
    LCD_WR_Data( color );
   }
   else
   {
    LCD_WR_Data( BACKGROUND );        
   }
   temp1<<= 1;  //高位在前,若低位在前应该右移
  }/* 一行写完 */
   for( column=0; column < 8; column++ )
  {
   if( temp2 & 0x80 )
   {
    LCD_WR_Data( color );
   }
   else
   {
    LCD_WR_Data( BACKGROUND );        
   }
   temp2<<= 1;  
  }/* 一行写完 */
}/* 全部写完 */
}

回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-7 10:25:26 | 显示全部楼层
本帖最后由 merry_zsp 于 2015-3-7 10:32 编辑
11kxmx 发表于 2015-3-7 08:34
例程中字符显示程序并不适合24*12的字模,不管你是一维数组或二维数组,字模代码存放的顺序是一样的,就是 ...

你用的字模软件能分享一下吗?~~~~     方便的话发我邮箱1148861661@qq.com
回复 支持 反对

使用道具 举报

发表于 2015-3-9 15:50:19 | 显示全部楼层
merry_zsp 发表于 2015-3-7 10:25
你用的字模软件能分享一下吗?~~~~     方便的话发我邮箱

PCtoLCD2002 跟野火资料里的字模3差不多,但字模3需破解,否则不能正常使用
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-9-23 01:26 , Processed in 0.044770 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表