Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Функция scrollDisplayRight()
Функция scrollDisplayRight() прокручивает информацию на экране индикатора (текст и курсор) на одно знакоместо вправо. Синтаксис функции scrollDisplayRight (): lcd.scrollDisplayRight() Параметр: lcd — переменная типа LiquidCrystal.
Функция autoscroll() Функция autoscroll() включает автоматическую прокрутку экрана жидкокристаллического индикатора и заставляет каждый вывод символа на экран индикатора перемещать предыдущие символы на одно знакоместо. Если текущее направление вывода символов слева направо (значение по умолчанию) — экран индикатора прокручивается влево; если текущее направление вывода символов справа налево — экран индикатора прокручивается вправо.
Это производит эффект вывода каждого нового символа в одно и то же знакоместо на экране жидкокристаллического индикатора. Синтаксис функции autoscroll(): lcd.autoscroll() Параметр: lcd — переменная типа LiquidCrystal.
Функция noAutoscroll() Функция noAutoscroll() выключает автоматическую прокрутку экрана жидкокристаллического индикатора. Синтаксис функции noAutoscroll (): lcd.noAutoscroll() Параметр: lcd — переменная типа LiquidCrystal.
Функция leftToRight() Функция leftToRight () устанавливает направление вывода символов на экран жидкокристаллического индикатора слева направо (значение по умолчанию). Это означает, что последующие символы, выводимые на экран индикатора, пойдут слева направо, но не повлияют на выведенный ранее текст. Синтаксис функции leftToRight(): lcd.leftTorRight(); Параметр: lcd — переменная типа LiquidCrystal.
Функция rightToLeft() Функция rightToLeft () устанавливает направление вывода символов на экран жидкокристаллического индикатора справа налево (значение по умолчанию — слева направо). Это означает, что последующие символы, выводимые на экран индикатора, пойдут справа налево, но не повлияют на выведенный ранее текст. Синтаксис функции rightToLeft(): lcd.rightToLeft() Параметр: lcd — переменная типа LiquidCrystal. Функция createChar() Функция createChar () создает пользовательский символ (глиф) для использования на жидкокристаллическом дисплее. Поддерживаются до восьми символов 5x8 пикселов (нумерация с 0 до 7). Создание каждого пользовательского символа определяется массивом из восьми байтов — один байт для каждой строки. Пять младших значащих битов каждого байта определяют пикселы в этой строке. Чтобы вывести пользовательский символ на экран, используйте функцию write () с номером символа в качестве параметра.
Синтаксис функции createChar(): lcd.createChar(num, data) Параметры: - lcd — переменная типа LiquidCrystal; - num — номер создаваемого символа (0 to 7); - data — данные символьных пикселов. Пример создания символа: #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); byte smiley[8]={ B00000, B10001, B00000, B00000, B10001, B01110, B00000, }; void setup() { lcd.createChar(0, smiley); lcd.begin(16, 2); lcd.write(0); } void loop() {;}
Рисунок 50.2 - Создание кода пользовательских символов для LiquidCrystal с помощью интернет-ресурса LiquidCrystal Display
С помощью интернет-ресурса http://mikeyancey.com/hamcalc/ lcd_characters.php в режиме online можно нарисовать пользовательские символы и получить соответствующий им программный код, как показано на рисунке 50.2.
Библиотека LiquidCrystalRus Дисплеям WINSTAR присуща определенная проблема с поддержкой кириллицы. Дело в том, что китайцы решили, будто включить поддержку кириллицы — это значит произвольным образом раскидать по таблице знаков кириллические символы без соответствия какой-либо кодировке. В 2010 году Илья Данилов написал библиотеку LiquidCrystalRus, которая умело справляется с китайской кириллицей, делая ее поддержку прозрачной. Создадим пример, показывающий возможности библиотеки LiquidCrystalRus. Схема подключения дисплея WINSTAR к плате Arduino представлена на рисунке 50.3. Рисунок 50.3 - Схема подключения дисплея WH1604 к плате Arduino
Дисплей WINSTAR, как и прочие дисплеи на контроллере HD44780, поддерживает два варианта параллельного интерфейса: - восьмибитный — выводы DB0-DB7, за один такт передается 1 байт (8 бит); - четырехбитный — выводы DBчетырехDB7, за один такт передается половина байта (4 бита). Смысла использовать восьмибитный вариант нет, потому что он требует задействовать больше контактов, а выигрыша в скорости все равно не дает — частота обновления дисплея не более 10 раз в секунду, так что мы в любом случае не сможем увидеть часто обновляемые данные. Поэтому выводы DB0-DB3 оставляем неподключенными. Управление контрастностью изображения напряжением осуществляет потенциометр. В данном случае нормальное изображение наблюдалось при значениях напряжения на входе Vo в пределах 0,45-1,2 В.
Приступаем к программированию и постараемся на практическом примере показать возможности дисплея. Сначала подключаем библиотеку LiquidCrystalRus для работы с ЖКИ (LCD). Далее создаем объект LCD-дисплея, используя конструктор класса LiquidCrystalRus с 6 аргументами. Библиотека по количеству аргументов сама определит, что нужно использовать четырехбитный интерфейс. Указываем, к каким пинам (контактам) Arduino подключены выводы дисплея: RS, E, DB4, DB5, DB6, DB7. Далее в функции setup() инициализируем дисплей (4 строки по 16 символов) и записываем выводимую на дисплей фразу. Пример кода: // Подключение библиотеки #include <LiquidCrystalRus.h> // Создаем объект, используя конструктор класса LiquidCrystal // 12 - RS,11 - Enable,5 - D4, 4 - D5,3 - D6,2 - D7 LiquidCrystalRus lcd(12, 11, 5, 4, 3, 2); // начальная установка void setup() { // размерность индикатора lcd.begin(16, 4); // Начальное сообщение lcd.setCursor(0, 0); lcd.print(,,Демо к книге"); lcd.setCursor(0, 1); lcd.print("Arduino"); lcd.setCursor(0, 2); lcd.print("Возможности"); lcd.setCursor(0, 3); lcd.print("WH1604"); lcd.cursor(); delay(10000); }
Методы leftToRight() и rightToLeft() устанавливают направление вывода текста — слева направо и справа налево соответственно. Для наглядности будем выводить строки посимвольно. При этом покажем и разные формы курсора. Первую строку выводим слева направо с обычным курсором (в виде подчеркивания), вторую — с невидимым курсором слева направо, третью — справа налево с большим мигающим курсором. Затем методом clear () очищаем экран и переводим курсор в позицию 0,0. Пример кода: void loop() { // выключить дисплей без потери отображаемой на нем информации lcd.noDisplay(); delay(3000); // включить дисплей без потери отображаемой на нем информации lcd.display(); delay(3000); //***** Вывод слева направо ******* lcd.clear(); // очистить экран lcd.leftToRight(); // слева направо lcd.cursor(); // курсор - подчеркивание lcd.setCursor(0, 0); // позиция 0,0 String text1=пСлева направо"; for(int i = 0; i < text1.length(); i++) { lcd.write(text1[i]); // посимвольный вывод delay(300); // задержка } lcd.noCursor(); // курсор - спрятан lcd.setCursor(0, 1); // позиция 0,1 for(int i = 0; i < text1.length(); i++) { lcd.write(text1[i]); // посимвольн^1й вывод delay(300); // задержка } //***** Вывод справа налево ******* lcd.rightToLeft(); // справа налево lcd.blink(); // курсор - мигающий lcd.setCursor(15, 2); // позиция 15,2 String text2="овелан оварпС"; for(int i = 0; i < text2.length(); i++) { lcd.write(text2[i]); // посимвольный вывод delay(300); // задержка } lcd.clear(); }
Теперь продемонстрируем функцию autoscroll() при выводе символов на экран жидкокристаллического индикатора. Эта функция заставляет каждый вывод символа на экран перемещать предыдущие символы на одно знакоместо, что производит эффект вывода каждого нового символа в одно и то же знакоместо на экране. При этом предыдущие символы будут смещаться либо влево (направление вывода слева направо), либо вправо (направление вывода справа налево). Пример кода: //***** autoscroll слева направо ******* lcd.leftToRight(); lcd.autoscroll(); String text3=Mautoscroll"; lcd.blink(); lcd.setCursor(7, 1); for(int i = 0; i < text3.length(); i++) { lcd.write(text3[i]); delay(300); } // справо налево lcd.rightToLeft(); lcd.setCursor(7, 2); for(int i = 0; i < text3.length(); i++) { lcd.write(text3[i]); delay(300); } lcd.noAutoscroll(); lcd.clear(); Метод установки положения курсора setCursor(). В примере будем каждую секунду переустанавливать курсор в случайную позицию на экране. //***** перемещения курсора ******* lcd.leftToRight(); lcd.cursor();
lcd.blink(); for(int i=0;i<10;i++) { int rand1=(micros() +millis())%1000; lcd.setCursor(rand1%15,rand1%4); delay(1000); } lcd.noBlink(); for(int i=0;i<10;i++) { int rand1=(micros()+millis()); lcd.setCursor(rand1%15,rand1%4); delay(1000); } delay(1000); lcd.home(); Пример создания пользовательских символов. Для режима 5x7 можно создать восемь пользовательских символов с номерами от 0 до 7. Для вывода на экран дисплея используется метод write(N), где N — номер созданного символа. Создадим восемь символов. Описать собственные символы в виде массивов битовых масок. Каждый символ — это восемь масок по пять битов. Вывести символы на дисплей с интервалом 1 сек. Пример кода: byte s1[8]={B11111,B11111,B11111,B11111,B11111,B11111,B11111}; byte s2[8]={B00000,B00000,B11111,B11111,B11111,B11111,B11111}; byte s3[8]={B00000,B00000,B00000,B00000,B11111,B11111,B11111}; byte s4[8]={B00011,B00011,B00011,B00011,B00011,B00011,B00011}; void loop() { for(int i=0;i<4;i++) { } lcd.createChar(0, s1); lcd.createChar(1, s1); lcd.createChar(2, s1); lcd.createChar(3, s1); lcd.setCursor(0, 0); lcd.write(0);lcd.write(""); lcd.write(1);lcd.write(""); lcd.write(2);lcd.write(""); lcd.write(3);lcd.write(""); delay(10000); } Контрольные вопросы: 1. Описать принцип работы модулей ЖКИ. 2. Для чего предназначена библиотека LiquidCrystal и как осуществить ее подключение? 3. Какие функции реализованы в библиотеке LiquidCrystal? 4. Какие используются команды управления ЖКИ? 5. Какие используются инструкции вывода символов и задания знакоместа на экране ЖКИ? 6. Как подключить дисплей Winster к плате Arduino? 7. Какие варианты интерфейса поддерживает ЖК дисплей Winster?
|
|||||||
Последнее изменение этой страницы: 2021-02-07; просмотров: 245; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 52.14.168.56 (0.032 с.) |