Ovladani LCD displeje

Miroslav Hatina hatina
Středa Březen 17 12:02:26 CET 2004


Ahoj,

pouzivam stvorbitovu celkom spolahlivo podla nasledujuceho kodu -

#define RS     P1_1             /* register select A0  */
#define enable P1_3             /* enable displej      */
#define RW     P1_2             /* R/W                 */

// data D7-D4	->	P1_7-P1_4

#define clear      0x01
#define home       0x02
#define cur_left   0x10
#define cur_right  0x14
#define cur_on     0x0E
#define cur_off    0x0C
#define cur_blink  0x0F
#define set_1line  0x80
#define set_2line  0xC0
#define set_fnc    0x38
#define set_mod    0x06

void o(unsigned char a)
{
    while(a--) { _nop_(); }
}

void en()               // enable disp
{
    enable = 1;
    o(20);
    enable = 0;
}

void cwr (unsigned char z)
{
    P1 = z & 0xf0;
    en();
    o(20);
    P1 = z << 4;
    en();
    o(20);
    if(z < 3)
    {
        t1ms(3);			// pre istotu pockaj 3 ms
    }
}

void inic()                     // inicializuje displej
{                               // 4 bitovu zbernicu
    P1 = 0x30;
    en();
    t1ms(5);
    en();
    en();                       // dolezite inak to nefachci
    P1 = 0x20;
    en();

    cwr(set_mod);
    cwr(cur_off);
    cwr(0x28);                  // set fnc mode 2 line
    cwr(clear);
}

snad to niekomu pomoze.

S pozdravom			Miro





Další informace o konferenci Hw-list