Эвакуатор

эвакуатор-дешево.москва > Дешевый эвакуатор

Эвакуатор в Москве и Московской области

Барграф на знакосинтезирующем дисплее



 Барграф это такая линейная шкала, размер которой соответствует значению какого-либо настраиваемого параметра. Еще одна разновиднотсь барграфа с ползунком – положение ползунка будет меняться в зависимости от значения переменной в пределах 0-100%, это мы наблюдаем, к примеру, каждый раз изменяя настройки громкости в плеере. Использование барграфов в меню упрощает визуальную настройку – мы сразу можем определить значение настраиваемого параметра. Да и выглядит приятней и по взрослому. В статье опишу метод создания барграфов для знакосинтезирующих дисплеев 16х2 с контроллером HD44780.

 Для быстрого создания барграфа  в своем проекте будем пользоваться библиотекой от австрийского товарища Мэтиаса Браунеккера (Matthias Braunecker), на данный момент поддерживается 5 типов барграфов, каждый из которых имеет свой номер:

 Выводить барграф на дисплей с данной библиотекой очень просто, сейчас рассмотрим это. Для начала скачиваем саму библиотеку:

lcd_bar.bas

 Для подключения библиотеки в начале программы прописываем следующие строки:

Const Lcd_bar_style = [Style]

$include “lcd_bar.bas” в первой строке вместо [Style] вставляем цифру от 0 до 4, тем самым выбираем какой вид будет иметь наш барграф. В следующей строке подключаем саму библиотеку и указываем путь, чтобы компилятор его нашел. В данном случае библиотека лежит в папке с проектом, поэтому полный путь к файлу указывать не обязательно.

 В том месте где нужно вывести барграф, вставляем вот это:

Locate [x] , [y]

Lcd_bar [value] , [x-size] В первой строке указываются координаты начала шкалы. В следующей строчке  [value] заменяется той переменной, значение которой нам нужно отрисовать. Параметром [x-size] указывается длина выводимого барграфа, тоесть насколько он будет вытянут по длине дисплея.

 Теперь небольшой пример использования библиотеки. К микроконтроллеру Atmega8 подключен энкодер. Общий вывод энкодера поcажен на землю, а выводы данных подключены напрямую к PortD.2 (используется прерывание Int0) и PortD.4

 Схема подключения:

 При вращении ручки энкодера изменяется переменная Value в пределах значений от 0 до 100. В первой строке дисплея начиная с третьего знакоместа выводится барграф, длиной 12 символов.

 Для улучшения юзабильности можно дабавить цифровую информацию настраиваемого параметра, как это сделано у меня:

$regfile = “m8def.dat”

$crystal = 8000000

$hwstack = 34

$swstack = 32

$framesize = 34

Config Portd.4 = Input               ‘для подключения второго выхода энкодера

Config Int0 = Falling                 ‘прерывание INT0 по заднему фронту

On Int0 Encod

Enable Interrupts

Enable Int0

‘конфигурируем подключение дисплея

Config Lcdpin=Pin,Rs=Portc.0,E=Portc.1,Db4=Portc.2,Db5=Portc.3,Db6=Portc.4,Db7=Portc.5

Config Lcd = 16 * 2

Cursor Blink

Cls

Lcd “AVRproject.ru”

Lowerline

Lcd “Bargraf demo”

Wait 3

Cursor Noblink

Cursor Off

Cls

Const Lcd_bar_style = 1               ‘выбранный стиль барграфа

$include “lcd_bar.bas”                ‘подрубаем внешний файл библиотеки

Dim Value As Byte                     ‘переменная с которой работаем

Do

 Disable Interrupts                  ‘запрещаем прерывания во время работы с дисплеем

 Locate 1 , 3

 Lcd_bar Value , 12                    ‘выводим барграф размером 12 символов

 If Value > 100 Then Value = 0        ‘держим переменную в пределах от 0 до 100

 Locate 2 , 1

 Lcd “Value = ” ; Value ; ” %”        ‘выводим числовое значение переменной

 Enable Interrupts                  ‘снова разрешаем прерывания

 Waitms 70

 Cls

Loop

End

Encod:

 Waitms 2                            ‘ждем пока утихнет дребезг контактов

 If Pind.2 = 0 Then

  If Pind.4 = 0 Then                 ‘если на ноге единица (импульс не пришел) тогда

  Incr Value                         ‘инкременируем переменную (увеличиваем на 1)

  Else                               ‘в обратном случае

  Decr Value                         ‘декрементируем переменную (уменьшаем на 1)

  End If

 End If

 Gifr = 64                           ‘сбрасываем регистр хранения прерывания INT0

Return

  Вот что получаем в итоге. При вращении ручки энкодера “ползунок” будет ползать по линейке, а переменная Value будет изменяться от 0 до 100%. Выбранный стиль барграфа = 1

И другие варианты шкал:

[Style] = 0  

[Style] = 2

[Style] =3

[Style] = 4


Взято с: avrproject.ru



Категория: AVR
Метки:

Написать коментарий

*
= 5 + 5

Добавить изображение

Последние статьи