ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
23 ноября
149886 Топик полностью
gamma (03.03.2009 14:32, просмотров: 410) ответил Andreas на Вопрос к господам из Гаммы: как подключать TIC107. Если по TIC32 есть апнота, то что такое Vdd123.. в тике107 и что с ними делать совершенно непонятно и из даташита на контроллер.
Что-то вроде application note еще не оформлено, но в теле сообщения пример, который поможет. Схема включения TIC107: Вывод 1 - SCL - i2c 2 - POR - сброс драйвера, сброс высоким уровнем 3 - SDA - i2c 4 - VDD1 - +5В 5 - VDD2/VDD3 - +5В 6 - VSS - земля 7 - VLCD - керамический конденсатор ~1мкФ на землю /* ------------------------------------------------------------------------- */ #define TIC107_RESET (RC5) #define TIC107_RESET_TRIS (TRISC5) #define TIC107_ADDR (0x74) #define CON1 (0b10000000) #define CON2 (0b01000000) void tic107_init(void) { TIC107_RESET = HIGH; // external reset active HIGH TIC107_RESET_TRIS = OUT; delay_ms(5); TIC107_RESET = LOW; delay_ms(5); // at least 2ms for initialisation i2c_start(TIC107_ADDR); i2c_write(0x00); // Co=0, RS=0 i2c_write(0b00110100); // DL=1, M=1, SL=0, H=0 i2c_write(0b00001100); // D=1, C=0, B=0 i2c_write(0b00000110); // I/D=1, S=0 i2c_write(0b00110101); // DL=1, M=1, SL=0, H=1 i2c_write(0b00000011); // L=1 i2c_write(0b00000100); // P=0, Q=0 i2c_write(0b00001000); // IM=0, IB=0 i2c_write(0b00010000); // TC1=0, TC2=0 i2c_write(0b01000010); // S1=1, S0=0 (4x) i2c_write(0b10000000 | 23); // V=0 (Va) i2c_stop(); } /* ------------------------------------------------------------------------- */ void tic107_contrast(uint8 val) { i2c_start(TIC107_ADDR); i2c_write(0x00); // Co=0, RS=0 i2c_write(0b00110101); // DL=1, M=1, SL=0, H=1 i2c_write(0b10000000 | val); // V=0 (Va) i2c_stop(); } /* ------------------------------------------------------------------------- */ // Гамма СПб - ЖКИ const byte str1[] = { 0x45, 0xE1, 0x6C, 0x6C, 0xE1, 0x20, 0xC3, 0x96, 0x54, 0x20, 0xAD, 0x20, 0x47, 0xCB, 0x49, 0x20 }; // COG 16x2 PCF2119 const byte str2[] = { 0xC3, 0xCF, 0xC7, 0x20, 0xB1, 0xB6, 0xF8, 0xB2, 0x20, 0xD0, 0xC3, 0xC6, 0xB2, 0xB1, 0xB1, 0xB9 }; void main(void) { // ... tic107_init(); // вывод str1 в первую строку i2c_start(TIC107_ADDR); i2c_write(0b01000000); // Co=0, RS=1 for(tmp = 0; tmp < 16; tmp++) i2c_write(str1[tmp]); i2c_stop(); // смещаем указатель на вторую строку i2c_start(TIC107_ADDR); i2c_write(0b00000000); // Co=0, RS=0 i2c_write(0b00110100); // DL=1, M=1, SL=0, H=0 i2c_write(0b10000000 | 0x40); // set DDRAM address i2c_stop(); // вывод str2 по указателю (вторая строка) i2c_start(TIC107_ADDR); i2c_write(0b01000000); // Co=0, RS=1 for(tmp = 0; tmp < 16; tmp++) i2c_write(str2[tmp]); i2c_stop(); // зеркалирование право-лево, верх-низ (биты P, Q) i2c_start(TIC107_ADDR); i2c_write(0x00); // Co=0, RS=0 i2c_write(0b00110101); // DL=1, M=1, SL=0, H=1 i2c_write(0b00000100); // P=0, Q=0 i2c_stop(); delay_ms(2000); i2c_start(TIC107_ADDR); i2c_write(0x00); // Co=0, RS=0 i2c_write(0b00110101); // DL=1, M=1, SL=0, H=1 i2c_write(0b00000101); // P=0, Q=1 i2c_stop(); delay_ms(2000); i2c_start(TIC107_ADDR); i2c_write(0x00); // Co=0, RS=0 i2c_write(0b00110101); // DL=1, M=1, SL=0, H=1 i2c_write(0b00000110); // P=1, Q=0 i2c_stop(); delay_ms(2000); i2c_start(TIC107_ADDR); i2c_write(0x00); // Co=0, RS=0 i2c_write(0b00110101); // DL=1, M=1, SL=0, H=1 i2c_write(0b00000111); // P=1, Q=1 i2c_stop(); delay_ms(2000); // изменение контраста for(tmp = 0; tmp < 64; tmp++) { delay_ms(100); tic107_contrast(tmp); } tic107_contrast(23); // ... } /* ===================================================================== */