11222|26

298

帖子

2

TA的资源

纯净的硅(中级)

楼主
 

MSP-EXP430F5529实验板液晶显示汉字 [复制链接]

捣鼓了好久,终于可以显示汉字了,呵呵
看看效果吧

字体是12x12了,能写这么多字把屏幕写满了,呵呵

反白显示,效果不是很好,没写的地方,那儿就一条白杠
上传两个文件,关于写汉字的函数和汉字表:
1. DogsLCD显示12x12字体函数.txt (3.57 KB, 下载次数: 398)
2. 取模方式.txt (1.26 KB, 下载次数: 310)
我用的取模软件:
lcd汉字取模软件.rar (2.89 MB, 下载次数: 979)

最新回复

汉字取模后显示,是挺方便的  详情 回复 发表于 2018-8-3 16:34
 
点赞 关注(1)

回复
举报

2781

帖子

417

TA的资源

五彩晶圆(中级)

沙发
 
不错不错,给力~
 
个人签名
 

回复

287

帖子

77

TA的资源

纯净的硅(中级)

板凳
 
多谢楼主分享啊。
我前几天弄了好久一直是乱码

点评

呵呵,好,谢谢,自己测试了下还行,你在测一下吧,看还有什么问题,把它提出来,一起探讨:)  详情 回复 发表于 2013-3-23 21:58
 
个人签名i miss you!
新浪微博http://weibo.com/u/3178116863
一切都是最好的安排!感恩,毋需抱怨!
 
 

回复

298

帖子

2

TA的资源

纯净的硅(中级)

4
 

回复 板凳 499362154 的帖子

呵呵,好,谢谢,自己测试了下还行,你在测一下吧,看还有什么问题,把它提出来,一起探讨
 
 
 

回复

389

帖子

0

TA的资源

纯净的硅(初级)

5
 
多谢分享液晶显示程序!
 
 
 

回复

6040

帖子

195

TA的资源

版主

6
 
这图片效果,太给力了

点评

还是500万像素啊,现在感觉真心不行:funk:  详情 回复 发表于 2013-3-24 10:31
 
 
 

回复

298

帖子

2

TA的资源

纯净的硅(中级)

7
 

回复 6楼 lcofjp 的帖子

还是500万像素啊,现在感觉真心不行
 
 
 

回复

142

帖子

17

TA的资源

一粒金砂(高级)

8
 
请教一下LZ,在main函数里应该怎样调用Dogs102x6_chinesefontsDrawXY(uint8_t x, uint8_t y, char *word, uint8_t style)函数呢?char *word需要传入什么参量?

点评

直接调用啊,char *word直接写汉字在里面,前提是你写的汉字一定要先取好模  详情 回复 发表于 2013-5-31 10:07
 
 
 

回复

578

帖子

0

TA的资源

纯净的硅(初级)

9
 
我记得液晶的驱动里面有相应的函数,楼主是自己重新写的函数啊,很强大啊

点评

不是的,也是改的,那里面没有写汉字的函数,就按照它写字符的函数改了写汉字的函数  详情 回复 发表于 2013-5-31 10:08
 
 
 

回复

298

帖子

2

TA的资源

纯净的硅(中级)

10
 

回复 8楼 nwcheroes 的帖子

直接调用啊,char *word直接写汉字在里面,前提是你写的汉字一定要先取好模
 
 
 

回复

298

帖子

2

TA的资源

纯净的硅(中级)

11
 

回复 9楼 迈尔风随 的帖子

不是的,也是改的,那里面没有写汉字的函数,就按照它写字符的函数改了写汉字的函数

点评

哦,也很强大啊  详情 回复 发表于 2013-5-31 10:35
 
 
 

回复

578

帖子

0

TA的资源

纯净的硅(初级)

12
 

回复 11楼 yunhaiking 的帖子

哦,也很强大啊
 
 
 

回复

553

帖子

0

TA的资源

纯净的硅(中级)

13
 
不是很懂啊,希望楼主上传完整的程序啊
 
 
 

回复

142

帖子

17

TA的资源

一粒金砂(高级)

14
 
