Драйвер для LCD от Nokia 3310

Вопросы и замечания по статьям и схемам, представленным на нашем сайте

При поддержке РадиоКОТструктор.ру


Аватара пользователя
sachok
Опытный кот
Сообщения: 849
Зарегистрирован: Сб янв 05, 2008 11:05:15
Откуда: Україна м.Луцьк
Контактная информация:

Re: Драйвер для LCD от Nokia 3310

Сообщение sachok »

Испытал библиотеку на экране 3410, там все тоже, просто больше разрешение. Основная проблема что у меня возникла - это скорость програмного SPI. Для сравнения можно посмотреть видео.
hard SPI
soft SPI
Ну и стоит обратить внимание на то как выглядит батарейка.
Я не Сашок!!!
neid
Прорезались зубы
Сообщения: 228
Зарегистрирован: Пн окт 04, 2010 11:55:41

Re: Драйвер для LCD от Nokia 3310

Сообщение neid »

Всем привет! Решил покурить данную статью http://radiokot.ru/articles/29/, взял за основу драйвер второй с поправками(внизу статьи) и исходники, переписал вывод информации для двух ds18b20 и запустил в Протусе. Вот что получилось:
Изображение мало того это дело все еще мигает в Протусе, появитяс пропадет, появится пропадет.
Думал в Протусе че то не так, собрал в железе таже фигня, при чем надпись "Термометр" очень тусклая, инфа с датчиков четкая, но не мигает уже
В чем причина может быть. Пробывал закоментить #define china 1, при компиляции ошибка появляется(в форуме кто то упоминал)
вот выложил исходники свои, помогите советом.
Вложения
02.rar
(167.06 КБ) 441 скачивание
Аватара пользователя
Aheir
Модератор
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург
Контактная информация:

Re: Драйвер для LCD от Nokia 3310

Сообщение Aheir »

Если отличается "яркость" надписей на экране, значит, часть экрана Вы обновляете через стирание, а часть - нет... Пока только такая мысль в голову приходит. Если отображение по сути корректное, то china здесь не при чем, оно не для того.
Оптимизм х (Опыт + Знания) = const
neid
Прорезались зубы
Сообщения: 228
Зарегистрирован: Пн окт 04, 2010 11:55:41

Re: Драйвер для LCD от Nokia 3310

Сообщение neid »

Aheir писал(а):Если отличается "яркость" надписей на экране, значит, часть экрана Вы обновляете через стирание, а часть - нет... Пока только такая мысль в голову приходит. Если отображение по сути корректное, то china здесь не при чем, оно не для того.

Разобрался, все коректно выводится и все одного оттенка, осталось только мерцание изображеняи, в чем причина понять не могу. :cry:
Аватара пользователя
Aheir
Модератор
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург
Контактная информация:

Re: Драйвер для LCD от Nokia 3310

Сообщение Aheir »

Шо за мерцание?
Оптимизм х (Опыт + Знания) = const
neid
Прорезались зубы
Сообщения: 228
Зарегистрирован: Пн окт 04, 2010 11:55:41

Re: Драйвер для LCD от Nokia 3310

Сообщение neid »

Aheir писал(а):Шо за мерцание?

на доли секунду пропадает избражение, прям на очень маленькие доли. и с определенной частотой, поэтому получается мерцание.
Вот еще раз выложу свой исходник поправленный и модель в протусе.
Вложения
02.rar
(198.47 КБ) 414 скачиваний
Аватара пользователя
Aheir
Модератор
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург
Контактная информация:

Re: Драйвер для LCD от Nokia 3310

Сообщение Aheir »

Такое встречал, только когда сам косячил с программой... Таки похоже, что что-то с обновлением экрана...
Оптимизм х (Опыт + Знания) = const
neid
Прорезались зубы
Сообщения: 228
Зарегистрирован: Пн окт 04, 2010 11:55:41

Re: Драйвер для LCD от Nokia 3310

Сообщение neid »

Код: Выделить всё

