Жидкокристаллическая гляделка-самоделка

Мозолил мне глаз без дела лежащий ЖК-индикатор, оставшийся после экспериментов с контроллерами MSP430, и я решил его приручить к STM32. Найденные в Интернете библиотеки для работы с 16-символьным двухстрочным WH1602 с первого раза (естественно) не пошли, и я решил перевести имевшуюся mylcd.h опять же от MSP.

Железо

В наличии имелись:

  • отладочная плата STM32VL Discovery,
  • 16-символьный двухстрочный индикатор WH1602D-NGG-CT (черно-белый, без подсветки),
  • микроконтроллер STM32F100C8T6B и плата-переходник к нему (QFPN с шагом 0,5 мм),
  • провода и планки-разъемы.

Страшного вида 48-лапый контроллер припаял достаточно быстро (хотя это второй QFPN-корпус, который я паяю). Налил на плату жидкой канифоли, приложил микросхему, припаял угловые ножки, а потом прошелся паяльником по рядам. Те, что слиплись, аккуратно распаял (разделить припой помогла зубочистка).

Согласно простейшей схеме включения распаял питающие проводники (провод — МГТФ). Плюс — на выводы 9, 24, 36 и 48, общий — на выводы 8, 23, 35, 47 и к земле на плате. Подпаял разъемы индикатора и SWD (к программатору).

Прежде, чем залить прошивку в свежекупленный контроллер, попробовал поработать с индикатором, подключив его к отладочной плате.

Программа

Взял рабочий проект-мигалку в Keil mVision, решил не прикрутчивать пока библиотеку mylcd.h, а поработать с ее кодом в main.c. Думал, как отлажу все, тогда сделаю красивый h. Когда все обращения были переписаны под новую платформу, решил попробовать этот же проект под CooCox. Выбрал тип контроллера, скопировал используемые библиотеки. Кстати, вместо кокосовых GPIO и RCC взял слизанные (уже не помню откуда) mcu_gpio и mcu_rcc. Чисто потому, что конструкция «PIN_OFF(PIN_DB5);» выглядит понятнее и компактнее, чем «GPIOC->ODR ^= GPIO_Pin_9;». Но это субъективно.

При переходе заметил, что mVision и CooCox выдают разные времена задержки. В последнем у меня в цикле значение 0x500, а в Кейле даже 0x1000 — это слишком быстро для индикатора. Наверное, потому что в Кокосе я выключил всю оптимизацию, а Кейл что-то пытается улучшить и глотает часть пустых циклов.

Вывел тестовую строку со своим именем. Порадовался. Решил вывести что-то посерьезнее и побольше. В отдельном файле data.h описал несколько строк, чтобы полистать их кнопкой на отладочной плате. Дописал немного кода. Потупил над указателями, пока разобрался куда и как передавать массивы строк. Но все получилось.

В итоге вышла простая программка, выводящая на экран текст постранично. Вернее, это громко сказано — постранично. Подвустрочно. Нажал кнопку — экран обновился. Просто, но без лишнего позиционирования курсора и т.п.

Прошивка

Настал черед распаянного микроконтроллера. Переключил индикатор на плату-переходник, соединил все через SWD с отладочной платой. Попутно припаял две микрокнопки, чтобы листать текст взад-вперед. Соответственно, дописал программу. Залил из Кокоса — и все.

Есть один неприятный момент — кодировка. К сожалению, коды кириллицы в знакогенераторе WH1602 не совпадают со стандартными раскладками. Выхода может быть три: перепрошить (выходит за рамки статьи), программно перекодировать (будет больше кода) или писать коды через HEX-редактор (что сложно и мозолисто). Поэтому большой кусок текста залил на латинице — слова песни «Histoire d’un amour», с частично замененными диакритическими знаками.

Еще небольшое неудобство — трех вольт на отладочной плате явно маловато для индикатора. Я не делал регулятора контраста, распаяв соответствующий вывод на максимум, но для нормальной индикации ему нужно четко не менее 3,3 В. А плата выдает 2,96 почему-то. Наверное, у меня экземпляр такой — на ней же написано 3,3… Вообще, когда подключал индикатор непосредственно к отладочной плате, напряжение брал с 5-вольтового контакта. Все было четко и красиво. Ну да ладно — в поделке все равно будет другой источник питания.

Кстати, от трех дохлых пальчиковых батареек общим напряжением 3,6 В все работает отлично. Попробовал запитать от солнечной батареи YH60x60 — тоже нормально.

Файлы проекта

Особо не расписываю, вот архив CooCox-проекта: 16x2q48.zip

Схему рисовал в gEDA, что к чему припаивал — описал и в main.c. Исходник и картинка схемы: scheme.zip.


Protected by Copyscape Online Plagiarism Test
Вы не можете высказаться или оставить ссылку здесь...

Одна реплика к теме “Жидкокристаллическая гляделка-самоделка”

  1. […] базе можно легко и красиво переписать сделанную ранее читалку SD-карточки – она будет выводить русский текст также по нажатию […]

Powered by WordPress | Thanks to NewWpThemes | Александр Божок