Крупные цифры на текстовом ЖКИ

Что бы еще такого сделать?... Предлагайте! Обсудим все!!!
Ответить
Собутыльник Сэра Мурра
Аватара пользователя
Сообщения: 2918
Зарегистрирован: Вт янв 10, 2006 00:26:45
Откуда: Челябинск

Сообщение WildCat »

Доброго времени суток, товарищи. Схожая тема про вывод графики на текстовый ЖКИ уже обсуждалась, однако сейчас возникла конкретная задача.
Нужно сделать электронные часы. Схема примитивная, на одной аврке. функции по мелочам - календари, будильники с музыкой сменной - это я уже продумал что и как. Возникает одна проблема. Вследствие ограничения в материалах, а так же просто ТЗ так велело, вывод нужно делать на простой текстовый ЖКИ 16*2. Все бы ничего, но вот если просто выводить цифры, они жутко мелкие получаются. Вот я и думаю, как бы научить индикатор всего в 2 строки выводить символами псевдографики хотя бы 4 большие цифры. Даже псу понятно, что одним черным блоком тут не обойтись. Но какие дополнительные 8 символов можно придумать, чтобы выводить качественые читаемые цифры для времени?
Реклама
Генеральный секретарь МЯУ
Аватара пользователя
Сообщения: 18910
Зарегистрирован: Пн сен 03, 2007 18:24:27
Откуда: Россия. Омск.

Сообщение SeregaT »

Где-то в примерах от CodeVisionAVR видел, как делать графику для отдельного блока (просто включая нужные пиксели). Наверное можно сделать по 4 таких блока на каждую цифру (может в виде массивов?) и затем выводить на дисплей.
Если получится, то можно будет выводить большие, качественные цифры, только наверное памяти будет нехило занимать такая прога.
Контактная информация:
Реклама
Собутыльник Сэра Мурра
Аватара пользователя
Сообщения: 2918
Зарегистрирован: Вт янв 10, 2006 00:26:45
Откуда: Челябинск

Сообщение WildCat »

да не, про подгрузку и включение пикселей я то знаю. Я просто придумать не могу, как должны эти фрагменты выглядеть, и как вывести их сразу больше 8? Динамическую индикацию тут особо не сделать.
Кста пишу на баскоме, с кодевижном - только если пальцем покажете, где все лежит :(
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

Вот этот самый пример.

По поводу памяти - нет, всего 8 байт на одно знакоместо потратиться + небольшой код по загрузке символа из флеша в RAM индикатора. Для какой-нибудь меги8 еще дохрена ресурсов останется. И на часики и на календарь хватит(при разумном кодинге конечно).
Вложения
lcd.txt
(1.45 КБ) 502 скачивания
Реклама
Эиком - электронные компоненты и радиодетали
Мучитель микросхем
Сообщения: 465
Зарегистрирован: Ср июн 21, 2006 08:24:32
Откуда: Лисичанск

Сообщение Radan »

Посмотри здесь как идею - http://www.mcselec.com/index.php?option ... &Itemid=57
Контактная информация:
Реклама
nds
Друг Кота
Аватара пользователя
Сообщения: 4772
Зарегистрирован: Вс май 25, 2008 19:47:47
Откуда: РФ

Сообщение nds »

если делать один символ из двух то можно например так Изображение
2B OR NOT 2B = FF
Контактная информация:
Реклама
Собутыльник Сэра Мурра
Аватара пользователя
Сообщения: 2918
Зарегистрирован: Вт янв 10, 2006 00:26:45
Откуда: Челябинск

Сообщение WildCat »

nds
Кошерно. То, что нужно. Только все линии, кроме той, что между строками, можно наверное сделать в два ряда пикселей, чтоб жирнее выглядело. Как раз 7 символов занимает!
А та ссылка как раз про этот вариант. Только дисплей у нас в два раза меньше :)
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2106
Зарегистрирован: Ср сен 17, 2008 14:32:15
Откуда: Старые Васюки

Сообщение Секретный кот »

Рваные какие цифры будут, вроде крупные а читаемость не особо :(
Контактная информация:
Генеральный секретарь МЯУ
Аватара пользователя
Сообщения: 18910
Зарегистрирован: Пн сен 03, 2007 18:24:27
Откуда: Россия. Омск.

Сообщение 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);
Контактная информация:
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

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
Вымогатель припоя
Аватара пользователя
Сообщения: 652
Зарегистрирован: Вс ноя 13, 2011 16:42:05
Откуда: Украина

Сообщение C@at »

Понимаю что тема старая, Но что поделать , у меня например только "проснулся" интерес, к этим большим цИфрам...
Наработки у людей по этому поводу есть...
Вот пример двух шрифтов
СпойлерИзображение
Изображение Изображение

Это взял здесь 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");     

      }
}
Теперь в массивы и на экран , вот тут и ничего не понятно...
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2055
Зарегистрирован: Вт ноя 03, 2009 21:02:38
Откуда: Москва

Сообщение Microtech »

Хорошо получилось. Я тоже делал симпатичные шрифты, со скруглёнными уголками. Но надо искать, возможно, где-то осталась эта заготовка. Делал для 4х строчного ЖКИ.
Контактная информация:
Ответить

Вернуться в «Умные мысли»