morse_code_transcoder/transcodeur/lcd.c

52 lines
No EOL
1.2 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);
LCD_Command (DISPLAY_CTRL | DISPLAY_ON);
LCD_Command (CLEAR_DISPLAY);
LCD_Command (ENTRY_MODE_SET | INCREMENT_MODE);
}
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 0x01:
_delay_ms(2);
break;
case 0x81:
_delay_ms(2);
break;
default:
_delay_us(50);
};
}
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;
}