morse_code_transcoder/transcodeur/lcd.c
2021-03-20 19:29:19 +01:00

49 lines
No EOL
1.4 KiB
C

/*
* lcd.c
*
* Created: 17/05/2021 12:10:24
* Author: yboujon1
*/
#include "main.h"
#include "lcd.h"
void LCD_Init (void)
{
DDRC = 0xFF; // Le port de controle en sortie
DDRA = 0xFF; // le port des donnees en sortie
PORTC &= ~(1<<E); // E=0 Enable desactive
_delay_ms(50); //on attends +30ms pour que Vdd soit a 4,5V
LCD_Command (FUNCTION_SET | TWO_LINE_MODE); //Mode deux lignes
LCD_Command (DISPLAY_CTRL | DISPLAY_ON); //Affichage allumé
LCD_Command (CLEAR_DISPLAY); //Nettoyage de l'écran
LCD_Command (ENTRY_MODE_SET | INCREMENT_MODE); //Mode d'incrémentation dans la RAM
}
void LCD_Command(unsigned char cmd)
{
PORTC &= ~(1<<RS); // RS=0 on active le mode commande
PORTC &= ~(1<<RW); // RW=0 write mode
PORTC |= (1<<E); // E=1 Enable autorise
PORTA= cmd; //on envoie la donnee
PORTC &= ~(1<<E); // E=0 Enable desactive
switch(cmd)
{
case CLEAR_DISPLAY: //si écran nettoyé
_delay_ms(2); //on attend +1,53ms
break;
default: //dans les autres cas
_delay_us(50); //on attend +39us
};
}
int LCD_putchar(char c, FILE *stream) /* LCD data write function */
{
_delay_ms(10);
PORTC |= (1<<PC2); // RS=1 on active le mode data
PORTC &= ~(1<<PC1); // RW=0 write mode
PORTC |= (1<<PC0); // E=1 Enable autorise
PORTA = c; //on envoie la donnee
PORTC &= ~(1<<PC0); //on desactive l'enable
return 0;
}