Hirdetés

Új hozzászólás Aktív témák

  • lmaresz

    aktív tag

    Sziasztok!

    Egy ST7066U-s 2 soros LCD és egy 16F887-es PIC kommunikációjával akadt problémám az előző napokban, az inicializálás sikeres, parancsokat is tudok küldeni neki, azonban az adatokat (betűket) valamiért mintha parancsként értelmezné. Nem találom a hibát, tudnátok segíteni, mi lehet a ludas?
    Előre is köszönöm a segítséget!
    A forráskódot csatolom:
    #define RS PORTAbits.RA0
    #define RW PORTAbits.RA1
    #define E PORTAbits.RA2
    #define DATA PORTD
    #define D0 PORTDbits.RD0
    #define D1 PORTDbits.RD1
    #define D2 PORTDbits.RD2
    #define D3 PORTDbits.RD3
    #define D4 PORTDbits.RD4
    #define D5 PORTDbits.RD5
    #define D6 PORTDbits.RD6
    #define D7 PORTDbits.RD7

    typedef unsigned int uint;
    typedef unsigned char byte;

    void pulseE()
    {
    __delay_us(1);
    PORTAbits.RA2 = 1;
    __delay_us(1);
    PORTAbits.RA2 = 0;
    __delay_us(1);
    }

    void writeLCD(byte Data, byte DataFlag, byte CheckBusy)
    {
    byte BusyFlag;
    if (CheckBusy)
    {
    RS = 0;
    TRISD = 1;
    RW = 1;
    do
    {
    E = 1;
    __delay_us(1);
    BusyFlag = D7;
    E = 0;
    } while (BusyFlag);
    }
    else
    {
    __delay_ms(10);
    }
    TRISD = 0;
    RW = 0;
    if (DataFlag == 1) RS = 1;
    else RS = 0;
    DATA = Data;
    pulseE();
    }

    void outStringLCD(char *psz_s) {
    while (*psz_s) {
    writeLCD(*psz_s,1,1);
    psz_s++;
    }
    }

    [ Szerkesztve ]

Új hozzászólás Aktív témák

Hirdetés