52 lines
No EOL
1.2 KiB
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;
|
|
} |