您的当前位置:首页正文

字符液晶显示实验

来源:画鸵萌宠网
GDOU-B-11-112

广东海洋大学学生实验报告书(学生用表)

实验名称 学院(系) 学生姓名

字符显示实验 软件学院

专业

课程名称 单片机原理与应用 课程号 unknown

软件工程 实验地点

班级 软件1103 实验日期

学号

一、 实验目的:

1.了解液晶显示的基本原理

2.掌握如何由单片机来控制液晶显示模块的内容

3、尝试显示汉字字模

二、实验内容: 按键控制显示:

显示第一个字符组在lcd 的第一行 ,当按P2.0 显示第二个字符组在lcd 的第二行 ,当按P2.1 显示第三个字符组在lcd 的第一行 ,当按P2.2 显示第四个字符组在lcd的第二行 ,当按P2.3

三、实验步骤:

先设计好实验图如下:

用的液晶模块在proteus 中叫做LM044L,其可以显示4行

1 / 8

要显示自定义字符,最关键的是写入自定义字模码到液晶模块内部的CGRAM中,该流程图如下:

2 / 8

设定自定义字符在CGRAM中的地址把字模码循环写入CGRAM写好后,设置DDRAM地址,在第一行显示循环查表显示设置取字符代码N循环完否?Y显示第二行,流程同上EDN

3 / 8

按上图编写好程序,如下:

************************************************************** RS EQU P3.5 RW EQU P3.6 E EQU P3.7

ORG 0000H LJMP MAIN ORG 0030H

MAIN:

LCALL WR_MYCH ;建立自定义字模码子程序 CLR P2.7 MOV P2,#0FH

MOV P0,#038H ;开始 真正是5*7点阵 LCALL E_CON

MOV P0,#0EH ;使有光标并闪烁 LCALL E_CON MOV P0,#06H LCALL E_CON MOV P0,#01H LCALL E_CON

;---------------------------------- KEY_DOWN: ;键扫描主程序 MOV R1,#0FH LCALL DELAY

MOV A,P2 ;读p2口 PUSH ACC XRL A,R1

JNZ K1 ;若A为0则表示没有键按下 POP ACC

AJMP KEY_DOWN ;循环扫描 K1:

POP ACC

CJNE A,#0EH,K2 ;若是则表示第一个键按下 F: LCALL DELAY ;FOR循环检测是否松键? JNB P2.0,F BACK1:

LCALL DIS_FL AJMP KEY_DOWN K2:

CJNE A,#0DH,K3 ;若是则表示第2个键按下

4 / 8

F1:

LCALL DELAY ;FOR循环检测是否松键? JNB P2.1,F1 BACK2:

LCALL DIS_SL AJMP KEY_DOWN K3:

CJNE A,#0BH,K4 ;若是则表示第3个键按下 F2: LCALL DELAY ;FOR循环检测是否松键? JNB P2.2,F2 AJMP BACK1 K4:

CJNE A,#07H,KEY_DOWN ;若是则表示第4个键按下 F3: LCALL DELAY ;FOR循环检测是否松键? JNB P2.3,F3 AJMP BACK2

;----------------------------- DIS_FL:

MOV P0,#01H

LCALL E_CON ;每次重按键时清屏 MOV DPTR,#TABLE1 MOV P0,#80H ACALL E_CON ACALL WR_DATA NOP RET DIS_SL:

MOV P0,#01H

LCALL E_CON ;清屏 MOV DPTR ,#TABLE2 MOV P0,#0C0H ACALL E_CON ACALL WR_DATA NOP RET

;----------------------- E_CON: ;命令写入使能 PUSH ACC CLR RS CLR RW SETB E

ACALL DELAY CLR E

5 / 8

SETB RW

BUSY_: ;读忙 SETB E NOP

MOV A,P0 ;读出LCD数据 CLR E

JB ACC.7,BUSY_ POP ACC NOP RET

;------------------------------ EN_DATA: ;数据写入使能 SETB RS CLR RW SETB E

LCALL DELAY CLR E NOP RET

;--------------------------------------

WR_DATA: ;写入DDRAM子程序,即要显示时用到的字符代码 MOV R2,#00H D1:

MOV A,R2

MOVC A,@A+DPTR MOV P0,A

ACALL EN_DATA INC R2

CJNE A,#0FEH,D1 ;结束符标志,设为0FEH RET

;----------------------- ;------------------------

WR_MYCH: ;自定义字符写入CGRAM中 MOV A,#40H

MOV P0,A ;送出,可恨当时漏写了,故调试了很久,唉 ACALL E_CON MOV R3,#64 MOV R4,#00H

MOV DPTR,#CGTAB CG1:

MOV A,R4

MOVC A,@A+DPTR MOV P0,A

ACALL EN_DATA

6 / 8

INC R4

DJNZ R3,CG1 RET

;---------------------------

;----纯粹是手工提取的字模码,没有用到软件提取,能看懂就行啦 ;----管它呢 CGTAB:

DB 07H,05H,06H,05H,05H,06H,04H,04H ; 00H DB 04H,1FH,08H,14H,1FH,04H,15H,04H ;陈 01H DB 01H,02H,0CH,0AH,0FH,0AH,0DH,08H ;氏 02H DB 04H,0FH,12H,0FH,0AH,1FH,02H,02H ;年 03H DB 0FH,09H,0FH,09H,0FH,09H,13H,11H ;月 04H DB 1FH,11H,11H,1FH,11H,11H,1FH,00H ;日 05H DB 0FH,09H,09H,0FH,09H,09H,0FH,00H ;06H

DB 08H,17H,1DH,15H,1FH,04H,1BH,00H ;晚 07H

TABLE1:

DB 00H,01H,02H,\"11\TABLE2:

DB \"created by HHF&CLC\DELAY:

MOV R5,#0F3H D2:MOV R6,#0F6H D3:DJNZ R6,D3 DJNZ R5,D2 RET END

////////////////////////////////////////////// 编译通过 效果如下

1、 当按下p2.0与p2.1口键时,显示第一行

这里自定义了几个汉字

2、 当按下p2.2与p2.3口键时,显示第2行

第一行已清屏

7 / 8

四、实验总结

一、 学习了显示自定义字符的方法,掌握点阵的概念 二、 坚持不懈就是胜利 …………

成绩

指导教师

日期

注:请用A4纸书写,不够另附纸。

8 / 8

因篇幅问题不能全部显示,请点此查看更多更全内容

Top