LCD Motorola T190 (T191)

Тема в разделе "Arduino & Shields", создана пользователем big-vl, 13 май 2014.

  1. big-vl

    big-vl Нуб

    Есть распиновка дисплея.
    [​IMG]

    Есть код.
    http://gfile.ru/a4Y2l

    еще код.
    http://gfile.ru/a6e53

    Не могу его подключить, не к ардуино и код не могу зделать, кинул в библиотеки он ругается, мне хотя бы програмную часть помочь. Ну и так же просто для обсуждения, поиском пользовался как подключить экран ну это все что накопал, буду рад вашей помощи.
     
  2. Mitrandir

    Mitrandir Гуру

    Надеюсь ругается не матом?
     
  3. Megakoteyka

    Megakoteyka Оракул Модератор

    Ссылки битые.
    VDD, VSS - должно быть питание.
    SDA, SCL - шина I2C.

    http://roboforum.ru/forum2/topic4745.html#p69038
     
  4. big-vl

    big-vl Нуб

  5. Megakoteyka

    Megakoteyka Оракул Модератор

    И на что оно ругается? Куда хидер кладете?
     
  6. big-vl

    big-vl Нуб

    с кодом буду ковырятся завтра, меня смущает vdd1 и vdd2,3 на них прям питание? почему их 2шт? или на vdd1 только питание? зы: мне очень повезло с дисплеем (думаю про себя)
     
  7. Megakoteyka

    Megakoteyka Оракул Модератор

  8. big-vl

    big-vl Нуб

    Код (Text):
    In file included from sketch_may14b.ino:10:
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:12: error: 'uint8' does not name a type
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:15: error: variable or field 'buffer_toI2C' declared void
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:15: error: 'uint8' was not declared in this scope
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:15: error: 'buffer' was not declared in this scope
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:15: error: 'uint8' was not declared in this scope
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:18: error: variable or field 'T191_gotoxy' declared void
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:18: error: 'int8' was not declared in this scope
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:18: error: 'int8' was not declared in this scope
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:19: error: variable or field 'T191_erase_y' declared void
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:19: error: 'int8' was not declared in this scope
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:20: error: variable or field 'T191_erase_area' declared void
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:20: error: 'int8' was not declared in this scope
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:20: error: 'int8' was not declared in this scope
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:20: error: 'int8' was not declared in this scope
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:23: error: 'uint8' has not been declared
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:24: error: variable or field 'T191_Bitmap' declared void
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:24: error: 'uint8' was not declared in this scope
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:24: error: 'uint8' was not declared in this scope
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:24: error: expected primary-expression before 'const'
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:24: error: 'uint8' was not declared in this scope
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:24: error: 'uint8' was not declared in this scope
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h: In function 'void T191_init()':
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:32: error: 'Rst_Write' was not declared in this scope
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:33: error: 'CyDelay' was not declared in this scope
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:35: error: 'i2cLCDInit' was not declared in this scope
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:35: error: 'buffer_toI2C' was not declared in this scope
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h: At global scope:
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:40: error: variable or field 'buffer_toI2C' declared void
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:40: error: 'uint8' was not declared in this scope
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:40: error: 'buffer' was not declared in this scope
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:40: error: 'uint8' was not declared in this scope
    ну и сам файл lcd_t191.h

    Код (Text):
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //
    //Graphic LCD Motorola t191
    //With CP866 codepage (Russian)
    // Ideas:  from Saymonnet (kazus.ru)  http://kazus.ru/forums/showthread.php?p=195019    post #356
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////

    #include <device.h>
    #include "Fonts.h"
    #define I2C_SLAVE_ADDR        (0x3Cu)  // devise addr 78>>1  see datasheet  PCF8548.pdf

    uint8  i2cLCDInit[14] = {0x00,0x31,0x14,0x06,0x30,0x11,0x05,0x31,0x98,0x0C,0x30,0x0C,0x40,0x80};    //  for T191_init()  see datasheet  PCF8548.pdf

    void    T191_init(void);
    void    buffer_toI2C( uint8 *buffer, uint8 length);        // Sends data in LCD
    void    T191_write_byte(char bytefor_data);            // Sends byte in LCD
    void    ascii_to_LCD(char simbol);                        // extract ascii from tables & write to LCD
    void    T191_gotoxy(int8 xlph, int8 ylph);                // Position cursor
    void    T191_erase_y(int8 ylph);                        // erase the entire line (98 bytes)
    void    T191_erase_area(int8 x,int8 yb,int8 length);    // erase area from x to x+length
    void    T191_clear_screen(void);
    void    T191_Text( char *str);                          
    void    T191_array(const char *buffer, uint8 length);    // send 0x40 then data
    void    T191_Bitmap(uint8 x,uint8 y, const char *buffer, uint8 length,uint8 heigth);

    //##############################################################################################

    //////////////////////////////////////////////////////////////////////////////////
    void T191_init(void)
    {

    Rst_Write(0);            // reset chip during 50ms
    CyDelay(50);
    Rst_Write(1);
    buffer_toI2C( i2cLCDInit,14);
    T191_clear_screen();
    }

    /////////////////////////////////////////////////////////////////////////////////
    void buffer_toI2C( uint8 *buffer, uint8  length)
    {
      I2C_UDB_M_MasterClearStatus();  /* Clear any previous status */
      I2C_UDB_M_MasterWriteBuf(I2C_SLAVE_ADDR, (uint8 *) buffer, length, I2C_UDB_M_MODE_COMPLETE_XFER);
      while((I2C_UDB_M_MasterStatus() & I2C_UDB_M_MSTAT_WR_CMPLT) == 0u)  {  /* Wait write to be completed */ }
    }

    /////////////////////////////////////////////////////////////////////////////////
    void T191_write_byte(char bytefor_data)
    {
    uint8  i2cData[2] = {0x40,0x00};
    i2cData[1] = bytefor_data;
    buffer_toI2C( i2cData,2);
    }

    //////////////////////////////////////////////////////////////////////////////////
    void ascii_to_LCD(char simbol)  // extract ascii from tables & write to LCD
    {
    uint16 charpos;

      if (simbol<0x20)return;
      //if ((simbol<0xc0)&(simbol>0x7f))return;
    charpos=(simbol-0x20)*5;    //

      uint8  i2cData[7] = {0x40,0x00};            // Table - the container for the character first 0x40v    end  0x00 1 byte (always blank)
      memcpy( &i2cData[1],&TABLE5[charpos],5);    // fill the container codes
    buffer_toI2C( i2cData,7);
    }

    //////////////////////////////////////////////////////////////////////////////////
    void T191_gotoxy(int8 xlph, int8 ylph)      // Position cursor
    {
    uint8  i2cLCDCLR[4] = {0x00,0x30,0x40,0x80};
    i2cLCDCLR[2] = 0x40|(ylph&0x07);
    i2cLCDCLR[3] = 0x80|(xlph&0x7f);
    buffer_toI2C( i2cLCDCLR,4);
    }
    //////////////////////////////////////////////////////////////////////////////////
    void T191_erase_y(int8 ylph)
    {
      T191_gotoxy(0,ylph);
    uint8  i2cerase_y[100] = {0x40,0x00 };
    buffer_toI2C( i2cerase_y,99);
    }
    //////////////////////////////////////////////////////////////////////////////////
    void    T191_erase_area(int8 x,int8 yb,int8 length)
    {
      T191_gotoxy(x,yb);
    uint8  i2Cerase[100] = {0x40,0x00 };
    buffer_toI2C( i2Cerase,length+1);
    }

    //////////////////////////////////////////////////////////////////////////////////
    void T191_clear_screen(void)
    {
      T191_erase_y(0);
      T191_erase_y(1);
      T191_erase_y(2);
      T191_erase_y(3);
      T191_erase_y(4);
      T191_erase_y(5);
      T191_erase_y(6);
      T191_erase_y(7);
      T191_gotoxy(0,0);
    }
    //////////////////////////////////////////////////////////////////////////////////
    void T191_Text( char *str)
    {
        uint8 glyph;  
        while(*str != 0x00)
        {  
        glyph = (uint8)*str;  
        ascii_to_LCD(glyph);  
        str++;  
        }
    }

    //////////////////////////////////////////////////////////////////////////////////
    void T191_array(const char *buffer, uint8 length)
    {
    uint8  I2Cbuffer[100] = {0x40,0x00 };
    memcpy( &I2Cbuffer[1],buffer,length);    // fill the container codes  заполняем контейнер кодами
    buffer_toI2C( I2Cbuffer,length+1);
    }

    //////////////////////////////////////////////////////////////////////////////////
    void T191_Bitmap(uint8 x ,uint8 y, const char *buffer, uint8 length,uint8 heigth)
    {
        uint8 i;
        for(i=0;i<(heigth);i++)
        {
        T191_gotoxy(x,y+i);
        T191_array( &buffer[length*i],length);
        }
    }

     
    я С мало знаю но ПХП нормально, помогите чуть подшаманить.
     
  9. Mitrandir

    Mitrandir Гуру

    Вчера перед сном скачивал эту либу.. сдается мне что она не для ардуино. Там какието странные директивы препроцессора.. вечером могу причесать чтобы скомпилировалось. Но не факт что заработает. Экрана нету
     
  10. Mitrandir

    Mitrandir Гуру

    Судя по ошибкам не нравится тип uint8 попробуй заменить на byte везде
     
    Последнее редактирование: 14 май 2014
  11. big-vl

    big-vl Нуб

    uint8 менял на unt8_t он скушал но еще там начал ругаться на int8.

    void T191_gotoxy(int8 xlph, int8 ylph); // Position cursor

    Код (Text):
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:13: error: 'byte' does not name a type
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:16: error: variable or field 'buffer_toI2C' declared void
    ну и т.д.
     
  12. big-vl

    big-vl Нуб

    мне тоже кажется что она не заработает писать заново мне кажется нужно. сейчас еще сам попробую взять за основу либу какую нибудь для дисплея и по ней может получиться.
     
  13. Mitrandir

    Mitrandir Гуру

    Тут ему не нравится int8 и он не воспринимает эту строку как определение функции.
    Все uint8 замени на unsigned char
    int8 на byte.

    Можно сделать дефайном в начале:
    #define uint8 unsigned char
    #define int8 char
     
  14. Mitrandir

    Mitrandir Гуру

    Чтобы писать самому надо знать протокол дисплея...
     
  15. big-vl

    big-vl Нуб

    Код (Text):
    In file included from sketch_may14b.ino:10:
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h: In function 'void T191_init()':
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:36: error: 'Rst_Write' was not declared in this scope
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:37: error: 'CyDelay' was not declared in this scope
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h: In function 'void buffer_toI2C(unsigned char*, unsigned char)':
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:46: error: 'I2C_UDB_M_MasterClearStatus' was not declared in this scope
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:47: error: 'I2C_UDB_M_MODE_COMPLETE_XFER' was not declared in this scope
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:47: error: 'I2C_UDB_M_MasterWriteBuf' was not declared in this scope
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:48: error: 'I2C_UDB_M_MasterStatus' was not declared in this scope
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:48: error: 'I2C_UDB_M_MSTAT_WR_CMPLT' was not declared in this scope
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h: In function 'void ascii_to_LCD(char)':
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:62: error: 'uint16' was not declared in this scope
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:62: error: expected `;' before 'charpos'
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:66: error: 'charpos' was not declared in this scope
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:69: error: 'memcpy' was not declared in this scope
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h: In function 'void T191_array(const char*, unsigned char)':
    D:\Arduino\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\lcd_t191/lcd_t191.h:125: error: 'memcpy' was not declared in this scope
    sketch_may14b.ino: At global scope:
    sketch_may14b:17: error: '::main' must return 'int'
    sketch_may14b:23: error: '::main' must return 'int'
    sketch_may14b.ino: In function 'int main()':
    sketch_may14b:25: error: 'I2C_UDB_M_Start' was not declared in this scope
    sketch_may14b:26: error: 'CyGlobalIntEnable' was not declared in this scope
    sketch_may14b:45: error: 'CyDelay' was not declared in this scope
    Ошибок меньше но все же не утешительно, у меня есть еще дисплей от Nokia 1200, есть библиотека но она не для ардуино.

    http://yadi.sk/d/7kL1X0NZQAk6i

    может его легче будет прицепить?
     
  16. big-vl

    big-vl Нуб

    Nokia 1100 и 1200 там один этот же экран стоит.
     
  17. Mitrandir

    Mitrandir Гуру

    Похоже тут не вся библиотека...нехватает функций типа Rst_write
     
  18. big-vl

    big-vl Нуб

    Мне кажется эту проще переделать чем ту.
     

    Вложения:

  19. big-vl

    big-vl Нуб

    Нокия дисплей пролетает, там дорожки не подпояться, одна оторванная оказалось.
     
  20. big-vl

    big-vl Нуб

    Ладно в принципе все есть для инициализации дисплея, помогите теперь просто его про инициализировать.

    С чего начинать инициализацию именно I2C если туда включены.
    Как начать setup?