我需要打印我的名字和姓氏在液晶显示器上的变形,但我尝试了每一个解决方案,我可以找到,但它不工作。液晶屏上什么都没有显示。请看下面的示意图和我的代码。我也试过其他模式,但它们也不起作用。我想问题是变形杆菌,但我不确定。
我能为解决方案做些什么?
的数据
LIST P='16F877A'
INCLUDE <P16F877A.INC>
DEGER EQU 0x21
SAYAC1 EQU 0x22
SAYAC2 EQU 0X23
ORG 0x00
GOTO START
ORG 0x04
VERIYAZ
MOVWF DEGER ;
SWAPF DEGER ,W ;
ANDLW 0x0F
MOVWF PORTB
BSF PORTB,4 ;
CALL GECIKME ;
MOVF DEGER,W ;
ANDLW 0x0F
MOVWF PORTB
BSF PORTB,4 ;
CALL GECIKME
RETURN
KOMUTYAZ
MOVWF DEGER ; 1101 1010
SWAPF DEGER,W;1010 1101
ANDLW 0x0F ; 0000 1111 =0000 1101
MOVWF PORTB
BCF PORTB,4 ;
CALL GECIKME ;
MOVF DEGER,W ;1101 1010
ANDLW 0x0F ;0000 1010
MOVWF PORTB
BCF PORTB,4 ;
CALL GECIKME
RETURN
START
CLRF PORTB
BANKSEL TRISB
CLRF TRISB
BANKSEL PORTB
MOVLW 0x03 ;
CALL KOMUTYAZ ;
MOVLW 0x02;
CALL KOMUTYAZ ;
MOVLW 0x28 ;
CALL KOMUTYAZ ;
MOVLW 0x01 ;
CALL KOMUTYAZ ;
MOVLW 0x06;
CALL KOMUTYAZ ;
MOVLW 0x0C ;
CALL KOMUTYAZ ;
MOVLW 0x80;
CALL KOMUTYAZ ;
MOVLW 'B'
CALL VERIYAZ
MOVLW 'A'
CALL VERIYAZ
MOVLW 'T'
CALL VERIYAZ
MOVLW 'U'
CALL VERIYAZ
MOVLW 'H'
CALL VERIYAZ
MOVLW 0xC0;
CALL KOMUTYAZ
MOVLW 0x06 ;
CALL KOMUTYAZ
MOVLW 'D'
CALL VERIYAZ
MOVLW 'I'
CALL VERIYAZ
MOVLW 'L'
CALL VERIYAZ
MOVLW 'L'
CALL VERIYAZ
MOVLW 'I'
CALL VERIYAZ
GECIKME
BSF PORTB,5;
CALL BEKLE
BCF PORTB,5;
RETURN
BEKLE
MOVLW 0x40
MOVWF SAYAC1;
D1
MOVLW 0x05
MOVWF SAYAC2
D2
DECFSZ SAYAC2
GOTO D2
DECFSZ SAYAC1
GOTO D1
RETURN
END
字符串
我试了我能找到的,我期待着解决方案。
1条答案
按热度按时间d4so4syb1#
字符串
您也可以将输出端口更改为PORTB以外的其他端口。但要小心; IO引脚可以设计为多功能的,也就是说,单个IO引脚可以设计为用作模拟输入或数字IO或定时器输入或PWM输出等。您应该始终检查微控制器的datasheet,以便能够根据您的需要正确配置引脚。
继续并将该配置行添加到代码中,然后重试。然后让我知道结果。
编辑-1
上面提供的解决方案没有工作,那么现在怎么办?我们会一直努力直到你成功。现在我们已经确保了 * PORTB 3 * 引脚是空闲的,我们可以专注于其他错误。这是我看到的另一个:LCD的初始化过程。初始化过程非常重要,以便LCD知道它应该如何工作。如果没有正确地初始化它,不幸的是它将无法控制。所以我们开始吧...
在第13页的this datasheet中,您可以看到16 x2 LCD控制器的初始化过程。你看...
x1c 0d1x的数据
0x3
0x3
第二次,然后等待超过100 us(我们将其四舍五入为1 ms)0x3
这些步骤应该以这种方式完成,以便LCD控制器完成其复位程序,以便进一步设置。然后是接口设置步骤。现在,您必须替换以下代码:
型
代码如下:
型
除LVP配置外,还应进行此更改。试着让我知道结果。