Witam wszystkich
. Jestem dośc początkujący jeżeli chodzi o uC dlatego proszę o wyrozumiałość. Mam problem z inicjalizacją wyświetlacza LCD hd44780 wydaje mi się, że robię wszsytko poprawnie a nie chce mi to ruszyć. Mógłby ktoś wrzucić ten kod do siebie na procka i zobaczyć czy działa inicjalizacja ?
Ewentualnie byłbym wdzięczny za wszelkie nasuwające sie sugestie.
#include <avr/io.h>
#include <util/delay.h>
#define DB4 0x1 //PA.0
#define DB5 0x2 //PA.1
#define DB6 0x4 //PA.2
#define DB7 0x8 //PA.3
#define E 0x10 //PA.4
#define RS 0x20 //PA.5
#define RW 0x40 //PA.6
void Dana (int dat);
void Initialize();
void delayMs(double cykle);
void Instrukcja (int ins);
int main(void)
{
Initialize();
return 0;
}
void Dana (int dat)
{
PORTA |=RS;
PORTA |=E; //E stan wysoki
PORTA |=dat;
_delay_us(1);
PORTA &=~E;
_delay_us(1);
PORTA &=~dat;
PORTA &=~RS;
}
void Instrukcja (int ins)
{
PORTA |=ins;
PORTA |=E; //E stan wysoki
_delay_us(1);
// _delay_us(1);
PORTA &=~E;
// _delay_us(1);
//PORTA &=~ins;
PORTA &= 0x00;
}
void Initialize()
{
_delay_ms(50);
DDRA |= DB4 + DB5 + DB6 + DB7 + RW + RS + E;
PORTA &= 0x00;
Instrukcja(DB4+DB5);
_delay_ms(10);
Instrukcja(DB4+DB5);
_delay_ms(5);
Instrukcja(DB4+DB5);
_delay_ms(2);
Instrukcja(DB5);
_delay_ms(2);
Instrukcja(DB5);
Instrukcja(DB7);
_delay_ms(2);
Instrukcja(0);
Instrukcja(DB7);
_delay_ms(2);
Instrukcja(0);
Instrukcja(DB4);
_delay_ms(2);
Instrukcja(0);
Instrukcja(DB5+DB6);
_delay_ms(2);
}