49 lines
No EOL
1.4 KiB
C
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;
|
|
} |