卢杰全 广西理工职业技术学校 530031
【文章摘要】
针对单片机控制液晶、LED 点阵显示器显示的应用中对字模的需求,本文介绍一种利用Microsoft Excel 和画图软件生成十六进制字模数据的方法,具有一定的实用性,能在某些场合替代专门的字模软件。
【关键词】
字模;单片机;Excel
0 引言
在单片机应用系统的显示技术中,主要有LCD 液晶显示器和LED 点阵显示屏, 这两种都能够显示文字、字符、图形等信息,具有功耗低、价廉、易于控制和实现、使用寿命长等优点。广泛应用于单片机中的人机对话系统。
作为一种重要的显示手段,不管是LCD 还是LED 点阵显示,在单片机系统的程序中需要解决的一个重大问题就是字符点阵数据的获取,也就是常说的取字模。对于这个问题,最常用的方法就是用专门的取字模软件来解决,只要把要显示的文字、字符输入字模软件,该软件就自动生成十六进制的字模数据,把这些数据复制到单片机程序中就能使用,十分便捷。
目前,互联网上的字模软件五花八门,但也良莠不齐,有些需要付费购买才能使用,有些只针对汉字,其它字符、图形不能生成字模,有些只针对某型号的显示器,其它显示器或显示模块并不能通用, 还常遇到点阵大小固定、不能随意选择位权方向等问题。比如,在控制5×7 的LED 点阵显示中,就无法找到合适的软件取得字模。还有,在一些特殊场合,如无法上网的环境,下载不到字模软件,或者各类单片机竞赛时不允许使用字模软件等场合,亟需研究出一种不依赖字模软件,而又能较快地提取到准确的字模数据供单片机程序使用的方法。经过研究,我们找到了一种不受互联网制约、免费的、灵活通用的方法,即利用办公软件Excel,经过函数设置后配合画图软件使用也能够生成字模,完全能作为一种简易型自制字模软件供单片机开发者使用。
1 自制字模的方法、步骤
1.1 用画图软件制作图形
以汉字“液”为例,首先,打开电脑自带的“画图”软件,新建空白文件,把空白幕布扩大至满屏幕,选择“文本”输入, “字体”选择“宋体”或其它中文字体,“字号”输入“256”号,在幕布任意空白处输入“液”字,然后用“选择”功能,选中“液”字, 并把它移动到幕布左上角,保存成图片。
1.2 用Excel 软件生成字模
(1) 打开Excel 软件,新建空白表格。
(2) 圈选中列A ~ P 格,行1 ~ 16 格的区域,在“格式”中,“行高”设为15,“列宽”设为2。
(3) 输入字模计算式。
在第17 行“A”格输入公式: = T E X T ( B I N 2 H E X ( A 8 * 1 & A 7 * 1 & A6*1& A5*1& A4*1& A3*1& A2*1& A1*1),"00")&"H" ,然后选中这一格, 往右边拖动,直到“P”格停止,这样每一格都将自动复制该公式,并且公式中的“A8” 、“A7”等参数会自动跟随变化,如“B”格参数变为“B8”, “C”格为“C8”等。同样,在第18 行“A”格输入公式:=TEXT(BIN2HEX(A16*1& A15*1& A14*1& A13*1& A12*1& A11*1& A10*1& A9*1),"00")&"H" ,并拖动至“P”格。
这里使用了函数BIN2HEX() 将二进制转换为十六进制,并使用函数TEXT() 将其转换为两位的字符,再用& 运算符在其后面加上H,便得到了单片机程序中常用的十六进制数据格式。
需要特别指出的是,由于这个例子是针对浙江亚龙科技公司产的YL236 单片机装置上的LCD12864 液晶显示模块的, 所以为了配合该模块对LCD 点阵的驱动方式,上述给出的字模公式,把16×16 点阵分上下两部分,每部分都是从左往右取16 个字节的字模,每个字节的位权都是下高上低。如果针对的是其它类型的显示模块,则要根据其具体的驱动方式,调整字模计算公式了。
(4) 点选“背景”,在弹出的对话框中选择之前保存的“液”字图片。这时,我们可以看到,“液”字刚好位于列A ~ P 格,行1 ~ 16 格的区域,即16×16 点阵表格的下方。如图2 所示。
图2 以“液”字图片作为表格的背景
图5 仿真系统中LCD12864 正常显示“液”字
(5) 在表格上,把“液”字所有笔划经过的格子都以“
(6) 把32 个字节字模复制到单片机程序中即可使用,但只能逐个地复制, 如果嫌麻烦,还可以在任意空白格输入公式:="DB "&A17&","&B17&", "&C17&","&D17 &","&E17&","&F17 & " , " & G 1 7 & " , " & H 1 7 & " , " & I 1 7 & " , "&J17&","&K17&","&L17 &","&M17 &","&N17&","&O17&","&P17 ,即可在一格中得到点阵上半部分16 个字节的字模,然后选中这一格,往下拖动一格,即可在下一格中得到点阵下半部分16 个字节的字模。这样复制起来就更容易了。
2 实际使用效果
为了检验实际的使用效果,可以使用单片机仿真软件Proteus 搭建一个LCD12864 液晶显示器的仿真系统。把上述“液”字的字模复制到单片机程序中,然后运行仿真系统,得到的效果如图5 所示。
按照上述的方法,不但能制作汉字字模,还可以制作其它的字符、图形、图案的字模,比如,可以制作一个“心形”图案的字模( 如图6 所示)。
图6 生成“心形”图案的字模
图8 仿真系统中LED 点阵正常显示“液”字
还可以针对YL236 单片机装置上的LED32×16 点阵显示模块的驱动方式,修改一下Excel 取模顺序和方向,即可应用。还是以“液”字为例,以Proteus 仿真,其效果如图7 所示。
3 结论
实践表明,运用上述方法取得的字模,在单片机系统的LCD12864 液晶显示器、LED16×16、32×16 点阵显示模块上的应用效果令人满意。这个方法非常实用, 具有免费,效率远远高于人工取模,通用,灵活等显著优点,甚至可以简单修改,做成5×7、5×8 点阵的取模工具,从而满足LCD1602 字符型液晶显示器的需求,十分灵活。当然这个方法的效率与专业字模软件相比,还是有一定差距,毕竟要经过设置Excel 函数等步骤,此外,所显示字的精确度和美观度,也稍差于专业字模软件。
【参考文献】
[1] 重庆大学,陈学昌,袁燕,单片机应用中从Excel 软件提取字模的方法,单片机与嵌入式系统应用, 2009,11 :67-68.