15.6.2 图形显示程序设计

这里仍然采用前面的电路原理图,使用液晶显示图形的程序代码示例如下。

include<reg52. h>


include<stdio.h>

unsigned data i;unsigned char q;unsigned char*p2;

//建立数组指针

unsigned char wbyte;unsigned char Column;

//定义列

unsigned char Page;

//定义页


sbit E=P3^2;


//读写使能信号,1有效


sbit R_W=P3^1;


//读写选择信号;1为读选通,0为写选通


sbit RS=P3^0;sbit D_I=P3^0;


//数据指令选择信号;1为数据操作,0为写指令或读状态

unsigned char data j;

unsigned char data k;

/**扩充指令集画图**/

unsigned char data z;//图形数组的页,为实际点阵行数

unsigned char data y;//图形数组的列,为实际点阵列数除以8

unsigned char data Column;//起始点设定:为在液晶中显示的实际起始列

unsigned char data Page;

//起始点设定:为在液晶中显示的实际起始行

char code Tu[64][16]=

//图形数组,龙的标志

{

0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00 0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00 0x00,0x00,0x03,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xF0,0x00 0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00 0x07,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xFC,0x00,0x00,0x00 0x00,0x00,0x00,0x00,0x07,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00 0x00,0x00,0x0F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xC0 0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00 0x0F,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xE0,0x00,0x00 0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF 0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xF8,0x80,0x00,0x00,0x00 0x00,0x00,0x1F,0xFF,0xFF,0xF8,0x80,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xF8 0x80,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xF8,0x80,0x00,0x00,0x00,0xFF,0x1C 0x0F,0xFF,0xFF,0xFC,0x80,0x00,0x00,0x07,0xFF,0x1F,0x0F,0xFF,0xFF,0xFC,0x80,0x06 0x00,0x3F,0xFF,0x1F,0x0F,0xFF,0xFF,0xFE,0x80,0x06,0x03,0xFF,0xFF,0x1F,0x07,0xFF 0xFF,0xFE,0x80,0x04,0x07,0xFF,0xFF,0x1F,0x07,0xFF,0xFF,0xFE,0xC0,0x1C,0x3F,0xFF 0xFF,0x1F,0x07,0xFF,0xFF,0xFE,0x60,0x30,0xFF,0xFF,0xFF,0x1F,0x07,0xFF,0xFF,0xFE 0x20,0xE1,0xFF,0xFF,0xFF,0x1F,0x07,0xFF,0xFF,0xFE,0x23,0x87,0xFF,0xFF,0xFF,0x1F

0x03,0xFF,0xFF,0xFF,0x26,0x1F,0xFF,0xFF,0xFF,0x1E,0x01,0xFF,0xFF,0xFF,0x24,0x3F 0xFF,0xFF,0xFF,0x1E,0x01,0xFF,0xFF,0xFF,0xFC,0xFF,0xFF,0xFF,0xFF,0x1E,0x00,0x3F 0xFF,0xFF,0xF8,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF 0xFF,0x18,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x10,0x07,0xFF,0xFF,0xFF 0xFF,0xFF,0xFF,0xFF,0xFF,0x10,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00 0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF 0xFF,0xFF,0xFE,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x7F,0xFF 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF 0xFC,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0xFF,0xFF,0xFF,0xFF 0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF 0xFF,0xFF,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x7F,0xFF 0xF9,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x7F,0xFF,0xFB,0xFF,0xFF,0xFF,0xFB,0xC0 0x00,0x00,0x7F,0xFF,0xEF,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x1F,0xFF,0x99,0xFB 0xFF,0xFF,0xFC,0x00,0x00,0x00,0x3F,0xFF,0xBB,0xFB,0xFF,0xFF,0xFE,0x00,0x00,0x00 0x3F,0xFF,0xF7,0x7B,0x9F,0xFF,0xFF,0x00,0x00,0x00,0x07,0xFE,0xCE,0x7B,0xDF,0xFF 0xFF,0x00,0x00,0x00,0x07,0xFF,0xDE,0x7B,0xDF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x1F 0xB8,0x62,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x1E,0x30,0x02,0x7F,0xFF,0xFE,0x00 0x00,0x00,0x00,0x0F,0xE0,0x02,0x7F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x07,0x80,0x02 0x7F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x7F,0xFF,0xFF,0x00,0x00,0x00 0x00,0x00,0x00,0x03,0x7F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x3F,0xFF 0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x3F,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00 0x00,0x03,0x3F,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xBF,0xFF,0xE0,0x00 0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00 0x00,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xC0,0x00,0x00,0x00};

void WCOM(unsigned char dcode);//指令操作子函数

void Dat(unsigned char ddata);//数据操作子函数

void Imim();//初始化子函数

void EClearlcd();//扩充指令集清屏子函数

void Tuxing()//图形显示子函数

void main()

{

Imim();//初始化

EClearlcd();//扩充指令集清屏

z=45;//图形数组的页,为实际点阵行数

y=16;//图形数组的列,为实际点阵列数除以8

Column=0;//起始点设定:为在液晶中显示的实际起始列

Page=0;//起始点设定:为在液晶中显示的实际起始行

p2=Tu;//图形数组

Tuxing();//蝴蝶图案

while(1)

{

}

}


在该程序中,定义图形数组Tu,其中存放了前面用字模提取程序得到蝴蝶图案对应的点阵数据。在主函数中,首先初始化液晶屏,然后使用扩充指令集进行清屏操作。接着指定图像数组显示的页和列,以及起始页和起始行信息,将指针p2指向图形数组Tu,然后调用Tuxing()函数在液晶屏上显示图形。