爱板网论坛

查看: 186|回复: 2

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

[复制链接]

105

主题

9

好友

1153

积分

进士

Rank: 5Rank: 5

  • TA的每日心情
    开心
    半小时前
  • 签到天数: 568 天

    连续签到: 9 天

    [LV.9]以坛为家II

    爱板会员勋章 活跃会员勋章

    发表于 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 显示效果

    回复

    使用道具 举报

    12

    主题

    25

    好友

    7905

    积分

    状元

    Rank: 6Rank: 6

  • TA的每日心情
    慵懒
    昨天 19:51
  • 签到天数: 1544 天

    连续签到: 8 天

    [LV.Master]伴坛终老

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

    使用道具 举报

    105

    主题

    9

    好友

    1153

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情
    开心
    半小时前
  • 签到天数: 568 天

    连续签到: 9 天

    [LV.9]以坛为家II

    爱板会员勋章 活跃会员勋章

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

    感谢支持!
    回复

    使用道具 举报

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

    关闭

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

    手机版|爱板网 |网站地图  

    GMT+8, 2018-1-23 10:20 , Processed in 0.248402 second(s), 12 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部