您的当前位置:首页正文

LCD128×64液晶显示接口实验

2024-10-18 来源:威能网
LCD128×64液晶显示接口实验

一、实验目的

1. 掌握8088与液晶显示器之间接口设计与编程; 2. 初步了解汇编语言的格式及子程序的概念。 二、实验内容

1. 编制程序,使用内部字库,在液晶显示器上显示: 内蒙古大学 电子信息工程学院 自动化系 2008.8.8

三、实验电路

四、实验连线

1. 连接译码电路,将138译码单元的A、B、C、G分别与地址总线A2、A3、A4、A15相连;

2. LCD实验板的E信号与02门电路的第1脚相连; 3. 将138译码单元的Y0与02门电路的第3脚相连; 4. 将08门电路的第3脚与02门电路的第2脚相连;

5. 将08门电路的第2脚、第1脚分别与系统控制信号IOR、IOW相连。 五、程序清单 ;硬件地址定义 LCD EQU 7FE0H WRICODE EQU LCD+0 ;写命令 WRDATA EQU LCD+1 ;写数据 RDSTAT EQU LCD+2 ;读状态 RDDATA EQU LCD+3 ;读数据 ;代码区

code segment assume cs:code ;定义内存变量 lin db 0 col db 0

db 0 db 0 db 0 db 0 db 0 1000h call init_lcd mov al,3 call delay2 mov count,0

mov bx,offset tab1 mov lin,0 mov col,1 mov num,5 call

dis_china

mov bx,offset tab2 mov lin,1 mov col,0 mov num,8 call

dis_china

mov bx,offset tab3 mov lin,2 mov col,1 mov num,4 call

dis_china

mov bx,offset tab4 mov lin,3 mov col,1 mov num,4 call dis_china mov al,10 call

delay2 mov al,10 call

delay2 call

close_lcd

mov bx,offset tab5 mov

lin,0

显示“内蒙古大学” 显示“电子信息工程学院”显示“自动化系” 显示“2008.8.8” 显示“温度:” num dis_num temp0 temp1 count org start:

;; ;;;

mov mov call col,0 num,3 dis_china

lgs1: mov lin,0 ;显示数字

mov col,4 mov al,count mov dis_num,al call dis_number mov al,count add al,1 mov count,al mov al,10 call delay2 jmp lgs1

;在指定的行、列显示一个字节数字(0-255)

;参数:行lin(0-3);列col(0-7) dis_num中放要显示的数字 ; col 0 1 2 3 4 5 6 7 ;lin0:80h,81h,82h,83h,84h,85h,86h,87h ;lin1:90h,91h,92h,93h,94h,95h,96h,97h ;lin2:88h,89h,8ah,8bh,8ch,8dh,8eh,8fh ;lin3:98h,99h,9ah,9bh,9ch,9dh,9eh,9fh dis_number proc

push ax mov al,lin ;根据行、列值定位显示数字起始坐标 cmp al,0 jnz nu0 mov al,80h jmp nu3

nu0: cmp al,1

jnz nu1 mov al,90h jmp nu3

nu1: cmp al,2 jnz nu2 mov al,88h jmp nu3 nu2: cmp al,3 jnz nuret mov al,98h nu3: add al,col call send_com ;定位显示数字坐标

nu4: mov ah,0;以下10条为把3位十进制数个位、十位、百位分离

mov al,dis_num mov bl,10 div bl

mov temp0,ah mov ah,0 mov bl,10 div bl

mov temp1,ah

add al,30h ;转为ASC码 call send_data ;百位送LCD显示 mov al,temp1

add al,30h ;转为ASC码 call send_data ;十位送LCD显示 mov al,temp0

add al,30h ;转为ASC码 call send_data ;个位送LCD显示 pop ax nuret: ret dis_number endp

;在指定的行、列显示汉字。每行可显示8个汉字或16个字符,共4行 ;参数:行lin(0-3);列col(0-7) 汉字个数num(0-7); 表地址bx dis_china proc

push ax

mov al,lin ;根据行、列值定位显示汉字起始坐标 cmp al,0 jnz ch0 mov al,80h jmp ch3 ch0: cmp al,1 jnz ch1 mov al,90h jmp ch3 ch1: cmp al,2 jnz ch2 mov al,88h jmp ch3 ch2: cmp al,3 jnz chret mov al,98h ch3: add al,col call send_com mov ah,num

add ah,num ;汉字个数乘2,1个汉字占2位

ch4: mov al,00h ;以下循环2*汉字个数,将汉字显示 xlat

call send_data inc bx dec ah jnz ch4 pop ax chret: ret dis_china endp

;清LCD屏 close_lcd proc

push ax

mov al,01h call send_com call delay1 pop ax ret close_lcd endp

;初始化LCD init_lcd proc

push ax

mov al,30h call send_com

mov al,01h call send_com call delay1

mov al,06h ; call send_com

mov al,0ch call send_com pop ax ret init_lcd endp

;向LCD发送数据 send_data proc

call delay1 push dx

mov dx,WRDATA out dx,al pop dx ret

;清除命令 ;30H--基本指令操作 ;清除显示 指定在资料写入或读取时,光标的移动方向 ;开显示,关光标,不闪烁 send_data endp

;向LCD发送命令 send_com proc

call delay1 push dx

mov dx,WRICODE out dx,al pop dx ret send_com endp

;延时子程序 delay1 proc

push cx

mov cx,0080h loop $ pop cx ret delay1 endp

;延时子程序 ;AL是延时参数 delay2 proc

push ax push cx mov ah,0 mov cx,ax dloop: push cx

mov cx,65535 loop $ pop cx loop dloop pop cx pop ax ret delay2 endp TAB1 DB TAB2 DB TAB3 DB TAB4 DB TAB5 DB code ends end start

“内蒙古大学” “电子信息工程学院”“自动化系” “2008.8.8” “温度:”

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