Программа Сервисный Центр
0

Библиотека AVR GCC для управления ЖК индикатором - использование различных выводов микроконтроллера. Часть 1


Примечание. Выборки исходного кода, размещенные в тексте описания, использовать в своих проектах не рекомендуется. В конце описания имеется ссылка на архив с полным исходным кодом к проекту. Как вы знаете, предшествующая версия программной библиотеки компилятора AVR-GCC, предназначеная для работы с символьными ЖК индикаторами в 4- и 8-битном режиме, прекрасно зарекомендовала себя в работе. Однако, она имеет некоторые ограничения, которые для некоторых пользователей могут стать причиной отказа от работы с библиотекой. Одно из них – ЖК индикатор должен быть подключен к одному порту микроконтроллера. Например, в 8-битном режиме выводы индикатора LCD_D0…LCD_D7 должны быть байт-синхронизированы и подключены, скажем, к линиям PORTB микроконтроллера. Такая же ситуация и при 4-битном режиме: выводы данных ЖК индикатора должны быть подключены к одному порту микроконтроллера, биты 4, 5, 6 и 7. Для двух режимов управления, сигналы управления RS, RW, E должны быть подключены также к одному порту.
Библиотека AVR GCC для управления ЖК индикатором - использование различных выводов микроконтроллера. Часть 1
И так работают большинство других программных библиотек, которые можно найти в Интернет. В реальности все может немного по другому. Каждая линия вода/вывода микроконтроллера имеет, как минимум, несколько альтернативных функций (каналы АЦП, внешние прерывания, линии шины I2C, линии UART), и если в проекте используется одна из них или несколько, и требуется использование ЖК индикатора, стандартная библиотека работать не будет, и вы не сможете получить доступ ко всем линиям порта, к которому подключен ЖК индикатор. Вы должны будете использовать те линии ввода/вывода, которые остались свободными. Для такого случая и была модифицирована библиотека. Она не переписывалась с нуля, была лишь изменена ее функциональность. Принципы работы в 8- и 4-битном режиме при стандартном подключении индикатора не изменились, но были добавлены два режима работы: 8-битный режим при использовании разных портов микроконтроллера и 4-битный режим при использовании разных портов микроконтроллера. Эти режимы позволят управлять ЖК индикатором при наличии любых свободных выводов микроконтроллера. Конфигурирование библиотеки для 4-битного режима Давайте посмотрим, что необходимо выполнить для начала использования этих возможностей. Рассмотрим на простом примере при использовании разных выводов разных портов микроконтроллера.
Библиотека AVR GCC для управления ЖК индикатором - использование различных выводов микроконтроллера. Часть 1
Как видно из схемы, выводы индикатора подключены к микроконтроллеру Atmel AVR ATmega328P в следующем порядке: RS → PB5
RW → PD1
E → PD2
D4 → PD4
D5 → PC2
D6 → PD6
D7 → PB0 Таким образом мы получаем, что сигналы данных и управления берутся от разных портов микроконтроллера и не являются байт-синхронизированными. Прежде всего, нам необходимо отредактировать назначение выводов в заголовочном файле lcd_lib.h, а перед этим исключить из комментариев одну из строк, которая определяет какой режим работы выбран: //используется 4-битный режмим работы ЖК индикатора (при стандартном подключении индикатора к МК)
//#define LCD_4BIT
//используется 8-битный режмим работы ЖК индикатора (при стандартном подключении индикатора к МК)
//#define LCD_8BIT //используется 4-битный режмим работы ЖК индикатора (при использовании разных выводов МК)
#define LCD_4BIT_M
//используется 8-битный режмим работы ЖК индикатора (при использовании разных выводов МК)
//#define LCD_8BIT_M В нашем случае мы работаем в 4-битном режиме со смешанными выводами. Нам необходимо связать выводы индикатора в выводами порта микроконтроллера. Если сигнал управления индикатора RS подключен к порту PB5, то мы напишем 5: #define LCD_RS 5 //вывод порта МК 5 подключен к LCD RS
#define LCD_RW 1 //вывод порта МК 1 подключен к LCD R/W
#define LCD_E 2 //вывод порта МК 2 подключен к LCD E
#define LCD_D0 0 //вывод порта МК 0 подключен к LCD D0
#define LCD_D1 1 //вывод порта МК 1 подключен к LCD D1
#define LCD_D2 2 //вывод порта МК 2 подключен к LCD D2
#define LCD_D3 3 //вывод порта МК 3 подключен к LCD D3
#define LCD_D4 4 //вывод порта МК 4 подключен к LCD D4
#define LCD_D5 2 //вывод порта МК 2 подключен к LCD D5
#define LCD_D6 6 //вывод порта МК 6 подключен к LCD D6
#define LCD_D7 0 //вывод порта МК 0 подключен к LCD D7 И теперь мы должны определить порт и регистр направления данных для каждого вывода микроконтроллера. Так как выводы индикатора могут быть подключены к разным портам, нам нужно работать с индивидуальными выводами. Редактируем следующую часть: #ifdef LCD_4BIT_M || LCD_8BIT_M //8-битный или 4-битный режим работы (при использовании разных выводов МК)
#define LDPRS PORTB //назначаем порт для сигнала RS
#define LDDRS DDRB
#define LDPRW PORTD //назначаем порт для сигнала RW
#define LDDRW DDRD
#define LDPE PORTD //назначаем порт для сигнала E
#define LDDE DDRD
#define LDPD0 PORTD //назначаем порт для сигнала D0
#define LDDD0 DDRD
#define LDPD1 PORTD //назначаем порт для сигнала D1
#define LDDD1 DDRD
#define LDPD2 PORTD //назначаем порт для сигнала D2
#define LDDD2 DDRD
#define LDPD3 PORTD //назначаем порт для сигнала D3
#define LDDD3 DDRD
#define LDPD4 PORTD //назначаем порт для сигнала D4
#define LDDD4 DDRD
#define LDPD5 PORTC //назначаем порт для сигнала D5
#define LDDD5 DDRC
#define LDPD6 PORTD //назначаем порт для сигнала D6
#define LDDD6 DDRD
#define LDPD7 PORTB //назначаем порт для сигнала D7
#define LDDD7 DDRB
#endif  Часть 2 – Настройка библиотеки при 8-битном режиме работыНа английском языке: AVR-GCC LCD library - mixed pin support. Part 1

По материалам сайта www.rlocman.ru

 
 
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.
 
Обратная связь

Наши партнеры

 

Опросы

Есть ли справедливость в жизни?
Конечно есть, уверен!
Вроде как должна быть, но...
Затрудняюсь ответить...
Какая справедливость? О чем Вы?
Эх.., нет правды на свете!

 

Облако тегов

Требуется для просмотраFlash Player 9 или выше.

Показать все теги
 

Календарь публикаций

«    Декабрь 2016    »
ПнВтСрЧтПтСбВс
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
 

Архив новостей

Декабрь 2016 (5)
Ноябрь 2016 (42)
Октябрь 2016 (34)
Сентябрь 2016 (38)
Август 2016 (34)
Июль 2016 (36)
 
Наверх Сервисные мануалы Даташиты Ремонт LCD, ЖК телевизоров LG Samsung Скрипт программы "Сервисный центр"