Крупные цифры на текстовом ЖКИ
- WildCat
- Собутыльник Сэра Мурра
- Сообщения: 2918
- Зарегистрирован: Вт янв 10, 2006 00:26:45
- Откуда: Челябинск
Крупные цифры на текстовом ЖКИ
Доброго времени суток, товарищи. Схожая тема про вывод графики на текстовый ЖКИ уже обсуждалась, однако сейчас возникла конкретная задача.
Нужно сделать электронные часы. Схема примитивная, на одной аврке. функции по мелочам - календари, будильники с музыкой сменной - это я уже продумал что и как. Возникает одна проблема. Вследствие ограничения в материалах, а так же просто ТЗ так велело, вывод нужно делать на простой текстовый ЖКИ 16*2. Все бы ничего, но вот если просто выводить цифры, они жутко мелкие получаются. Вот я и думаю, как бы научить индикатор всего в 2 строки выводить символами псевдографики хотя бы 4 большие цифры. Даже псу понятно, что одним черным блоком тут не обойтись. Но какие дополнительные 8 символов можно придумать, чтобы выводить качественые читаемые цифры для времени?
Нужно сделать электронные часы. Схема примитивная, на одной аврке. функции по мелочам - календари, будильники с музыкой сменной - это я уже продумал что и как. Возникает одна проблема. Вследствие ограничения в материалах, а так же просто ТЗ так велело, вывод нужно делать на простой текстовый ЖКИ 16*2. Все бы ничего, но вот если просто выводить цифры, они жутко мелкие получаются. Вот я и думаю, как бы научить индикатор всего в 2 строки выводить символами псевдографики хотя бы 4 большие цифры. Даже псу понятно, что одним черным блоком тут не обойтись. Но какие дополнительные 8 символов можно придумать, чтобы выводить качественые читаемые цифры для времени?
- Реклама
- SeregaT
- Генеральный секретарь МЯУ
- Сообщения: 18881
- Зарегистрирован: Пн сен 03, 2007 18:24:27
- Откуда: Россия. Омск.
- Контактная информация:
Где-то в примерах от CodeVisionAVR видел, как делать графику для отдельного блока (просто включая нужные пиксели). Наверное можно сделать по 4 таких блока на каждую цифру (может в виде массивов?) и затем выводить на дисплей.
Если получится, то можно будет выводить большие, качественные цифры, только наверное памяти будет нехило занимать такая прога.
Если получится, то можно будет выводить большие, качественные цифры, только наверное памяти будет нехило занимать такая прога.
-
uk8amk
- Поставщик валерьянки для Кота
- Сообщения: 2222
- Зарегистрирован: Вт ноя 27, 2007 11:32:06
- Откуда: Tashkent
Вот этот самый пример.
По поводу памяти - нет, всего 8 байт на одно знакоместо потратиться + небольшой код по загрузке символа из флеша в RAM индикатора. Для какой-нибудь меги8 еще дохрена ресурсов останется. И на часики и на календарь хватит(при разумном кодинге конечно).
По поводу памяти - нет, всего 8 байт на одно знакоместо потратиться + небольшой код по загрузке символа из флеша в RAM индикатора. Для какой-нибудь меги8 еще дохрена ресурсов останется. И на часики и на календарь хватит(при разумном кодинге конечно).
- Вложения
-
- lcd.txt
- (1.45 КБ) 499 скачиваний
-
Radan
- Мучитель микросхем
- Сообщения: 465
- Зарегистрирован: Ср июн 21, 2006 08:24:32
- Откуда: Лисичанск
- Контактная информация:
Посмотри здесь как идею - http://www.mcselec.com/index.php?option ... &Itemid=57
- Реклама
- Секретный кот
- Поставщик валерьянки для Кота
- Сообщения: 2106
- Зарегистрирован: Ср сен 17, 2008 14:32:15
- Откуда: Старые Васюки
- Контактная информация:
- SeregaT
- Генеральный секретарь МЯУ
- Сообщения: 18881
- Зарегистрирован: Пн сен 03, 2007 18:24:27
- Откуда: Россия. Омск.
- Контактная информация:
Подскажите, как сделать, чтобы выводился не один рисунок, а несколько и в нужном порядке. Я сделал несколько цифр, но выводить нужные не получается. Тоесть они выводятся, но непоймёшь как и иногда искажённые.uk8amk писал(а):Вот этот самый пример.
Не пойму, за что отвечают вот эти строчки?
void define_char(byte flash *pc,byte char_code)
{
byte i,a;
a=(char_code<<3)|0x40;
for (i=0; i<8; i++) lcd_write_byte(a++,*pc++);
}
И вот тут, что обозначает ноль:
lcd_putchar(0);
и тут:
define_char(char0,0);
-
uk8amk
- Поставщик валерьянки для Кота
- Сообщения: 2222
- Зарегистрирован: Вт ноя 27, 2007 11:32:06
- Откуда: Tashkent
Ну тебе нужно просто сделать функцию которую ты будешь кормить симфволом/цифрой, а она по своей логике будет переводить эти символы в эти рисунки и вызывать функцию отправки рисунков на ЖКИSeregaT писал(а):Подскажите, как сделать, чтобы выводился не один рисунок, а несколько и в нужном порядке. Я сделал несколько цифр, но выводить нужные не получается. Тоесть они выводятся, но непоймёшь как и иногда искажённые.uk8amk писал(а):Вот этот самый пример.
Не пойму, за что отвечают вот эти строчки?
void define_char(byte flash *pc,byte char_code)
{
byte i,a;
a=(char_code<<3)|0x40;
for (i=0; i<8; i++) lcd_write_byte(a++,*pc++);
}
И вот тут, что обозначает ноль:
lcd_putchar(0);
и тут:
define_char(char0,0);
по коду:
1.записать в RAM индикатора рисунок символа
2.вывести букву/символ №0 (по ASCII коду)
3.скормить изображение символа по массиву char0 и назначить ему код №0
Re: Крупные цифры на текстовом ЖКИ
Понимаю что тема старая, Но что поделать , у меня например только "проснулся" интерес, к этим большим цИфрам...
Наработки у людей по этому поводу есть...
Вот пример двух шрифтов

