- 16x2 буквено-цифров LCD дисплей
- 16x2 LCD CCS библиотека за MSP430
- LCD функции за 16x2 LCD дисплей на MSP430
- Електрическа схема към интерфейсен LCD с MSP430
- Програмиране на MSP430 с помощта на Code Composer Studio за LCD дисплей
Тази статия е продължението на нашата серия уроци по програмиране на MSP430 с помощта на Code Composer Studio. Последният урок се базира на външни прекъсвания на MSP430 с помощта на GPIO пинове. Този урок е за свързване на дисплей с MSP430, когато става въпрос за показване на 16 * 2 LCD дисплей, това е първият избор за всеки електронен любител. Преди това ние също сме свързвали LCD с MSP430, използвайки Arduino IDE, в този урок ще използваме родната платформа за студио Code Composer, вместо да използваме Arduino IDE, по този начин като дизайнер получаваме повече гъвкавост.
За да научите повече за 16x2 LCD дисплея и използването му с други микроконтролери, моля, вижте уроците по-долу.
- Свързване на LCD с ATmega16
- Свързване на LCD с Raspberry Pi
- Свързване на LCD с PIC микроконтролер
- Интерфейс LCD с ARM7-LPC2148
- Свързване на LCD с NodeMCU
- Свързване на LCD със STM32
- Свързване на LCD с MSP430G2
- Свързване на LCD със STM8
Той има вграден IC hd44780, който може да съхранява командата и данните, предадени към него. LCD модулът има около 16 пина. 8 от които са пинове за данни, 4 от тях са захранващи щифтове за LED подсветка и целия LCD модул, 3 за управление на работата и 1 щифт за регулиране на контраста. Урокът се базира на библиотеката, създадена от Денис Айхман. Много е лесно да използвате библиотека с отделни функции за отпечатване на различни типове данни. Също така има разпоредби за показване на данните в различни форми с водещи, празни и изтрити нули. Това е доста обширна и изчерпателна библиотека и може да се конфигурира към различните връзки. Тук заглавният файл е модифициран, за да побере 8-пинова паралелна конфигурация за комуникация на данни.
16x2 буквено-цифров LCD дисплей
Общият 16x2 дисплей има вграден IC hd44780 (закръглен в червено отдолу), който може да съхранява командата и данните, предадени към него. LCD модулът има около 16 пина. 8 от които са пинове за данни, 4 от тях са захранващи щифтове за LED подсветка и целия LCD модул, 3 за управление на работата и 1 щифт за регулиране на контраста.
Този LCD модул е показан по-горе универсален и използва минимални щифтове в сравнение с други сегментирани LCD. Ако ви интересува как точно всичко това работи, трябва да проверите работата на 16x2 LCD дисплея, където вече обсъдихме как работи LCD в детайли.
RS Pin: RS = 1 ще активира регистъра за данни в LCD, който се използва за записване на стойностите в регистъра за данни в LCD. RS = 0 ще активира регистъра с инструкции на LCD дисплея.
Активиране на щифт: задейства се с отрицателен ръб; когато щифтът се смени от HIGH състояние в състояние LOW, LCD ще бъде подканен да запише в пиновете за данни. Положителен задействан ръб; когато щифтът се промени от НИСКО състояние в ВИСОКО, LCD ще бъде подканен да чете от щифтовете за данни.
R / W щифт: R / W = 0 ще записва в регистъра с инструкции или регистъра на данните според избора на RS пин. R / W = 1 ще се чете от IR или DR според избора на RS щифт.
RS R / W работа
0 0 IR запис като вътрешна операция (изчистване на дисплея и т.н.)
0 1 Четене на зает флаг (DB7) и брояч на адреси (DB0 до DB6)
1 0 DR запис като вътрешна операция (DR към DDRAM или CGRAM)
1 1 DR четене като вътрешна операция (DDRAM или CGRAM към DR)
D0-D7 пинове: Данните се прехвърлят към и от командата и регистрите за данни през тези пинове.
Доставка игли: V SS, V DD игли се използват за захранване на LCD модул. Пиновете A, K ще захранват LED подсветката. V 0 пина се използват за контрол на контраста.
16x2 LCD CCS библиотека за MSP430
Урокът се базира на библиотеката, създадена от Денис Айхман. Много е лесно да използвате библиотека с отделни функции за отпечатване на различни типове данни. Също така има разпоредби за показване на данните в различни форми с водещи, празни и изтрити нули. Това е доста обширна и изчерпателна библиотека и може да се конфигурира към различните връзки. Тук заглавният файл е модифициран, за да побере 8-пинова паралелна конфигурация за комуникация на данни. Библиотеката може да бъде изтеглена от връзката по-долу, след като изтеглите, следвайте стъпките по-долу, за да добавите библиотеката към CCS.
Изтеглете 16x2 библиотека за MSP430 - Code Composer Studio
Стъпка 1: Създаване на файлове и проекти
CCS проект по подразбиране се създава с помощта на файловото меню. В диалоговия прозорец Създаване на проект изберете устройството и дайте hd44780 като име на проект. Под тип проект и верига от инструменти изберете типа изход като статична библиотека и създайте проекта.
В лентата на Project Explorer (отляво) създайте заглавен файл в папката за включване и го наименувайте като hd44780.h . След това копирайте съдържанието на изтегления файл hd44780.h в този новосъздаден.
Сега създайте основния проект, като промените типа на изхода на изпълним файл и създайте проект на име CCS_LCD .
Стъпка 2: Включете пътищата за търсене към основния проект
В диалоговия прозорец за свойства на проекта hd44780 и вътре в опциите за включване за компилатора MSP430, добавете папката за включване във файла на пътя за търсене.
След това изградете този проект, за да създадете необходимите свързващи файлове като .lib файлове . Изграждането на това ще създаде hd44780.lib файл в папката за отстраняване на грешки.
Стъпка 3: Включете пътищата за търсене за Linker
В диалоговия прозорец за свойства на проекта CCS_LCD и в пътя за търсене на файлове на раздела MSP430 Linker включете hd44780.lib, намиращ се в папката за отстраняване на грешки на проекта hd44780 . Папката за отстраняване на грешки също е включена в пътя за търсене на файлове.
Папката за включване отново се добавя към опциите за включване на компилатора MSP430 на проекта CCS_LCD .
Библиотеката е успешно компилирана и добавена към линкера на основния проект.
LCD функции за 16x2 LCD дисплей на MSP430
void hd44780_timer_isr (void): Това периодично се извиква в ISR на таймера A. Таймерът A се използва за периодично извършване на LCD функции като изчистване на екрана, настройка на курсора и показване на данните. Функцията трябва да се използва в 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 ). Данните ще бъдат копирани в регистъра за данни и регистъра с инструкции на LCD IC, когато периодично се извиква 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-бит стойността на LCD дисплея на неподписаното 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, печатът спира на същия ред.
Електрическа схема към интерфейсен LCD с MSP430
Пълната електрическа схема е илюстрирана на изображението по-долу. Както можете да видите, хардуерните връзки са много прости и ние захранвахме цялата платка с помощта на 5V адаптер.
Връзките се извършват съгласно горната скица. Моля, разгледайте таблицата по-долу за подробни връзки.
Vss | Земя на 5V захранване |
Vdd | 5V |
V0 | Изход на потенциометър |
RS | Р2.1 |
R / W | Земя |
Е. | Р2.0 |
D0 | Р1.0 |
D1 | Р1.1 |
D2 | Р1.2 |
D3 | Р1.3 |
D4 | Р1.4 |
D5 | Р1.5 |
D6 | Р1.6 |
D7 | Р1.7 |
A | Резистор 220 Ohm |
К | Земя |
Анодът на LED подсветката не може да бъде свързан директно към 5V захранване. Той трябва да бъде свързан към съпротивление, за да минимизира текущия поток през LCD модула. Направих връзките си с помощта на перфектна платка за запояване на LCD и след това използвах джъмперни проводници, за да свържа LCD с платката MSP430, моята настройка изглежда по-долу, но можете също така просто да използвате макет, за да направите своите връзки.
Програмиране на MSP430 с помощта на Code Composer Studio за LCD дисплей
Пълният код, използван в този проект, е даден в долната част на тази страница. Обяснението на използването на кода е както следва. Първо отворете заглавния файл (hd44780.h) и включете номера на частта на микроконтролера в първата част на файла.
#include "msp430g2553.h"
Таймерът за пазач трябва първо да бъде спрян. Контролните регистри DCOCTL и BCSCTL1 се използват за конфигуриране на осцилатора на микроконтролера. Редовете по-долу ще конфигурират MCLK да бъде 1MHZ.
WDTCTL = (WDTPW - WDTHOLD); BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ;
Като изход трябва да се спомене щифтовете на порт 1, които да се използват за щифтовете за данни. Пинът 0 и щифт 1 също трябва да бъдат споменати като изход в порт 2, който ще се използва за RS и R / W щифт.
P1DIR = 0xFF; P2DIR = (0x01 - 0x02);
Вграденият таймер се използва за периодично показване на стойности. Таймерът A е избран с SMCLK (1MHZ) като източник на часовника и непрекъснатият режим е режимът на работа.
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. Ако всичко върви според очакванията, трябва да видите на LCD дисплея някакъв контраст, както е показано по-долу.
Ако тестът ви е много слаб, можете да опитате да регулирате потенциометъра, за да получите по-добър контраст. Цялостната работа на проекта може да бъде намерена и във видеото, свързано по-долу. Надявам се, че проектът ви е харесал и ви е било интересно да създадете свой собствен. Ако имате някакви въпроси, моля, оставете ги в раздела за коментари по-долу. Можете също така да напишете всичките си технически въпроси на форуми, за да получите отговори на тях или да започнете дискусия.