广东海洋大学学生实验报告书(学生用表)
实验名称 学院(系) 学生姓名
字符显示实验 软件学院
专业
课程名称 单片机原理与应用 课程号 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
因篇幅问题不能全部显示,请点此查看更多更全内容