while (1)
      {
        delay_ms(50);   // задержка для устранения дребезга контактов кнопок и она же - шаг изменения значений яркости
        // чтобы режим не менялся каждые 50mS, при нажатии на кнопку разрешаем только одно изменение режима
        if (Mode_Change_Enabled)
        {
            if (MODE_Button)                        // если нажата кнопка смены режима
            { 
                if ((++Mode) == 3) Mode = 0;   // меняем режим по кольцу
                Mode_Change_Enabled = 0;       // запрещаем при нажатой кнопке повторную смену режима
            };
        }
        // когда кнопка отжата, опять разрешаем смену режима
        else if (!MODE_Button) {Mode_Change_Enabled = 1;};
       
       
        LcdClear();
        switch (Mode)                                   // если ручной режим
        {
            case Manual:
            {   
               
                sprintf (lcd_buf, "ЯРКОСТЬ");LcdString (5,1);
                                               
               
               if (UP_Button)                           // если нажата кнопка увеличение яркости
                    {   
                        if (OCR1A < 255) OCR1A++;
                       
                    };
                if (DOWN_Button)                      // если нажата кнопка уменьшения яркости
                    {
                        if (OCR1A) OCR1A--;
                    };
               
                /****Заполняем шкалу по процентам****/
                x1=((OCR1A*100)/254); //Расчет % яркости
                x2=x1;                //Переменная двывода % яркости
                x1=(x1*83)/100;       //Расчет заполенния по % яркости относительно Х
               
                LcdLine (1,34,x1,34,2);  //
                LcdLine (1,35,x1,35,2);  //Рисуем заполение шкалы
                LcdLine (1,36,x1,36,2);  //
               
               
                LcdLine (0,32,0,37,2);    //
                LcdLine (83,32,83,37,2);  //  Пустая шкала
                LcdLine (0,32,83,32,2);   //
                LcdLine (0,37,83,37,2);   //
                /****************************************/
               
                sprintf (lcd_buf, " <          >");LcdString (1,6); //Знаки больше и меньше по краям экрана
                sprintf (lcd_buf, "%i",x2);LcdStringBold (6,3);     //Вывод процента яркости
                LcdUpdate();
                delay_ms(10);
               
                break;
            };
            LcdMode (2);
           
            case Auto:                              // авто тремрметр и вольтметр
            {   
           
                ind=((100.0*(adc_data[0]<<2))/204)*4;   //Расчте напряжения
               
             
                sprintf (lcd_buf, " ( Термометр");LcdString (1,1); //Символ ( это часть значки термометра

                temperature(); //Вызов функции температурной

                /*ПЕРВЫЙ ДАТЧИК*/
                sprintf (lcd_buf, " )  IN %i'C", temper[0]); LcdString(1,2);  //вывод температуры 1ого датчика, символ ) это часть значки термометра

                /*ВТОРОЙ ДАТЧИК*/
                sprintf (lcd_buf, " *  OUT %i'C", temper[1]); LcdString(1,3); //вывод температуры 2ого датчика, символ * это часть значки термометра

                #asm("sei")
                sprintf (lcd_buf, "Вольтметр");LcdString (1,5);
                sprintf (lcd_buf, "  %u.%uV",ind/100,ind%100);LcdString (1,6);  //Вывод напряжения

                LcdBar(65, 27, 75, 45, 10*(3+1));   //Вывод значка батареи
                LcdUpdate();
                delay_ms(10);
               
               
                break;         
            };
            LcdMode (2);
           
           
            case Max:   
            { 
               
                sprintf (lcd_buf, "Режим 3",); LcdString(1,2);  //пока не придумал третий режим
                LcdUpdate();
                delay_ms(10);
               
                break;
            };
            LcdMode (2);
        };
      }

что не так делаю?
Аватара пользователя
Aheir
Модератор
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург
Контактная информация:

Re: Драйвер для LCD от Nokia 3310

Сообщение Aheir »

Зачем LcdClear(); в основном цикле каждые 50 мс? Отсюда и мерцание.... Да и LcdMode (2); не нужно постоянно дергать...
LcdClear(); физически очищает экран, для очистки только буфера напишите свою функцию или дождитесь новой версии от меня)
Оптимизм х (Опыт + Знания) = const
neid
Прорезались зубы
Сообщения: 228
Зарегистрирован: Пн окт 04, 2010 11:55:41

Re: Драйвер для LCD от Nokia 3310

Сообщение neid »

Aheir писал(а):Зачем LcdClear(); в основном цикле каждые 50 мс? Отсюда и мерцание.... Да и LcdMode (2); не нужно постоянно дергать...
LcdClear(); физически очищает экран, для очистки только буфера напишите свою функцию или дождитесь новой версии от меня)

Разобрался с библиотекой! Все мерцаний нет, работает!)))
Сненерировал картинку не знаю как её вывести?
почему файл рисунка не выкладываете, или объясните как картину выводить?
Аватара пользователя
BigallS
Опытный кот
Сообщения: 752
Зарегистрирован: Пт апр 15, 2011 21:11:22
Откуда: Россия

Re: Драйвер для LCD от Nokia 3310

Сообщение BigallS »

neid писал(а):Разобрался с библиотекой! Все мерцаний нет, работает!)))
Сненерировал картинку не знаю как её вывести?
почему файл рисунка не выкладываете, или объясните как картину выводить?