Это взял здесь http://forum.chipmk.ru/index.php/topic/ ... C-hd44780/


А это здесь http://flank1er.blogspot.com/2013/01/lua_20.html
Только не пойму как это собрать в массив и отображать на экране.
Это начало такому проекту, вывел ноль с помощью символов.
Теперь в массивы и на экран , вот тут и ничего не понятно...
Наработки у людей по этому поводу есть...
Вот пример двух шрифтов
Спойлер
Это взял здесь http://forum.chipmk.ru/index.php/topic/ ... C-hd44780/
А это здесь http://flank1er.blogspot.com/2013/01/lua_20.html
Это начало такому проекту, вывел ноль с помощью символов.
Спойлер
Код: Выделить всё
#include <mega8.h>
#asm
.equ __lcd_port=0x12 ;PORTD
#endasm
#include <lcd.h>
typedef unsigned char byte;
/* table for the user defined character
arrow that points to the top right corner */
flash byte chara[]={
0b0000111,
0b0000111,
0b0000111,
0b0000111,
0b0000111,
0b0000111,
0b0000111,
0b0000111
};
flash byte charb[]={
0b1111111,
0b1111111,
0b1111111,
0b0000111,
0b0000111,
0b0000111,
0b0000111,
0b0000111
};
flash byte charc[]={
0b0000111,
0b0000111,
0b0000111,
0b0000111,
0b0000111,
0b1111111,
0b1111111,
0b1111111
};
/* function used to define user characters */
void define_char(char flash *pc,unsigned char char_code) //
{ char ir,ar; ar=(char_code<<3) | 0x40;
for (ir=0; ir<8; ir++) lcd_write_byte(ar++,*pc++); };
void main(void)
{
/* initialize the LCD for 2 lines & 16 columns */
lcd_init(16);
/* define user character 0 */
define_char(chara,1);
define_char(charb,2);
define_char(charc,3);
/* switch to writing in Display RAM */
while (1)
{ /* loop forever */
lcd_gotoxy(0,0);
lcd_putsf("\x01\x02");
lcd_gotoxy(0,1);
lcd_putsf("\x01\x03");
}
}- Microtech
- Поставщик валерьянки для Кота
- Сообщения: 2052
- Зарегистрирован: Вт ноя 03, 2009 21:02:38
- Откуда: Москва
- Контактная информация:
Re: Крупные цифры на текстовом ЖКИ
Хорошо получилось. Я тоже делал симпатичные шрифты, со скруглёнными уголками. Но надо искать, возможно, где-то осталась эта заготовка. Делал для 4х строчного ЖКИ.



