液晶显示技术SED1520的使用C语言文档格式.docx
- 文档编号:20859996
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:18
- 大小:72.23KB
液晶显示技术SED1520的使用C语言文档格式.docx
《液晶显示技术SED1520的使用C语言文档格式.docx》由会员分享,可在线阅读,更多相关《液晶显示技术SED1520的使用C语言文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
#defineucharunsignedchar
#defineuintunsignedint
#definenop()_nop_()
xdataucharWC_ADD1_at_0x8000;
xdataucharRC_ADD1_at_0xA000;
xdataucharWD_ADD1_at_0x9000;
xdataucharRD_ADD1_at_0xB000;
xdataucharWC_ADD2_at_0x4000;
xdataucharRC_ADD2_at_0x6000;
xdataucharWD_ADD2_at_0x5000;
xdataucharRD_ADD2_at_0x7000;
(2)写指令代码
/*判忙*/
ucharRdBF(ucharEnable)
{
ucharstatus;
switch(Enable)/*进行E1、E2的判断、选择*/
{
case1:
status=RC_ADD1&
0x80;
/*屏蔽低7位*/
returnstatus;
break;
case2:
status=RC_ADD2&
default:
break;
}
}
/*写命令*/
voidWRCMD(ucharCMD,Enable)
uchartemp;
case1:
do
temp=RdBF
(1);
while(temp>
=0x80);
WC_ADD1=CMD;
case2:
do
temp=RdBF
(2);
WC_ADD2=CMD;
default:
(3)写显示数据
voidWRDAT(ucharCMD,Enable)
temp=RdBF
(1);
WC_ADD1=DAT;
temp=RdBF
(2);
WC_ADD2=DAT;
(4)读显示数据
ucharRdDAT(ucharEnable)
ucharDAT,temp;
DAT=RD_ADD1;
returnDAT;
DAT=RD_ADD2;
2间接控制方式
间接控制方式是计算机把字符型液晶显示模块作为终端与计算机的并行接口连接,计算机通过对该并行接口的操作间接的实现对字符型液晶显示模块的控制。
本文以AT89C51的P1和P2接口为并行接口与字符型液晶显示模块连接,图2给出了本文推荐的实用接口电路。
图2间接控制方式的接口电路
在编制驱动函数的时候,要注意时序的配合,根据M6800时序的规范:
●在写操作时,使能信号E1、E2的下降沿有效,在软件设置顺序上,先设置RS、R/W状态,再设置数据,然后产生E1、E2信号的脉冲,最后复位RS和R/W状态
●在读操作时,使能信号E1、E2的高电平有效,所以在软件设置顺序上,先设置RS,R/W状态,再设置E1、E2信号为高,这时从数据口读取数据,然后将E1、E2信号置低,最后复位RS和R/W状态。
间接控制方式通过软件执行产生操作时序,所以在时间上是足够满足要求的。
因此间接控制方式能够实现高速计算机与字符型液晶显示模块的连接。
(1)接口定义
sbitE2=P2^3;
sbitE1=P2^2;
sbitRW=P2^1;
sbitRS=P2^0;
P1=0xFF;
RS=0;
RW=1;
E1=1;
status=P1;
E1=0;
status=status&
E2=1;
E2=0;
RW=0;
P1=CMD;
nop();
voidWRDAT(ucharDAT,Enable)
RS=1;
P1=DAT;
DAT=P1;
内置SEDl520图形液晶显示模块的应用软件
内置SEDl520图形液晶显示模块的应用是随应用系统的性质而定,本节将提供一些实用程序并作为示例进一步对SEDl520指令的应用作一说明。
接口电路为图6-58和图6-59所示的实用电路,驱动程序也为上一节所提供的。
使用的液晶显示模块的样机的电原理图为图6-56所示的122×
32图形点阵的原理图,提供的程序经过修改也可以应用于其他模块。
1初始化
对模块的初始化实际上是对SEDl520的初始化。
ucharcodeCMDByte[]={0xE2,0xA4,0xA9,0xA0,0xC0,0xAF};
voidInit(void)
{
uchartemp1,temp2;
for(temp1=0;
temp1<
6;
temp1++)
for(temp2=1;
temp2<
3;
temp2++)WRCMD(*(CMDByte+temp1),temp2);
2清显示RAM区(清屏)
voidClearLCD(void)
ucharPagetemp,Segtemp,temp;
for(Pagetemp=0;
Pagetemp<
4;
Pagetemp++)
for(temp=1;
temp<
temp++)
{
WRCMD(0xB8+Pagetemp,temp);
WRCMD(0,temp);
for(Segtemp=0;
Segtemp<
80;
Segtemp++)WRDAT(0x00,temp);
}
3西文字符写入
由于水平为122点列,由两片SEDl520平分各管理61路驱动,所以在程序中要有中间接合部字符的处理。
程序把显示屏分为4个字符行,以页地址设定;
列地址为任意设定。
由于SEDl520没有字符库,所以在附录A中提供了标准的8×
8点阵的字符字模。
其中字模的第一个字节和第七、八个字节作为字符间距设置的。
程序的输入寄存器为列地址寄存器,页地址寄存器和代码寄存器。
voidXWWR(uchar*zimo,code,hang,lie)
uchartemp,lietemp1,lietemp2;
hang=hang|0xB8;
lietemp1=lie;
WRCMD(hang,1);
WRCMD(hang,2);
for(temp=0;
8;
if(lietemp1>
121)break;
elseif(lietemp1>
60)
lietemp2=lietemp1-61;
WRCMD(lietemp2,2);
WRDAT(*(zimo+code*8+temp),2);
lietemp1++;
else
WRCMD(lietemp1,1);
WRDAT(*(zimo+code*8+temp),1);
416×
16点阵中文写入子程序
汉字的显示是国内应用图形液晶显示模块的目的之一。
由于SEDl520显示存储器的特性,在取字模的时候需要进行纵向取模,即生成字库的格式为前16个字节为上半部16×
8点阵字模数据,后16个字节为下半部16×
8点阵字模数据。
voidCCWR(uchar*zimo,code,hang,lie)
uchartemp1,temp2,hangtemp,lietemp1,lietemp2;
hangtemp=hang;
2;
hangtemp=+=temp1;
if(hangtemp>
3)break;
else
hangtemp=hangtemp|0xB8;
WRCMD(hangtemp,1);
WRCMD(hangtemp,2);
for(temp2=0;
16;
temp2++)
if(lietemp1>
WRDAT(*(zimo+code*16+temp2),2);
WRDAT(*(zimo+code*16+temp2),1);
}
ucharcodeCCZTAB[]=
/*--文字:
淮--代码“0x00”*/
0x08,0x86,0x60,0x07,0x1A,0x04,0x1F,0xF2,
0x12,0x92,0x7F,0x12,0x12,0x12,0x10,0x00,
0x20,0x20,0xFE,0x00,0x00,0x00,0xFE,0x44,
0x44,0x44,0xFC,0x44,0x44,0x44,0x04,0x00,
安--代码“0x01”*/
0x01,0x09,0x31,0x21,0x21,0x2F,0xA5,0x61,
0x21,0x21,0x21,0x21,0x29,0x31,0x21,0x00,
0x01,0x01,0x01,0x02,0xE2,0x14,0x14,0x08,
0x14,0x24,0xC2,0x03,0x02,0x00,0x00,0x00,
信--代码“0x02”*/
0x01,0x02,0x0C,0x3F,0xE0,0x50,0x15,0x15,
0x95,0x75,0x55,0x15,0x15,0x10,0x10,0x00,
0x00,0x00,0x00,0xFE,0x00,0x00,0x7E,0x44,
0x44,0x44,0x44,0x44,0x7E,0x00,0x00,0x00,
息--代码“0x03”*/
0x00,0x00,0x00,0x3F,0x2A,0x2A,0x6A,0xAA,
0x2A,0x2A,0x2A,0x3F,0x00,0x00,0x00,0x00,
0x00,0x04,0x1C,0x80,0xBC,0x82,0x82,0xA2,
0x9A,0x82,0x82,0x8E,0x00,0x10,0x0C,0x00,
职--代码“0x04”*/
0x40,0x40,0x7F,0x49,0x49,0x7F,0x40,0x00,
0x7F,0x41,0x41,0x41,0x41,0x7F,0x00,0x00,
0x08,0x08,0xF0,0x10,0x10,0xFF,0x20,0x22,
0x84,0x38,0x10,0x00,0x20,0x90,0x0C,0x00,
业--代码“0x05”*/
0x00,0x08,0x06,0x01,0x00,0xFF,0x00,0x00,
0x00,0xFF,0x00,0x01,0x06,0x1C,0x08,0x00,
0x04,0x04,0x04,0xC4,0x84,0xFC,0x04,0x04,
0x04,0xFC,0x44,0x84,0x04,0x0C,0x04,0x00,
技--代码“0x06”*/
0x10,0x10,0x11,0xFF,0x12,0x14,0x00,0x13,
0x12,0x12,0xFE,0x12,0x13,0x12,0x10,0x00,
0x80,0x82,0x01,0xFE,0x00,0x02,0x02,0x04,
0xC8,0x30,0x30,0x48,0x84,0x06,0x04,0x00,
术--代码“0x07”*/
0x08,0x08,0x08,0x08,0x08,0x09,0x0A,0xFF,
0x0A,0x09,0x48,0x28,0x08,0x08,0x08,0x00,
0x08,0x08,0x10,0x20,0x40,0x80,0x00,0xFE,
0x00,0x00,0x80,0x60,0x30,0x18,0x10,0x00,
学--代码“0x08”*/
0x02,0x0C,0x08,0x48,0x3A,0x2A,0x0A,0x8A,
0x7A,0x2B,0x0A,0x18,0xEA,0x4C,0x08,0x00,
0x00,0x40,0x40,0x40,0x40,0x40,0x42,0x41,
0xFE,0x40,0x40,0x40,0x40,0x40,0x40,0x00,
院--代码“0x09”*/
0x7F,0x40,0x4C,0x52,0x61,0x30,0x24,0x24,
0xA4,0x64,0x24,0x24,0x24,0x30,0x20,0x00,
0xFF,0x00,0x40,0x20,0xC1,0x82,0x8C,0xF0,
0x80,0x80,0xFE,0x81,0x81,0x81,0x8F,0x00,
};
5滚动演示
定时间隔地有规律地修改显示起始行地址,将产生显示画面平滑向上或向下滚动的效果。
(1)向上滚动
voidScrollUp(void)
32;
WRCMD(0xC0+temp,1);
WRCMD(0xC0+temp,2);
Delayms(200);
(2)向下滚动
voidScrollDown(void)
WRCMD(0xC0,1);
WRCMD(0xC0,2);
for(temp=32;
temp>
0;
temp--)
WRCMD(0xC0+temp-1,1);
WRCMD(0xC0+temp-1,2);
6ADC实验
ADC设置指令与列驱动输出和液晶显示器件列电极的连接有关。
在SEDl520组成的模块上,输出排列是正向排序的。
这里给出的代码可以使我们看出ADC的设置对显示存储器的影响,从而对SEDl520硬件电路结构有更深入的了解。
该代码段分两个部分,前半部先设置了逆向排序,然后在第一页从第一列开始写满数据;
后半部是先设置了正向排序,然后也是在第一页从第一列开始写满数据,请观察显示效果,如果效果不明显,请加长延时的时间。
(1)逆向排序写入
voidADCNixiang(void)
WRCMD(0xA1,1);
WRCMD(0xA1,2);
WRCMD(0xB8,1);
WRCMD(0xB8,2);
WRCMD(0x00,1);
WRCMD(0x00,2);
WRDAT(0xFF,1);
WRDAT(0xFF,2);
Delayms(200);
(2)正向排序写入
voidADCZhengxiang(void)
WRCMD(0xA0,1);
WRCMD(0xA0,2);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 液晶显示 技术 SED1520 使用 语言