Функция scrollDisplayRight() 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Функция 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 с.)