Подключение к MSP430 ЖК дисплея 16х2 с помощью Code Composer Studio


Ранее на нашем сайте мы уже рассматривали подключение к MSP430 ЖК дисплея с помощью Energia IDE, в этой же статье мы рассмотрим этот процесс с помощью программного обеспечения Code Composer Studio (CCS), являющимся официальным инструментом для программирования микроконтроллеров серии MSP430. Сразу отметим что это будет несколько сложнее чем с помощью Energia IDE, поскольку CCS требует большего погружения в принципы работы микроконтроллера. Основы работы с Code Composer Studio мы рассматривали в этой статье.

Внешний вид проекта подключения к MSP430 ЖК дисплея 16х2 с помощью Code Composer Studio

Ранее на нашем сайте мы уже рассматривали подключение ЖК дисплея 16x2 к следующим микроконтроллерам (платам):

Необходимые компоненты

  1. Плата MSP430G2 LaunchPad (купить на AliExpress).
  2. ЖК дисплей 16х2 (купить на AliExpress).
  3. Потенциометр 10 кОм (купить на AliExpress).
  4. Макетная или перфорированная плата.
  5. Соединительные провода.

Основные принципы работы ЖК дисплея 16х2

ЖК дисплей 16х2 содержит в своем составе микросхему контроллера hd44780 (показан на рисунке ниже овалом красного цвета), который может хранить поступающие команды и данные. ЖК дисплей 16х2 имеет 16 контактов, 8 из которых являются контактами данных, 4 – для подачи питания и управления фоновой подсветкой, 3 контакта управления и 1 контакт для регулировки контрастности.

Микросхема контроллера hd44780 в модуле ЖК дисплея

В данном проекте для подключения ЖК дисплей 16х2 к микроконтроллеру MSP430 мы будем использовать библиотеку, разработанную Dennis Eichmann. Она очень удобна в использовании и позволяет выводить на экран дисплея данные различных типов. Также она поддерживает различные типы подключения дисплея, в данном проекте мы будем использовать 8 контактов данных для подключения дисплея.

Назначение контактов (распиновка) ЖК дисплея 16х2 показано на следующем рисунке.

Назначение контактов (распиновка) ЖК дисплея 16х2

Всего ЖК дисплей 16x2 содержит 16 контактов, которые можно условно разделить на следующие 4 группы.

Source Pins (1, 2 и 3): используются для подачи питания на дисплей и регулировки уровня его контрастности.

Control Pins (4, 5 и 6): контакты управления. Используются для установки различных режимов работы дисплея.

Data/Command Pins (7-14): контакты для передачи данных/команд.

LED pins (15 и 16): контакты для включения/выключения фоновой подсветки дисплея (если она нужна).

Для корректной работы дисплея обязательно использование только 10 контактов из 16 перечисленных.

Подключение в CCS библиотеки для работы с ЖК дисплеем 16х2.

Мы будем использовать библиотеку, разработанную Dennis Eichmann. Скачать ее можно по следующей ссылке. Для ее подключения в Code Composer Studio выполните следующую последовательность шагов.

Шаг 1. Создание файлов и проекта.

Проект в CCS можно создать из его меню (пункт file). В диалоговом окне создания проекта (Create Project dialog box) выберите устройство (device), в качестве имени проекта введите hd44780. Под типом проекта и инструментальными средствами (toolchain) выберите в качестве выходного типа Static library и создайте проект.

Создание нового проекта в Code Composer Studio

Слева в панели эксплорера проекта (Project Explorer lane) создайте заголовочный файл в каталоге include и назовите его hd44780.h. затем скопируйте содержимое скачанного файла hd44780.h в этот созданный файл.

После этого создайте основной проект при помощи изменения выходного типа (output type) на исполнимый файл (executable) и создайте проект с именем CCS_LCD.

Шаг 2. Подключение путей поиска к основному проекту.

В диалоговом окне свойств проекта hd44780 и внутри опций include для компилятора MSP430, добавьте каталог include в каталог поиска файла.

Подключение путей поиска к основному проекту в Code Composer Studio

После этого скомпонуйте (build) проект чтобы создать необходимые файлы компоновщика такие как .lib файлы. В результате этой операции в каталоге debug должен создаться файл hd44780.lib.

Шаг 3. Подключение путей поиска для компоновщика.

В диалоговом окне свойств проекта CCS_LCD в пути поиска файла (file search path) на вкладке компоновщика MSP430 (MSP430 Linker tab), подключите файл hd44780.lib, расположенный внутри каталога debug проекта hd44780. Каталог debug также при этом подключится к пути поиска файла.

Каталог include снова добавьте в include options компилятора MSP430 проекта CCS_LCD.

Подключение путей поиска для компоновщика в Code Composer Studio

После этого библиотека будет успешно скомпилирована и добавлена в компоновщик основного проекта.

Функции для работы с ЖК дисплеем в MSP430

void hd44780_timer_isr( void ): данная функция периодически вызывается в качестве функции обработки прерывания (ISR) таймера Timer A. Данный таймер используется для выполнения таких операций с ЖК дисплеем как очистка экрана, установка положения курсора и отображение данных. Функция должна использоваться в качестве функции обработки прерывания. Она ничего не возвращает.

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 представлена на следующем рисунке.

Схема подключения ЖК дисплея к MSP430Для питания схемы мы будем использовать адаптер на 5V.

Схема соединений проекта приведена в следующей таблице.

ЖК дисплей MSP430
Vss земля источника питания 5V
Vdd 5V
V0 к потенциометру
RS P2.1
R/W Ground
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
A резистор 220 Ом
K Ground

Анод подсветки ЖК дисплея нельзя непосредственно подключать к источнику 5V, его следует подключать через токоограничивающий резистор, минимизирующий протекающий ток через модуль ЖК дисплея. Для сборки проекта мы использовали перфорированную плату, вы можете использовать макетную плату если хотите.

Внешний вид собранной конструкции проекта показан на следующем рисунке.

Внешний вид собранной конструкции проекта

Объяснение кода программы

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Первым делом в программе мы откроем заголовочный файл hd44780.h и подключим необходимый заголовочный файл.

Затем остановим работу сторожевого таймера и настроим частоту работы кварцевого генератора микроконтроллера с помощью регистров DCOCTL и BCSCTL1.

Далее зададим режим работы контактов порта 1 на вывод данных – с них будут передаваться данные на ЖК дисплей. Также зададим режим работы на вывод данных для контактов 0 и 1 порта 2 – они подключены к контактам RS и R/W ЖК дисплея.

Встроенный таймер будет использоваться для периодического отображения значений на экране дисплея. Для Timer A выбирается частота работы 1 МГц с помощью SMCLK и задается непрерывный режим работы.

Прерывания от каналов сравнения 1 и 2 и переполнения таймера используют один и тот же вектор прерывания (TIMER0_A1_VECTOR) с различными стартовыми адресами. Канал сравнения 1 (CCR1) использует 2 в качестве адреса, который используется у нас в операторе switch. Более подробно о прерываниях в MSP430 вы можете прочитать в этой статье.

После компиляции кода программы загрузите его в плату MSP430 как описано в данной статье. Если все работает так, как надо, вы должны увидеть как на ЖК дисплее начнет отображаться информация.

Тестирование работы проекта

Если на экране ЖК дисплея ничего не видно попробуйте отрегулировать его контрастность с помощью потенциометра. Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.

Исходный код программы

Видео, демонстрирующее работу проекта

(Проголосуй первым!)
Загрузка...
410 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *