roman@ 0 18 июня, 2008 Опубликовано 18 июня, 2008 · Жалоба Привет, к мк Atmega16-16PU я подсоединил жк дисплей TIC8148, питаюсь вывести информацию на него, но ничего не отображается. DCLC - 1 port C DIN - 0 port C LOAD – 7 port D Питание для жк использую от лпт порта, соединив землю жк с лпт и с землей мк. МК живится от стабилизатора (78L05) который подключен к ком порта. Участок кода где просто питаюсь зажечь а потом погасить дисплей, порти перед этим настроил как выходи. for(i=0;i<72;i++) { PORTD.7=0; PORTC.1=0; PORTC.0=1; PORTC.1=1; PORTD.7=1; }; for(i=0;i<65000;i++) { }; for(i=0;i<72;i++) { PORTD.7=0; PORTC.1=0; PORTC.0=0; PORTC.1=1; PORTD.7=1; }; for(i=0;i<65000;i++) {}; Но одна интересная вещь когда торкаюсь пальцем к ножке CHK (ее не где не подключал) в некоторые промежутки времени (я так думаю в те промежутки времени когда мк должен зажечь жк) на дисплее зажигаются разные участки а потом эта ножка снова не реагирует некоторое время. В чем может бить проблема помогите мне очень интересно что не так делаю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
at90 0 18 июня, 2008 Опубликовано 18 июня, 2008 · Жалоба Давно работал с этим ЖК. Он устроен как большой сдвиговый регистр. Загоняете 8 байт и потом защёлкиваете LOAD. для теста можно так: #define DCLC PORTC.1 #define DIN PORTC.0 #define LOAD PORTD.7 unsigned char i; for(i=0;i<64;i++) { DIN=1; //зажигаем все сегменты DCLC=0; delay_ms(1); DCLC=1; delay_ms(1); } LOAD=0; delay_ms(1); LOAD=1; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
roman@ 0 18 июня, 2008 Опубликовано 18 июня, 2008 · Жалоба Сделал как посоветовали но у меня на экране только такая картинка (фото). Контакты прозванивал. Что делаю не так не могу понять. Код сделал таким чтобы видеть что зажигаю и гашу дисплей while (1) { for(i=0;i<64;i++) { DIN=1; //çàæèãàåì âñå ñåãìåíòû DCLC=0; delay_ms(1); DCLC=1; delay_ms(1); } LOAD=0; delay_ms(1); LOAD=1; delay_ms(1000); for(i=0;i<64;i++) { DIN=0; //çàæèãàåì âñå ñåãìåíòû DCLC=0; delay_ms(1); DCLC=1; delay_ms(1); } LOAD=0; delay_ms(1); LOAD=1; delay_ms(1000); }; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
biDE 0 18 июня, 2008 Опубликовано 18 июня, 2008 · Жалоба 1.Там сдвиговый регистр 80-ти битный: первые 72 бита - сегменты и 8бит не используются, но загружать их тоже надо. 2. Защелкивание происходит по фронту. Поменяй местами DCLC=0 <>DCLC=1 и LOAD=0<>LOAD=1. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
roman@ 0 18 июня, 2008 Опубликовано 18 июня, 2008 · Жалоба Я проверял сперва жк на лпт порте и там работало когда защелкиваю сперва DCLC а потом LOAD. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
biDE 0 18 июня, 2008 Опубликовано 18 июня, 2008 · Жалоба Я проверял сперва жк на лпт порте и там работало когда защелкиваю сперва DCLC а потом LOAD. все верно, только в исходной ситуации DCLC=0 и LOAD=0, а во время работы: защелкивание: DCLC=1; delay_ms(1); DCLC=0; зажигание: LOAD=1; delay_ms(1); LOAD=0; ... это я имел ввиду Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
roman@ 0 18 июня, 2008 Опубликовано 18 июня, 2008 · Жалоба Не работает дальше , может надо время задержки увеличить.(частота внутреннего генератора мк 1МГц), это странно поскольку на лпт работает ,а на мк не хочет. На лпт я использую перепад с 0-1. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rx3apf 0 19 июня, 2008 Опубликовано 19 июня, 2008 · Жалоба Не работает дальше , может надо время задержки увеличить.(частота внутреннего генератора мк 1МГц), это странно поскольку на лпт работает ,а на мк не хочет. На лпт я использую перепад с 0-1. Очень даже может быть, что проблема с задержками. Тайминги для ML1001 не соответствуют реально требуемым задержкам готового изделия, поскольку сопротивление дорожек на стекле достаточно велико, и постоянная времени паразитных RC-цепочек значительна (хотя про влияние CHK очень странно - это _выход_ сдвигового регистра, анализируя этот сигнал, можно удостовериться в правильности загружаемых данных). И о грустном - насколько мне известно, ML1001 с производства снимается (или уже снята), поэтому ориентироваться на эти индикаторы применительно к серийному производству не стоит... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
roman@ 0 19 июня, 2008 Опубликовано 19 июня, 2008 · Жалоба Мне просто понравилась электроника и начал недавно в свободное время что то пробивать паять, а так это к моей специальности даже не относится. А знакомых в этой отрасли нету тому и спрашиваю, может задаю глупые вопроси но я только начал этим баловаться. Мне просто понравилась электроника и начал недавно в свободное время что то пробивать паять, а так это к моей специальности даже не относится. А знакомых в этой отрасли нету тому и спрашиваю, может задаю глупые вопроси но я только начал этим баловаться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VDD 0 20 января, 2009 Опубликовано 20 января, 2009 · Жалоба ну так ты победил этот индикатор или нет? у меня аналогичная проблема. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VDD 0 21 января, 2009 Опубликовано 21 января, 2009 · Жалоба примерно так и делаю. только лоад даю после посылки всего буфера (72 бита) ... и 80 тоже пробовал как написал ктото... на экране как в фильме хищник знаки :)) короче под конец замучал контроллер - уже не знал что делать - запрограмировал фьюзы на 128 кгц генератор внутренний и он перестал прошиваться :))) поменяю - попробую. (а этот будет ждать высоковольтного программатора...) если есть набор функций готовый - пришли, если не жалко. мой мэйл [email protected] Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
akl 0 22 января, 2009 Опубликовано 22 января, 2009 · Жалоба Здравствуйте. Вас не затруднит протестировать программу? Делал по аналогии с TIC5231, но там был MSP430. Индикаторы заказаны еще до нового года, но где-то застряли, а двигаться дальше нужно. TIC8148.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VDD 0 2 февраля, 2009 Опубликовано 2 февраля, 2009 · Жалоба победил уродца... написал на с десяток функций для удобства вывода - работают. кстати я не могу тебе личное сообщение отправить.. проверь адрес в настройках. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bukh86 0 2 ноября, 2009 Опубликовано 2 ноября, 2009 · Жалоба Здраствуйте. Только осваиваюсь и учусь программированию. У меня есть индикатор tic8148 + attiny2313 , программку с заполнением всех знакомест и гашением сделать получилось. Теперь хотелось бы научится менять значения например цифр с помощью кнопок в разных знакоместах. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GoodNews 0 10 марта, 2012 Опубликовано 10 марта, 2012 (изменено) · Жалоба Добрый день, господа! Разобравшись с даташитом к дисплею и с процедурой загрузки данных в 8148 решил реализовать отображение отдельных разрядов. Застрял на процедуре, реализующей бланкирование (пока не вешал её в прерывание дабы отработать однократное отображение разряда, а потом уже можно будет и остальное). Отображается цифра согласно знакоместу, сегмент D в восьмом разряде, под ним - символ подчеркивания (это то, что после инициализации), затем там же рядом появлятеся точка. Затем, при переборе массива lcd_buffer, us_buffer - отображаются цифры в первом (слева) разряде и символ подчеркивания отображается по-порядку слева на права. Точка не показывается в принципе. В чем ошибка? Мой код приведен ниже. #ifndef F_CPU #define F_CPU 8000000UL //8MHz #endif #include <avr/io.h> #include <stdio.h> #include <util/delay.h> #include "lcd.h" //#include "interrupts.h" #define LCD_PORT PORTB #define LCD_REGISTER DDRB #define LCD_VDD_PIN 0 #define LCD_VSS_PIN 1 #define LCD_LOAD_PIN 2 #define LCD_DATA_PIN 3 #define LCD_CLK_PIN 4 #define LCD_CHK_PIN 5 #define LCD_POWER(flag) \ ((flag)? (LCD_PORT |= ((1 << LCD_VDD_PIN) | (0 << LCD_VSS_PIN))): \ (LCD_PORT &= ~((1 << LCD_VDD_PIN) | (1 << LCD_VSS_PIN)))) #define LCD_CLOCK(flag) \ ((flag)? (LCD_PORT |= (1 << LCD_CLK_PIN)): \ (LCD_PORT &= ~(1 << LCD_CLK_PIN))) #define LCD_DATA(flag) \ ((flag)? (LCD_PORT |= (1 << LCD_DATA_PIN)): \ (LCD_PORT &= ~(1 << LCD_DATA_PIN))) #define LCD_LOAD(flag) \ ((flag)? (LCD_PORT |= (1 << LCD_LOAD_PIN)): \ (LCD_PORT &= ~(1 << LCD_LOAD_PIN))) static uint8_t init_complete = 0; const uint8_t digit_buffer[10] = { 1+2+8+16+32+64, 64+32, 16+32+4+2+1, 16+32+4+64+1, 8+4+32+64, 16+8+4+64+1, 16+8+2+4+1+64, 16+32+64, 127, 127-2 }; static volatile uint8_t lcd_buffer[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; static volatile uint8_t dp_buffer[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; static volatile uint8_t us_buffer[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; void lcd_strobe(uint8_t select_io) { switch (select_io) { case 0: LCD_CLOCK(1); _delay_us(1); LCD_CLOCK(0); _delay_us(1); case 1: LCD_LOAD(1); _delay_us(1); LCD_LOAD(0); _delay_us(1); default: break; } } void write_data(void) { uint8_t dp = 0; uint8_t underscore = 0; uint8_t data = 0; for (uint8_t i = 8; i > 0; i--) { dp = dp_buffer[i]; lcd_strobe(0); if (dp) LCD_DATA(1); else LCD_DATA(0); for (uint8_t j = 8; j > 0; j--) { underscore = us_buffer[j]; lcd_strobe(0); if (underscore) LCD_DATA(1); else LCD_DATA(0); data = lcd_buffer[j]; for (uint8_t z = 8; z > 0; z--) { lcd_strobe(0); if (data & 0x40) LCD_DATA(1); else LCD_DATA(0); data = data << 1; } } } lcd_strobe(1); } void clear_buffers(void) { for (uint8_t i = 0; i < sizeof(dp_buffer); i++) { dp_buffer[i] = 0; } for (uint8_t i = 0; i < sizeof(us_buffer); i++) { us_buffer[i] = 0; } for (uint8_t i = 0; i < sizeof(lcd_buffer); i++) { lcd_buffer[i] = 0; } } void init_lcd(void) { if (!init_complete) { LCD_REGISTER = 0x1F; LCD_POWER(1); init_complete = 1; } for (uint8_t i = 0; i < 10; i++) { clear_buffers(); lcd_buffer[1] = digit_buffer[i]; if (i < 9) { us_buffer[i] = 1; dp_buffer[i] = 1; } write_data(); _delay_ms(1000); } } Изменено 10 марта, 2012 пользователем GoodNews Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться