爱板网论坛

查看: 1621|回复: 2

[原创] FireBeetle 点阵屏的中文显示

[复制链接]

主题

好友

3479

积分

状元

  • TA的每日心情
    奋斗
    4 小时前
  • 签到天数: 791 天

    连续签到: 57 天

    [LV.10]以坛为家III

    发表于 2018-1-4 09:38:52 |显示全部楼层
    FireBeetle 点阵屏具有24×8个显示点,在显示汉字时其分辨率相对来说差一些,因此在其例程中未配置汉字显示功能,那如何来为其增添汉字显示功能呢?
    这主要需2个部分,一个是构建小字库;另一个是配置相应的显示函数。
    1. 构建小字库
    使用字模提取构建软件PCtoLCD2002即可构建供显示需要的小字库,受点阵屏分辨率的限制,这里构建的字模为8*8点阵。
    提取的界面如图1所示,数据的提取格式则如图2所示。
    图片1.png

    1字模提取

    图片2.png

    2 提取格式

    提取的字模内容如下:
    //(0) (1) (2) (3)
    {0x7C,0x00,0xFE,0x28,0x28,0x24,0xE2,0x00},/*"",0*/
    /* (8 X 8 , 等线 )*/
    {0x7C,0x44,0x7C,0x44,0x7C,0x00,0xFF,0x00},/*"",1*/
    /* (8 X 8 , 等线 )*/
    {0x24,0xF6,0xAD,0xF4,0x24,0x54,0x88,0x00},/*"",2*/
    /* (8 X 8 , 等线 )*/
    {0x7C,0x12,0x12,0xFE,0x54,0x94,0x1A,0x00},/*"",3*/
    /* (8 X 8 , 等线 )*/
    2. 配置显示函数
    配合小字库的显示函数如下:
    1. //汉字显示函数,其中参数p为显示位置取0或1,n为显示汉字的编号取值为0~3。
    2. void hzxs(uint8_t p,uint8_t n){
    3.   p=p*8;
    4.   n=n*8;
    5. for(uint8_t x=0; x<8; x++)
    6. {
    7. for(uint8_t y=0; y<8; y++)
    8. {
    9.   if(FONT_8X8 [n+x]&(0x01<<y))  ht1632c.setPixel(p+y,x);
    10. //matrix[x] |= 0x80>>y;
    11.   ht1632c.writeScreen();
    12. //
    13. }
    14. }
    15. }
    复制代码
    1. void clrxs(){
    2. for(uint8_t x=0; x<24; x++){
    3. for(uint8_t y=0; y<8; y++){
    4. ht1632c.clrPixel(x,y);
    5. ht1632c.writeScreen();
    6. }
    7. }
    8. }
    复制代码
    3. 应用实例
    元旦刚过,这里就后补一个显示“元旦快乐”的示例,其程序如下:
    1. #include "DFRobot_HT1632C.h"
    2. #define DATA 6
    3. #define CS 2
    4. #define WR 7

    5. byte FONT_8X8 []={
    6. //元(0) 旦(1) 快(2) 乐(3)
    7. 0x7C,0x00,0xFE,0x28,0x28,0x24,0xE2,0x00,/*"元",0*/
    8. /* (8 X 8 , 等线 )*/
    9. 0x7C,0x44,0x7C,0x44,0x7C,0x00,0xFF,0x00,/*"旦",1*/
    10. /* (8 X 8 , 等线 )*/
    11. 0x24,0xF6,0xAD,0xF4,0x24,0x54,0x88,0x00,/*"快",2*/
    12. /* (8 X 8 , 等线 )*/
    13. 0x7C,0x12,0x12,0xFE,0x54,0x94,0x1A,0x00,/*"乐",3*/
    14. /* (8 X 8 , 等线 )*/
    15. };

    16. DFRobot_HT1632C ht1632c = DFRobot_HT1632C(DATA, WR,CS);

    17. void setup() {
    18. ht1632c.begin();
    19. ht1632c.isLedOn(true);
    20. ht1632c.clearScreen();
    21. hzxs(0,0);
    22. hzxs(1,1);
    23. delay(1000);
    24. clrxs();
    25. hzxs(0,2);
    26. hzxs(1,3);
    27. }

    28. void loop() {
    29. }
    复制代码
    snap.jpg

    3 显示效果

    回复

    使用道具 举报

    主题

    好友

    9431

    积分

    状元

  • TA的每日心情

    3 天前
  • 签到天数: 1716 天

    连续签到: 9 天

    [LV.Master]伴坛终老

    发表于 2018-1-4 11:32:49 |显示全部楼层
    拜读,顶~~~
    回复

    使用道具 举报

    主题

    好友

    3479

    积分

    状元

  • TA的每日心情
    奋斗
    4 小时前
  • 签到天数: 791 天

    连续签到: 57 天

    [LV.10]以坛为家III

    发表于 2018-1-5 10:17:59 |显示全部楼层
    sacq12 发表于 2018-1-4 11:32
    拜读,顶~~~

    感谢支持!
    回复

    使用道具 举报

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

    关闭

    站长推荐上一条 /3 下一条

    手机版|爱板网

    GMT+8, 2018-9-23 13:14 , Processed in 0.128200 second(s), 15 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-5   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001056号

    Powered by Discuz!

    返回顶部