最近在使用1602,写了几个程序都是只有背光显示,无法显示数据<br />第一个:RS-P2.0 RW-P2.1 E-P2.7(E通过与74ls00与RD WR相连)如第一个图<br /> <br />LCD_COMW EQU 8000H ;写命令字<br />LCD_DATAW EQU 8100H ;写数据寄存器 <br />LCD_COM EQU 8200H ;读命令字<br />LCD_DATA EQU 8300H ;读数据寄存器<br /> ORG 0000H <br /> SJMP Main<br /> ORG 0030H<br />Main: <br /> MOV SP,#60H LCALL DS1<br /> LCALL INT_LCD ;清屏<br /> LCALL DS1<br /> MOV A,#38H ;设置8位操作数,2行显示,5×7点阵<br /> LCALL W_LCD_C<br /> MOV A,#0CH ;显示开关控制:显示开关 <br /> LCALL W_LCD_C<br /> MOV A,#06H ;输入方式设置:设置AC为自动加1,光标右移一个字符位<br /> LCALL W_LCD_C<br /> MOV A,#80H ;显示位地址第一行,第0位<br /> LCALL W_LCD_C <br /> MOV DPTR,#CCTAB1<br /> MOV R0,#0FH<br />LINE1: <br /> MOV R1,#00H<br />LCD2: <br /> MOV A,R1<br /> MOVC A,@A+DPTR ;第一行DISPLAY<br /> MOV R2,DPL<br /> MOV R3,DPH<br /> LCALL W_LCD_D<br /> INC R1 <br /> MOV DPL,R2<br /> MOV DPH,R3<br /> DJNZ R0,LCD2<br /> MOV R4,#0EH<br />LCD3: LCALL DS1<br /> DJNZ R4,LCD3<br /> SJMP MAIN<br /> END<br />;------------------------------------------------------------<br />INT_LCD:<br /> LCALL LCD_CLS<br /> LCALL DS1<br /> RET<br />LCD_CLS:<br /> MOV A,#01H ; 清屏<br /> LCALL W_LCD_C<br /> RET<br />W_LCD_C:<br /> PUSH ACC<br /> LCALL WAIT_LCD<br /> POP ACC<br /> MOV DPTR,#LCD_COMW<br /> MOVX @DPTR,A<br /> RET<br />WAIT_LCD:<br /> LCALL R_LCD_C<br /> JB ACC.7,WAIT_LCD<br /> RET<br />R_LCD_C:<br /> MOV DPTR,#LCD_COM<br /> MOVX A,@DPTR<br /> RET<br />W_LCD_D:<br /> PUSH ACC<br /> LCALL WAIT_LCD<br /> POP ACC<br /> MOV DPTR,#LCD_DATAW<br /> MOVX @DPTR,A <br /> RET<br />DS1:<br /> MOV R7,#60H ;延时<br />DELAY1:<br /> MOV R6,#00H<br /> DJNZ R6,$ <br /> DJNZ R7,DELAY1<br /> RET<br />CCTAB1: DB 57H,45H,4CH,43H,4FH,4DH,45H,20H,20H,20H,20H,20H,20H,20H,20H,20H;'WELCOME'<br /><br /><br /> |
|