我最近在搞液晶LMC1623A,写了个程序,请高手帮帮忙?
[QUOTE]最近在写一个液晶的程序,可是资料没找到,就按一般的定义来写,但就是效果出不来,没显示.请大侠们帮忙看看.
程序是:
ORG 0000H
;********************初始化**********************
RS EQU P3.7;
RW EQU P3.6 ;
E EQU P3.5 ;
MOV P1,#00000001B ;p1口是接液晶数据口,该指令清屏并光标复位
ACALL SEND_I;调用写入命令子程序
MOV P1,#00101000B ;设置显示模式:8位2行5x7点阵
ACALL SEND_I ;调用写入命令子程序
MOV P1,#00001111B ;显示器开、光标开、光标允许闪烁
ACALL SEND_I ;调用写入命令子程序
MOV P1,#00001010B ;文字不动,光标自动右移
ACALL SEND_I ;调用写入命令子程序
MAIN:
MOV R3 #01000001B
LCALL ZIFU
LCALL DELAY
;================================================
;;测忙碌子程序
;RS=0,RW=1,E=H,D0-D7=状态字
;================================================
chk_busy:
MOV P1,#0FFH ;判断液晶显示器是否忙的子程序
CLR RS
SETB RW
CLR E
NOP
SETB E
JB P1.7,$ ;如果P1.7为高电平表示忙就循环等待
CLR E
RET
;===============================================
;写指令子程序
;RS=0,RW=0,E=高脉冲,D0-D7=指令码 硬件数据端p1 数据来源 A
;===============================================
SEND_I:
LCALL CHK_BUSY
CLR RS
CLR RW
MOV P1,A
SETB E
NOP
NOP
CLR E
RET
;===============================================
;写数据子程序
;RS=1,RW=0,E=高脉冲,D0-D7=数据 硬件数据端p1 数据来源 A
;===============================================
SEND_D:
LCALL CHK_BUSY ;写数据子程序
SETB RS
CLR RW
MOV P1,A
SETB E
NOP
NOP
CLR E
RET
;=================================================
;显示汉字和字符,外部的端口是@R3
;=================================================
ZIFU:
LCALL CLEAR_P
MOV A,#0C0H ;第一行起始地址
LCALL SEND_I
MOV A,R3
LCALL SEND_D
RET
;==================================================
;清屏
;==================================================
CLEAR_P:
MOV A,#01H ;清屏
LCALL SEND_I
RET
;==================================================
;延时
;==================================================
DELAY :
MOV R7,#250;
D1:MOV R6,#250
D2:DJNZ R6,D2;
DJNZ R7,D1;
RET
END
背光没有接,大家帮我看看是那里出错了.
另外谁有这种芯片的资料和能显示的程序发给我学学就太感激了.
发表时间:2007年4月26日23:09:34