标题:128*64LCD字符图形液晶的问题,求教!
取消只看楼主
ccmike98
Rank: 2
来 自:苏州
等 级:论坛游民
帖 子:76
专家分:56
注 册:2010-7-13
结帖率:75%
已结贴  问题点数:100 回复次数:0 
128*64LCD字符图形液晶的问题,求教!
目的是:要在LCD上显示“32位微机教学实验系统正在演示中”

接线是这样的:PA7~PA0 /8255 接 D7~D0 /LCD  
  PC0 /8255 接 D/I LCD
  PC1 /8255 接 RW /LCD
  PC2 /8255 接 E /LCD
  LCD字符图形液晶工作于并行模式


然后程序在下面,接线盒程序都是书上的写的,我汇编实在菜,不知道是接线错误,还是程序错误。。求好人帮我看下吧。
谢谢了

;LCD.ASM
IO8255A equ 288h
IO8255C equ 28Ah
IO8255KZ equ 28bh
DATA SEGMENT
HZ_TAB DW 0A3B3H,0A3B2H,0CEBBH,0CEA2H,0BBFAH,0BDCCH,0D1A7H,0CAB5H
  DW 0D1E9H,0CFB5H,0CDB3H,0D5FDH,0D4DAH,0D1DDH,0CABEH,0D6D0H   
HZ_ADR DB ? ;存放显示行起始端口地址
DATA ENDS

code segment
  assume cs:code,ds:data
START: MOV AX,DATA
  MOV DS,AX   
  MOV DX, IO8255KZ
  MOV AL,80H
  OUT DX,AL ;8255初始化
  CALL CLEAR ;LCD 清除
  LEA BX, HZ_TAB
  MOV CH,2 ;显示第2行信息  
  CALL LCD_DISP
  LEA BX, HZ_TAB
  MOV CH,3 ; 显示第3行信息
  CALL LCD_DISP
  mov ah,4ch ;退出
int 21h

CLEAR PROC
  MOV AL,0CH
  MOV DX, IO8255A
  OUT DX,AL ;设置CLEAR命令
  CALL CMD_SETUP ;启动LCD执行命令
  RET
CLEAR ENDP

LCD_DISP PROC
  LEA BX, HZ_TAB
  CMP CH, 2
  JZ DISP_SEC
  MOV BYTE PTR HZ_ADR, 88H ;第三行起始端口地址
  ADD BX,16 ;指向第二行信息
  JMP next
DISP_SEC: MOV BYTE PTR HZ_ADR,90H
next: mov cl,8
continue: push cx
  MOV AL,HZ_ADR
  MOV DX, IO8255A
  OUT DX, AL
  CALL CMD_SETUP ;设定DDRAM地址命令
  MOV AX,[BX]
  PUSH AX
  MOV AL,AH ;先送汉字编码高位
  MOV DX, IO8255A
  OUT DX,AL
  CALL DATA_SETUP ;输出汉字编码高字节
  CALL DELAY ;延迟
  POP AX
  MOV DX, IO8255A
  OUT DX, AL
  CALL DATA_SETUP ;输出汉字编码低字节
  CALL DELAY
  INC BX
  INC BX ;修改显示内码缓冲区指针
  INC BYTE PTR HZ_ADR ;修改LCD显示端口地址
  POP CX
  DEC CL
  JNZ CONTINUE
  RET
LCD_DISP ENDP

CMD_SETUP PROC
  MOV DX, IO8255C ;指向8255端口控制端口
  NOP
  MOV AL,00000000B ;PC1置0,pc0置0 (LCD I端=0,W端=0)
  OUT DX, AL
  call delay
  NOP
  MOV AL,00000100B ;PC2置1 (LCD E端=1)
  OUT DX, AL
  NOP
  call delay
  MOV AL, 00000000B ;PC2置0,(LCD E端置0)
  OUT DX, AL
  call delay

  RET
CMD_SETUP ENDP

DATA_SETUP PROC
  MOV DX, IO8255C ;指向8255控制端口
  MOV AL,00000001B ;PC1置0,PC0=1 (LCD I端=1)
  OUT DX, AL
  NOP
  call delay
  MOV AL,00000101B ;PC2置1 (LCD E端=1)
  OUT DX, AL
  NOP
  call delay
  MOV AL, 00000001B ;PC2置0,(LCD E端=0)
  OUT DX, AL
  NOP
  call delay
  RET
DATA_SETUP ENDP

DELAY PROC
  push cx
  push dx
  MOV CX, 0ffffh
 x1: loop x1
  pop dx
  pop cx
  RET
DELAY ENDP


code ends
  end start
搜索更多相关主题的帖子: 教学 接线 
2012-06-05 19:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-370870-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.053482 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved