- Буквенно-цифровой ЖК-дисплей 16x2
- Библиотека CCS 16x2 LCD для MSP430
- Функции ЖК-дисплея для ЖК-дисплея 16x2 на MSP430
- Схема подключения ЖК-дисплея к MSP430
- Программирование MSP430 с использованием Code Composer Studio для ЖК-дисплея
Эта статья является продолжением нашей серии руководств по программированию MSP430 с использованием Code Composer Studio. Последнее руководство было основано на внешних прерываниях на MSP430 с использованием контактов GPIO. Это руководство посвящено взаимодействию дисплея с MSP430, когда дело доходит до ЖК-дисплея 16 * 2, это лучший выбор для любого любителя электроники. Раньше мы также сопоставляли ЖК-дисплей с MSP430 с помощью Arduino IDE, в этом руководстве мы будем использовать платформу студии Code Composer вместо использования Arduino IDE, таким образом, как дизайнер, мы получаем большую гибкость.
Чтобы узнать больше о ЖК-дисплее 16x2 и его использовании с другими микроконтроллерами, см. Руководства ниже.
- Сопряжение ЖК-дисплея с ATmega16
- Подключение ЖК-дисплея к Raspberry Pi
- Сопряжение ЖК-дисплея с микроконтроллером PIC
- Сопряжение ЖК-дисплея с ARM7-LPC2148
- Сопряжение ЖК-дисплея с NodeMCU
- Сопряжение ЖК-дисплея с STM32
- Сопряжение ЖК-дисплея с MSP430G2
- Сопряжение ЖК-дисплея с STM8
Он имеет встроенную IC hd44780, которая может хранить переданные ему команды и данные. ЖК-модуль имеет около 16 контактов. 8 из которых являются выводами данных, 4 из них - выводами питания для светодиода подсветки и всего ЖК-модуля, 3 - для управления работой и 1 - для регулировки контрастности. Учебник основан на библиотеке, созданной Деннисом Эйхманном. Очень легко использовать библиотеку с отдельными функциями для печати разных типов данных. Он также имеет условия для отображения данных в различных формах с ведущими, пустыми и удаленными нулями. Это довольно обширная и всеобъемлющая библиотека, которую можно настроить для различных подключений. Здесь файл заголовка модифицирован для обеспечения 8-контактной параллельной конфигурации для передачи данных.
Буквенно-цифровой ЖК-дисплей 16x2
Стандартный дисплей 16x2 имеет встроенную микросхему hd44780 (обведена красным ниже), которая может хранить переданные ему команды и данные. ЖК-модуль имеет около 16 контактов. 8 из них - выводы данных, 4 из них - выводы питания для светодиода подсветки и всего ЖК-модуля, 3 - для управления работой и 1 - для регулировки контрастности.
Этот ЖК-модуль показан выше универсальным и использует минимум контактов по сравнению с другими сегментированными ЖК-дисплеями. Если вам интересно узнать, как именно все это работает, вы должны проверить работу ЖК-дисплея 16x2, где мы уже подробно обсуждали, как работает ЖК-дисплей.
Вывод RS: RS = 1 включает регистр данных на ЖК-дисплее, который используется для записи значений в регистр данных на ЖК-дисплее. RS = 0 включает регистр инструкций ЖК-дисплея.
Разрешить контакт: срабатывание по отрицательному фронту; когда вывод изменяется с ВЫСОКОГО состояния на низкое, на ЖК-дисплее появляется запрос на запись на выводы данных. Положительный запуск по фронту; когда вывод изменяется из НИЗКОГО состояния в ВЫСОКОЕ, ЖК-экран получает запрос на чтение с выводов данных.
Вывод R / W: R / W = 0 будет записывать в регистр команд или регистр данных в соответствии с выбором вывода RS. R / W = 1 будет считываться с IR или DR в соответствии с выбором вывода RS.
RS R / W Эксплуатация
0 0 ИК-запись как внутренняя операция (очистка дисплея и т. Д.)
0 1 Считывание флага занятости (DB7) и счетчика адресов (от DB0 до DB6)
1 0 DR запись как внутренняя операция (DR в DDRAM или CGRAM)
1 1 DR читается как внутренняя операция (DDRAM или CGRAM в DR)
Контакты D0-D7: данные передаются в регистры команд и данных и из них через эти контакты.
Контакты питания: контакты V ss, V dd используются для питания ЖК-модуля. Контакты A, K будут питать светодиодную подсветку. Контакты V 0 используются для управления контрастностью.
Библиотека CCS 16x2 LCD для MSP430
Учебник основан на библиотеке, созданной Деннисом Эйхманном. Очень легко использовать библиотеку с отдельными функциями для печати разных типов данных. Он также имеет условия для отображения данных в различных формах с ведущими, пустыми и удаленными нулями. Это довольно обширная и всеобъемлющая библиотека, которую можно настроить для различных подключений. Здесь файл заголовка модифицирован для обеспечения 8-контактной параллельной конфигурации для передачи данных. Библиотеку можно загрузить по указанной ниже ссылке. После загрузки выполните следующие действия, чтобы добавить библиотеку в CCS.
Скачать библиотеку 16x2 для MSP430 - Code Composer Studio
Шаг 1. Создание файлов и проектов
Проект CCS по умолчанию создается с помощью меню файла. В диалоговом окне «Создание проекта» выберите устройство и укажите hd44780 в качестве имени проекта. В разделе Тип проекта и цепочка инструментов выберите тип вывода как статическую библиотеку и создайте проект.
В полосе Project Explorer (слева) создайте файл заголовка в папке include и назовите его hd44780.h . Затем скопируйте содержимое загруженного файла hd44780.h во вновь созданный.
Теперь создайте основной проект, изменив тип вывода на исполняемый файл, и создайте проект с именем CCS_LCD .
Шаг 2. Включите пути поиска в основной проект
В диалоговом окне свойств проекта hd44780 и внутри параметров включения для компилятора MSP430 добавьте папку включения в файл в путь поиска.
Затем соберите этот проект, чтобы создать необходимые файлы компоновщика, такие как файлы.lib . При его построении внутри папки отладки будет создан файл hd44780.lib .
Шаг 3. Включите пути поиска для компоновщика
В диалоговом окне свойств проекта CCS_LCD и в пути поиска файлов на вкладке компоновщика MSP430 включите файл hd44780.lib, расположенный в папке отладки проекта hd44780. Папка отладки также включена в путь поиска файлов.
Папка include снова добавляется к параметрам включения компилятора MSP430 проекта CCS_LCD .
Библиотека успешно скомпилирована и добавлена в компоновщик основного проекта.
Функции ЖК-дисплея для ЖК-дисплея 16x2 на MSP430
void hd44780_timer_isr (void): это периодически вызывается в ISR таймера A. Таймер A используется для периодического выполнения функций ЖК-дисплея, таких как очистка экрана, установка курсора и отображение данных. Функция должна использоваться в ISR. Он ничего не возвращает.
uint8_t hd44780_write_string (char * ch__string, uint8_t u8__row, uint8_t u8__column, uint8_t u8__cr_lf): он запишет строку, указанную в первом аргументе.
char * ch__string: строка для записи в буфер данных (внутри функции hd44780_timer_isr ). При периодическом вызове hd44780_timer_isr данные будут скопированы в регистр данных и регистр команд ЖК- дисплея .
uint8_t u8__row: определяет строку, в которую будет записана строка.
uint8_t u8__column: определяет столбец, в который будет записана строка.
uint8_t u8__cr_lf: если установлено 1, строка будет перенесена на следующую. Если он равен 0, печать останавливается в той же строке.
void hd44780_clear_screen (void): эта функция очистит весь экран. Он ничего не возвращает.
uint8_t hd44780_output_unsigned_16bit_value (uint16_t u16__value, uint8_t u8__leading_zero_handling, uint8_t u8__row, uint8_t u8__column, uint8_t u8__cr_lf): функция отобразит на ЖК-дисплее желаемое 16-битное значение без знака.
uint16_t u16__value: Целое число, которое будет отображаться, дается в первом аргументе.
uint8_t u8__leading_zero_handling: Если передан 0, будут показаны ведущие нули, а целочисленное значение будет отображаться. Если передан 1, нули будут сброшены. Если в качестве параметра передано 2, будут показаны только значащие цифры.
uint8_t u8__row: выбирается строка, в которой отображается целое число.
uint8_t u8__column: столбец для печати выбирается с помощью аргумента.
uint8_t u8__cr_lf: если установлено 1, строка будет перенесена на следующую. Если он равен 0, печать останавливается в той же строке.
Схема подключения ЖК-дисплея к MSP430
Полная принципиальная схема показана на изображении ниже. Как видите, аппаратные соединения очень просты, и мы запитали всю плату с помощью адаптера 5V.
Подключения выполняются согласно приведенному выше эскизу. Пожалуйста, ознакомьтесь с таблицей ниже для получения подробной информации о подключениях.
Vss | Земля источника питания 5 В |
Vdd | 5В |
V0 | Выход потенциометра |
RS | P2.1 |
R / W | Земля |
E | P2.0 |
D0 | P1.0 |
D1 | P1.1 |
D2 | P1.2 |
D3 | P1.3 |
D4 | P1.4 |
D5 | P1.5 |
D6 | P1.6 |
D7 | P1.7 |
А | Резистор 220 Ом |
K | Земля |
Анод светодиодной подсветки нельзя подключать напрямую к источнику питания 5 В. Он должен быть подключен к сопротивлению, чтобы минимизировать ток, протекающий через ЖК-модуль. Я выполнил свои соединения, используя перфорированную плату для пайки ЖК-дисплея, а затем использовал перемычки для соединения ЖК-дисплея с платой MSP430, моя установка выглядит так, как показано ниже, но вы также можете просто использовать макетную плату для подключения.
Программирование MSP430 с использованием Code Composer Studio для ЖК-дисплея
Полный код, использованный в этом проекте, приведен внизу этой страницы. Объяснение использования кода следующее. Сначала откройте файл заголовка (hd44780.h) и включите номер детали микроконтроллера в первую часть файла.
#include "msp430g2553.h"
Сначала необходимо остановить сторожевой таймер. Регистры управления DCOCTL и BCSCTL1 используются для настройки генератора микроконтроллера. Строки ниже настроят MCLK на 1 МГц.
WDTCTL = (WDTPW - WDTHOLD); BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ;
Контакты порта 1 следует указать как выход, который будет использоваться для контактов данных. Вывод 0 и вывод 1 также следует упомянуть как вывод порта 2, который будет использоваться для вывода RS и R / W.
P1DIR = 0xFF; P2DIR = (0x01 - 0x02);
Для периодического отображения значений используется встроенный таймер. Таймер A выбирается с помощью SMCLK (1 МГц) в качестве источника синхронизации, а непрерывный режим является режимом работы.
TA0CCR1 = 32768; TA0CCTL1 = CCIE; TA0CTL = (TASSEL_2 - MC_2 - TACLR);
Прерывания для каналов сравнения 1 и 2 и прерывания по переполнению таймера имеют один и тот же вектор прерывания ( TIMER0_A1_VECTOR ) с разными начальными адресами. Канал сравнения захвата 1 (CCR1) использует 2 в качестве адреса, который используется в случае коммутатора.
#pragma vector = TIMER0_A1_VECTOR __interrupt void timer_0_a1_isr (void) { switch (TA0IV) { case 2: { hd44780_timer_isr (); сломать; } } }
После того, как ваш код скомпилирован, вы можете загрузить его на плату MSP430, как описано в руководстве «Начало работы с MSP430». Если все пойдет так, как ожидалось, вы должны увидеть контраст вашего ЖК-дисплея, как показано ниже.
Если ваш тест очень тусклый, вы можете попробовать настроить потенциометр, чтобы получить лучший контраст. Полную работу проекта также можно найти в видео по ссылке ниже. Надеюсь, вам понравился проект, и вам было интересно создать свой собственный. Если у вас есть вопросы, оставьте их в разделе комментариев ниже. Вы также можете написать все свои технические вопросы на форумах, чтобы получить на них ответы или начать обсуждение.