第3节 绘点子程序
3.3.1. 基本绘点函数
前面我们已经提到了,通用版LCD驱动程序是基于绘点功能的,下面将介绍这个基本的绘点子程序,源代码如下:
在第二章,已经介绍过了在LCD屏上绘点的程序设计思想了,而从上面的代码当中,更具体的展现了这一基本的程序设计思路。
在该函数执行时,首先会对x轴坐标进行加1的操作,实际上是因为LCD的控制IC当中显存的范围为132*65,而LCD玻璃屏上只有128*64点;所以会有那么4列显存在LCD屏上没有对应的点(在上一章已有介绍),而具体哪些列不对在LCD屏上则由LCD玻璃的封装厂在配置时决定的,通常都是开头的或者是最后的几列。笔者也是通过实验测出MzL02模块当中当,Segment采用正向扫描时第0列和最后的3列不对应对LCD玻璃之上;所以在这里为了使坐标轴归零,才在这个函数当中对x轴坐标加1操作,这样使用上层的程序看起来,LCD的显示依然从第0列开始对应最左边的一列。
而x轴的坐标需要分两个寄存器设置,所以在代码当中对处理过的x轴坐标进行高低位数据的分离。Y轴的坐标在传递入该函数时是以0~63的点范围传递过来的,而在上一章中已有说明,MzL02模块的Y轴实际上是以page形式存在的,每个page有8个点,分别对应一个byte的8个位;所以也对y值进行处理,提取出该点所对应的page值以及该点对应的byte当中的具体位的位置。
处理完x和y轴的坐标值后,代码当中调用寄存器写入函数来完成显存数据指针的指向设置操作,以表明即将进行的读写操作是针对于显存中的哪一个数据进行操作。
在读-改-写的操作流程中,可以看到代码里依据i的值来对读回的数据进行操作,如下列的片断代码:
当i为1时则将要绘点的位进行置位操作,即画出黑点;当i为零时,则对其进行清零操作,即清除该点;操作完成之后再将数据写入显存当中,这些操作是不会影响屏上其它点状态的。
以上便是MzL02模块的绘点函数,其具体的操作流程是跟LCD模块的特性相关的,即LCD屏的操作方法相关;所以在移植通用版LCD驱动程序至另外一块LCD屏时,这个函数是需要进行一定的修改的。
3.3.2. 一些扩展的基础功能函数
除了基本的绘点函数之外,在这版通用版的LCD驱动程序当中还编写了一个全屏填充的函数,如下:
前面我们已经提到了,通用版LCD驱动程序是基于绘点功能的,下面将介绍这个基本的绘点子程序,源代码如下:


在第二章,已经介绍过了在LCD屏上绘点的程序设计思想了,而从上面的代码当中,更具体的展现了这一基本的程序设计思路。
在该函数执行时,首先会对x轴坐标进行加1的操作,实际上是因为LCD的控制IC当中显存的范围为132*65,而LCD玻璃屏上只有128*64点;所以会有那么4列显存在LCD屏上没有对应的点(在上一章已有介绍),而具体哪些列不对在LCD屏上则由LCD玻璃的封装厂在配置时决定的,通常都是开头的或者是最后的几列。笔者也是通过实验测出MzL02模块当中当,Segment采用正向扫描时第0列和最后的3列不对应对LCD玻璃之上;所以在这里为了使坐标轴归零,才在这个函数当中对x轴坐标加1操作,这样使用上层的程序看起来,LCD的显示依然从第0列开始对应最左边的一列。
而x轴的坐标需要分两个寄存器设置,所以在代码当中对处理过的x轴坐标进行高低位数据的分离。Y轴的坐标在传递入该函数时是以0~63的点范围传递过来的,而在上一章中已有说明,MzL02模块的Y轴实际上是以page形式存在的,每个page有8个点,分别对应一个byte的8个位;所以也对y值进行处理,提取出该点所对应的page值以及该点对应的byte当中的具体位的位置。
处理完x和y轴的坐标值后,代码当中调用寄存器写入函数来完成显存数据指针的指向设置操作,以表明即将进行的读写操作是针对于显存中的哪一个数据进行操作。
在读-改-写的操作流程中,可以看到代码里依据i的值来对读回的数据进行操作,如下列的片断代码:

当i为1时则将要绘点的位进行置位操作,即画出黑点;当i为零时,则对其进行清零操作,即清除该点;操作完成之后再将数据写入显存当中,这些操作是不会影响屏上其它点状态的。
以上便是MzL02模块的绘点函数,其具体的操作流程是跟LCD模块的特性相关的,即LCD屏的操作方法相关;所以在移植通用版LCD驱动程序至另外一块LCD屏时,这个函数是需要进行一定的修改的。
3.3.2. 一些扩展的基础功能函数
除了基本的绘点函数之外,在这版通用版的LCD驱动程序当中还编写了一个全屏填充的函数,如下:

这个函数用于清屏或全屏填充。


