打印

新手 关于液晶1602 的疑惑

[复制链接]
1675|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wdyang|  楼主 | 2010-7-12 10:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小弟 刚开始学习1602 有很多不懂得地方。从网上下载了 一个汇编程序,做实际测试,发现不能够正常显示,不知道是什么原因。液晶显示屏只亮第二排,而且没有任何输出的信息。
以下是我用到的 程序 , 希望各位高手能帮我解决疑惑,,感激不尽......

;/////引脚定义/////
LCD_RS EQU P2.5
LCD_RW EQU P2.6
LCD_EN EQU P2.7
;/////主程序//////
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
MOV SP,#60H
ACALL LCD_INIT
MAIN1:
ACALL CLR_LCD
MOV A,#80H
ACALL LCD_CMD
MOV DPTR,#LINE1
ACALL WRITE
MOV A,#0C0H
ACALL LCD_CMD
MOV DPTR,#LINE2
ACALL WRITE
LINE1: DB ' I KNOW I CAN ! ',00H
LINE2: DB " YOU ARE GREAT !",00H
;///////LCD 初始化///////
LCD_INIT:
ACALL DELAY5MS
ACALL DELAY5MS
ACALL DELAY5MS
MOV A,#38H
ACALL LCD_CMD_NC
ACALL DELAY5MS
MOV A,#38H
ACALL LCD_CMD_NC
ACALL DELAY5MS
MOV A,#38H
ACALL LCD_CMD_NC
ACALL DELAY5MS
MOV A,#08H
ACALL LCD_CMD
MOV A,#01H
ACALL LCD_CMD
MOV A,#0CH
ACALL LCD_CMD
RET
;////////清屏幕
CLR_LCD:
MOV A,#01H
ACALL LCD_CMD
RET
;///////进行忙检测
LCD_CMD:
CALL CHECKBUSY
;//////不进行忙检测
LCD_CMD_NC:
CLR LCD_RS
CLR LCD_RW
MOV P0,A
SETB LCD_EN
NOP
;NOP
;NOP
;NOP
CLR LCD_EN
RET
;/////忙检测
CHECKBUSY:
PUSH ACC
MOV P0,#0FFH
CLR LCD_RS
SETB LCD_RW
SETB LCD_EN
BUSYLOOP:
NOP
JB P0.7,BUSYLOOP
CLR LCD_EN
POP ACC
RET
;///////发送字符串
WRITE:
PUSH ACC
WRITE1:
CLR A
MOVC A,@A+DPTR
JZ WRITE2
INC DPTR
ACALL LCD_WDATA
JMP WRITE1
WRITE2:
POP ACC
RET
;////////写显示数据到LCD
LCD_WDATA:
ACALL CHECKBUSY
SETB LCD_RS
SETB LCD_RW
MOV P0,A
SETB LCD_EN
NOP
;NOP
;NOP
;NOP
CLR LCD_EN
RET
;//////
DELAY5MS:
MOV R6,#10
DL1:MOV R7,#249
DL2:DJNZ R7,DL2
DJNZ R6,DL1
RET
END

相关帖子

沙发
wdyang|  楼主 | 2010-7-12 16:50 | 只看该作者
希望 大家多给些建议.....谢谢...:lol
我再补充一下 相应的电路图:(不知道是否还存在其他什么问题,请各位指教..)

LCD 1602.rar

16.74 KB

使用特权

评论回复
板凳
wdyang|  楼主 | 2010-7-12 17:10 | 只看该作者
刚才 把硬件电路 有仔仔细细的 检查了一遍,发现有的小地方,接触不稳定,重新焊接后 好用了,程序没有问题。。。。:D   
以后还得仔细点 ,要不太耽误事啊:L

使用特权

评论回复
地板
史记乳名| | 2010-7-14 16:25 | 只看该作者
打开应用程序点击"选项"选择"整理"选好你要移动的项目点击"选项"选择"移至文件夹"再选"游戏"。--END--

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
wdyang + 1
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

44

帖子

1

粉丝