《第8次《单片机原理与应用》-液晶显示》由会员分享,可在线阅读,更多相关《第8次《单片机原理与应用》-液晶显示(52页珍藏版)》请在金锄头文库上搜索。
1、单片机原理与应用 实验 信通学院2单片机驱动液晶显示器单片机驱动液晶显示器LCDLCD模块模块1、Lcd分类Lcd可分为两种类型,一种是字符模式lcd ,另一种是图形模式lcd。其中,字符模式 lcd是点阵型液晶显示器,专门用来显示字 母,数字,符号。由于lcd的控制需专用的驱动电路,一般 不会单独使用,而是将lcd面板,驱动与控 制电路组合成模块一起使用,简称lcm。3目前,常用的有16*1,16*2,20*2,40*2等字符模 块。这些lcm虽然显示数字不同,但都有相同的输入输 出界面。Lcm模块42.lcd模块的引脚下面介绍常用的20*2字符模块,外型如图13.1所 示,引脚如图所示。2
2、0*2lcd每行可以显示20个字,可显示的行数为 两行,有16只引脚,其中数据线db0-db7与控制 信号线rs,r/w,e用来连接单片机,另外3只信 号线vss,vdd,v0,其各脚功能如表563、寄存器选择及显示器地址Lcd内部有两个寄存器,一个是指令寄 存器IR,另一个是数据寄存器DR。 IR用来 存放由微控制器送来的指令代码,如光标归 位,清除显示等,dr用来存放显示的数据。显示的次序是先把欲存放数据地址写入 ir,再将欲显示的数据写入dr,dr就会自动 的把数据送至相应的ddram和cgram地址 , ddram是显示数据的存储器,存放lcd的 显示数据;cgram是字符产生器,用来
3、存 放自己设计的5*7点图形的显示数据。782.显示器地址 20*2显示器地址3.Lcm控制指令 Lcm提供了11项指令910一、简单液晶显示程序一、简单液晶显示程序单片机接有lcd液晶显示器,开机以后在液晶显示 屏第一行显示“ok”。硬件设计单片机p1.0p1.7分别于lcd模块的db0-db7数据线 连接,p3.5p3.7接到lcd模块控制信号引脚rs、r/w 和e,lcd模块的vdd引脚接电源+5v,vss和v0引脚接 地。11硬件连接图硬件连接图12程序设计本程序是由主程序、初始化子程序、写指 令子程序、判断lcm是否忙碌子程序和写数 据子程序组成。1314RS bit P3.5 RW
4、 bit P3.6 E bit P3.7 LCD EQU P1 MAIN: ;主程序 MOV LCD,#00000001B ;清屏并光标复位 ACALL WR_COMM ;调用写入命令子程序 ACALL INIT_LCD ;调用初始化子程序 MOV LCD,#82H ;写入显示起始地址 ACALL WR_COMM ;调用写入命令子程序 MOV LCD,#o ;显示“o“一、简单液晶显示参考程序一、简单液晶显示参考程序1 115ACALL WR_DATA ;调用写入数据子程序 MOV LCD,#k ;显示“k“ ACALL WR_DATA ;调用写入数据子程序 JMP $ ;维持当前输出状态 I
5、NIT_LCD: ;LCD初始化设定 MOV LCD,#00111000B ;设置8位、2行、5x7点阵 ACALL WR_COMM ;调用写入命令子程序 MOV LCD,#00001111B ;显示器开,光标允许闪烁 ACALL WR_COMM ;调用写入命令子程序 MOV LCD,#00000110B ;文字不动,光标自动右移 ACALL WR_COMM ;调用写入命令子程 RET一、简单液晶显示参考程序一、简单液晶显示参考程序2 216WR_COMM: ;写入命令子程序 CLR RS ;RS=0,选择指令寄存器 CLR RW ;RW=0,选择写模式 CLR E ;E=0,禁止读/写LCM
6、 ACALL CHECK_BF ;调用判LCM忙碌子程序 SETB E ;E=1,允许读/写LCM RET CHECK_BF: ;判断是否忙碌子程序 MOV LCD,#0FFH ;此时不接受外来指令 CLR RS ;RS=0,选择指令寄存器 SETB RW ;RW=1,选择读模式 CLR E ;E=0,禁止读/写LCM NOP ;延时1微秒 SETB E ;E=1,允许读/写LCM JB LCD.7,CHECK_BF ;忙碌循环等待 RET一、简单液晶显示参考程序一、简单液晶显示参考程序3 317WR_DATA: ;写入数据子程序 SETB RS ;RS=1,选择数据寄存器 CLR RW ;R
7、W=0,选择写模式 CLR E ;E=0,禁止读/写LCM ACALL CHECK_BF ;调用判断忙碌子程序 SETB E ;E=1,允许读/写LCM RETEND一、简单液晶显示参考程序一、简单液晶显示参考程序4 418任务分析Lcd循环显示字符串。首先在第一行显示hello!, 2s后在第二行显示welcome to lcd!,再过2s后第 一行改为nice to meet you,再过2s后将第二行改为 good luck!。二、液晶循环显示二、液晶循环显示硬件设计单片机p1.0p1.7分别于lcd模块的db0-db7数据线 连接,p3.5p3.7接到lcd模块控制信号引脚rs、 r/
8、w和e,lcd模块的vdd引脚接电源+5v,vss和v0 引脚接地。19硬件连接图硬件连接图20程序设计在主程序中 进行4次在取 字符串操作 ,每次显示 字符串时停 留2s,更换 屏幕时清屏 ,如此循环 。, 21RS bit P3.5RW bit P3.6E bit P3.7LCD EQU P1 MAIN: ;主程序ACALL INIT_LCD ;调用初始化子程序LOOP1: ;循环MOV LCD,#81H ;写入显示起始地址 ACALL WR_COMM ;调用写指令子程序 MOV DPTR,#LINE1 ;字符串地址送入DPTR MOV R0,#6 ;字符串的字符数ACALL DISP_L
9、CD ;调用查表子程序ACALL DELAY ;调用延时子程序二、液晶循环显示二、液晶循环显示1 122MOV LCD,#0C0H ;写入显示起始地址 ACALL WR_COMM ;调用写指令子程序MOV DPTR,#LINE2 ;字符串地址送入DPTR MOV R0,#14 ;字符串的字符数ACALL DISP_LCD ;调用查表子程序ACALL DELAY ;调用延时子程序ACALL CLS ;调用清屏子程序MOV LCD,#80H ;写入显示起始地址 ACALL WR_COMM ;调用写指令子程序MOV DPTR,#LINE3 ;字符串地址送入DPTR MOV R0,#16 ;字符串的字
10、符数ACALL DISP_LCD ;调用查表子程序ACALL DELAY ;调用延时子程序二、液晶循环显示二、液晶循环显示2 223MOV LCD,#0C0H ;写入显示起始地址 ACALL WR_COMM ;调用写指令子程序MOV DPTR,#LINE4 ;字符串地址送入DPTR MOV R0,#10 ;字符串的字符数ACALL DISP_LCD ;调用查表子程序ACALL DELAY ;调用延时子程序ACALL CLS ;调用清屏子程序JMP LOOP1 ;无限循环 INIT_LCD: ;LCM初始化设定MOV LCD,#00000001B ;清屏并光标复位ACALL WR_COMM ;调
11、用写指令子程序 MOV LCD,#00111000B;设置8位、2行、5x7点阵 ACALL WR_COMM ;调用写指令子程序 MOV LCD,#00001111B ;显示器开,光标允许闪烁ACALL WR_COMM ;调用写指令子程序MOV LCD,#00000110B ;文字不动,光标自动右移 ACALL WR_COMM ;调用写指令子程序RET二、液晶循环显示二、液晶循环显示3 324WR_COMM: ;写指令子程序CLR RS ;RS=0,选择指令寄存器CLR RW ;RW=0,选择写模式CLR E ;E=0,禁止读/写LCMACALL CHECK_BF ;调用判LCM忙碌子程序SE
12、TB E ;E=1,允许读/写LCMRET CHECK_BF: ;判断是否忙碌子程序MOV LCD, #0FFH ;此时不接受外来指令CLR RS ;RS=0,选择指令寄存器SETB RW ;RW=1,选择读模式CLR E ;E=0,禁止读/写LCMNOP ;延时1微秒SETB E ;E=1,允许读/写LCMJB LCD.7,CHECK_BF ;忙碌循环等待 RET二、液晶循环显示二、液晶循环显示4 425WR_DATA: ;写数据子程序SETB RS ;RS=1,选择数据寄存器CLR RW ;RW=0,选择写模式CLR E ;E=0,禁止读/写LCMACALL CHECK_BF ;调用判断忙碌子程序SETB E ;E=1,允许读/写LCMRET DI