Forum: Mikrocontroller und Digitale Elektronik Mit MSP EXP430F5529 LCD ansteuern


von Mfly (Gast)


Lesenswert?

Hallo,

ich habe einen MSP EXP430F5529 und möchte gerne damit einen 2x16 LCD 
(PCB-BT10809) ansteuern. Die Verdrahtung habe ich soweit vorgenommen und 
als Beispeilcode, war dieser hier mitgeliefert worden.
Mein Display hängt an folgenden Ports vom MSP:

D0-D3 frei
D4 ->P1.3
D5 ->P1.2
D6 ->P4.3
D7 ->P4.0
R/S ->P3.7
E ->P8.2
R/W ->P1.6

Das Problem ist, das Display zeigt nichts an.
Liegt es an den Ports?
Müssen die im Programm geändert warden?

#include <msp430x552x.h>

#include <stdio.h>


void LCD_init(void);

void DelayMs(int Ms);

void LCD_cmd4(unsigned char cmd);

void LCD_dat4(unsigned char byte);



unsigned char i;

const unsigned char Msg1[] = " 16x2 LCD Test... ";

const unsigned char Msg2[] = " F2812 EVB BOARD  ";



void main()

{

        WDTCTL = WDTPW + WDTHOLD;     // Stop watchdog timer

        P7DIR = 0xF0;                 // Set P7.4-P7.7 to Output 
direction

        P5DIR = 0xC0;

        P4DIR = 0x80;

        DelayMs(100);

        LCD_init();

        DelayMs(50);



    while(1)

    {

        LCD_cmd4(0x80);

        for(i=0;i<16;i++)

        {

            LCD_dat4(Msg1[i]);

            DelayMs(5);

        }

        LCD_cmd4(0xc0);

        for(i=0;i<16;i++)

        {

            LCD_dat4(Msg2[i]);

            DelayMs(5);

        }

    }

}

void LCD_init(void)

{

LCD_cmd4(0x33); LCD_cmd4(0x22); LCD_cmd4(0x22); LCD_cmd4(0x22);



        LCD_cmd4(0x28);                     // 28 for four bit mode

        LCD_cmd4(0x0c);

        LCD_cmd4(0x06);

        LCD_cmd4(0x01);

}



void LCD_cmd4(unsigned char cmd)

{

        P5OUT = 0x00;     // RW=0,RS=0

        P7OUT = cmd;

        P4OUT = 0x80;     // En = 1;

        P4OUT = 0x00;     // En = 0;

       cmd = (cmd<<4) & 0xF0;

        P7OUT = cmd;

        P4OUT = 0x80;     // En = 1;

        P4OUT = 0x00;     // En = 0;

        DelayMs(3);

}



void LCD_dat4(unsigned char byte)

{

        P5OUT = 0x80;     // RW=0,RS=0

        P7OUT = byte;

        P4OUT = 0x80;     // En = 1;

        P4OUT = 0x00;     // En = 0;

       byte = (byte<<4) & 0xF0;

        P7OUT = byte;

        P4OUT = 0x80;     // En = 1;

        P4OUT = 0x00;     // En = 0;

        DelayMs(3);

}



void DelayMs(int Ms)

{

        int i;

        while(Ms>0)

        {

                for(i=0;i<104;i++);

                Ms--;

        }

}

von Mfly (Gast)


Lesenswert?

Kann mir keiner helfen?

von Clemens L. (c_l)


Lesenswert?

Mfly schrieb:
> Mein Display hängt an folgenden Ports vom MSP:
>
> D0-D3 frei
> D4 ->P1.3
> D5 ->P1.2
> D6 ->P4.3
> D7 ->P4.0
> R/S ->P3.7
> E ->P8.2
> R/W ->P1.6

Und warum benutzt das Programm dann völlig andere Pins?

von Mfly (Gast)


Lesenswert?

Clemens L. schrieb:
> Mfly schrieb:
>> Mein Display hängt an folgenden Ports vom MSP:
>>
>> D0-D3 frei
>> D4 ->P1.3
>> D5 ->P1.2
>> D6 ->P4.3
>> D7 ->P4.0
>> R/S ->P3.7
>> E ->P8.2
>> R/W ->P1.6
>
> Und warum benutzt das Programm dann völlig andere Pins?

Da ich mich komplett neu damit beschäftige, habe ich noch keine grosse 
Ahnung davon.

Das Programm war als Sample mit beim Display dabei.
Kannst du mir sagen, an welcher Stelle ich die Ports ändern muss?

von Martin L. (martin_l795)


Lesenswert?

Habe zwar bisher absolut Null-Ahnung vom MSP430, aber zumindest habe ich 
das 430F5529 Board auch seit ein paar Tagen. Und der Doku nach ist da 
Port5, der in Deinem Programm z.B.
per: P5OUT = 0x80;     // RW=0,RS=0

verwendet wird, überhaupt nicht auf die Stiftleisten geführt.
Ich vermute mal, Dein Beispielprogramm bezieht sich auf irgendeine 
Beschaltungsmöglichkeit des 5529, hat aber mit dem Launchpad rein nix zu 
tun.
Grob gesagt mußt Du halt die Portnummern oben und ggfalls auch die 
geschriebenen Bytewerte so ändern, das sie mit Deiner tatsächlichen 
Beschaltung übereinstimmen.


Wie wär's, wenn Du Dir mal die -ziemlich gute- Workshop-Doku zu dem 
Launchpad anschaust? Gibts auf der TI-Seite als PDF.

Link zugefügt:
http://processors.wiki.ti.com/index.php/Getting_Started_with_the_MSP430_LaunchPad_Workshop

Editiert: Grundsätzlich wird der Code bei Dir ohne Änderungen nicht 
funktionieren, die Anpassung der Ports alleine reicht nicht.

Da Du das Datennibble elegant auf völlig frei verstruselte Portpins 
verteilt hast, musst Du Dir das auch erst noch zusammenbauen....

>> D4 ->P1.3
>> D5 ->P1.2
>> D6 ->P4.3
>> D7 ->P4.0

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.