Witam.
Mam problem z obsługą wyświetlacza 2x16 zgodnego z HD44780. Pracuje on w trybie 4-bit podłączony pod port P1 mikrokontrolera MSP430.
Schemat połączeń:
P1.7 - D7
P1.6 - D6
P1.5 - D5
P1.4 - D4
P1.3 - EN
P1.2 - x
P1.1 - RW
P1.0 - RS
Poniżej zamieszczam kod programu, który do tej pory napisałem w IAR.
Nie miałem do czynienia z tego typu wyświetlaczami wcześniej więc prozę o pomoc i wyrozumiałość. Kod, który jest powyżej miał wyświetlić kursor na ekranie zanim zacznę wprowadzać dane.
Pozdrawiam
Mam problem z obsługą wyświetlacza 2x16 zgodnego z HD44780. Pracuje on w trybie 4-bit podłączony pod port P1 mikrokontrolera MSP430.
Schemat połączeń:
P1.7 - D7
P1.6 - D6
P1.5 - D5
P1.4 - D4
P1.3 - EN
P1.2 - x
P1.1 - RW
P1.0 - RS
Poniżej zamieszczam kod programu, który do tej pory napisałem w IAR.
#include "io430.h"
/** Prototypy */
void wait(unsigned int i); // opóźnienie
void initLcd(void); // inicjalizuje wyświetlacz
void lcdClock(); // strobowanie linii E
void writeComm(int comm); // wpisuje komendę do wyświetlacza
/** Główna funckja */
int main( void )
{
WDTCTL = WDTPW + WDTHOLD;
P1DIR = 0xFF;
wait(50000);
initLcd();
}
/** Funkcja opóźniająca */
void wait(unsigned int i)
{
unsigned int j;
for(j=0;j<i;j++);
}
/** Inicjalizacja wyświetlacza */
void initLcd(void)
{
writeComm(0x30); // 4 - bitowe operacje, 2-wierszowy wyświetlacz, czcionka 5x8 kropek
writeComm(0x08); // wyłączenie wyświetlacza, kursora i migotania
writeComm(0x01); // kasowanie wyświetlacza
writeComm(0x0E); // załączenie wyświeltacza i kursora
}
/** Strobowanie stanem E */
void lcdClock()
{
wait(5000);
P1OUT |= 0x08; // E w stan wysoki
wait(5000);
P5OUT &= ~0x08; // E w stan niski
wait(5000);
}
/** Wysyła komendę do wyświetlacza 2x4bit */
void writeComm(int comm)
{
int help;
// operacje na starszej części
help = comm & 0xF0;
P1OUT = help;
P1OUT |= 0x08; // E <- 1
lcdClock();
// operacje na młodszej części
help = (comm << 4) & 0xF0;
P1OUT = help;
P1OUT |= 0x08; // E <- 1
lcdClock();
}
Nie miałem do czynienia z tego typu wyświetlaczami wcześniej więc prozę o pomoc i wyrozumiałość. Kod, który jest powyżej miał wyświetlić kursor na ekranie zanim zacznę wprowadzać dane.
Pozdrawiam