Всем доброго времени суток. Применяю дисплей от 3310 (оригинальный), вывод данных, управление в стандартном наборе команд - все как надо. Но по какой-то причине не работает ни одна команда из расширенного, причем вне зависимости от того, отправляются ли команды установки Vop, BIAS и TCx или что я в них пишу, дисплей прекрасно отображает данные. Собственно это не так и плохо, но хотелось бы изменять контраст. Инициализирую так: //настройка портов и аппаратный срос LCD LcdDdr |= (1<<ChipEnable)|(1<<DataCmd)|(1<<Clk)|(1<<Mosi)|(1<<Res); LcdPort |= 1<<ChipEnable; LcdPort &= ~( (1<<DataCmd)|(1<<Clk)|(1<<Mosi)|(1<<Res) ); delay_ms(10); LcdPort |= (1<<Res); // блок расширенных команд с текущим дисплеем по какой-то причине не работает // имеется подозрение что контролер LCD сам определяет оптимальный режим LCDSend( 0x21, SEND_CMD ); // LCD Extended Commands. LCDSend( 0x80|0xFF, SEND_CMD ); // Set LCD Vop (Contrast). LCDSend( 0x06, SEND_CMD ); // Set Temp coefficent. LCDSend( 0x13, SEND_CMD ); // LCD bias mode 1:48. LCDSend( 0x20, SEND_CMD ); // LCD Standard Commands, Horizontal addressing mode. LCDSend( 0x08, SEND_CMD ); // LCD blank //вывести картинку LCDSend( 0x0C, SEND_CMD ); // LCD in normal mode. Затем пишу данные. Даташит перерыл весь, там сказано что после сброса, внутренний генератор выключен. Однако, получается что включен и настроен, а так же настроены остальные служебные регистры. Подскажите пожалуйста, в чем дело.
Зарегистрирован: Вс май 10, 2009 18:23:45 Сообщений: 110
Рейтинг сообщения:0
Подскажите в чем проблема выводятся данные на дисплей через строку и в перевернутом виде, неправильная инициализация или это ни чего не с делать, дисплей китайский. Примеры из статьи на сайте выводять через строку изображения все.
Зарегистрирован: Вс май 10, 2009 18:23:45 Сообщений: 110
Рейтинг сообщения:0
Ни кто не сталкивался с такой проблемой что ли? Кстати при том похоже инициализируеца дисплей не весь а так же через строчку,видно при включении поле. Когда выключен все пиксели одинаковые. Может новые как то по другому надо запускать? В протеуте все нормально. Через поиск не нашел такой касяк.
Карма: 46
Рейтинг сообщений: 590
Зарегистрирован: Вт май 19, 2009 09:27:30 Сообщений: 3258 Откуда: Украина
Рейтинг сообщения:0
Belerafon, а ты не думал, что тебе дисп "битый" попался? На днях знакомый попросил ему отладочник выЛУТить с диспом и мегой 16й, так ему попался такой, что область отображения смещена влево и вверх, при чём даже на самом телефоне n3310 тоже отображается со смещением может там вообще стоит неведомый контроллер?
плисссс Коти помогите нет сил у меня уже к етому дисплею от 3310...(((( в протеусе пашет как и должно прошиваю МК а в реале даже ни одной точки на дисплее нет!! грешу на исходник посмотрите очень прошу Вас ..исходник писали под мегу8 у меня 16 ...почему не работает в реале?(((((( у вас качал на 5 странице под 16 мегу прект и прошивку шил тоже самое что и с моим исходником дисплей робочий 100% та как подключал к телу он пашет...
// Mega8 port B pinout for LCD. #define LCD_DC_PIN PORTB.6 //D/C #define LCD_CE_PIN PORTB.4 //SCE #define SPI_MOSI_PIN PORTB.5 //SDIN #define LCD_RST_PIN PORTB.0 //RES #define SPI_CLK_PIN PORTB.7 //SCLK
//Настройки контроллера дисплея и перменные для работы с ним unsigned char lcd_buf[14]; //текстовый буфер для вывода на LCD unsigned char LcdCache [504]; //массив всех точек (504 оригинал 816 китай) unsigned int LcdCacheIdx; //Cache index
#define LCD_CMD 0 #define LCD_DATA 1
//void LcdChrBold (int ch); Печатает символ на текущем месте, большой и жирный) //void LcdStringBold (unsigned char x, unsigned char y);Печатает большую и жирную строку //void LcdChrBig (int ch); Печатает символ на текущем месте, большой //void LcdStringBig (unsigned char x, unsigned char y); Печатает большую строку
//Displays a bold character at current cursor location and increment cursor location void LcdChrBold (int ch) { unsigned char i; unsigned char a = 0, b = 0, c = 0;
for ( i = 0; i < 5; i++ ) { c = table[((ch*5)-160+i)]; //выделяем столбец из символа
b = (c & 0x01) * 3; //"растягиваем" столбец на два байта b |= (c & 0x02) * 6; b |= (c & 0x04) * 12; b |= (c & 0x08) * 24;
c >>= 4; a = (c & 0x01) * 3; a |= (c & 0x02) * 6; a |= (c & 0x04) * 12; a |= (c & 0x08) * 24;
LcdCache[LcdCacheIdx] = b; //копируем байты в экранный буфер LcdCache[LcdCacheIdx+1] = b; //дублируем для получения жирного шрифта LcdCache[LcdCacheIdx+84] = a; LcdCache[LcdCacheIdx+85] = a; LcdCacheIdx = LcdCacheIdx+2; }
LcdCache[LcdCacheIdx++] = 0x00; //для пробела между символами LcdCache[LcdCacheIdx++] = 0x00; } //Displays a string at current cursor location void LcdStringBold (unsigned char x, unsigned char y) { unsigned char i;
LcdGotoXYFont (x, y); for ( i = 0; i < 14-x; i++ ) if (lcd_buf[i]) LcdChrBold (lcd_buf[i]); clean_lcd_buf(); } void main(void) { DDRB=0b11110001; //PORTB.0, PORTB.2 - PORTB.5 на вых. PORTB=0b11100000; //подтягивающие резисторы 1 вкл.
Я уже разобрался всьо на дисплей виводится вот только когда конденсатор осоединон от ноги Vout и очень светлие букви почему???когда поключаееш дисплей к конденсатору изображение пропадает совсем..
Карма: 46
Рейтинг сообщений: 590
Зарегистрирован: Вт май 19, 2009 09:27:30 Сообщений: 3258 Откуда: Украина
Рейтинг сообщения:0
BIGGGI, а ты сам можешь читать ту х...ню, которую ты сам же и пишешь? Тут тебе не падонковский каменто-ср...льник! Или пиши по-человечески, или не пиши вообще, а ср..ть иди в другое место.
По поводу конденсатора проверь монтаж и сам кондёр, возможно где-то достаточно большие утечки. Кондёр лучше всего брать керамический на 10 мкФ - я отпаиваю такие с плат старых сотиков. Как программно увеличить контраст ищи мои (и не только мои) посты выше, есть регистр в самом диспе от содержимого которого зависит контраст.
что же вы все на си пишете, а на ассемблере вообще ничего я вот столкнулся с проблемой - надо подключить экран от nokia 3310 к mega8535 и вывести какой нибудь текст, только на ассемблере а не на си. помогите пожалуйста
Карма: 46
Рейтинг сообщений: 590
Зарегистрирован: Вт май 19, 2009 09:27:30 Сообщений: 3258 Откуда: Украина
Рейтинг сообщения:0
ZiLog писал(а):
что же вы все на си пишете, а на ассемблере вообще ничего я вот столкнулся с проблемой - надо подключить экран от nokia 3310 к mega8535 и вывести какой нибудь текст, только на ассемблере а не на си. помогите пожалуйста
А в чём критичность вопроса? Си поддерживает ассемблерные вставки. При компилировании проекта Си компиляторы обычно сохраняют листинг на асме, как вариант можешь взять его за основу и подгонять под свои нужды. А вообще Си - это вещь, сам ранее пытался на асме работать, но после того как познакомился 2 года назад с Си, пишу только на Си. Жаль что раньше Си не изучал, а преподавали только бэйсик ассемблер и паскаль.
Карма: 46
Рейтинг сообщений: 590
Зарегистрирован: Вт май 19, 2009 09:27:30 Сообщений: 3258 Откуда: Украина
Рейтинг сообщения:0
Мужикиии!!! Помогите! Есть самоделка - дозиметр. После ~года пользования появились проблемы с диспом (3310). Вроде как отходили контакты, но как по мне он просто начал глючить сам по себе. При попытке выгнуть плату (текстолит 1мм и со временем его "повело") экран успешно треснул. Купил 2 новых, но они оказались с заниженным контрастом и смещением изображения вверх на 3 пиксела. С контрастом бороться удалось (замена команды инициализации 13h на 14h). Но что делать со смещением??? Фото привожу. На фото видно поле внизу диспа высотой в 3 пикс. "залитые мусором", вверху изображения как раз 3 пикс. не хватает. У кого какие соображения?
Карма: 19
Рейтинг сообщений: 154
Зарегистрирован: Ср мар 03, 2010 11:48:00 Сообщений: 1004 Откуда: Уфа
Рейтинг сообщения:0
Вам попался китайский ЖКИ с другим контроллером, эта проблема описывалась неоднократно (видимое поле меньше, чем позволяет контроллер, как по горизонтали, так и по вертикали). Решается несколькими способами, например, сдвинуть изображение на 5 пиклелей и выводить тексты не с 0 строки, а с первой (так уже делал, проверено). Второй способ, это "прокрутить" поле ЖКИ на 64-3=61 пиксель по вертикали и вывод должен получиться, как у оригинала (не проверял). А вообще на форуме есть статья "Драйвер для LCD от Nokia 3310" тут: http://radiokot.ru/articles/29/ Почитайте.
Всем привет! Решил покурить данную статью http://radiokot.ru/articles/29/, взял за основу драйвер второй с поправками(внизу статьи) и исходники, переписал вывод информации для двух ds18b20 и запустил в Протусе. Вот что получилось: мало того это дело все еще мигает в Протусе, появитяс пропадет, появится пропадет. Думал в Протусе че то не так, собрал в железе таже фигня, при чем надпись "Термометр" очень тусклая, инфа с датчиков четкая, но не мигает уже В чем причина может быть. Пробывал закоментить #define china 1, при компиляции ошибка появляется(в форуме кто то упоминал) вот выложил исходники свои, помогите советом.
неужели не кому глянуть, с выводом на экран коректным уже разобрался, но мерцание осталось... в железе собираю, тоже мерцание изоражения есть. вроде все правильно делаю, выручайте народ!
Дисплей подсоединен к МК по той же схеме, что приведена Вами выше, из Протеуса? Я бы отметил весьма странное подключение конденсатора на Vout. Кондер должен идти с Vout на общий провод (земля, GND), а у Вас мало того, что Vout просто висит на общем, так еще и конденсатор зачем-то включен между GND и CLK. =) Если схема все же правильная, пишите - будем разбираться. Я как раз имею в наличии освоенные дисплеи от N3310, N3410, 3510i, 1200 и кое-что еще. Можно будет экспериментировать вдоволь.
_________________ pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего ) MrYuran: Самые ортодоксальные — это PICудеи ) Katz: Не, 51-ники. )
Дисплей подсоединен к МК по той же схеме, что приведена Вами выше, из Протеуса? Я бы отметил весьма странное подключение конденсатора на Vout. Кондер должен идти с Vout на общий провод (земля, GND), а у Вас мало того, что Vout просто висит на общем, так еще и конденсатор зачем-то включен между GND и CLK. =) Если схема все же правильная, пишите - будем разбираться. Я как раз имею в наличии освоенные дисплеи от N3310, N3410, 3510i, 1200 и кое-что еще. Можно будет экспериментировать вдоволь.
С того мемента притерпело изменение схема подключение экрана и сам код немного. Хотя и на старой схеме подключения все верно, просто провода пересекаются(я криво нарисовал в протусе), но они не посоединены между собой, тогда была бы точка жирная в том месте. вот выкладываю по новой! я осваивал по другому драйверу этот дисплей, но этот лучше и меньше места занимает. с Си новичок, это первый язык программирования который осваиваю я.
вот пример на асме для простого и дешевого AT89C51\52\55. русский шрифт . Схема несохранилась , попробуйте восстановить по исходнику. компилируется на ура компилятором METALINK .
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения