标题:128*64LCD字符图形液晶的问题,求教!
只看楼主
ccmike98
Rank: 2
来 自:苏州
等 级:论坛游民
帖 子:76
专家分:56
注 册:2010-7-13
结帖率:75%
已结贴  问题点数:100 回复次数:6 
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
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:25 
好长啊 帮顶了
2012-06-06 10:26
bingghost
Rank: 2
等 级:论坛游民
帖 子:70
专家分:85
注 册:2012-1-4
得分:25 
真心不懂  顶一个

我的头像就是我的女神 可惜我的女神已经死了 所以我的心也死了
2012-06-06 12:58
于祥
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:5
帖 子:1047
专家分:4132
注 册:2011-4-24
得分:25 
顶一个先,没怎么看懂了还!

最基础的往往是你最容易忽略的!
2012-06-09 13:16
ououming123
Rank: 2
等 级:论坛游民
帖 子:9
专家分:30
注 册:2012-6-10
得分:25 
      看到LZ的这个帖子
顿时我就觉得自学汇编一片灰暗啊- -
好难。
连接口都要特意去考虑  帮顶吧··
2012-06-10 20:35
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:0 
以下是引用ououming123在2012-6-10 20:35:20的发言:

      看到LZ的这个帖子
顿时我就觉得自学汇编一片灰暗啊- -
好难。
连接口都要特意去考虑  帮顶吧··
坚持总能学会

不过你得考虑一下值得不值得 像你说的 很难 所以要学会要花很长时间 至于值得不值嘛 得琢磨琢磨


[ 本帖最后由 zklhp 于 2012-6-10 20:46 编辑 ]
2012-06-10 20:44
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:0 
这贴很难有答案 尤其是在这里 建议散分完事了

有些问题 在不恰当的地方很难得到答案 呵呵
2012-06-10 20:46



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




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

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