标题: 单片机+LCD1602仿真程序把本应该显示在第二行的数据显示在第一行了? [打印本页]

作者: 416604333    时间: 2022-4-21 21:17
标题: 单片机+LCD1602仿真程序把本应该显示在第二行的数据显示在第一行了?
为啥Proteus仿真把本应该显示在第二行的数据显示在第一行了,而且写了0C0H也不换行。程序在23楼

作者: 416604333    时间: 2022-4-21 21:21
           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
作者: 416604333    时间: 2022-4-21 21:24
这是仿真和程序,谢谢各位了

51hei图片20220421211916.png (27.5 KB, 下载次数: 22)

51hei图片20220421211916.png

51hei图片20220421211950.png (29.94 KB, 下载次数: 22)

51hei图片20220421211950.png

51hei图片20220421212033.png (38.83 KB, 下载次数: 22)

51hei图片20220421212033.png

作者: 保持微笑    时间: 2022-4-22 10:33
第一行的地址好像是0x80吧,想显示到第二行就0x80+0X40就可以了啊,初始化的时候最好是初始化两次
作者: 416604333    时间: 2022-4-22 11:21
保持微笑 发表于 2022-4-22 10:33
第一行的地址好像是0x80吧,想显示到第二行就0x80+0X40就可以了啊,初始化的时候最好是初始化两次

我在程序已经写了0c0h了,但是没有换行
作者: 416604333    时间: 2022-4-22 11:40
不好意思,上面的截图的程序写的是0ch,但是我把它改成0c0h后还是不换行
作者: 416604333    时间: 2022-4-22 16:38
谢谢大家!我已经查资料解决了!
给大家说说我的方法,就是在写换行命令前加一个延时几个毫秒的程序,不然lcd反应不了,处于忙状态。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1