您当前的位置:五五电子网电子知识电子学习基础知识电脑-单片机-自动控制液晶显示器的测试程序 正文
液晶显示器的测试程序

液晶显示器的测试程序

点击数:7637 次   录入时间:03-04 11:52:58   整理:http://www.55dianzi.com   电脑-单片机-自动控制

  要让显示屏显示英文字母“A”。须输入以下程序:

  编译通过后,将LCD1文件夹中的hex文件通过TOP851编程器烧录到89C51芯片中,将芯片插入到S2型数码管试验板上,试验板上标示LCD1的排针通过14芯排线与液晶显示模组(LCM)正确连接,将TOP851编程器的9V直流电源插到S2型试验板上通电运行。可看到液晶显示屏的绿色背光柔和点亮,同时显示英文字符“A”。
  
  我们对程序进行解释。
  
  序号1(程序解释,以下同):程序分隔及说明。
  
  序号2:定义LCM的RS引脚由89C51的P3.3脚控制。
  
  序号3:定义LCM的R_W引脚由89C51的P3.4脚控制。
  
  序号4:定义LCM的E引脚由89C51的P3.5脚控制。
  
  序号5:定义LCM的数据口DBO_DB7由89C51的P1口控制。

  序号6:程序分隔及说明。
  
  序号7:程序从地址OOOOH开始。
  
  序号8:跳转到MAIN主程序处。
  
  序号9:程序分隔及说明。
  
  序号10:主程序MAIN从地址0030H开始。
  
  序号11:主程序开始,堆栈指针指向70H。
  
  序号12:程序分隔及说明。
  
  序号13:向累加器送立即数O0111000B.确定8位数据传送,双行显示,5x7点阵字形。
  
  序号14:程序分隔及说明。
  
  序号15:将累加器内容压栈保护。
  
  序号16:置允许端E低电平。
  
  序号17:置读写端R_W高电平,选择读方式。
  
  序号18:置寄存器选择端RS低电平,选择指令寄存器。
  
  序号19:置允许端E高电平。
  
  序号20:将LCM的DBO_DB7数据读至累加器中。
  
  序号21:置允许端E低电平。
  
  序号22:若累加器的第7位(即为LCM的忙碌标志信号BF)为高电平,说明LCM正忙,跳转回BUSY_LOOP处继续查询。否则顺序执行。
  
  序号23:弹出压栈内容至累加器中。
  
  序号24:调用延肘子程序。
  
  序号25:程序分隔及说明。
  
  序号26:置允许端E低电平。
  
  序号27:置读写端R_W低电平,选择写方式。
  
  序号28:置寄存器选择端RS低电平,选择指令寄存器。
  
  序号29:置允许端E高电平。
  
  序号30:将累加器内容传送至LCM。
  
  序号31:置允许端E低电平。
  
  序号32:程序分隔及说明。
  
  序号33:向累加器送立即数OOO01110B,显示屏开启,显示光标,光标不闪烁。
  
  序号34:程序分隔及说明。
  
  序号35:将累加器内容压栈保护。
  
  序号36:置允许端E低电平。
  
  序号37:置读写端R_W高电平,选择读方式。
  
  序号38:置寄存器选择端RS低电平,选择指令寄存器。
  
  序号39:置允许端E高电平。
  
  序号40:将LCM的DBO_DB7数据读至累加器中。
  
  序号41:置允许端E低电平。
  
  序号42:若累加器的第7位(即为LCM的忙碌标志信号BF)为高电平,说明LCM正忙,跳转回BUSY_LOOP1处继续查询。否则顺序执行。
  
  序号43:弹出压栈内容至累加器中。
  
  序号44:调用延时子程序。
  
  序号45:程序分隔及说明。
  
  序号46:置允许端E低电平。
  
  序号47:置读写端R_W低电平,选择写方式。
  
  序号48:置寄存器选择端RS低电平,选择指令寄存器。
  
  序号49:置允许端E高电平。
  
  序号50:将累加器内容传送至LCM。
  
  序号51:置允许端E低电平。
  
  序号52:程序分隔及说明。
  
  序号53:向累加器送立即数OOOO0110B.光标右移一格,AC值加一,字符全部不动。
  
  序号54:程序分隔及说明。
  
  序号55:将累加器内容压栈保护。
  
  序号56:置允许端E低电平。
  
  序号57:置读写端R_W高电平,选择读方式。
  
  序号58:置寄存器选择端RS低电平,选择指令寄存器。
  
  序号59:置允许端E高电平。
  
  序号60:将LCM的DBO_DB7数据读至累加器中。
  
  序号61:置允许端E低电平。
  
  序号62:若累加器的第7位(即为LCM的忙碌标志信号BF)为高电平,说明LCM正忙,跳转回BUSY_LOOP2处继续查询。否则顺序执行。
  
  序号63:弹出压栈内容至累加器中。
  
  序号64:调用延时子程序。
  
  序号65:程序分隔及说明。
  
  序号66:置允许端E低电平。
  
  序号67:置读写端R_W低电平,选择写方式。
  
  序号68:置寄存器选择端RS低电平,选择指令寄存器。
  
  序号69:置允许端E高电平。
  
  序号70:将累加器内容传送至LCM。
  
  序号71:置允许端E低电平。
  
  序号72:程序分隔及说明。
  
  序号73:程序分隔及说明。
  
  序号74:向累加器送立即数10000000B,设定要读写数据的DDRAM地址。
  
  序号75:程序分隔及说明。
  
  序号76:将累加器内容压栈保护。
  
  序号77:置允许端E低电平。
  
  序号78:置读写端R_W高电平,选择读方式。
  
  序号79:置寄存器选择端RS低电平,选择指令寄存器。
  
  序号80:置允许端E高电平。
  
  序号81:将LCM的DBO_DB7数据读至累加器中。
  
  序号82:置允许端E低电平。
  
  序号83:若累加器的第7位(即为LCM的忙碌标志信号BF)为高电平,说明LCM正忙,跳转回BUSY_LOOP3处继续查询。否则顺序执行。
  
  序号84:弹出压栈内容至累加器中。
  
  序号85:调用延时子程序。
  
  序号86:程序分隔及说明。
  
  序号87:置允许端E低电平。
  
  序号88:置读写端R_W低电平,选择写方式。
  
  序号89:置寄存器选择端RS低电平,选择指令寄存器。
  
  序号90:置允许端E高电平。
  
  序号91:将累加器内容传送至LCM。
  
  序号92:置允许瑞E低电平。
  
  序号93:程序分隔及说明。
  
  序号94:向累加器送立即数41H(英文字母“A”的ASCII码)。
  
  序号95:程序分隔及说明。
  
  序号96:将累加器内容压栈保护。
  
  序号97:置允许端E低电平。
  
  序号98:置读写端R_W高电平,选择读方式。
  
  序号99:置寄存器选择端RS低电平,选择指令寄存器。
  
  序号100:置允许端E高电平。
  
  序号101:将LCM的DBO_DB7数据读至累加器中。
  
  序号102:置允许端E低电平。
  
  序号103:若累加器的第7位(即为LCM的忙碌标志信号BF)为高电平,说明LCM正忙,跳转回BUSY_LOOP4处继续查询。否则顺序执行。
  
  序号104:弹出压栈内容至累加器中。

  序号105:调用延时子程序。
  
  序号106:程序分隔及说明。
  
  序号107:置允许端E低电平。
  
  序号108:置读写端R_W低电平,选择写方式。
  
  序号109:置寄存器选择端RS高电平,选择数据寄存器。
  
  序号110:置允许端E高电平。
  
  序号111:将累加器内容传送至LCM。
  
  序号112:置允许端E低电平。
  
  序号113:程序分隔及说明。
  
  序号114:程序动态停机。
  
  序号115:程序分隔及说明。
  
  序号116:程序分隔及说明。
  
  序号117~121:2.7mS延时子程序。
  
  序号122:程序分隔及说明。
  
  序号123:程序结束。
  
  序号124:程序分隔及说明。
  
  说明:对LCM引脚RS、R_W、E的操作要严格按照读写时序进行,否则可能造成读写失败。
  
  通过实验我们看到液晶显示屏听从我们的指挥显示出了所需的“A”字。但程序较长,不够精简。那好,下面我们按照模块设计方式,先建立起相关的子程序,再来实践更复杂、更实用的液晶显示编程技术。
  
  查询忙碌标志信号子程序对单片机(MCU)而言LCM是一个慢速的装置,MCU每下达一个指令到LCM,LCM至少要40uS才能完成。在LCM执行一个指令的过程中不能接收其它的指令(忙碌标志信号读取指令除外),所以当MCU要对LCM发指令之前,必须先检查LCM的忙碌标志信号BF。BF=O表示LCM空闲,可以接收指令;BF=1则表示LCM正在执行指令中,很忙。MCU必须确定LCM有空闲的时候才能发指令给LCM。

[1] [2]  下一页


本文关键字:程序  液晶显示器  电脑-单片机-自动控制电子学习 - 基础知识 - 电脑-单片机-自动控制