谢谢大家!我已经查资料解决了! 给大家说说我的方法,就是在写换行命令前加一个延时几个毫秒的程序,不然lcd反应不了,处于忙状态。 |
不好意思,上面的截图的程序写的是0ch,但是我把它改成0c0h后还是不换行 |
保持微笑 发表于 2022-4-22 10:33 我在程序已经写了0c0h了,但是没有换行 |
第一行的地址好像是0x80吧,想显示到第二行就0x80+0X40就可以了啊,初始化的时候最好是初始化两次 |
RS EQU P1.0 RW EQU P1.1 E EQU P1.2 LCD EQU P2 BF EQU P2.7 ORG 0000H AJMP 0030H ORG 0023H AJMP COM_INT ORG 0030H MOV SCON,#50H; MOV PCON,#0 MOV TMOD,#20H MOV TH1,#0FDH; MOV TL1,#0FDH SETB TR1 SETB EA SETB ES MOV IE,#90H; MOV R0,#60H MAIN: MOV A,#38H ACALL W_CMD MOV A,#08H ACALL W_CMD MOV A,#01H ACALL W_CMD MOV A,#06H ACALL W_CMD MOV A,#0CH ACALL W_CMD SJMP $ COM_INT: NOP REC: JNB RI,$ CLR RI MOV A,SBUF CJNE A,#24H,REC; JNB RI,$ CLR RI MOV A,SBUF CJNE A,#47H,REC; G JNB RI,$ CLR RI MOV A,SBUF CJNE A,#4EH,REC; P JNB RI,$ CLR RI MOV A,SBUF CJNE A,#47H,REC; G JNB RI,$ CLR RI MOV A,SBUF CJNE A,#47H,REC; G JNB RI,$ CLR RI MOV A,SBUF CJNE A,#41H,REC; A DATE: JNB RI,$ CLR RI MOV A,SBUF MOV @R0,A INC R0 CJNE A,#2AH,DATE MOV A,#80H ACALL W_CMD MOV R0,#61H ACALL DOUHAO INC R0 LOOP1: MOV A,@R0 ACALL W_DATE INC R0 MOV A,@R0 CJNE A,#2CH,LOOP1 MOV A,#00H ACALL W_CMD MOV A,#0CH ACALL W_CMD INC R0 INC R0 INC R0 LOOP2: MOV A,@R0 ACALL W_DATE INC R0 CJNE @R0,#2CH,LOOP2 RETI W_CMD: MOV P2,A CLR RS CLR RW SETB E NOP CLR E RET W_DATE: ACALL WAIT MOV P2,A SETB RS CLR RW SETB E NOP CLR E RET WAIT: MOV LCD,#0FFH CLR RS SETB RW CLR E NOP SETB E JB BF,WAIT RET DOUHAO: INC R0 CJNE @R0,#2CH,DOUHAO RET DEL: MOV R7,#20 D1: MOV R6,#100 D2: DJNZ R6,D2 DJNZ R7,D1 END |