Вторник, 03.12.2024, 04:50
Приветствую Вас Гость | RSS
Главная | Каталог статей | Регистрация | Вход
Меню сайта
Реклама Google
Форма входа
Категории раздела
Это нужно знать! [17]
Изучаем AVR [30]
Программаторы [12]
Необходимое ПО [8]
Готовые устройства [73]
Справочная [38]
Инструмент [0]
Технология [8]
Литература [0]
Arduino скетчи [18]
Поиск
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Микроконтроллеры - это просто!
Главная » Статьи » Изучаем AVR

Рисуем свои символы на LCD (HD44780)
Дисплеи на основе контроллера HD44780  очень удобны в использовании, но имеют один недостаток — ограниченный набор символов. Может возникнуть ситуация, когда нужного для нашего проекта символа в стандартном наборе нету и что же тогда делать. Выход из этой ситуации мы и рассмотрим в нашей статье.

     Производители контроллеров HD44780 предусмотрели возможность такой ситуации, поэтому в памяти контроллера есть специальные символы по адресам 0х00 — 0х07 — это переопределяеемые символы, графическое изображение которых может назначить сам пользователь. а значит что мы в контроллер можем записать до 8 необходимых нам символов.



#include <avr/io.h>
#include <util/delay.h>
#include «LCD.h»

#define PORT_LCD PORTD
#define DDR_LCD DDRD

char Simvoli[][8]={
// 0
{ 0b00001110,
0b00011111,
0b00010001,
0b00010001,
0b00010001,
0b00010001,
0b00011111,
0b00000000,
},
// 1
{ 0b00001110,
0b00011111,
0b00010001,
0b00010001,
0b00010001,
0b00011111,
0b00011111,
0b00000000,
},
// 2
{ 0b00001110,
0b00011111,
0b00010001,
0b00010001,
0b00011111,
0b00011111,
0b00011111,
0b00000000,
},
// 3
{ 0b00001110,
0b00011111,
0b00010001,
0b00011111,
0b00011111,
0b00011111,
0b00011111,
0b00000000,
},
// 4
{ 0b00001110,
0b00011111,
0b00011111,
0b00011111,
0b00011111,
0b00011111,
0b00011111,
0b00000000,
},
// квадратик
{ 0b00011111,
0b00010001,
0b00010001,
0b00011111,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
},
};
/* функчия принимает адрес символа из флеш памяти(адрес первого из 8и байтов изображения)
переносит эти байты последовательно в ЖКИ по адресу (addres) addres — адрес куда запсать символ 0…7 */
void lcd_new_simvol(char Simvol[],char addres)
{
char i;
// команда 0b01000000 + addres*8 присваение счетчику АС адреса в области CGRAM
lcd_putbyte(0×40+addres*8, LCD_COMMAND);

for(i=0;i<8;i++)
lcd_putbyte(Simvol[i],LCD_DATA);
}
int main(void)
{
init_port();
lcd_init();

//рисуем свои символы в ЖКИ
lcd_new_simvol(&Simvoli[0][0],0);
lcd_new_simvol(&Simvoli[1][0],1);
lcd_new_simvol(&Simvoli[2][0],2);
lcd_new_simvol(&Simvoli[3][0],3);
lcd_new_simvol(&Simvoli[4][0],4);

lcd_gotoxy(0,0);

//выводим символы в соответств ячейках памяти
lcd_putchar(0); 
lcd_putchar(1);
lcd_putchar(2);
lcd_putchar(3);
lcd_putchar(4);

while(1);
{
}}
Категория: Изучаем AVR | Добавил: Alex (20.01.2014)
Просмотров: 3327 | Рейтинг: 1.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright MyCorp © 2024