Четверг, 28.11.2024, 07:39
Вы вошли как Гость | Группа "Гости"Приветствую Вас Гость | RSS
Главная | AVR: Библиотека подключения дисплеев Nokia 3310, 5110 - Форум | Мой профиль | Регистрация | Выход | Вход
Обитель RC-инженера
Форма входа
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: ВитГо  
AVR: Библиотека подключения дисплеев Nokia 3310, 5110
ВитГоДата: Суббота, 24.11.2012, 11:58 | Сообщение # 1
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
Написана библиотека минимальной функциональности для дисплеев Nokia 3310, Nokia 5110

основные требования которые ставились при создании библиотеки - работа на любом контроллере atmel и возможность подключения дисплея минимальным количеством линий

ссылка на файл драйвера: Драйвер минимальной функциональности для LCD NOKIA 5110, 3310 на PCD8544


Виталий (аka ВитГо)
 
ВитГоДата: Суббота, 24.11.2012, 12:08 | Сообщение # 2
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
вызовы библиотеки и способы использования:

lcd_init
входные параметры: нет
выходные параметры: нет
Процедура проводит:
- инициализацию линий ввода вывода портов подключения дисплея
- отправку инициализирующей последовательности на дисплей
- очистку дисплея

lcd_pos
входные параметры: R17 - X координата; R18 - Y координата
X- задается в пикселах от 0 до 83
Y- задается в знакоместах от 0 до 5
выходные параметры: нет
Процедура устанавливает координаты для вывода на экран

lcd_char
входные параметры: R16 - символ для печати
всего для печати доступно 17 символов - от 0 для символа 0x00 до 0x0F для символа F и еще 0x10 для символа пробел
выходные параметры: нет
Процедура печатаем символа в координатах установленных при помощи lcd_pos, после печати курсор автоматически сдвигается на 1 знакоместо вправо (если нужно в начало следующей строки)


Виталий (аka ВитГо)
 
ВитГоДата: Вторник, 27.11.2012, 16:38 | Сообщение # 3
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
как показывает практика - иногда возникает вопрос: а как напечатать число при помощи этого модуля?

отвечаю:
проще всего организовать печать шестнадцатеричных чисел
поскольку у нас код цифры совпадает с самой цифрой то мы просто должны послать на печать сначала старший а потом младший полубайты печатаемого числа..

в итоге получается следующий код:
Code

; подпрограмма печати байта в hex виде, печать ведеться в текущих координатах    
; в r16 число которое нужно напечатать
printhex:    
            push r16  ; сохраним наше число на стеке (нужно для печати младшей тетрады)
            swap r16 ; поменяем тетрады местами, на месте младшей тетрады теперь старшая
            rcall printhex1 ; печать старшей тетрады    
            pop   r16 ; вспомним число для печати
printhex1:    
            andi r16, 0x0f ; обнулим старшие биты (старшую тетраду)
            rcall lcd_char ; печатаем число    
            ret    

если нужно напечатать 16ти битное число - значит вызываем подпрограмму printhex сначала для старшего байта а потом для младшего, например как в примере ниже:

Code

; печать 16ти битного числа
; число в регистре X (XH:XL)
        mov r16 , XH
        rcall printhex
        mov r16 , XL
        rcall printhex
        ret


Виталий (аka ВитГо)
 
ELKДата: Среда, 15.02.2017, 22:23 | Сообщение # 4
Рядовой
Группа: Проверенные
Сообщений: 11
Репутация: 0
Статус: Offline
Эту библиотеку можно использовать с китайскими дисплеями? У меня почему-то лишь иногда выводит нужный символ (с перезапуска этак 50-го), в остальное время только мельтешение. Только в протеусе работает нормально.
 
uwrteyДата: Четверг, 16.02.2017, 22:40 | Сообщение # 5
Генерал-майор
Группа: Администраторы
Сообщений: 3300
Репутация: 11
Статус: Offline
Можно и нужно. Ищите проблему. Все должно работать, при условии что все сделано без ошибок и дисплей не бракованный..

не успеваю за своими мыслями......
 
ELKДата: Понедельник, 06.03.2017, 21:55 | Сообщение # 6
Рядовой
Группа: Проверенные
Сообщений: 11
Репутация: 0
Статус: Offline
uwrtey спасибо что отозвался.
-------------------------------------------------
Удалось увеличить шанс успешного запуска аж до 30% :). При питании от напряжения 3,4-3,5 V если быстро несколько раз передернуть провод питания - запускается в 1-м случае из 3-х. Уже провода перепаивал, пробовал на разных частотах запускать, задержки в программу вставлял. Решил было что дисплей бракованный, проверил готовой прошивкой - нет работает идеально. Может кто-нибудь подсказать что я мог сделать не так?
МК - Mega8
Дисплей - китайский на красной плате.

Программа:
 
uwrteyДата: Среда, 08.03.2017, 02:40 | Сообщение # 7
Генерал-майор
Группа: Администраторы
Сообщений: 3300
Репутация: 11
Статус: Offline
Питание дисплея рекомендую сделать от линейного стабилизатора на 3V

ПС: смотреть в код не видя схемы не вижу смысла. smile
Давайте схему+фото. Можно и видео ( по желанию )


не успеваю за своими мыслями......
 
ELKДата: Среда, 08.03.2017, 23:47 | Сообщение # 8
Рядовой
Группа: Проверенные
Сообщений: 11
Репутация: 0
Статус: Offline
Пробовал напряжения от 2,8 до 5 V, проблема остается.