C语言没学好伤不起,终于用LZ的函数显示粗来啦~

  1. #include
  2. #include "HAL_Dogs102x6.h"

  3. // ------------------  汉字字模的数据结构定义 ------------------------ //
  4. typedef struct typFNT_GB12       // 汉字字模数据结构
  5. {
  6.     char Index[2];            // 汉字内码索引
  7.     uint8_t Msk[24];         // 点阵码数据
  8. } GB12;

  9. // 汉字字模表
  10. // 汉字库: 宋体12.dot 纵向取模上高位,数据排列:从左到右从上到下
  11. const struct typFNT_GB12 GB_12[] =          // 数据表
  12. {
  13.                 "我", 0x11,0x51,0x52,0xFF,0x92,0x10,0x10,0xFF,0x11,0x52,0x34,0x10,
  14.                       0x00,0x20,0x10,0xF0,0x00,0x20,0x40,0x80,0x40,0x20,0x10,0x70,

  15.                 "爱", 0x02,0x4C,0x6A,0x5A,0x4B,0x6E,0x5A,0x8A,0x9B,0xAA,0x0E,0x0A,
  16.                       0x10,0x20,0x50,0x90,0x20,0xA0,0x40,0xA0,0x20,0x10,0x10,0x10,

  17.                 "电", 0x00,0x3F,0x24,0x24,0x24,0xFF,0x24,0x24,0x24,0x7F,0x20,0x00,
  18.                       0x00,0x80,0x80,0x80,0x80,0xE0,0x90,0x90,0x90,0x90,0x10,0x70,

  19.                 "子", 0x00,0x04,0x84,0x84,0x84,0x84,0x9F,0xA4,0xC4,0x84,0x0C,0x04,
  20.                       0x00,0x00,0x00,0x20,0x10,0x10,0xF0,0x00,0x00,0x00,0x00,0x00,

  21.                 "工", 0x00,0x40,0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0xC0,0x40,0x00,
  22.                       0x20,0x20,0x20,0x20,0x20,0xE0,0x20,0x20,0x20,0x20,0x60,0x20,

  23.                 "程", 0x51,0x56,0x7F,0x92,0x91,0x04,0xF4,0x94,0x97,0x94,0xF4,0x04,
  24.                       0x80,0x00,0xF0,0x00,0x10,0x10,0x90,0x90,0xF0,0x90,0xB0,0x10,

  25.                 "世", 0x08,0x08,0x7F,0x08,0x08,0xFF,0x08,0x08,0x08,0xFF,0x08,0x08,
  26.                       0x00,0x00,0xF0,0x10,0x10,0xD0,0x90,0x90,0x90,0xD0,0x10,0x10,

  27.                 "界", 0x00,0x00,0xF9,0xA9,0xAB,0xFC,0xAA,0xAA,0xA9,0xF9,0x01,0x01,
  28.                       0x80,0x90,0x10,0x20,0xC0,0x00,0x00,0xF0,0x00,0x00,0x80,0x00
  29. };
  30. // 汉字表:
  31. // 电子工程世界
  32. #define GB_12_num        sizeof(GB_12) / 26                                //汉字个数

  33. /*******************************************************************************
  34. *函数名称:Dogs102x6_Font8x12DrawXY(x, y, f, style)
  35. *功能描述:Dogs102x6液晶上显示12x12字体
  36. *参数说明:x-坐标(0 - 101),y-坐标(0 - 63) 注意:当y>52时,字体都显示在液晶的最下面一行
  37. *参数说明:p_f-字符指针,style-(0-正常显示,1-反白显示);无返回参数.
  38. ******************************************************************************/
  39. void Dogs102x6_Font12x12DrawXY(uint8_t x, uint8_t y, const uint8_t *p_f, uint8_t style)
  40. {
  41.     uint8_t b, row;
  42.     uint8_t desired_char[36];

  43.     // make sure we won't be writing off the screen
  44.     if (x >= 102)
  45.     {
  46.         x = 101;
  47.     }
  48.     if (y >= 53)//字体是12x12,(63-52)+1=12
  49.     {
  50.         y = 52;
  51.     }

  52.     // Check if there is a remainder
  53.     row = y >> 3;                   // identical to: row = y / 8;

  54.     if (style == DOGS102x6_DRAW_NORMAL)
  55.     {
  56.         for (b = 0; b < 12; b++)
  57.         {
  58.             desired_char[b] =
  59.                 (*(p_f + b) >> (y % 8)) | dogs102x6Memory[2 + (row * 102) + x + b];//
  60.             desired_char[b + 12] =
  61.                 *(p_f + b) << (8 - y % 8) | (*(p_f + 12 + b) >> (y % 8)) | dogs102x6Memory[2 + ((row + 1) * 102) + x + b];
  62.             if((y % 8) > 4)
  63.             {
  64.                 desired_char[b + 24] = *(p_f + 12 + b) << (8 - y % 8) | dogs102x6Memory[2 + ((row + 2) * 102) + x + b];
  65.             }
  66.         }
  67.     }
  68.     else
  69.     {
  70.         for (b = 0; b < 12; b++)
  71.         {
  72.             desired_char[b] =
  73.                 (*(p_f + b) ^ 0xFF) >> (y % 8) | dogs102x6Memory[2 + (row * 102) + x + b];
  74.             desired_char[b + 12] =
  75.                 (*(p_f + b) ^ 0xFF) << (8 - y % 8) | (*(p_f + 12 + b) ^ 0xF0) >> (y % 8) | dogs102x6Memory[2 + ((row + 1) * 102) + x + b];
  76.             if((y & 0x07) > 4)
  77.             {
  78.                 desired_char[b + 24] =
  79.                     ((*(p_f + 12 + b) ^ 0xF0) << (8 - y % 8)) | dogs102x6Memory[2 + ((row + 2) * 102) + x + b];
  80.             }
  81.         }
  82.     }

  83.     Dogs102x6_setAddress(row, x);
  84.     Dogs102x6_writeData(desired_char, 12);
  85.     Dogs102x6_setAddress(row + 1, x);
  86.     Dogs102x6_writeData(desired_char + 12, 12);
  87.     if((y % 8) > 4)
  88.     {
  89.         Dogs102x6_setAddress(row + 2, x);
  90.         Dogs102x6_writeData(desired_char + 24, 12);
  91.     }
  92. }
  93. /*******************************************************************************
  94. *函数名称:Dogs102x6_chinesecharDrawXY(x, y, cchar, style)
  95. *功能描述:Dogs102x6液晶上显示汉字体
  96. *参数说明:x-坐标(0 - 101),y-坐标(0 - 63)
  97. *参数说明:cchar-汉字符指针,style-(0-正常显示,1-反白显示);无返回参数.
  98. ******************************************************************************/
  99. void Dogs102x6_chinesecharDrawXY(uint8_t x, uint8_t y, char *cchar, uint8_t style)
  100. {
  101.     uint8_t k;

  102.     for (k = 0; k < GB_12_num; k ++)   //GB_12_num - (sizeof(GB_12) / 26)
  103.     {
  104.         if ((GB_12[k].Index[0] == *cchar) && (GB_12[k].Index[1] == *(cchar + 1)))
  105.         {
  106.             Dogs102x6_Font12x12DrawXY(x, y, GB_12[k].Msk, style);
  107.         }
  108.     }
  109. }
  110. /*******************************************************************************
  111. *函数名称:Dogs102x6_chinesefontsDrawXY(x, y, word, style)
  112. *功能描述:Dogs102x6液晶上连续显示汉字体(每行少于9个)
  113. *参数说明:x-坐标(0 - 101),y-坐标(0 - 63)
  114. *参数说明:word-汉字符指针,style-(0-正常显示,1-反白显示);无返回参数.
  115. ******************************************************************************/
  116. void Dogs102x6_chinesefontsDrawXY(uint8_t x, uint8_t y, char *word, uint8_t style)
  117. {
  118.     while (*word != '\0')
  119.     {
  120.         // Draw a character
  121.         Dogs102x6_chinesecharDrawXY(x, y, word, style);

  122.         // Update location
  123.         x += 12;

  124.         // Text wrapping
  125.         if (x >= 96)
  126.         {
  127.             x = 0;
  128.             if (y + 12 < 64)
  129.                 y += 12;
  130.             else
  131.                 y = 0;
  132.         }

  133.         word += 2;
  134.     }
  135. }

  136. int main(void)
  137. {
  138.     WDTCTL = WDTPW | WDTHOLD;        // Stop watchdog timer

  139.     Dogs102x6_init();                            //初始化LCD
  140.     Dogs102x6_clearScreen();                     //清屏
  141.     Dogs102x6_setContrast(11);             //设置初始对比度值

  142.     char str[] = {"我爱电子工程世界我爱电子工程世界我爱电子工程世界我爱电子工程世界我爱电子工程世界"};
  143.         Dogs102x6_chinesefontsDrawXY(0, 0, &str[0], 1);
  144. }
复制代码

点评

呵呵,恭喜恭喜,加油  详情 回复 发表于 2013-6-2 11:18
 
 
 

回复

298

帖子

2

TA的资源

纯净的硅(中级)

15
 

回复 14楼 nwcheroes 的帖子

呵呵,恭喜恭喜,加油
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(中级)

16
 
高手,以后得多向你请教!
 
 
 

回复

24

帖子

1

TA的资源

一粒金砂(中级)

17
 
楼主好强,可不可以做个显示图片的呢?

点评

喔,这个我没做啊,后面液晶被搞坏了,你看它给的驱动嘛,相信可以显示出自己的图片来:)  详情 回复 发表于 2013-6-30 19:12
 
 
 

回复

298

帖子

2

TA的资源

纯净的硅(中级)

18
 

回复 17楼路人丁DL 的帖子

喔,这个我没做啊,后面液晶被搞坏了,你看它给的驱动嘛,相信可以显示出自己的图片来
 
 
 

回复

11

帖子

0

TA的资源

一粒金砂(初级)

19
 
LZ,我想问下你是用CCS的还是IAR
 
 
 

回复

101

帖子

1

TA的资源

一粒金砂(中级)

20
 
发现我的频率分辨率用不了,伤心
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表