A voir également:
- Comment initialiser un LCD ?
- Meuble tv lcd - Guide
- Comment nettoyer un ecran lcd - Guide
- Enlever colle sur écran lcd ✓ - Forum Nettoyage
- Initialiser des Etiquette électronique de gondole (eeg) - Forum Electronique
- Réparer un écran lcd de radio réveil ✓ - Forum Electronique
1 réponse
Bonjour,
Je pense que ton problème provenait de ta tempo. J'ai tester ton programme en essayant d'envoyer le caractère 'a'. En modifiant légèrement ton programme, celui ci fonctionne. Voici ce que j'ai fait :
list P=16F877
#include <p16f877.inc>
#define LCD_ENABLE PORTD,7
#define LCD_RW PORTD,6
#define LCD_RS PORTD,5
__CONFIG _CP_OFF & _DEBUG_OFF & _WRT_ENABLE_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC
CBLOCK 0x20
temps : 1
temps2 : 1
ENDC
org 0x000
goto init;
org 0x005
BANK0 macro ; passe en banque0
bcf STATUS,RP0
bcf STATUS,RP1
endm
BANK1 macro ; passe en banque1
bsf STATUS,RP0
bcf STATUS,RP1
endm
init
BANK1
movlw b'00000000'
movwf TRISB
movlw b'00000000'
movwf TRISD
BANK0
clrf PORTB
clrf PORTD
call init_LCD
movlw 'a'
call send_data_LCD
binfi goto binfi
init_LCD
movlw 0x38
call send_cmd_LCD;
movlw 0x38
call send_cmd_LCD;
movlw 0x38
call send_cmd_LCD;
movlw 0x06
call send_cmd_LCD;
movlw 0x0C
call send_cmd_LCD;
movlw 0x01
call send_cmd_LCD;
call cls_LCD
return
send_cmd_LCD
bcf LCD_RS
bcf LCD_RW
movwf PORTB
call t2ms
bsf LCD_ENABLE
call t2ms
bcf LCD_ENABLE
call t2ms
return
cls_LCD
bcf LCD_RS
bcf LCD_RW
clrf PORTB
bsf PORTB,0
bsf LCD_ENABLE
call t2ms
bcf LCD_ENABLE
return
send_data_LCD
bsf LCD_RS
bcf LCD_RW
movwf PORTB
call t2ms
bsf LCD_ENABLE
call t2ms
bcf LCD_ENABLE
call t2ms
return
t2ms movlw D'10'
movwf temps
movlw D'105'
movwf temps2
retour2 decfsz temps
goto t2ms2
goto fintempo2ms
t2ms2 decfsz temps2
goto t2ms2
movlw D'105'
movwf temps2
goto retour2
fintempo2ms return
end;