Для связи с дисплеем используется порт C.
Если при инициализации портов МК (в начале моей программы) выставить вывод соответствующий выводу reset на дисплее в 1 - дисплей вообще не запустится (фон волнами на экране), т.е. ему нужно больше времени для сброса, чем предусмотрено библиотекой. Если установить в 0 - запускается только благодаря дребезгу контактов (при напряжении больше 3,5V не прокатывает).

Фото позднее выложу.
Прикрепления: 3836525.png (70.0 Kb)
 
ВитГоДата: Четверг, 09.03.2017, 07:25 | Сообщение # 9
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
для проверки попробуйте другие пины для подключения.

на некоторых пинах порта C висят выводы отладки микроконтроллера (к сожалению не помню какие именно, но помоему как раз PC1-PC2) - посмотрите в фюзах - если вы хотите эти пины использовать функция отладки должна быть отключена


Виталий (аka ВитГо)
 
ELKДата: Четверг, 09.03.2017, 19:46 | Сообщение # 10
Рядовой
Группа: Проверенные
Сообщений: 11
Репутация: 0
Статус: Offline
Раньше использовал те же пины порта D, было то-же самое. В дальнейшем попробую к tiny2313 или 13 подключить, вдруг что-то изменится, но пока, раз никаких очевидных косяков нет, лучше чем-нибудь поинтересней займусь, в целом то библиотека работает, архинадежность пока не требуется.
 
uwrteyДата: Четверг, 09.03.2017, 20:15 | Сообщение # 11
Генерал-майор
Группа: Администраторы
Сообщений: 3300
Репутация: 11
Статус: Offline
УРА Товарищи ! smile
С Возвращением, Виталий!


не успеваю за своими мыслями......
 
ВитГоДата: Пятница, 10.03.2017, 07:21 | Сообщение # 12
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
Цитата ELK ()
Раньше использовал те же пины порта D, было то-же самое. В дальнейшем попробую к tiny2313 или 13 подключить, вдруг что-то изменится, но пока, раз никаких очевидных косяков нет, лучше чем-нибудь поинтересней займусь, в целом то библиотека работает, архинадежность пока не требуется.

приложите все таки проект.. у меня эта библиотека никогда не давала сбои... очень странно что они у вас есть.


Виталий (аka ВитГо)
 
uwrteyДата: Пятница, 10.03.2017, 12:27 | Сообщение # 13
Генерал-майор
Группа: Администраторы
Сообщений: 3300
Репутация: 11
Статус: Offline
И фотографию устройства

не успеваю за своими мыслями......
 
ELKДата: Пятница, 10.03.2017, 21:38 | Сообщение # 14
Рядовой
Группа: Проверенные
Сообщений: 11
Репутация: 0
Статус: Offline
Ок

К блоку питания 5v подключен преобразователь 3v (в данный момент), далее коричневый, красный, синий, желтый провода - питание мк и дисплея.
Изначально вся схема питалась от Li-ion аккумулятора или системной батарейки.
Видео: https://yadi.sk/i/uWFJcD_Y3FUZRM при простом включении белый экран, фон, либо точка, несколько точек - зависит от напряжения и частоты, при дребезге всегда запускается.
При питании от 5v дисплей запускается (показывает фон) даже с отключенным общим проводом.
Проекта пока что как такового нет, программа просто вызывает инициализацию дисплея и выводит на экран цифры.

Прикрепления: 0458188.jpg (141.9 Kb) · ATMEGA8A.asm (13.0 Kb)


Сообщение отредактировал ELK - Пятница, 10.03.2017, 22:17
 
uwrteyДата: Суббота, 11.03.2017, 09:42 | Сообщение # 15
Генерал-майор
Группа: Администраторы
Сообщений: 3300
Репутация: 11
Статус: Offline
Почему на схеме LIGHT подключен к GND ?
По факту подсветка загорается, значит подключена к питанию.
Думаю, что схему нарисовали неверно. Или у вас плата дисплея так разведена ?

У моих дисплеев, подсветка питается от 5V
Сам же дисплей питается от 3,3V ( лучше всего питать его через стабилитрон или линейник на 3,3 вольта )
А микроконтроллер нужно питать через линейный стабилизатор на 5 Вольт.
Данный импульсный преобразователь очень "шумный" - у вас мк будет постоянно глюки ловить. ( возможно будет каждый раз перезапускаться )

Как тактируется МК? Кварца что-ли нет? От внутреннего источника?
Почему RESET микроконтроллера в воздухе висит?
Почитайте как нужно RESET подключать !!!! Статья есть хорошая у ДИХАЛЬТА. Я Тут на форуме давал ссылку.
Подсказка: через резистор к питанию.
Почитайте Дихальта, там еще кондер ставят, что-бы периферия стартанула раньше чем МК.
А у вас наоборот. Дисплей еще не стартанул, а МК в него программу пихает.

Все линии дисплея лучше соединять не напрямую, а через резюки. Хотя-бы в 50 Ом.

Как прошиваете микроконтроллер? В отдельной панельке?

Соберите все железки так, как я вам рекомендую.
Затем пробуйте свою программу.
Если ваша программа не заработает, то попробуйте мою ( в архиве прикрепил )
Распиновку сделал как у вас на схеме.
Прикрепления: WinRAR_ZIP_arch.zip (67.2 Kb)


не успеваю за своими мыслями......

Сообщение отредактировал uwrtey - Суббота, 11.03.2017, 10:39
 
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:


Copyright MyCorp © 2024
Сделать бесплатный сайт с uCoz