《LCD1602A显示屏.docx》由会员分享,可在线阅读,更多相关《LCD1602A显示屏.docx(7页珍藏版)》请在优知文库上搜索。
1、1.CD显示屏1602A,1.CD1602兰屏,带背光蓝底白字标准型16X2液晶显示字符模块(背光/蓝屏)1602采纳标准的16脚接口,其中:第1脚:VSS为地电源第2脚:YDD接5V1E电源第3脚:Vo为液晶故示器对比度调整端.按正电液时对比度最弱,接地电源时对比度最高.对比度过高时会产生“以影”,运用时可以通过一个IoK的电位器门整对比度第4脚:RS为寄存器选择.l电平常选择数据寄存器、低电平常选择指令寄存器.第5脚:R/W为读写信号线.高电平常进行读探作,低电平常进行写操作.当RS和R共同为低电平常可以写入指令或者显示地址,当RS为低电平咻为高电平常可以读忙伯号,当RS为高电平RI为低电
2、平常可以写入数据,第6脚:E端为使他端.当E端由面电平跳变成低电平常,液晶模块执行吩咐.第7I4脚:IX)7)7为8位双向数据税.第15脚:背光电源正极第16脚:背光电源负极1602液晶模块内部的字符发生存储器(CCROY)已羟存储了160个不同的点阵字符图形,l表1所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,林一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是(HoOoO(HB(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母。以下是在液晶模块的其次行第一个字符的位置显示字母“A”的程序:ORG000011RSEQUP3.7;
3、确定详细硬件的连接方式RUEQiP3.6;确定详细硬件的连接方式EEQCP3.5;确定详细硬件的连接方式MovPlrocoooooib:消屏并光标复位ACA1.1.ENAB1.E:调用写入吩咐子程序MOVPl,0011100oH:设置显示模式:8位2行5x7点阵ACA1.1.ENAB1.E:调用写入吩咐子程序MoVPl,*00001IllB:显示器开、光标开、光标允许闪搬ACA1.1.aAB1.E:调用写入吩叫子程序XKVPl,8000001IOB;文字不动,光标自动右移ACAllENAB1.E:调用铝入吩咐子程序MoVPl,SOCOII:写入显示起始地址(其次行第一个位就)ACAU.ENAB
4、1.E;调用月入吩咐子程序MOVPl,010000018:字母A的代码SETBRS;RS=IC1.RRW:RW=O;打算写人数据C1.RE:E=O:执行显示吩咐ACAI.1.DEUY:推断液晶模块是否忙?SETBE;E=I;显示完成,程序停车AJMP$ENAB1.E:C1.RRS:写入限制吩咐的子程序C1.RRWCI.RECIXDE1.AYSETBERETDE1.AY:MOvP1.WFFH:推断液晶显示器是否忙的子程序C1.RRSSETBRWC1.RENOPSETBE川P1.7.DE1.AY:假如P1.7为高电平表示忙就循环等待RETEND程序在起先时对液晶模块功能进行了初始化谀置,约定了显示
5、格式.留意显示字符时间标是门动右移的,无需人工干预,姆次输入指令都先调用推断液晶模块是否忙的子程序DE1.AY,然后输入显示位置的地址OCOI1.最终输入更显示的字符A的代码11H.SMC1602A(16*2)模拟口线接线方式连接线图:I1.CM511.CM511.CM51IIDBO-P1.0IDBlPl.4IIRWP2.0DB1Pl.1IDB5pi.5RSP2.1DB2Pl.2IDB6Pl.6)EP2.2DB3Pl.3IDB7Pl.7IY1.CD接IK电阻到GND注:AT89S52运用12Y晶振define1.a1.RWP2_0定义引脚define1.a1.RSP2_lUdefineH1.E
6、P2_2Wefine1.a1.DaIaPl如CfinCBusy0x80用于检测1.cY状态字中的Busy标识#includevoidWriteDatalCM(unsignedcharWD1.CM):voidWriIeCownand1.CM(unsignedcharWC1.OI,BuysO;unsignedcharRendData1.QKvoid);unsignedcharReadStatusIO(Void);void1.CTIlnit(VOid);voidDislayOiieChar(ursigrcdcharX1unsignedcharY.unsignedcharDData);voidDisp
7、lay1.istChar(unsignedcharX,unsignedcharY.unsignedcharcode*DData);voidDelay5Ms(void);voidDelay100Ms(Void):unsignedcharcodeuctech-atal,CM(u11signedChiJrWl)1.CM)(ReadSlatus1.CVK):/检测忙1.a1.DaIa=WD1.CM:1.aUS=i;1.a1.RW=o;1.e1.E=Q;若晶振速度太离可以在这后加小的延时1.a1.E=0:延时1.Ci1.E=1;写指令voidWriteCmandl.CM(unsignedcharWCI.
8、CM.BuysC)/BuysC为0时忽视忙检测(if(BuysC)ReadStatus1.CMO;/依据须要检测忙1.Ci1.Data=WC1.QI:1.01.RS=0;1.a1.RW=0:1.o1.E=0:1.a1.E=0;Id1.E=1:读数据unsignedcharReadData1.GI(void)(1.a1.RS=1:1.O1.RW=1:1.a1.E=o:l.CM_E=O;1.ei1.E=1;return(1.Q1.Data);读状态unsignedcharReadStalus1.OI(void)1.Ci1.Data=OxFF:1.CM_RS=O;1.a1.RW=1;1.Ci1.E=
9、O;1.CM_E=0:1.a1.E=1;while(1.CMData&BUSy);/检测忙信号return(l.ttI_Datn);voidIOInit(Void)/71.CM初始化(1.CM.Data=O;WriteCcxnmiInd1.CM(0x38.O):三次显示模式设置不检测忙信号DelaySMsO;WriIeCommand1.CM(0x38,0):Dclay5Ms();WriteCommand1.CM(Ox38.0);Delay5MsO:WriteCcxnmiInd1.CM(0x38.1):故示模式设置,起先要求每次检冽忙仿号WriteCOmmand1.CM(OX08,1);关闭显示
10、WriIeCommand1.CM(0x01,1);/显示消麻WriteComiBand1.CM(0x06,1):/显示光标移动设置WriteCommand1.CM(OxOC11):/B示升及光标设置按指定位置总示一个字符voidDisplayOneChar(unsignedcharX,unsignedcharY,unsignedcharDData)Y&=0x1:X&=OxF:限制X不能大于15.Y不能大于1if(Y)XI=0x40:当要显示其次行时地址码+0x40;XI=0x8。:算出指令码WriteCo0x20)若到达字率尾则退出(if(X=OxF)/X坐标应小于OXF(DisplayOneChar(X,Y,DDatat1.ist1.ength);显示垂个字符1.ist1.ength+;X+;)5s延时voidDclaySMs(VOid)(UnSignedintTempCyc=5552:WhiledempCyc-);/400ms延时voidDclay100Ms(Void)(UnSignedcharTeepCycA=5:unsignedintTempCycB:while(TempCycA-)TempCycW=7269;hiIe(TempCycB-):