吴少华
(中水东北勘测设计研究有限责任公司 吉林长春 130061)
摘 要:液晶显示模块LCM12864ZK由于功能强大,能满足多种需要而得到了越来越广泛的应用。为了使用
LCM12864ZK更加简单、方便,对其性能特点、引脚定义、用户指令进行了详细地描述,并分别介绍了与单片机的两种接口方
式,通过LCM12864ZK与单片机MSP430F149的实际应用电路描述,给出了相应的用C语言编写的软件。
关键词:液晶;LCM12864ZK;MSP430F149;C语言
中图分类号:TP29 文献标识码:B 文章编号:10042373X(2007)232188203
InterfaceControlTechniqueofLCM12864ZKandMSP430F149
WUShaohua
(ChinaWaterNortheasternInvestigationDesignandResearchCo.Ltd.,Changchun,130061,China)
Abstract:TheLCDLCM12864hasmoreandmoreextensiveapplicationbecausethefunctionisstrong,cansatisfyvariousde2mands.ForthesakeoftheusageLCM12864ZKismoresimple,convenient,Itgivesadataileddescriptiononitsfunctioncharacteris2tics,ledfeetdefinitionandcustomer′sinstruction,alsointroducestwokindsofinterfacebetweensinglechip.ItgivesthesoftwarewhichiswrittenbyClanguageaccordingtophysicallyappliedelectroniccircuitofLCM12864ZKandMSP430F149.
Keywords:LCD;LCM12864ZK;MSP430F149;Clanguage 液晶显示器件与LED相比,具有工作电压低、功耗低、显示信息量大、寿命长等优点。因此,在移动通信、仪器仪表、电子设备和家用电器等方面有着日益广泛的应用。
LCM12864ZK是北京青云创新科技发展有限公司推出的带
系统各种工作电压及便携式仪器低功耗的要求。为了适应多种微处理器和单片机接口的需要,模块提供了4位/
8位并行、2线/3线串行多种接口方式。另外,模块还提
供了画面清除、光标显示/隐藏、显示打开/关闭、显示字符闪烁、光标移位、显示移位、反白显示、睡眠模式等操作指令。该模块可实现汉字、ASCII码、点阵图形的同屏显示,广泛用于各种仪器仪表、家用电器及通信产品中。2 模块引脚定义和用户指令2.1 模块引脚定义(见表1)
表1 模块引脚定义
引脚
123456789~1617181920
中文字库图形的液晶显示模块,其功能较强、控制简单。1 性能特点
LCM12864ZK是具有串/并行接口,内部含有中文字
库的图形点阵液晶显示模块,其内置的控制/驱动器采用中国台湾矽创电子公司生产的ST7920,因而具有较强的控制显示功能。LCM12864ZK的液晶显示屏为128×64点阵,可显示4行,每行8个汉字。该模块具有2MB的中文字型ROM(CGROM),共提供8192个16×16点阵中文字型;同时,为了便于英文和其他常用字符的显示,具有
16kB半宽字型ROM(HCGROM),提供128个16×8点
名称
KAGNDVCCNCRS(CS)RW(SID)E(SCLK)D0~D7PSBRSTVRVO
说明背光源负极背光源正极地
3V或5V
阵的字母符号字型;另外,绘图显示画面还提供一个64×
256点阵的绘图区域(GDRAM)及240点的ICONRAM,
可以和文字画面混合显示,且内含CGRAM可提供4组软件可编程的16×16点阵造字功能。
LCM12864ZK模块采用LED背光,工作电压/电流分
空
选择寄存器(并行)0:指令寄存器1:数据寄存器片选(串行)0:禁止1:允许
读写控制脚(并行)0:写入1:读输入串行数据(串行)
读写数据起始脚(并行)输入串行脉冲(串行)数据线0~7
控制界面0:串行1:并行8/4复位信号,低有效
LCD亮度调整,外接电阻端LCD亮度调整,外接电阻端
别为3V/112mA或5V/2mA,具有217~515V的宽工作电压范围,还具有睡眠、正常及低功耗工作模式,可满足
收稿日期:2007205215
188
© 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
《现代电子技术》2007年第23期总第262期2.2 用户指令
LCM12864ZK的指令集包括基本指令集(RE=0)和
电子技术应用3.1 并行接口数据传输
当LCM12864ZK的PSB脚接高电平时(或模块背面
S/P的短路电阻在“P”侧),模块将进入并行传输模式。在
扩充指令集(RE=1)两大类,用户可以通过这些命令使模块执行相应的显示或控制功能。下面简要介绍部分常用的操作命令:
(1)设定DDRAM(DisplayDataRAM)地址
RS0
RWDB70
1
DB6AC6
DB5AC5
DB4AC4
DB3AC3
DB2AC2
DB1AC1
DB0AC0
并行传输模式下,可由指令位(DLFLAG)来选择8位或
4位接口方式,主控制系统将配合“RS”“,RW”“,E”,D0~D7来完成指令/数据的传送。在4位传输模式中,每一个8位的指令或数据都将被分为两组:较高4位(D7~D4)的
数据会被放在第一组的D7~D4部分,而较低4位(D3~
D0)的数据则会被放在第二组的D7~D4部分,在4位传
设定DDRAM地址到地址计数器(AC),第一行AC范围为80H~87H,第二行地址范围为88H~8FH,第三行AC范围为90H~97H,第四行地址范围为98H~9FH。
(2)进入点设定
RS0
RWDB70
0
DB60
DB50
DB40
DB30
DB21
DB1I/D
DB0S
输模式中,D3~D0界面未使用。3.2 串行接口数据传输
当PSB脚接低电平时(或模块背面S/P的短路电阻在“S”侧),模块将进入串行接口模式。在串行模式下将使用2条线作串行数据的传输,主控系统将配合传输同步时钟线(SCLK)和接收串行数据线(SID)来完成串行传输的动作。
当片选CS为高电位时,同步时钟线(SCLK)输入的讯号才会被接收,否则数据传输将被终止,并且将待传输的串行数据计数重设为第一位。LCM12864ZK还允许同时接入多个液晶显示模块以完成多路信息显示功能。此时,要利用片选端CS构成3线串行接口方式。通常情况下,当系统仅使用一个液晶显示模块时,模块片选脚CS可固
在数据的读取与写入时,指定光标的移动方向及显示的位移。I/D:位地址上计数器递增递减选择。当I/D=1时,光标右移,DDRAM的位地址计数器+1;当I/D=0时,光标左移,DDRAM的位地址计数器-1。S:显示画面整体位移。
(3)清除显示
RS0
RWDB70
0
DB60
DB50
DB40
DB30
DB21
DB11
DB00
定接高电平。LCM12864ZK模块的串行工作时序如下所述:
单片机与液晶模块之间传送1字节的数据共需24个时钟脉冲。首先传输起始位元组,即模块在起始位元组需
(4)功能设定
RS0
RWDB70
0
DB60
DB51
DB4DL
DB3X
DB2RE
DB1X
DB0X
(同步位元字串),此时传输计数先接收到5个连续的“1”
将被重置并且串行传输将被同步,紧接着的2个位元字串分别指定数据传输方向(读或写)位元“RW”以及数据寄存器或指令寄存器选择位元“RS”,最后的第8位固定为“0”。在接收到同步位元及“RW”和“RS”起始位元组后,每个8位元指令将被分为2个位元组接收,其中较高4位(D7~D4)的指令会被放在第1个位元组的高4位,而较低4位
(D3~D0)的指令则会被放在第2个位元组的高4位,至
DL=l,为8bMPU控制界面;DL=0,为4bMPU控
制界面;RE=1,为扩充指令集;RE=0为基本指令集。
(5)写入资料到RAM
RS0
RWDB70
D7
DB6D6
DB5D5
DB4D4
DB3D3
DB2D2
DB1D1
DB0D0
于相关其他4位则都为0,如此完成一个字节指令或数据
写入资料到内部RAM,写入后会使AC改变。
(6)读取忙碌标志(BF)和位址计数器
RS0
RWDB71
BF
DB6AC6
DB5AC5
DB4AC4
DB3AC3
DB2AC2
DB1AC1
DB0AC0
的传送。
4 字符显示及模块说明4.1 字符显示
LCM12864ZK按照每个中文字符16×16点阵将显示
读取忙碌标志(BF)可以确认内部动作是否完成,同时可以读出位址计数器(AC)的值。3 接口方式与时序
LCM12864ZK具有串/并行多种接口方式,易与各种
屏分为4行8列,共32个区,每个区可显示1个中文字符或2个16×8点阵全高ASCII码字符。LCM12864ZK内部提供128×2B的字符显示RAM缓冲区(DDRAM)。字符显示是通过将字符显示编码写入该字符显示RAM实现的。根据写入内容的不同,可分别在液晶屏上显示
CGROM(中文字库),HCGROM(ASCII码字库)及
型号单片机、微处理器连接。
189
© 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
新型显示技术吴少华:LCM12864ZK与MSP430F149的接口控制技术while((IFG1&OFIFG)!=0);BCSCTL2|=SELM1;//主振荡器有效P1DIR|=0x03;//P1.0,P1.1输出Init();
WriteComm(0x01,0); //清屏DisplayString(COW1,menu);//显示一行字符}
voidDisplayString(unsignedcharCursorPosition,constunsignedchar3index)//显示一行字子程序 {unsignedchari;
WriteComm(CursorPosition,0); ShortDelay(); for(i=0;i<17;i++) //一行最多8个汉字,即16个Char {WriteComm(3index,1); ShortDelay(); index++;
){gotoexitfor1;}} if(3index==′\\0′
exitfor1:
WriteComm(CursorPosition,0);//设置光标在每行的首位 ShortDelay();
WriteComm(0x0f,0);//光标在第二行 ShortDelay();}voidSidHigh(void)//SID高电平子程序 {SCLKL;
SIDH;SCLKH;}//SID高电平;voidSidLow(void)//SID低电平子程序 {SCLKL;
SIDL;CLKH;}//SID低电平voidWriteComm(unsignedcharComm,unsignedintbb)
//写命令子程序
{unsignedintii;
InitWatchDog(); if(bb==1)//写数据命令,RS=1,RW=0 {for(ii=0;ii<5;ii++){SidHigh();}
//连续输出5个1;
SidLow();//输出RW SidHigh();//输出RS SidLow();}//输出0 else//写控制命令,RS=0,RW=0 {for(ii=0;ii<5;ii++){SidHigh();}
//连续输出5个1;
for(ii=0;ii<3;ii++){SidLow();}}
//输出RS,RW,0
ii=0;a1: if((Comm&0x80)==0){SidLow();} else{SidHigh();}//写高四位 Comm=Comm32; ii++; if(ii<4){gotoa1;} for(ii=0;ii<4;ii++){SidLow();}//输出4个0 ii=0;a2: if((Comm&0x80)==0){SidLow();} else{SidHigh();}//写低四位 Comm=Comm32; ii++; if(ii<4){gotoa2;} for(ii=0;ii<4;ii++){SidLow();}//输出4个0}
//清屏子程序
voidDisplayClr(void) {WriteComm(0x01,0); DelayTime();}//延时子程序
voidDelayTime(void)//(4000,20)10ms{unsignedinti; for(i=0;i<400;i++); {InitWatchDog(); ShortDelay();}}//短延时voidShortDelay(void)//延时100μs
(下转第194页)
CGRAM(自定义字型)的内容。三种不同字符/字型的编
码选择范围为:0000~0006H显示自定义字型;02H~
7FH显示半宽ASCII码字符;A1AOH~F7FFH显示8192种GB2312中文字库字型。
4.2 模块使用说明
使用LCM12864ZK显示模块时,应注意以下几点:
(1)引脚RST和PSB可悬空,不接时,为并行接口方式:引脚VR和V0之间必须接可变电阻(212~10kΩ),该可变电阻一端接VR,调整端接V0,另一端悬空。
(2)模块在接收指令前,单片机必须先确认模块内部
处于非忙状态,即读取BF标志时BF为“0”,方可接受新的指令。如果在送出一个指令前不检查BF标志,则在前一个指令和该指令中间必须延迟一段较长的时间,即等待前一个指令确定执行完成。
(3)RE为基本指令集与扩充指令集的选择控制位。当变更RE后,以后的指令集将维持在最后的状态,除非再次变更RE位,否则使用相同指令集时,无需每次均重设RE位。
(4)串行传输时,如果有多个数据或指令要传送,必
须要等到一个指令执行完毕后再传送下一个指令或数据,否则会造成指令或数据的丢失。这是因为液晶模块内部没有发送/接收缓冲区。
(5)若要在某一个位置显示中文字符,应先设定显示字符的位置,即先设定显示地址,再写入中文字符编码。5 LCM12864ZK与MSP430F149的应用实例将引脚PSB接地,片选CS固定接高电平。使用LCM12864ZK的2线串行接口方式可大大简化液晶显示模块与单片机之间的接口设计。同时,也使液晶显示模块显示汉字变得极为容易、方便。MSP430F149与
LCM12864ZK模块的2线串行接口电路非常简单,将SCLK接P1.0,SID接P1.1。下面给出用C语言编写的
相应的软件程序代码。
#include #defineSCLKLP1OUT&=~BIT0;//口定义#defineSCLKHP1OUT|=BIT0;#defineSIDLP1OUT&=~BIT1;#defineSIDHP1OUT|=BIT1;VoidShortDelay(void);//短延时子程序 ()voidDelayunsignedint,unsignedint; //长延时子程序voidInit(void);//初始化子程序voidSidHigh(void);//发sid高电平子程序voidSidLow(void);//发sid低电平子程序 (voidWriteCommunsignedcharComm,unsignedintbb); //发命令子程序 constunsignedcharmenu[]=″测点控制″;voidmain(void)//主程序{unsignedintii,i1,i2; WDTCTL=WDTPW+WDTHOLD;//关闭看门狗BCSCTL1&=~XT2OFF;//XT2有效do {IFG1&=~OFIFG; for(ii=0xff;ii>0;ii--);} 190 © 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net 新型显示技术法绘制该面。 刘宏义等:基于Direct3D的动态地形仿真方法研究信息的检索、修改已有地形数据、删除、添加面等。通过以上方法可以根据需要产生各种各样的动态地形,如弹坑、山体坍塌等。在这里特别强调,动态地形离不开仿真过程,他是在仿真过程中对内存中的数据进行改写,而并不影响外部的地形模型文件,因此,在一次仿真运行中实现的动态地形虽然和初始导人的地形一样可以支持地形匹配等各种操作,但他却仅属于这次仿真运行,在系统退出后,不保留上次动态地形所有操作和行为的任何信息,也就是说,不对下一次仿真运行产生任何影响。 参 考 文 献 [1]张小超.虚拟战场环境中动态地形的研究[D].北京:装甲兵 在删去的面的位置必须生成新的面,否则在地面上就会出现漏洞。 生成新的面比删去已有的面较为复杂,必须首先将即将构面的点的信息写入VertexBuffer,为了不打乱Vertex2 Buffer中已有点的序列,在往VertexBuffer中写人数据 时,采用的是尾部追加的方法,新来的数据总是排在队列的最后面,点的索引号也随之累加。后添加的数据受控于仿真过程,由系统计算得出。这就是为什么要在创建Ver2 texBuffer时预留一定的空间。该空间的大小应该适当,否 则VertexBuffer溢出时就会出错。然后还要在Index2 Buffer中写入面的信息,也就是将新生成的点按照其构面 关系依次写入IndexBuffer,新写入的面可以写在末尾,也可以占用刚刚删除的面的位置,同时面的索引值加1。7 结 语 以上给出了实现动态地形的方法,包括任意位置地形 工程学院,2003. [2]何红梅,吕良权,赵沁平.分布式虚拟环境中的综合地面环 境研究[J].系统仿真学报,2000,12(4):3432347. [3]何红梅.分布式虚拟战场环境系统结构的研究与实现[D]. 北京:北京航空航天大学,2000. (上接第187页) 参 考 文 献 [1]ChangSF,MesserschmittDG.DesigningHigh2throughputVLCDecoder.PartI:ConcurrentVLSIArchitecturesCir2cuitsandSystemsforVideoTechnology[J].IEEETransac2tionson,1992,2(2):1872196. [2]MaDS.YangJF.LeeJY.ProgrammableandParallelVari2 able2lengthDecoderforVideoSystems[J].IEEETransac2tionsonConsumerElectronics,1993,39(3):4482454.[3]FukuzawaY,HasegawaK,HanakiH,etal.AProgramma2 bleVLCCoreArchitectureforVideoCompressionDSP.Sig2 nalProcessingSystems,1997.SIPS972DesignandImple2mentation,1997IEEEWorkshop,1997(s):4692478.[4]WuDi,GaoWen,HuMingzeng,etal.AnExp2GolombEn2 coderandDecoderArchitectureforJVT/AVS[C].5thIn2ternationalConferenceonASIC,2003,2:9102913. [5]AVS数字音视频编解码技术标准工作组.信息技术先进音 视频编码(第二部分视频)[Z].2003. [6]陈光法,姚立敏,虞露.AVS熵解码与DSP实现[J].电视技 术,2004(10):43246. [7]任晓慧,梁齐.视频解码器中插值与加权预测的硬件实现 [J].现代电子技术,2006,29(18):97299. 作者简介 刘群鑫 女,1983年出生,同济大学硕士研究生。主要研究方向为通信中的信号处理。 (上接第190页) { unsignedinti; for(i=0;i<400;i++);}voidDisplayInit(void)//初始化子程序{DelayTime(); WriteComm(0x30,0);ShortDelay(); WriteComm(0x30,0);ShortDelay(); WriteComm(0x0C,0);ShortDelay(); WriteComm(0x01,0);DelayTime(); WriteComm(0x06,0);} 参 考 文 献 [1]北京青云创新科技发展有限公司.带中文字库图形点阵液 晶显示模块LCMxxZK使用说明书[Z]. [2]沈建华,杨艳琴,翟骁曙.MSP430系列16位超低功耗单片 机原理与应用[M].北京:清华大学出版社,2004. [3]姜喆,唐友胜,.高精度数模转换器AD420及其与MSP430 的接口技术[J].国外电子元器件,2006(11):49253. 作者简介 吴少华 男,1972年出生,安全监测工程师。主要从事水利行业的大坝安全监测的仪器仪表开发、安全监测自动化系 统集成等工作。 194 © 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net 因篇幅问题不能全部显示,请点此查看更多更全内容