Вот здесь пример посмотри, там картинка есть http://we.easyelectronics.ru/lcd_gfx/bi ... -3310.html
Аватара пользователя
Aheir
Модератор
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург
Контактная информация:

Re: Драйвер для LCD от Nokia 3310

Сообщение Aheir »

Есть примеры вывода картинки:
http://radiokot.ru/circuit/digital/measure/34/
Оптимизм х (Опыт + Знания) = const
Аватара пользователя
Aheir
Модератор
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург
Контактная информация:

Re: Драйвер для LCD от Nokia 3310

Сообщение Aheir »

Здесь как бе обсуждается вполне конкретная реализация из соответствующей статьи, Ваш пример был бы в кассу в другой теме форума по этому экрану (она есть в разделе по микроконтроллерам)
Оптимизм х (Опыт + Знания) = const
CanceR
Родился
Сообщения: 4
Зарегистрирован: Пн янв 10, 2011 18:55:48

Re: Драйвер для LCD от Nokia 3310

Сообщение CanceR »

Здравствуйте. Помогите перевернуть экран. Через функцию LcdUpdate или может есть команда аппаратного переворачивания, в даташите я не нашел. Экран влезает в мою коробочку тока контактами вниз. Строчки символов перевернуты. Заранее спасибо.
Аватара пользователя
-=Orion=-
Встал на лапы
Сообщения: 92
Зарегистрирован: Пт окт 07, 2011 13:16:48

Re: Драйвер для LCD от Nokia 3310

Сообщение -=Orion=- »

CanceR писал(а):Здравствуйте. Помогите перевернуть экран. Через функцию LcdUpdate или может есть команда аппаратного переворачивания, в даташите я не нашел. Экран влезает в мою коробочку тока контактами вниз. Строчки символов перевернуты. Заранее спасибо.


перевернуть шрифт
Monchik
Родился
Сообщения: 1
Зарегистрирован: Ср фев 02, 2011 16:30:45
Откуда: Смоленск
Контактная информация:

Re: Драйвер для LCD от Nokia 3310

Сообщение Monchik »

Компилятор CV2.05 не понимает директиву #elif. Написал ему #else. Так, вроде, работает.
Аватара пользователя
Pa5ha
Прорезались зубы
Сообщения: 243
Зарегистрирован: Ср авг 31, 2005 20:09:08
Откуда: Петрозаводск, Карелия.
Контактная информация:

Re: Драйвер для LCD от Nokia 3310

Сообщение Pa5ha »

Не завелось у меня ничего почему-то. Пытался дисплей от нокии 6030 заюзать - мертв. Подпаял от 3310 оригинальный, с надписью. Тоже признаков жизни не подает. На порты подпаяны светодиоды. Моргают - вывод идет. Мега питается от 5в, дисплеи от 3.3 l78l33, к портам подпаяны через делители 2кОм + 3.3 кОм.
Куда потыкать тестером даже не знаю.
2kb of eeprom should be enought for everybody (C) Bill Gates` cat :)
Аватара пользователя
valexus
Нашел транзистор. Понюхал.
Сообщения: 192
Зарегистрирован: Вс окт 04, 2009 21:19:32
Откуда: Украина , Житомир

Re: Драйвер для LCD от Nokia 3310

Сообщение valexus »

Ну светодиоды с портов лучше убрать, сигнал они конкретно искажают. И еще проверь напряжение на кондере вольтдобавки дисплея, там около 9 вольт должно быть.
Заело -- нажми посильнее, сломалось -- не страшно , все равно надо было менять.
Аватара пользователя
Pa5ha
Прорезались зубы
Сообщения: 243
Зарегистрирован: Ср авг 31, 2005 20:09:08
Откуда: Петрозаводск, Карелия.
Контактная информация:

Re: Драйвер для LCD от Nokia 3310

Сообщение Pa5ha »

Светодиоды? Хм, окай )
Кондер, который 4.7 мкф на 7, 8 ногах висит? Ок.

Вообще, оказалось, что у меня одна нога была не пропаяна. Но результат после исправления не поменялся. На контактах дисплея напруга есть, но при подаче питания он никак не реагирует. Мелтовский когда заводил - там хоть развертка сразу появлялась, было видно, что дисплей отреагировал, хоть и не инициализирован и ничего не показывает.
2kb of eeprom should be enought for everybody (C) Bill Gates` cat :)
Аватара пользователя
Aheir
Модератор
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург
Контактная информация:

Re: Драйвер для LCD от Nokia 3310

Сообщение Aheir »

А дисплей-то жив? Есть уверенность? Вообще, так, чтобы совсем ничего не показывал, не бывает. Ищите косяки с подключением и настройкой в программе.
Оптимизм х (Опыт + Знания) = const
Ответить

Вернуться в «Статьи»