找回密码
 立即注册
楼主: 大***

字库生成 / 图片取模, 视频教程来了 !STCAI-ISP V6.94 取模工具体验 NICE !

[复制链接]
  • TA的每日心情
    开心
    昨天 08:40
  • 签到天数: 156 天

    [LV.7]常住居民III

    10

    主题

    102

    回帖

    122

    积分

    注册会员

    积分
    122
    发表于 2024-2-24 11:49:54 | 显示全部楼层
    测试了字库生成工具,
    原来用的是PCtoLCD生成的,使用STC的字库生成工具,没有成功,
    索性把同一个字所有的扫描模式都生成出来
    居然没有一个能显示成功的,下图是两个软件的配置,是哪里不对了?

    截图202402241154558896.jpg



    显示代码:
    1. unsigned char code hanzi[]=
    2. {
    3. .........
    4. 0xFD,0x01,0xFD,0x25,0x25,0xFD,0x25,0x25,0xFD,0x01,0xFD,0x00,0x07,0x04,0x05,0x05,
    5. 0x05,0x05,0x05,0x05,0x05,0x04,0x0F,0x00, /*'画',23*/
    6. 0x00,0xF0,0x10,0x10,0x10,0x1F,0x12,0x12,0x12,0xF2,0x02,0x00,0x08,0x05,0x01,0x05,
    7. 0x09,0x01,0x05,0x09,0x01,0x05,0x08,0x00, /*'点',24*/
    8. 0x00,0x0F,0xFF,0x00,0x00,0x00,0x4F,0xE4,0x92,0x49,0x24,0xFE,0x49,0x24,0x92,0x49,
    9. 0x24,0xFE,0x40,0x04,0x00,0x7F,0xF0,0x00, /*'画',25*/
    10. 0x00,0x0F,0xFF,0x00,0x00,0x00,0x7F,0x24,0x92,0x49,0x27,0xF2,0x49,0x24,0x92,0x49,
    11. 0x27,0xF2,0x00,0x20,0x02,0xFF,0xE0,0x00, /*'画',26*/               
    12. 0x00,0x07,0xFF,0x40,0x04,0x00,0x4F,0xE4,0x92,0x49,0x24,0x92,0x4F,0xE4,0x92,0x49,
    13. 0x24,0xFE,0x00,0x00,0x00,0xFF,0xF0,0x00, /*'画',27*/               
    14. 0x00,0x0F,0xFE,0x00,0x20,0x02,0x7F,0x24,0x92,0x49,0x24,0x92,0x7F,0x24,0x92,0x49,
    15. 0x27,0xF2,0x00,0x00,0x00,0xFF,0xF0,0x00, /*'画',28*/                  
    16. 0x00,0xFF,0x00,0x00,0x4F,0x49,0x49,0x4F,0x49,0x49,0x49,0x4F,0x40,0x40,0x7F,0x00,
    17. 0x0F,0x00,0xE2,0x2E,0x22,0x2E,0x00,0xF0, /*'画',29*/                        
    18. 0x00,0xFF,0x00,0x00,0x7F,0x49,0x49,0x7F,0x49,0x49,0x49,0x7F,0x00,0x00,0xFF,0x00,
    19. 0x0F,0x00,0x22,0x22,0x22,0x22,0x22,0xE0, /*'画',30*/               
    20. 0x00,0x7F,0x40,0x40,0x4F,0x49,0x49,0x49,0x4F,0x49,0x49,0x4F,0x00,0x00,0xFF,0x00,
    21. 0x0F,0x00,0xE2,0x22,0xE2,0x2E,0x00,0xF0, /*'画',31*/
    22. 0x00,0xFF,0x00,0x00,0x7F,0x49,0x49,0x49,0x7F,0x49,0x49,0x7F,0x00,0x00,0xFF,0x00,
    23. 0x0E,0x22,0x22,0x22,0x22,0x22,0x00,0xF0, /*'画',32*/               
    24. 0x40,0x4F,0x40,0x40,0x4F,0x49,0x49,0x4F,0x49,0x49,0x4F,0x40,0x00,0xFE,0x02,0x02,
    25. 0xF2,0x12,0x12,0xF2,0x12,0x12,0xF2,0x02, /*'画',33*/               
    26. 0x40,0x4F,0x49,0x49,0x4F,0x49,0x49,0x4F,0x40,0x40,0x4F,0x40,0x02,0xF2,0x12,0x12,
    27. 0xF2,0x12,0x12,0xF2,0x02,0x02,0xFE,0x00, /*'画',34*/
    28. 0x00,0x7F,0x40,0x40,0x4F,0x48,0x48,0x4F,0x48,0x48,0x4F,0x40,0x02,0xF2,0x02,0x02,
    29. 0xF2,0x92,0x92,0xF2,0x92,0x92,0xF2,0x02, /*'画',35*/
    30. 0x40,0x4F,0x48,0x48,0x4F,0x48,0x48,0x4F,0x40,0x40,0x7F,0x00,0x02,0xF2,0x92,0x92,
    31. 0xF2,0x92,0x92,0xF2,0x02,0x02,0xF2,0x02, /*'画',36*/
    32. 0x40,0x00,0x4F,0xFE,0x40,0x02,0x40,0x02,0x4F,0xF2,0x49,0x12,0x49,0x12,0x4F,0xF2,
    33. 0x49,0x12,0x49,0x12,0x4F,0xF2,0x40,0x02, /*'画',37*/
    34. 0x40,0x02,0x4F,0xF2,0x49,0x12,0x49,0x12,0x4F,0xF2,0x49,0x12,0x49,0x12,0x4F,0xF2,
    35. 0x40,0x02,0x40,0x02,0x4F,0xFE,0x40,0x00, /*'画',38*/
    36. 0x00,0x02,0x7F,0xF2,0x40,0x02,0x40,0x02,0x4F,0xF2,0x48,0x92,0x48,0x92,0x4F,0xF2,
    37. 0x48,0x92,0x48,0x92,0x4F,0xF2,0x40,0x02, /*'画',39*/               
    38. 0x40,0x02,0x4F,0xF2,0x48,0x92,0x48,0x92,0x4F,0xF2,0x48,0x92,0x48,0x92,0x4F,0xF2,
    39. 0x40,0x02,0x40,0x02,0x7F,0xF2,0x00,0x02, /*'画',40*/               
    40.         
    41. };
    42. //========================================================================
    43. // 函数: void LCD_DataWrite(unsigned int Data)
    44. // 描述: 写一个字节的显示数据至LCD中的显示缓冲RAM当中
    45. // 参数: Data 写入的数据  
    46. //========================================================================
    47. void LCD_DataWrite(unsigned char Dat)//,_Fill_Dot_LCD
    48. {
    49. unsigned char Num;
    50. LCD_CS = 0;
    51. LCD_A0 = 1;
    52. for(Num=0;Num<8;Num++)
    53. {
    54.   if((Dat&0x80) == 0)
    55.   LCD_SDI = 0;
    56.   else LCD_SDI = 1;
    57.   Dat = Dat << 1;
    58.   LCD_CLK = 0;
    59.   LCD_CLK = 1;
    60. }
    61. LCD_CS = 1;
    62. }
    63. //---------------------------------------------
    64. //LCD_set_XY: 设置LCD坐标函数
    65. //输入参数:X:0-83  Y:0-5
    66. //编写日期:20080918
    67. //---------------------------------------------
    68. void LCD_setXY(unsigned char X, unsigned char Y)
    69. {
    70.         unsigned char gao,di;
    71.         LCD_RegWrite(0xB0 | Y); //页
    72.         X = X + 4;                 //液晶是0-131的,我们只用到0-127,所以当倒序的方法时(131-0),实际上是127-0,
    73.         gao = X & 0xf0;
    74.         gao = gao >> 4;
    75.         di = X & 0x0f;
    76.         LCD_RegWrite(0x10 | gao);  //set Column address MSB   
    77.     LCD_RegWrite(0x00 | di);  //set column address LSB
    78. }   
    79. /*---------------------------------------------
    80. LCD_write_hanzi: 显示12(宽)*16(高)点阵列汉字等半角类
    81. 输入参数:c:显示的字符;
    82. -----------------------------------------------*/
    83. void LCD_write_hanzi(unsigned char row, unsigned char page,unsigned char c) //row:列 page:页 dd:字符
    84. {
    85.         unsigned char i;         
    86.         
    87.         LCD_setXY(row*6, page);// 列,页
    88.         for(i=0; i<12;i++)
    89.         {
    90.                  LCD_DataWrite(hanzi[c*24+i]);
    91.         }
    92.         
    93.     LCD_setXY(row*6, page+1);// 列,页
    94.         for(i=12; i<24;i++)
    95.         {
    96.                  LCD_DataWrite(hanzi[c*24+i]);
    97.         }        
    98. }
    复制代码


    截图202402241146003264.jpg
    截图202402241146202998.jpg

    12864.c

    31.92 KB, 下载次数: 28

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 09:29
  • 签到天数: 101 天

    [LV.6]常住居民II

    11

    主题

    135

    回帖

    1157

    积分

    荣誉版主

    积分
    1157
     楼主| 发表于 2024-2-24 13:28:01 | 显示全部楼层
    wpppmlah 发表于 2024-2-24 11:49
    测试了字库生成工具,
    原来用的是PCtoLCD生成的,使用STC的字库生成工具,没有成功,
    索性把同一个字所有的 ...

    最好能看一下您的屏幕驱动里的显示汉字的代码,看下是什么读取顺序
    就目前描述推测,发现几个问题:





    第一,“画”字上8个像素下两行颠倒
    第二,“画”字上下两行里的像素点上下颠倒



    这两个现象大概跟文字显示代码里的读取顺序有关
    以及那个“低位在前”,
    PCtoLCD里的是“取模走向”,就是从每一竖列的低位开始取,从上向下;
    STC的工具里是“存储顺序”,也就是数据保存的时候,8位二进制数里,
    从左到右是先高位还是先低位。取模走向是“从上向下”跟PCtoLCD一样。
    所以STC里的“存储顺序”应该选“高位在前”。

    1.1顺序.jpg


    第三,“画”字不完整
    看不到PCtoLCD主界面的字宽设置,推测应该也是12
    STC的这里应该是还不完善,没有像图片取模里那样可以动态调整调整字模尺寸的功能,
    生成的字模,只能是宽高一样的,所以把点阵宽度改成12之后,相当于只取出了前12列
    而在PCtoLCD里可以通过设置字符宽度,把文字挤成12宽,从而可以取出完整的字模
    1.2字宽.jpg
    1.2字宽2.jpg

    12不全.jpg


    通过以上推断,模拟了一下显示12×16字符的代码,用PCtoLCD确实可以正确显示出完整的文字

    1.3正确3.jpg


    或者缩小字体大小,让文字完整
    12全1.jpg
    12全.jpg


    ===============================================================
    所以,可以建议一下STC能不能加上 文字尺寸 也能调整的功能





    1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
    能体会到发现一个不理解的现象然后找原因然后要么解决掉问题要么被问题解决掉的那种快乐是我的幸运
    回复 支持 1 反对 0 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:40
  • 签到天数: 156 天

    [LV.7]常住居民III

    10

    主题

    102

    回帖

    122

    积分

    注册会员

    积分
    122
    发表于 2024-2-25 09:14:53 | 显示全部楼层
    大明狐 发表于 2024-2-24 13:28
    最好能看一下您的屏幕驱动里的显示汉字的代码,看下是什么读取顺序
    就目前描述推测,发现几个问题:

    感谢你的分析,我把代码片断和代码文件已经贴上来了。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 09:29
  • 签到天数: 101 天

    [LV.6]常住居民II

    11

    主题

    135

    回帖

    1157

    积分

    荣誉版主

    积分
    1157
     楼主| 发表于 2024-2-25 19:14:49 | 显示全部楼层
    wpppmlah 发表于 2024-2-25 09:14
    感谢你的分析,我把代码片断和代码文件已经贴上来了。

    代码看到了,的确是列行式顺着读取的。
    看里面的字模,是字体大小9的吧,12×12的,也挺好看。
    那么原因就是上面说的那几个原因了,一个是高位在前还是低位在前的问题,

    另一个是没有像PCtoLCD那样能挤压字体尺寸的功能。


    能体会到发现一个不理解的现象然后找原因然后要么解决掉问题要么被问题解决掉的那种快乐是我的幸运
    回复 支持 1 反对 0 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:40
  • 签到天数: 156 天

    [LV.7]常住居民III

    10

    主题

    102

    回帖

    122

    积分

    注册会员

    积分
    122
    发表于 2024-2-26 09:17:52 | 显示全部楼层
    原来是高位在前   和 PCtoLCD  中的低位在前相对应。
    在STC中使用高位在前,就正常显示了。感谢楼上解惑!
    对比.png


    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    550

    主题

    9346

    回帖

    1万

    积分

    管理员

    积分
    13920
    发表于 2024-2-29 22:31:20 | 显示全部楼层
    下面是我们荣誉版主再次体验 STC-ISP V6.93 版的
    字库生成】文字取模工具的补充文字说明补充视频
    截图202403021334598908.jpg
    【新提醒】体验一下STC-ISP V6.93 版的【字库生成】文字取模 工具的新增功能 - 问题反馈:ISP软件/头文件/单片机数据手册规格书等 - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)


    截图202402292238523670.jpg
    STC-ISP V6.93 来了
    Ver6.93 (2024-2-29)
      1. 解决主窗口串口号和串口助手串口号相冲突时
         ISP下载会失败的问题
      2. 字库生成工具新增如下新功能
         (增加前置索引数据格式)
         (增加滤重复字符功能)
         (增加自动排序功能)
         (增加通过移动文字输入框中的光标动态显示效果)
         (增加自定义字体宽度和高度功能)
         (增加预览全部功能)
         (增加手工模式,可自行设计和修改点阵)
         (增加自定义输出数据格式功能)

    截图202402292350495937.jpg

    截图202402292228553043.jpg

    截图202402292229136914.jpg

    截图202402292229299527.jpg

    截图202402292229458678.jpg

    截图202402292230205589.jpg

    截图202402292230334493.jpg

    截图202402292350151317.jpg

    上面是新版本软件针对字库工具,新增的功能



    截图202402292228348829.jpg

    stc-isp-15xx-v6.93.zip

    6.11 MB, 下载次数: 27

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 07:08
  • 签到天数: 68 天

    [LV.6]常住居民II

    4

    主题

    97

    回帖

    504

    积分

    高级会员

    积分
    504
    发表于 2024-3-1 09:10:04 | 显示全部楼层
    字模小软件,俺也刚刚完成。不过功能不多,目前只有16*16、32*32和64*64
     
    经常看看,偶尔玩玩——不过都是简单的,难的我也不会呀
     
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    550

    主题

    9346

    回帖

    1万

    积分

    管理员

    积分
    13920
    发表于 2024-3-1 10:16:22 | 显示全部楼层
    dnajx 发表于 2024-3-1 09:10
    字模小软件,俺也刚刚完成。不过功能不多,目前只有16*16、32*32和64*64

    帮我们多提提建议,【继续远航】
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 07:08
  • 签到天数: 68 天

    [LV.6]常住居民II

    4

    主题

    97

    回帖

    504

    积分

    高级会员

    积分
    504
    发表于 2024-3-3 06:40:21 | 显示全部楼层
    本帖最后由 dnajx 于 2024-3-3 06:41 编辑

    C:\Users\Administrator\Desktop\123.jpg
    123.jpg
     
    经常看看,偶尔玩玩——不过都是简单的,难的我也不会呀
     
    回复 支持 1 反对 0 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 08:23
  • 签到天数: 101 天

    [LV.6]常住居民II

    9

    主题

    558

    回帖

    837

    积分

    高级会员

    积分
    837
    发表于 2024-3-3 09:05:07 | 显示全部楼层
    STC-ISP越来越好用,越来越方便了
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-9 01:56 , Processed in 0.074812 second(s), 69 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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