Нужно сделать электронные часы. Схема примитивная, на одной аврке. функции по мелочам - календари, будильники с музыкой сменной - это я уже продумал что и как. Возникает одна проблема. Вследствие ограничения в материалах, а так же просто ТЗ так велело, вывод нужно делать на простой текстовый ЖКИ 16*2. Все бы ничего, но вот если просто выводить цифры, они жутко мелкие получаются. Вот я и думаю, как бы научить индикатор всего в 2 строки выводить символами псевдографики хотя бы 4 большие цифры. Даже псу понятно, что одним черным блоком тут не обойтись. Но какие дополнительные 8 символов можно придумать, чтобы выводить качественые читаемые цифры для времени?
Крупные цифры на текстовом ЖКИ
Доброго времени суток, товарищи. Схожая тема про вывод графики на текстовый ЖКИ уже обсуждалась, однако сейчас возникла конкретная задача.
Нужно сделать электронные часы. Схема примитивная, на одной аврке. функции по мелочам - календари, будильники с музыкой сменной - это я уже продумал что и как. Возникает одна проблема. Вследствие ограничения в материалах, а так же просто ТЗ так велело, вывод нужно делать на простой текстовый ЖКИ 16*2. Все бы ничего, но вот если просто выводить цифры, они жутко мелкие получаются. Вот я и думаю, как бы научить индикатор всего в 2 строки выводить символами псевдографики хотя бы 4 большие цифры. Даже псу понятно, что одним черным блоком тут не обойтись. Но какие дополнительные 8 символов можно придумать, чтобы выводить качественые читаемые цифры для времени?
Нужно сделать электронные часы. Схема примитивная, на одной аврке. функции по мелочам - календари, будильники с музыкой сменной - это я уже продумал что и как. Возникает одна проблема. Вследствие ограничения в материалах, а так же просто ТЗ так велело, вывод нужно делать на простой текстовый ЖКИ 16*2. Все бы ничего, но вот если просто выводить цифры, они жутко мелкие получаются. Вот я и думаю, как бы научить индикатор всего в 2 строки выводить символами псевдографики хотя бы 4 большие цифры. Даже псу понятно, что одним черным блоком тут не обойтись. Но какие дополнительные 8 символов можно придумать, чтобы выводить качественые читаемые цифры для времени?
- Реклама
Где-то в примерах от CodeVisionAVR видел, как делать графику для отдельного блока (просто включая нужные пиксели). Наверное можно сделать по 4 таких блока на каждую цифру (может в виде массивов?) и затем выводить на дисплей.
Если получится, то можно будет выводить большие, качественные цифры, только наверное памяти будет нехило занимать такая прога.
Если получится, то можно будет выводить большие, качественные цифры, только наверное памяти будет нехило занимать такая прога.
да не, про подгрузку и включение пикселей я то знаю. Я просто придумать не могу, как должны эти фрагменты выглядеть, и как вывести их сразу больше 8? Динамическую индикацию тут особо не сделать.
Кста пишу на баскоме, с кодевижном - только если пальцем покажете, где все лежит
Кста пишу на баскоме, с кодевижном - только если пальцем покажете, где все лежит
Вот этот самый пример.
По поводу памяти - нет, всего 8 байт на одно знакоместо потратиться + небольшой код по загрузке символа из флеша в RAM индикатора. Для какой-нибудь меги8 еще дохрена ресурсов останется. И на часики и на календарь хватит(при разумном кодинге конечно).
По поводу памяти - нет, всего 8 байт на одно знакоместо потратиться + небольшой код по загрузке символа из флеша в RAM индикатора. Для какой-нибудь меги8 еще дохрена ресурсов останется. И на часики и на календарь хватит(при разумном кодинге конечно).
- Вложения
-
- lcd.txt
- (1.45 КБ) 502 скачивания
Посмотри здесь как идею - http://www.mcselec.com/index.php?option ... &Itemid=57
- Реклама
если делать один символ из двух то можно например так 

2B OR NOT 2B = FF
nds
Кошерно. То, что нужно. Только все линии, кроме той, что между строками, можно наверное сделать в два ряда пикселей, чтоб жирнее выглядело. Как раз 7 символов занимает!
А та ссылка как раз про этот вариант. Только дисплей у нас в два раза меньше
Кошерно. То, что нужно. Только все линии, кроме той, что между строками, можно наверное сделать в два ряда пикселей, чтоб жирнее выглядело. Как раз 7 символов занимает!
А та ссылка как раз про этот вариант. Только дисплей у нас в два раза меньше
Рваные какие цифры будут, вроде крупные а читаемость не особо 
Подскажите, как сделать, чтобы выводился не один рисунок, а несколько и в нужном порядке. Я сделал несколько цифр, но выводить нужные не получается. Тоесть они выводятся, но непоймёшь как и иногда искажённые.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);
Ну тебе нужно просто сделать функцию которую ты будешь кормить симфволом/цифрой, а она по своей логике будет переводить эти символы в эти рисунки и вызывать функцию отправки рисунков на ЖКИ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
Понимаю что тема старая, Но что поделать , у меня например только "проснулся" интерес, к этим большим цИфрам...
Наработки у людей по этому поводу есть...
Вот пример двух шрифтов

Это взял здесь 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");
}
}Хорошо получилось. Я тоже делал симпатичные шрифты, со скруглёнными уголками. Но надо искать, возможно, где-то осталась эта заготовка. Делал для 4х строчного ЖКИ.


