Меню сайта
Календарь
|
LCD дисплей 128x64 (ST7920) - u8glib,SPI,AVRStudio,руссификацияST7920 - u8glib,SPI,AVRStudio,руссификация
Недавно мной на одном интернет-аукционе был куплен лот "LCD дисплей графический 128x64 точки с голубой подсветкой белыми символами. Контроллер - ST7920".В сети нашлась библиотека u8glib свободно распостраняемая по GNU-лицензии - https://code.google.com/p/u8glib/wiki/avr.Имеются варианты библиотеки для Arduino,ARM,меня же интересовал вариант U8glib for AVR ,поскольку планировалось использование AVRStudio 4,19.
В качестве микоконтролера использована Atmega328 (а точнее плата Arduino Pro Mini),кварц 16МГц.Подключал по SPI тремя проводами.Практически все заявленые авторами библиотеки функции поверил,вот практические примеры:
//u8g_DrawBox(&u8g, 3,21,20,10);//заполненный пикселями прямоугольник (x,y,длина,высота)
//u8g_DrawFrame(&u8g, 0,18,26,16);//незаштрихованный прямоугольник
//u8g_DrawCircle(&u8g, 120,6,5,U8G_DRAW_ALL);//нарисовать полную окружность (x,y,radius)
//u8g_DrawDisc(&u8g, 110,6,5,U8G_DRAW_ALL); //нарисовать полную окружность заполненyю пикселями
//u8g_DrawDisk(&u8g, x, y, rad, [options])
//u8g_DrawEllipse(&u8g,82,6,8,4,U8G_DRAW_ALL);//нарисовать элипс
//u8g_DrawFilledEllipse(&u8g,92,6,8,4,U8G_DRAW_ALL);//нарисовать элипс заполненный пикселями
//u8g_DrawHLine(&u8g,0,14,128);//нарисовать линию (x,y,длина)
//u8g_DrawLine(&u8g,20,16,108,16);//нарисовать линию (начало x,y - конец x,y)
//u8g_DrawRFrame(&u8g, 28,18,26,16,5);//прямоугольниу с закругленными краями (x,y,h,l,radius)
//u8g_DrawTriangle(&u8g,56,18,65,26,56,34);//треугольник
//u8g_DrawVLine(&u8g,67,18,16);//нарисовать вертикальную линию (x,y,высота)
//void u8g_DrawXBM(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, const uint8_t *bitmap)
//u8g_int_t u8g_getFontLineSpacing ( u8g_t * u8g ) - межстрочный интервал
Меня интересовала еще "руссификация" дисплея.В библиотеке имеется кириличный шрифт - u8g_font_unifont_0_8.
Оказалось скорей всего ,есть ошибки в самом шрифте,высвечивается символ из этого шрифта который находится в таблице над тем символом который я пишу в исходнике.
Даю полное описание соответствий символов:
u8g_DrawStr(&u8g, 0, 12, "\260\261Ііґ\265\266\267ё№є\273јЅѕї"); //выводит текст АБВГДЕЖЗИЙКЛМНОП
u8g_DrawStr(&u8g, 0, 25, "АБВГДЕЖЗИЙКЛМНОП"); //выводит текст РСТУФХЦЧШЩЪЫЬЄЮЯ
u8g_DrawStr(&u8g, 0, 38, "РСТУФХЦЧШЩЪЫЬЭЮЯ"); //выводит текст абвгдежзийклмноп
u8g_DrawStr(&u8g, 0, 50, "абвгдежзийклмноп"); //выводит текст рстуфхцчшщъыьэюя
u8g_DrawStr(&u8g, 13, 64, "Hello World!!!"); //выводит текст на английском,здесь буквы соответствуют
http://yadi.sk/d/1EuM3dLkJcHoa - пример "Hello World" (AVR Studio 4.19).
http://yadi.sk/d/wiBZG5m3K623z - пример "Русский алфавит" (AVR Studio 4.19).
Следующим шагом моих експерементов было - вывод переменой на екран LCD.
В AVR Studio это оказалось довольно муторным делом.Дело в том что специальной функции для вывода переменой в библиотеке нет - https://code.google.com/p/u8glib/wiki/userreference .Мне же хотелось подключить часы реального времени на DS1307. Пообщавшись там же на форуме, выяснилось, что нужно применять функцию sprintf :
- sprintf(str, "%02d:%02d", h, m); where str is the string, h hour and m minutes.
Простой пример Atmega328 + DS1307+LCD(st7920)
http://yadi.sk/d/vmicCa8nKGnVW - файл проекта для AVR Studio 4.19,добавлено еще день недели(цифрой).
LCD подключен по SPI тремя проводами.
|
Архив записей
Друзья сайта
Статистика
Онлайн всього: 1 Гостей: 1 Користувачів: 0 |