J'ai un écran LCD, connecté à un Atmega32, en travaillant avec des caractères uniques en utilisant cette fonction:Affichage des caractères ASCII d'un tableau sur un écran LCD avec ATmega32
void send_char(uint8_t c){
PORTD = c; // set the output pins to the ascii value of the char
PORTB |= 0x05;
_delay_us(1);
PORTB &= 0xfa;
_delay_us(60);
PORTD = 0x00;
update_cursor();
}
je peux appeler cela avec un caractère comme argument: send_char('a');
et cela fonctionne.
Alors j'ai essayé enroulant une fonction send_string autour:
void send_string(const char * msg){
while (*msg != '\0'){
send_char(*msg++);
}
}
Cela met juste charabia sur mon LCD indiquant que la valeur ASCII est loin. Et quand j'essaie de passer une chaîne vide (send_string("")
), un minimum de trois caractères charabia s'affiche sur l'écran LCD.
L'envoi avec la chaîne vide devrait être un do-nothing, puisque '* msg == '\ 0''. Y a-t-il du code en cours d'exécution après cela qui risque de perturber votre affichage? L'affichage est-il initialisé correctement? – nmichaels
l'affichage semble être initialisé correctement car je peux envoyer n'importe quel nombre de caractères en utilisant send_char() et tout va bien et rien d'autre ne sera envoyé à l'affichage sauf une mise à jour de la position du curseur de send_char. – fasseg