自制单片机之十六……将文字或图形转成LCD上使用的C51字模数据
这一讲说说如何用取模软件将图形转成数据吧,有很多人反复问我这个问题,我就再罗嗦下吧!
取字模的软件有很多款。有的只能将文字转成字模数据,有的既可将文本文字转字模也能将图片转成点阵数据。在这里我就介绍一款使用简单易用的,它能将文字或图形转成我们LCD模块使用的C51数据,其它的软件也大同小异。
界面很简单,左边是各种功能和设置修改栏,右边上半部分是显示你所工作的点阵图,右下部分是文字输入框和点阵数据查看框。
我们用它主要是想让它将文字或图形转成我们在LCD12864上显示的点阵数据。所以我就讲讲如何将文字和图形转成点阵数据。
点击左边功能栏里的“参数设置”,再点击“文字输入区字体选择”如下图。
我们选宋体,小五号字。小五号字就是12X12的点阵。然后在“文字输入区”里输入你想要转为字模的文字。例如“你好”
接着再在“参数设置”项里点击“其他选项”如下图:
在选项中你可以设定横向取模还是纵向取模,是字节正序还是字节倒序。
然后按住“CTRL”键的同时按“Enter”键。文字点阵就显示在左上部分的点阵图上了。如下图:
如果觉得字形不好看你还可以用鼠标在点阵图上修改,点左键画点,点右键擦除。
下面就要进行点阵的转换了。
选择左边功能项的“取模方式”,有C51和A51格式,根据你编程所使用的语言来选择,我是一般是用C语言来写,所以我点击“C51格式”
这时在右下区的点阵生成区内就显示出转换的字模数据。如图:
你可用复制、粘贴的方法直接将这些字模数据粘贴到你所要编写的程序中。也可以从左边功能选项的“基本操作”里的“保存点阵数据”来将字模数据保存成一个文本文件。
文字的取字模方法大致就是这样了。
但在转换之前首先要弄清几个问题。
1、数据字节与点阵的关系
我们的LCD12864是黑白显示的,没有灰度级。也就是说任意一个点只有两种状态,要么是白(不显示),要么是黑(黑色显示)。那么只要一位的数据就能表示出一个点,即0或1。那么一个字节的数据就能表示LCD屏上的8个点。所以一般LCD屏的宽和高的总点数都是8的倍数。例如128X64。
2、LCD屏上每个字节点的排列顺序
上面讲过一个字节的数据可以表示LCD上的8个点。也就是说将一个字节的数据送到LCD模块,它就能相应地显示8个点,但这8个点是如何排列的呢?不同的LCD模块对每字节8个点的排列是不同的。在LCD模块的产品说明书上会告诉你它的排列方式。例如,我前面讲的那种采用KS0108控制器的并口LCD12864,它的每字节点阵排列方式是竖(纵)向排列的。而我这篇前面讲的串行LCD12864采用ST7920控制器的模块就是按每字节横向排列的。
3、正序和倒序
另外还有一个正序和倒序的问题,通常我们一个字节的数据按二进制排列的话都是左边为高位A7,右边为低位A0,这就是正序。如果LCD的点阵与一个字节数据的排列顺序想反,左边最左边显示的是A0,右边显示A7,这就是倒序。竖向排列也一样,通常数据是上面为高位A7,下面为低位A0,是正序。如果LCD模块的点阵排列正好反了,就是竖向倒序。见下图:
下图是KS0108控制器的LCD竖向倒序排列:
下面是ST7920控制器的的横向正序排列:
对于一个具体的汉字点阵来说如下图:
先说横向取模:
下面我们来看看实际取模的数据:
果然是ox7B和0xC0,我们再来看看倒序的数据:
是0xDE和0x03吧!我这样说大家能理解取模原理了吗?
接下来我们说说纵向取模:
下面是实际纵向正序读模数(红圈里的就是第一、二字节):
下面是纵向倒序的字模数据(红圈里的是第一、第二字节):
其它字节数据可以根据此规律类推。
16×16点阵汉字也一样的:
实际获取的纵向正序字模数据为下图(红圈里的为上述三个字节数据):
实际读取的纵向倒序字模数据如下图:
图像取模和文字取模本身没什么区别,只是一开始你要准备好一幅将要在你LCD显示的图,因为LCD是没有灰度级的,每个点就是黑或者白。再有我们一般用的LCD点阵数都比较小,你看到一些很好看很丰富的图像往往都无法展示,所以要尽量找一些笔触简单的图片来制做例如:我准备了两张图片,打算做为LCD_12864显示图:
我先把我两张图处理成单色的图像,有很多软件可以将图像处理成黑白的,并能采用抖动的方式模拟出灰度,我在这就图方便就用WORD 软件的“图片工具栏”来把图像转成灰度再增强对比度来获得单色图像:
不断增强对比度直到成为黑白图像。
现在图像已是黑白图了。然后把它复制,粘到画图板里调节它的大小
再用画图板里的“图像”-“拉伸/扭曲”功能,把图像缩小为128x64:
这时你把这个图存成单色位图,就是单色的BMP图像文件。
好!下面打开取字模软件,用左边“基本操作”的“打开图像图标”功能来读入我们刚才保存的单色BMP图:
下面你就要在“参数设置”里的“其它选项”来设置是需要横向取模还是纵向取模。是正序还是倒序。选择完毕后,点“取模方式”里的“C51格式”,这时在右下区的“点阵生成区”里就形成了,这个图像的点阵数据:
你可以通过复制、粘贴的方式直接将点阵数据粘贴到正在编写的程序中去,也可以通过“基本操作”中的“保存点阵数据”来将点阵数据保存成一个文本文件,以备使用。
自制单片机之十六……将文字或图形转成LCD上使用的C51字模数据的更多相关文章
- 自制单片机之十五……可串行驱动LCD12864的应用
在网上搜了一下,ST7920控制器的LCD产品可以提供8位,4位并行和串行接口可选,并行的控制接口的LCD较多,前面的贴子也介绍过,我们在这儿不说了,这儿我们讲的是串口控制LCD12864. 买了块S ...
- 自制单片机之十八……无线通讯模块NRF24L01+
(一)基础知识篇 今天刚调试好,先看图吧! 这张是AT89C2051控制NRF24L01+做发射调试. 看看NRF24L01细节吧! 这是LCD屏显示: AT89S52做接收测试: 正在接收时的显示: ...
- 自制单片机之十二……AT89C2051烧写器的制做与调试
现在都用S52了,还用C2051干嘛!价格也差不多.但是C2051的体积要比S51.S52小很多,而且引脚只有20只,在一些简单的控制中,这些引脚已足够了,小的体积更具有优势些.但目前好像还没有支持在 ...
- 自制单片机之十……AT89S51的上拉电阻问题
很多网友都问我AT89S51的P0口为什么要接一个上拉电阻.我就用一个篇幅来说一说 P0口和其它三个口的内部电路是不同的,如下图 P0口是接在两个三极管D0和D1之间的,而P1-P3口的上部是接一个电 ...
- 四十六 Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)scrapy写入数据到elasticsearch中
前面我们讲到的elasticsearch(搜索引擎)操作,如:增.删.改.查等操作都是用的elasticsearch的语言命令,就像sql命令一样,当然elasticsearch官方也提供了一个pyt ...
- 第五十六篇、OC打开本地和网络上的word、ppt、excel、text等文件
iOS打开本地和网络上的word.ppt.excel.text等文件 iOS开发过程中可能需要预览一些文件,这些文件的格式可能有word.ppt.excel等文件格式.那么系统提供两个类去预览这些文件 ...
- 《剑指offer》第四十六题(把数字翻译成字符串)
// 面试题46:把数字翻译成字符串 // 题目:给定一个数字,我们按照如下规则把它翻译为字符串:0翻译成"a",1翻 // 译成"b",……,11翻译成&qu ...
- C++第四十六篇 -- C++将int转换成宽字符串
int rate = 60; int score = 80 TCHAR Temp[64] = TEXT(""); _stprintf_s(Temp, TEXT("pass ...
- 【OpenCV十六新手教程】OpenCV角检测Harris角点检测
本系列文章由@浅墨_毛星云 出品.转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/29356187 作者:毛星云(浅墨) ...
随机推荐
- Linux内核定时器
Linux使用struct timer_list来描述一个定时器. 重要成员: expires:定时时长 *function:超时执行函数名使用流程: 1.定义定时器变量 /*定义定时器变量结构 ...
- 关于本学期西南交通大学ACM-ICPC校集训队 训练计划(Beta 1.0)
在第十周新秀杯之后,从第十一周起的训练计划如下: 1.十一周的周一至周五进行ACM校集训队申请.申请方式从2014年11月17日0:00开始,发送申请者的姓名.学号.专业.电话.QQ以及大学(针对大一 ...
- 金错刀对话口袋购物王珂:找到痛点,确认卖点,制造爆点! - 资讯 - i黑马网
金错刀对话口袋购物王珂:找到痛点,确认卖点,制造爆点! - 资讯 - i黑马网 金错刀对话口袋购物王珂:找到痛点,确认卖点,制造爆点!
- 深入理解linux网络技术内幕读书笔记(三)--用户空间与内核的接口
Table of Contents 1 概论 1.1 procfs (/proc 文件系统) 1.1.1 编程接口 1.2 sysctl (/proc/sys目录) 1.2.1 编程接口 1.3 sy ...
- SpringMVC拦截器(实现登录验证拦截器)
本例实现登陆时的验证拦截,采用SpringMVC拦截器来实现 当用户点击到网站主页时要进行拦截,用户登录了才能进入网站主页,否则进入登陆页面 核心代码 首先是index.jsp,显示链接 <%@ ...
- java并发编程--Runnable Callable及Future
1.Runnable Runnable是个接口,使用很简单: 1. 实现该接口并重写run方法 2. 利用该类的对象创建线程 3. 线程启动时就会自动调用该对象的run方法 通常在开发中结合Execu ...
- 【创业积累】如何快速开发出一个高质量的APP
[起] 今早,一个技术群里有人想快速做出一个app,然后询问技术方案,大概是这样, 拿到了200w投资,期望花20w两个月先做出一个app,包括ios,android, 先,呵呵,一下, 大概预估了一 ...
- 金典 SQL笔记(4)
由于在本地笔记上写的.CSDN markdown编辑器仅仅支持.md格式导入, 图片没办法直接导进去.写的多了懒的一张一张图片切图上传; 直接整个文章切成图片上传上去了. watermark/2/te ...
- 关于C#中的抽象类、抽象方法和虚方法的探究
2016年的第一篇文章,容我先喷喷新年的情怀,..........,好了,喷的差不多了. 在面向对象中,我们需要对类进行横向和纵向的认识,不同的类有不同特色的成员,同时在不同类的继承中,子类获得父类的 ...
- html禁止手机页面放大缩小
html禁止手机页面放大缩小 <meta name="viewport" content="width=device-width,minimum-scale=1.0 ...