Дисплей – удобное средство вывода разнообразной информации. На них можно не только выводит различную необходимую информацию, но и визуализировать процессы работы приборов. Большую пользу они могут принести на стадии отладки или диагностики устройства. Но стоимость специализированных дисплеев зачастую велика, а возможностей семисегментных индикаторов и знакогенерирующих дисплеев может не хватать, здесь на помощь, приходя маленькие компактные дисплеи от сотовых телефонов.
Дисплей от Nokia 1100
В этой статье расскажу о том, как подключить к микроконтроллеру и использовать в текстовом режиме дисплей от сотового телефона nokia 1100.
В ранних статьях уже рассматривался дисплей от nokia 3310. По сравнению с ним у этого дисплея есть небольшой недостаток – меньший размер (35×35 мм), но есть свои плюсы.
Плюсы дисплея:
- Маленький дисплей с относительно большим разрешением 96х65 (символами размера 5х8 можно заполнить 8 строк по 16 знаков)
- Встроенная подсветка
- 4 линии управления
- Дешевый – 40 рублей
Минусы дисплея:
- Маленький размер
- 3,3 В линии связи и питание (при использование 5В)
Как уже упомянул в плюсах – для подключения к контроллеру достаточно 4-х линий (SCLK, SDA, CS, Reset), что существенно экономит выводы МК.
Распиновка
Из упомянутых минусов (при работе от 5В) это 3,3В питание и логические уровни, поэтому была разработана небольшая плата переходник.
Для подключения к контроллеру, с питанием от 5В, предлагаю следующий вариант:
Схема сопряжения
С цепи стабилизации, выполненной на стабилитроне, одновременно запитан сам дисплей и его подсветка. Связь с дисплеем используется только односторонняя, поэтому делители напряжений на линиях управления состоят из резисторов по 4,7кОма. Такой вариант включения считаю не идеальным, но рабочим.
Печатка
Плата сопряжения
Дисплей был подключен к микроконтроллеру PIC16F628A следующим способом
Схема подключения к PIC16F628A
Как видно на схеме, выводы сопрягаются следующим образом: RES – RB4, CS – RB5, SDA – RB6, SCLK – RB7.
Как было сказана в начале статьи, работа с дисплеем реализована только в текстовом режиме. За основы были взяты наработки, полученные при работе с экраном от nokia 3310.
Для рабы с дисплеем доступны следующие функции:
- lcd_init() – инициализация дисплея
- lcd_clear() – очистка дисплея
- lcd_test() – функция проверки дисплея (заполняет весь экран символами)
- lcd_putch(char) – функция вывода символа размером 5х8
- lcd_puts(const char *s) – вывод строки при помощи функции lcd_putch(char)
- lcd_gotoxy(int X, int Y) – переход к символу расположенному в Y строке, на X позиции
Из предыдущего проекта так же перекочевала таблица символов, содержащая английский и русский алфавиты, цифры и специальные символы, т.е. почти вся ASCII во всей своей красе:
ASCII
ещё 31 строчная буква Великого и Могучего, к сожалению, не влезли.
Для работы понадобятся следующие дефайны:
01.
#define SetBit(x,y) (x|=(1< <y))
02.
#define ClrBit(x,y) (x&amp;=~(1<<y))
03.
04.
#define SCLK_on SetBit(PORTB,7)
05.
#define SDA_on SetBit(PORTB,6)
06.
#define CS_on SetBit(PORTB,5)
07.
#define RST_on SetBit(PORTB,4)
08.
#define SCLK_off ClrBit(PORTB,7)
09.
#define SDA_off ClrBit(PORTB,6)
10.
#define CS_off ClrBit(PORTB,5)
11.
#define RST_off ClrBit(PORTB,4)
12.
13.
#define lcd_CMD 0
14.
#define lcd_DATA 1
которые сопоставляют выводы контроллера с выводами дисплея.
Пример вывода текста по середине экрана будет выглядеть следующим образом:
1.
lcd_gotoxy(2, 3);
2.
lcd_puts(
"Hello, World"
);
Hello, World
Относительно большие размеры дисплея 96х65 точек, позволяют выводить до 128 символов, размера 5х8, одновременно, в 8 строчках по 16 букв:
Текстовые возможности дисплея
К сожалению, проект получился очень весомым и занял 77,8% памяти микроконтроллера PIC16F628A, а это целых – 1593 байта. Но не забывайте, что большую часть занимает массив шрифта – lcd_fonts, который вмешает 159 5-ти байтных символа, а это 795 байт. Для облегчения проекта можно исключить русскую или английскую кодировку.
Для демонстрации возможностей дисплея была написана небольшая демка, содержащая 4 сменяющееся кадра: информация о проекте (первая фотография), возможности дисплея (последняя картинка), частично влезавшая таблица ASCII, выводимая функцией lcd_test() (4 фото) и наконец простой пример работы – «Привет, Мир» (предпоследний скрин экрана).
Скачать исходник, пришивку и печатку в SP5
При написании статьи использовались материалы с сайта www.sunbizhosting.com
Используемый компилятор – Hi-Tech 9.70