1、1 情境五 单片机驱动液晶显示器子情境一 lcd模块子情境二 简单液晶显示程序子情境三 lcd循环显示子情境四 液晶显示秒表2情境五 单片机驱动液晶显示器lcd模块n一、任务目标 n 了解lcd的基本结构及使用方法n二、任务分析n 1。Lcd分类n Lcd可分为两种类型,一种是字符模式lcd,另一种是图形模式lcd。其中,字符模式lcd是点阵型液晶显示器,专门用来显示字母,数字,符号。n 由于lcd的控制需专用的驱动电路,一般不会单独使用,而是将lcd面板,驱动与控制电路组合成模块一起使用,简称lcm。3n 目前,常用的有16*1,16*2,20*2,40*2等字符模块。这些lcm虽然显示数字
2、不同,但都有相同的输入输出界面。n Lcm模块情境五 单片机驱动液晶显示器lcd模块4n2.lcd模块的引脚n下面介绍常用的20*2字符模块,外型如图13.1所示,引脚如图所示。n20*2lcd每行可以显示20个字,可显示的行数为两行,有16只引脚,其中数据线db0-db7与控制信号线rs,r/w,e用来连接单片机,另外3只信号线vss,vdd,v0,其各脚功能如表情境五 单片机驱动液晶显示器lcd模块5n 情境五 单片机驱动液晶显示器lcd模块6情境五 单片机驱动液晶显示器lcd模块3.寄存器选择及显示器地址 Lcd内部有两个寄存器,一个是指令寄存器IR,另一个是数据寄存器DR。IR用来存放
3、由微控制器送来的指令代码,如光标归位,清除显示等,dr用来存放显示的数据。显示的次序是先把欲存放数据地址写入ir,再将欲显示的数据写入dr,dr就会7 自动的把数据送至相应的ddram和cgram地址,ddram是显示数据的存储器,存放lcd的显示数据;cgram是字符产生器,用来存放自己设计的5*7点图形的显示数据。情境五 单片机驱动液晶显示器lcd模块82.显示器地址 20*2显示器地址情境五 单片机驱动液晶显示器lcd模块93.Lcm控制指令Lcm提供了11项指令情境五 单片机驱动液晶显示器lcd模块1011子情境二 简单液晶显示程序一、任务目标 通过本任务学习了解lcd的基本使用方法二
4、、任务分析 单片机接有lcd液晶显示器,开机以后在液晶显示屏第一行显示“ok”。12三、硬件设计 单片机p1.0p1.7分别于lcd模块的db0-db7数据线连接,p3.5p3.7接到lcd模块控制信号引脚rs、r/w和e,lcd模块的vdd引脚接电源+5v,vss和v0引脚接地。子情境二 简单液晶显示程序13子情境二 简单液晶显示程序14四、程序设计 本程序是由主程序、初始化子程序、写指令子程序、判断lcm是否忙碌子程序和写数据子程序组成。子情境二 简单液晶显示程序15子情境二 简单液晶显示程序16nRS bit P3.5nRW bit P3.6nE bit P3.7nLCD EQU P1n
5、MAIN:;主程序nMOV LCD,#00000001B ;清屏并光标复位nACALL WR_COMM ;调用写入命令子程序 nACALL INIT_LCD ;调用初始化子程序nMOV LCD,#82H ;写入显示起始地址n ACALL WR_COMM ;调用写入命令子程序nMOV LCD,#o ;显示o子情境二 简单液晶显示程序17ACALL WR_DATA ;调用写入数据子程序MOV LCD,#k ;显示kACALL WR_DATA ;调用写入数据子程序JMP$;维持当前输出状态INIT_LCD:;LCD初始化设定MOV LCD,#00111000B ;设置8位、2行、5x7点阵 ACAL
6、L WR_COMM ;调用写入命令子程序 MOV LCD,#00001111B ;显示器开,光标允许闪烁ACALL WR_COMM ;调用写入命令子程序MOV LCD,#00000110B ;文字不动,光标自动右移 ACALL WR_COMM ;调用写入命令子程序RET子情境二 简单液晶显示程序18WR_COMM:;写入命令子程序CLR RS ;RS=0,选择指令寄存器CLR RW ;RW=0,选择写模式CLR E ;E=0,禁止读/写LCMACALL CHECK_BF ;调用判LCM忙碌子程序SETB E ;E=1,允许读/写LCMRET CHECK_BF:;判断是否忙碌子程序MOV LCD
7、,#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子情境二 简单液晶显示程序19WR_DATA:;写入数据子程序SETB RS ;RS=1,选择数据寄存器CLR RW ;RW=0,选择写模式CLR E ;E=0,禁止读/写LCMACALL CHECK_BF ;调用判断忙碌子程序SETB E ;E=1,允许读/写LCMRETEND子情境二 简单液晶显示程序20一、任务目标 通过此任
8、务了解液晶显示循环显示的设计方法二、任务分析Lcd循环显示字符串。首先在第一行显示hello!,2s后在第二行显示welcome to lcd!,再过2s后第一行改为nice to meet you,再过2s后将第二行改为good luck!。子情境三 液晶循环显示21n三、硬件设计 单片机p1.0p1.7分别于lcd模块的db0-db7数据线连接,p3.5p3.7接到lcd模块控制信号引脚rs、r/w和e,lcd模块的vdd引脚接电源+5v,vss和v0引脚接地。子情境三 液晶循环显示22子情境三 液晶循环显示23四、程序设计 在主程序中进行4次在取字符串操作,每次显示字符串时停留2s,更换
9、屏幕时清屏,如此循环。,子情境三 液晶循环显示24子情境三 液晶循环显示25n RS bit P3.5n RW bit P3.6n E bit P3.7n LCD EQU P1 n MAIN:;主程序n ACALL INIT_LCD ;调用初始化子程序nLOOP1:;循环n MOV LCD,#81H ;写入显示起始地址 n ACALL WR_COMM ;调用写指令子程序 n MOV DPTR,#LINE1 ;字符串地址送入DPTR n MOV R0,#6 ;字符串的字符数n ACALL DISP_LCD ;调用查表子程序n ACALL DELAY ;调用延时子程序子情境三 液晶循环显示26MO
10、V 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 ;字符串的字符数 ACALL DISP_LCD ;调用查表子程序 ACALL DELAY ;调用延时子程序子情
11、境三 液晶循环显示27 MOV 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 ;调用写指令子程序 MOV LCD,#00111000B;设置8位、2行、5x7点阵 ACALL WR
12、_COMM ;调用写指令子程序 MOV LCD,#00001111B;显示器开,光标允许闪烁 ACALL WR_COMM ;调用写指令子程序 MOV LCD,#00000110B;文字不动,光标自动右移 ACALL WR_COMM ;调用写指令子程序 RET 子情境三 液晶循环显示28nWR_COMM:;写指令子程序n CLR RS ;RS=0,选择指令寄存器n CLR RW ;RW=0,选择写模式n CLR E ;E=0,禁止读/写LCMn ACALL CHECK_BF ;调用判LCM忙碌子程序n SETB E ;E=1,允许读/写LCMn RET n CHECK_BF:;判断是否忙碌子程序
13、n MOV LCD,#0FFH ;此时不接受外来指令n CLR RS ;RS=0,选择指令寄存器n SETB RW ;RW=1,选择读模式n CLR E ;E=0,禁止读/写LCMn NOP ;延时1微秒n SETB E ;E=1,允许读/写LCMn JB LCD.7,CHECK_BF ;忙碌循环等待 n RET 子情境三 液晶循环显示29nWR_DATA:;写数据子程序n SETB RS ;RS=1,选择数据寄存器n CLR RW ;RW=0,选择写模式n CLR E ;E=0,禁止读/写LCMn ACALL CHECK_BF ;调用判断忙碌子程序n SETB E ;E=1,允许读/写LCM
14、n RET n DISP_LCD:;查表显示子程序n MOV R1,#0 ;查表地址初始值n LOOP:MOV A,R1 ;将表地址初值赋予An MOVC A,A+DPTR ;查表将字符串内容送入An MOV LCD,A ;将字符串内容送入LCDn INC R1 ;地址值加1n ACALL WR_DATA ;调用写入数据子程序n mov r5,#25n acall d1n DJNZ R0,LOOP ;判断查表是否6次?n RET ;子程序返回子情境三 液晶循环显示30n CLS:;清显示屏n MOV LCD,#00000001Bn ACALL WR_COMMn RET n DELAY:;延时时
15、间为3秒n MOV R5,#100n D1:MOV R6,#100n D2:MOV R7,#100n DJNZ R7,$n DJNZ R6,D2n DJNZ R5,D1n RET n LINE1:DB Hello!n LINE2:DB Welcome to LCD!n LINE3:DB Nice to meet you!n LINE4:DB Good luck!n END ;程序结束子情境三 液晶循环显示31一、任务目标 进一步熟悉液晶显示的驱动方法。二、任务分析 用单片机完成一个简单的秒表的计时,通过液晶显示出来。子情境四 液晶显示秒表32三、硬件设计 在单片机p1口上接有lcd模块用来显示计时时间,p3.3、p3.4引脚分别接按键开关k1,k2作为按键开关k1、k2作为秒表的计时控制按钮。子情境四 液晶显示秒表33子情境四 液晶显示秒表34 四 程序设计 由定时器t0产生标准计时时间,并由按钮开关输入信号控制计时、暂停、累加计时和清零,计时的时间由led显示。子情境四 液晶显示秒表35 子情境四 液晶显示秒表36 子情境四 液晶显示秒表五、程序编写。