📄 lcd_19264a_drv.c
字号:
/****************************************/
/* 字符点阵码数据输出 */
/****************************************/
//函数功能:将Order的值所对应的ASCII码点阵或汉字点阵写入DDRAM中,DDRAM的起始地址为(x,y);
//输入参数:(x,y)为DDRAM的列地址和页地址,x只能取8的倍数值,y只能取2的倍数值;
//输入参数:Order表示"字符"在字库中的偏移量;
//输入参数:widthw表示"字符"的宽度,8/16列;
//若widthw=8,表示8X16点阵字符,则Order*16;
//若widthw=16,表示16X16点阵字符,则Order*32;
void Putedot(int x,int y,int Order,int widthw)
{ int i;
long xi,temp; //偏移量,字符量少的可以定义为int;
col = x; /*暂存x,y坐标,已备下半个字符使用*/
row = y;
temp=(long)(widthw<<1);
xi=(long)(temp*Order); //计算"字符点阵码"在字库中的偏移量;
//若widthw=8,表示8X16点阵字符,则Order*16;
//若widthw=16,表示16X16点阵字符,则Order*32;
/****************上半个字符输出**************/
for(i=0;i<widthw;i++)
{ if(widthw==8) cbyte=Ezk[xi]; //从8X16点阵字符中取英文点阵码;
else cbyte=Hzk[xi]; //从16X16点阵字符中取汉字点阵码;
Wrdata(cbyte); //将数据X的值,写入到坐标为(col,row)的存储单元;
xi++; //修改"字符点阵码"的偏移量,为取下一个字节做准备;
col++; //修改DDRAM的列地址,为指向下一个DDRAM地址单元做准备;
if(col==LCMLIMIT){col=0;row+=2;}; //如果列越界,则换行,因为每个字符占2页,所以row要加2;
if (row>7) row=0; //如果行越界,则返回首行;
}/*上半个字符输出结束*/
col=x; /*列对齐*/
row=y+1; /*指向下半个字符行*/
/****************下半个字符输出****************/
for(i=0;i<widthw;i++)
{ if(widthw==8) cbyte=Ezk[xi]; //从8X16点阵字符中取英文点阵码;
else cbyte=Hzk[xi]; //从16X16点阵字符中取汉字点阵码;
Wrdata(cbyte); //将数据X的值,写入到坐标为(col,row)的存储单元;
xi++; //修改"字符点阵码"的偏移量,为取下一个字节做准备;
col++; //修改DDRAM的列地址,为指向下一个DDRAM地址单元做准备;
if(col==LCMLIMIT){col=0;row+=2;}; //如果列越界,则换行,因为每个字符占2页,所以row要加2;
if(row>7) row=1; //如果行越界,则返回首行;
}/*下半个字符输出结束*/
row=y; //恢复DDRAM的行地址,为写"下一个字符"做准备;
}/*整个字符输出结束*/
/****************************************/
/* 一个字串的输出 */
/****************************************/
//输入参数:(x,y)分别为DDRAM的列地址和行地址,x只能取8的倍数值,y只能取2的倍数值;
//输入参数:array表示数组,即待显示的汉字内码或ASCII内码;
//输入参数:i,表示数组array[]中,待显示的内码有i个;
void Putstr(int x,int y,int *array,int i)
{ int j,wordx;
for(j=0;j<i;j++)
{ wordx=array[j]; //取区码和位码,第1字节为区码,第2字节为位码;
delay_ms(2); //延时2ms;
if(wordx>=0x80) Putedot(x,y,wordx&0x7f,16); //区码小于0x80的为ASCII码字符;
else Putedot(x,y,wordx-0x20,8); //因为ascii码表是从0x20开始的,所以wordx-0x20
x=col; //更新(x,y)坐标;
y=row;
}
}
/****************************************/
/* 画点 */
/****************************************/
//函数功能:在DDRAM中,位于(col,row)处的点单元点亮;
//输入参数:col为DDRAM的列地址,row为DDRAM的行号,同DDRAM的页地址是有差别的;
void point(void)
{ int x1,y1,y;
x1=col; //将DDRAM的列地址col保存到暂态变量x1,为恢复列地址做准备;
y1=row; //DDRAM的行号row保存到暂态变量y1,为恢复DDRAM的行号做准备;
row=y1>>3; //将DDRAM的行号y1除以8,就得到页地址,保存到row中;
Rddata(); //从LCM中读取地址为(col,row)处的内容,结果保存在cPbyte中;
y=y1&0x07; //求y1在页地址(y1/8)中,位于第几位;
Wrdata(cbyte|1<<y); //在DDRAM地址(x1,y1/8)处,将其单元的第y位设置为1显示,并点亮该点;
col=x1; //恢复DDRAM的列地址;
row=y1; //恢复DDRAM的行号;
}
// UCDOS软件中的文件HZK16和文件ASC16分别为16×16的国标汉字点阵文件
//和8×16的ASCII码点阵文件,以二进制格式存储。在文件HZK16中,按汉
//字区位码从小到大依次存有国标区位码表中的所有汉字,每个汉字占用32
//个字节,每个区为94个汉字。在文件ASC16中按ASCII码从小到大依次存
//有8×16的ASCII码点阵,每个ASCII码占用16个字节。
// 在PC机的文本文件中,汉字是以机内码的形式存储的,每个汉字占用两个
//字节:第一个字节为区码,为了与ASCII码区别,范围从十六进制的0A1H开始
//(小于80H的为ASCII码字符),对应区位码中区码的第一区;第二个字节为位
//码,范围也是从0A1H开始,对应某区中的第一个位码。这样,将汉字机内码减
//去0A0AH就得该汉字的区位码,每个有94个汉字。
/*
UCDOS软件中的文件HZK16和文件ASC16分别为16×16的国标汉字点阵文件
和8×16的ASCII码点阵文件,以二进制格式存储。在文件HZK16中,按汉
字区位码从小到大依次存有国标区位码表中的所有汉字,每个汉字占用32
个字节,每个区为94个汉字。在文件ASC16中按ASCII码从小到大依次存
有8×16的ASCII码点阵,每个ASCII码占用16个字节。
在PC机的文本文件中,汉字是以机内码的形式存储的,每个汉字占用两个
字节:第一个字节为区码,为了与ASCII码区别,范围从十六进制的0A1H开始
(小于80H的为ASCII码字符),对应区位码中区码的第一区;第二个字节为位
码,范围也是从0A1H开始,对应某区中的第一个位码。这样,将汉字机内码减
去0A0AH就得该汉字的区位码。
例如汉字“房”的机内码为十六进制的“B7BF”,其中“B7”表示区码,
“BF”表示位码。所以“房”的区位码为0B7BFH-0A0A0H=171FH。将区码和位
码分别转换为十进制得汉字“房”的区位码为“2331”,即“房”的点阵位于
第23区的第31个字的位置,相当于在文件HZK16中的位置为:
第32×[(23-1) ×94+(31-1)]=67136以后的32个字节为“房”的显示点阵。
HZK16.BIN是16X16点阵的ASCII码;
下面是个“房”字(地址67136=0x10640):
00010640 02 00 01 08 3F FC 20 08 3F F8 21 00 20 84 3F FE ....?. .?.!. .?.
00010650 22 00 22 10 23 F8 22 10 44 10 44 10 88 A0 10 40 ".".#.".D.D....@
0x0200 0000001000000000
0x0108 0000000100001000
0x3ffc 0011111111111100
0x2008 0010000000001000
0x3ff8 0011111111111000
0x2100 0010000100000000
0x2084 0010000010000100
0x3ffe 0011111111111110
0x2200 0010001000000000
0x2210 0010001000010000
0x23f8 0010001111111000
0x2210 0010001000010000
0x4410 0100010000010000
0x4410 0100010000010000
0x88a0 1000100010100000
0x1040 0001000001000000
ASC16.BIN是8X16点阵的ASCII码;
ASC16的第55行为:'7',(地址55=0x037)点阵代码如下:
00000370 00 00 FE C6 06 06 0C 18 30 30 30 30 00 00 00 00 ........0000....
0x00 00000000
0x00 00000000
0xfe 11111110
0xc6 11000110
0x06 00000110
0x06 00000110
0x0c 00001100
0x18 00011000
0x30 00110000
0x30 00110000
0x30 00110000
0x30 00110000
0x00 00000000
0x00 00000000
0x00 00000000
0x00 00000000
*/
//LCD19264的命令:
//1 显示开关控制命令:
// R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
// 0 0 0 0 1 1 1 1 1 D
// D=1,命令打开LCD显示;D=0,命令关闭LCD显示;
//2 显示起始行设置命令:
// R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
// 0 0 1 1 A5 A4 A3 A2 A1 A0
//0xc0+z,其中0<=z<=63,设置DDRAM的第z行作为显示的第1行;
//当z=62时,则显示起始行与DDRAM的对应关系如下:
//DDRAM地址为0xc0+62表示为显示的第1行,DDRAM地址为0xc0+63表示为显示的第2行;
//DDRAM地址为0xc0+0表示为显示的第3行,DDRAM地址为0xc0+1表示为显示的第4行;
//DDRAM地址为0xc0+31表示为显示的第28行,DDRAM地址为0xc0+32表示为显示的第29行;
//3 页地址设置命令:
// R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
// 0 0 1 0 1 1 1 A2 A1 A0
//0xb8+x,其中0<=x<=7;
//所谓"页地址"就是DDRAM的行地址,8行为1页,本模块共有64行,即8页;
//4 设置Y地址命令:
// R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
// 0 0 0 1 A5 A4 A3 A2 A1 A0
//0x40+y,其中0<=y<63;
//DDRAM地址表:
// CS1=1(当模块为19264A01时,CS1=0)| CS2=1(当模块为19264A01时,CS2=0)| CS3=1(当模块为19264A01时,CS3=0)
// Y= | 0 1 2 3 4 5 6 7 8 ......62 63 | 0 1 2 3 4 5 6 7 8 ......62 63 | 0 1 2 3 4 5 6 7 8 ......62 63 |行号
// ____|________________________________|________________________________|________________________________|____
// X=0 | DB0 DB0 DB0 DB0 ...DB0 DB0 DB0 | DB0 DB0 DB0 DB0 ...DB0 DB0 DB0 | DB0 DB0 DB0 DB0 ...DB0 DB0 DB0 | 0
// | DB1 DB1 DB1 DB1 ...DB1 DB1 DB1 | DB1 DB1 DB1 DB1 ...DB1 DB1 DB1 | DB1 DB1 DB1 DB1 ...DB1 DB1 DB1 | 1
// | DB2 DB2 DB2 DB2 ...DB2 DB2 DB2 | DB2 DB2 DB2 DB2 ...DB2 DB2 DB2 | DB2 DB2 DB2 DB2 ...DB2 DB2 DB2 | 2
// | DB3 DB3 DB3 DB3 ...DB3 DB3 DB3 | DB3 DB3 DB3 DB3 ...DB3 DB3 DB3 | DB3 DB3 DB3 DB3 ...DB3 DB3 DB3 | 3
// | DB4 DB4 DB4 DB4 ...DB4 DB4 DB4 | DB4 DB4 DB4 DB4 ...DB4 DB4 DB4 | DB4 DB4 DB4 DB4 ...DB4 DB4 DB4 | 4
// | DB5 DB5 DB5 DB5 ...DB5 DB5 DB5 | DB5 DB5 DB5 DB5 ...DB5 DB5 DB5 | DB5 DB5 DB5 DB5 ...DB5 DB5 DB5 | 5
// | DB6 DB6 DB6 DB6 ...DB6 DB6 DB6 | DB6 DB6 DB6 DB6 ...DB6 DB6 DB6 | DB6 DB6 DB6 DB6 ...DB6 DB6 DB6 | 6
// | DB7 DB7 DB7 DB7 ...DB7 DB7 DB7 | DB7 DB7 DB7 DB7 ...DB7 DB7 DB7 | DB7 DB7 DB7 DB7 ...DB7 DB7 DB7 | 7
// ____|________________________________|________________________________|________________________________|
// X=1 | DB0 DB0 DB0 DB0 ...DB0 DB0 DB0 | DB0 DB0 DB0 DB0 ...DB0 DB0 DB0 | DB0 DB0 DB0 DB0 ...DB0 DB0 DB0 | 8
// | DB1 DB1 DB1 DB1 ...DB1 DB1 DB1 | DB1 DB1 DB1 DB1 ...DB1 DB1 DB1 | DB1 DB1 DB1 DB1 ...DB1 DB1 DB1 | 9
// | DB2 DB2 DB2 DB2 ...DB2 DB2 DB2 | DB2 DB2 DB2 DB2 ...DB2 DB2 DB2 | DB2 DB2 DB2 DB2 ...DB2 DB2 DB2 | 10
// | DB3 DB3 DB3 DB3 ...DB3 DB3 DB3 | DB3 DB3 DB3 DB3 ...DB3 DB3 DB3 | DB3 DB3 DB3 DB3 ...DB3 DB3 DB3 | 11
// | DB4 DB4 DB4 DB4 ...DB4 DB4 DB4 | DB4 DB4 DB4 DB4 ...DB4 DB4 DB4 | DB4 DB4 DB4 DB4 ...DB4 DB4 DB4 | 12
// | DB5 DB5 DB5 DB5 ...DB5 DB5 DB5 | DB5 DB5 DB5 DB5 ...DB5 DB5 DB5 | DB5 DB5 DB5 DB5 ...DB5 DB5 DB5 | 13
// | DB6 DB6 DB6 DB6 ...DB6 DB6 DB6 | DB6 DB6 DB6 DB6 ...DB6 DB6 DB6 | DB6 DB6 DB6 DB6 ...DB6 DB6 DB6 | 14
// | DB7 DB7 DB7 DB7 ...DB7 DB7 DB7 | DB7 DB7 DB7 DB7 ...DB7 DB7 DB7 | DB7 DB7 DB7 DB7 ...DB7 DB7 DB7 | 15
// ____|________________________________|________________________________|________________________________|
// X=2 | DB0 DB0 DB0 DB0 ...DB0 DB0 DB0 | DB0 DB0 DB0 DB0 ...DB0 DB0 DB0 | DB0 DB0 DB0 DB0 ...DB0 DB0 DB0 | 16
// | DB1 DB1 DB1 DB1 ...DB1 DB1 DB1 | DB1 DB1 DB1 DB1 ...DB1 DB1 DB1 | DB1 DB1 DB1 DB1 ...DB1 DB1 DB1 | 17
// | DB2 DB2 DB2 DB2 ...DB2 DB2 DB2 | DB2 DB2 DB2 DB2 ...DB2 DB2 DB2 | DB2 DB2 DB2 DB2 ...DB2 DB2 DB2 | 18
// | DB3 DB3 DB3 DB3 ...DB3 DB3 DB3 | DB3 DB3 DB3 DB3 ...DB3 DB3 DB3 | DB3 DB3 DB3 DB3 ...DB3 DB3 DB3 | 19
// | DB4 DB4 DB4 DB4 ...DB4 DB4 DB4 | DB4 DB4 DB4 DB4 ...DB4 DB4 DB4 | DB4 DB4 DB4 DB4 ...DB4 DB4 DB4 | 20
// | DB5 DB5 DB5 DB5 ...DB5 DB5 DB5 | DB5 DB5 DB5 DB5 ...DB5 DB5 DB5 | DB5 DB5 DB5 DB5 ...DB5 DB5 DB5 | 21
// | DB6 DB6 DB6 DB6 ...DB6 DB6 DB6 | DB6 DB6 DB6 DB6 ...DB6 DB6 DB6 | DB6 DB6 DB6 DB6 ...DB6 DB6 DB6 | 22
// | DB7 DB7 DB7 DB7 ...DB7 DB7 DB7 | DB7 DB7 DB7 DB7 ...DB7 DB7 DB7 | DB7 DB7 DB7 DB7 ...DB7 DB7 DB7 | 23
// ____|________________________________|________________________________|________________________________|
// X=3 | DB0 DB0 DB0 DB0 ...DB0 DB0 DB0 | DB0 DB0 DB0 DB0 ...DB0 DB0 DB0 | DB0 DB0 DB0 DB0 ...DB0 DB0 DB0 | 24
// | DB1 DB1 DB1 DB1 ...DB1 DB1 DB1 | DB1 DB1 DB1 DB1 ...DB1 DB1 DB1 | DB1 DB1 DB1 DB1 ...DB1 DB1 DB1 | 25
// | DB2 DB2 DB2 DB2 ...DB2 DB2 DB2 | DB2 DB2 DB2 DB2 ...DB2 DB2 DB2 | DB2 DB2 DB2 DB2 ...DB2 DB2 DB2 | 26
// | DB3 DB3 DB3 DB3 ...DB3 DB3 DB3 | DB3 DB3 DB3 DB3 ...DB3 DB3 DB3 | DB3 DB3 DB3 DB3 ...DB3 DB3 DB3 | 27
// | DB4 DB4 DB4 DB4 ...DB4 DB4 DB4 | DB4 DB4 DB4 DB4 ...DB4 DB4 DB4 | DB4 DB4 DB4 DB4 ...DB4 DB4 DB4 | 28
// | DB5 DB5 DB5 DB5 ...DB5 DB5 DB5 | DB5 DB5 DB5 DB5 ...DB5 DB5 DB5 | DB5 DB5 DB5 DB5 ...DB5 DB5 DB5 | 29
// | DB6 DB6 DB6 DB6 ...DB6 DB6 DB6 | DB6 DB6 DB6 DB6 ...DB6 DB6 DB6 | DB6 DB6 DB6 DB6 ...DB6 DB6 DB6 | 30
// | DB7 DB7 DB7 DB7 ...DB7 DB7 DB7 | DB7 DB7 DB7 DB7 ...DB7 DB7 DB7 | DB7 DB7 DB7 DB7 ...DB7 DB7 DB7 | 31
// ____|________________________________|________________________________|________________________________|
// X=4 | DB0 DB0 DB0 DB0 ...DB0 DB0 DB0 | DB0 DB0 DB0 DB0 ...DB0 DB0 DB0 | DB0 DB0 DB0 DB0 ...DB0 DB0 DB0 | 32
// | DB1 DB1 DB1 DB1 ...DB1 DB1 DB1 | DB1 DB1 DB1 DB1 ...DB1 DB1 DB1 | DB1 DB1 DB1 DB1 ...DB1 DB1 DB1 | 33
// | DB2 DB2 DB2 DB2 ...DB2 DB2 DB2 | DB2 DB2 DB2 DB2 ...DB2 DB2 DB2 | DB2 DB2 DB2 DB2 ...DB2 DB2 DB2 | 34
// | DB3 DB3 DB3 DB3 ...DB3 DB3 DB3 | DB3 DB3 DB3 DB3 ...DB3 DB3 DB3 | DB3 DB3 DB3 DB3 ...DB3 DB3 DB3 | 35
// | DB4 DB4 DB4 DB4 ...DB4 DB4 DB4 | DB4 DB4 DB4 DB4 ...DB4 DB4 DB4 | DB4 DB4 DB4 DB4 ...DB4 DB4 DB4 | 36
// | DB5 DB5 DB5 DB5 ...DB5 DB5 DB5 | DB5 DB5 DB5 DB5 ...DB5 DB5 DB5 | DB5 DB5 DB5 DB5 ...DB5 DB5 DB5 | 37
// | DB6 DB6 DB6 DB6 ...DB6 DB6 DB6 | DB6 DB6 DB6 DB6 ...DB6 DB6 DB6 | DB6 DB6 DB6 DB6 ...DB6 DB6 DB6 | 38
// | DB7 DB7 DB7 DB7 ...DB7 DB7 DB7 | DB7 DB7 DB7 DB7 ...DB7 DB7 DB7 | DB7 DB7 DB7 DB7 ...DB7 DB7 DB7 | 39
// ____|________________________________|________________________________|________________________________|
// X=5 | DB0 DB0 DB0 DB0 ...DB0 DB0 DB0 | DB0 DB0 DB0 DB0 ...DB0 DB0 DB0 | DB0 DB0 DB0 DB0 ...DB0 DB0 DB0 | 40
// | DB1 DB1 DB1 DB1 ...DB1 DB1 DB1 | DB1 DB1 DB1 DB1 ...DB1 DB1 DB1 | DB1 DB1 DB1 DB1 ...DB1 DB1 DB1 | 41
// | DB2 DB2 DB2 DB2 ...DB2 DB2 DB2 | DB2 DB2 DB2 DB2 ...DB2 DB2 DB2 | DB2 DB2 DB2 DB2 ...DB2 DB2 DB2 | 42
// | DB3 DB3 DB3 DB3 ...DB3 DB3 DB3 | DB3 DB3 DB3 DB3 ...DB3 DB3 DB3 | DB3 DB3 DB3 DB3 ...DB3 DB3 DB3 | 43
// | DB4 DB4 DB4 DB4 ...DB4 DB4 DB4 | DB4 DB4 DB4 DB4 ...DB4 DB4 DB4 | DB4 DB4 DB4 DB4 ...DB4 DB4 DB4 | 44
// | DB5 DB5 DB5 DB5 ...DB5 DB5 DB5 | DB5 DB5 DB5 DB5 ...DB5 DB5 DB5 | DB5 DB5 DB5 DB5 ...DB5 DB5 DB5 | 45
// | DB6 DB6 DB6 DB6 ...DB6 DB6 DB6 | DB6 DB6 DB6 DB6 ...DB6 DB6 DB6 | DB6 DB6 DB6 DB6 ...DB6 DB6 DB6 | 46
// | DB7 DB7 DB7 DB7 ...DB7 DB7 DB7 | DB7 DB7 DB7 DB7 ...DB7 DB7 DB7 | DB7 DB7 DB7 DB7 ...DB7 DB7 DB7 | 47
// ____|________________________________|________________________________|________________________________|
// X=6 | DB0 DB0 DB0 DB0 ...DB0 DB0 DB0 | DB0 DB0 DB0 DB0 ...DB0 DB0 DB0 | DB0 DB0 DB0 DB0 ...DB0 DB0 DB0 | 48
// | DB1 DB1 DB1 DB1 ...DB1 DB1 DB1 | DB1 DB1 DB1 DB1 ...DB1 DB1 DB1 | DB1 DB1 DB1 DB1 ...DB1 DB1 DB1 | 49
// | DB2 DB2 DB2 DB2 ...DB2 DB2 DB2 | DB2 DB2 DB2 DB2 ...DB2 DB2 DB2 | DB2 DB2 DB2 DB2 ...DB2 DB2 DB2 | 50
// | DB3 DB3 DB3 DB3 ...DB3 DB3 DB3 | DB3 DB3 DB3 DB3 ...DB3 DB3 DB3 | DB3 DB3 DB3 DB3 ...DB3 DB3 DB3 | 51
// | DB4 DB4 DB4 DB4 ...DB4 DB4 DB4 | DB4 DB4 DB4 DB4 ...DB4 DB4 DB4 | DB4 DB4 DB4 DB4 ...DB4 DB4 DB4 | 52
// | DB5 DB5 DB5 DB5 ...DB5 DB5 DB5 | DB5 DB5 DB5 DB5 ...DB5 DB5 DB5 | DB5 DB5 DB5 DB5 ...DB5 DB5 DB5 | 53
// | DB6 DB6 DB6 DB6 ...DB6 DB6 DB6 | DB6 DB6 DB6 DB6 ...DB6 DB6 DB6 | DB6 DB6 DB6 DB6 ...DB6 DB6 DB6 | 54
// | DB7 DB7 DB7 DB7 ...DB7 DB7 DB7 | DB7 DB7 DB7 DB7 ...DB7 DB7 DB7 | DB7 DB7 DB7 DB7 ...DB7 DB7 DB7 | 55
// ____|________________________________|________________________________|________________________________|
// X=7 | DB0 DB0 DB0 DB0 ...DB0 DB0 DB0 | DB0 DB0 DB0 DB0 ...DB0 DB0 DB0 | DB0 DB0 DB0 DB0 ...DB0 DB0 DB0 | 56
// | DB1 DB1 DB1 DB1 ...DB1 DB1 DB1 | DB1 DB1 DB1 DB1 ...DB1 DB1 DB1 | DB1 DB1 DB1 DB1 ...DB1 DB1 DB1 | 57
// | DB2 DB2 DB2 DB2 ...DB2 DB2 DB2 | DB2 DB2 DB2 DB2 ...DB2 DB2 DB2 | DB2 DB2 DB2 DB2 ...DB2 DB2 DB2 | 58
// | DB3 DB3 DB3 DB3 ...DB3 DB3 DB3 | DB3 DB3 DB3 DB3 ...DB3 DB3 DB3 | DB3 DB3 DB3 DB3 ...DB3 DB3 DB3 | 59
// | DB4 DB4 DB4 DB4 ...DB4 DB4 DB4 | DB4 DB4 DB4 DB4 ...DB4 DB4 DB4 | DB4 DB4 DB4 DB4 ...DB4 DB4 DB4 | 60
// | DB5 DB5 DB5 DB5 ...DB5 DB5 DB5 | DB5 DB5 DB5 DB5 ...DB5 DB5 DB5 | DB5 DB5 DB5 DB5 ...DB5 DB5 DB5 | 61
// | DB6 DB6 DB6 DB6 ...DB6 DB6 DB6 | DB6 DB6 DB6 DB6 ...DB6 DB6 DB6 | DB6 DB6 DB6 DB6 ...DB6 DB6 DB6 | 62
// | DB7 DB7 DB7 DB7 ...DB7 DB7 DB7 | DB7 DB7 DB7 DB7 ...DB7 DB7 DB7 | DB7 DB7 DB7 DB7 ...DB7 DB7 DB7 | 63
//5 读状态命令: BF 0 ON/OFF RST 0 0 0 0
// R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
// 1 0 BF 0 ON/OFF RST 0 0 0 0
//BF=1,表示模块正在进行内部操作,此时,不接受任何外部指令和命令;
//BF=0,表示模块处于准备状态,此时,可以接受外部命令和指令;
//ON/OFF=1,表示模块为开显示状态;ON/OFF=0,表示模块为关显示状态;
//RST=1,表示模块内部正在进行初始化,此时,不接受任何外部指令和命令;
//6 写显示数据
// R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
// 0 1 D7 D6 D5 D4 D3 D2 D1 D0
//把D0~D7写入相应的DDRAM地址单元中,Y地址指针自动加1;
//7 读显示数据
// R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
// 1 1 D7 D6 D5 D4 D3 D2 D1 D0
//把DDRAM中相应的地址单元上的数据D0~D7读到数据总线DB0~DB7,Y地址指针自动加1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -