Свежие обсуждения
Микроконтроллеры

Цифровой термометр на МК и LCD nokia 3310

1 16 17

AHTOXA: Кодировка DOS, да. Мне так удобнее Перекодируй просто, например в редакторе Far.

Что касается вызова программатора, то за него отвечают строчки

program: $(hexfile)
@echo --- programming...
@$(programmer) $(prog_flags) "$(hexfile)"

замени последнюю строчку на вызов своего программатора.
___________________________________
Попробовал перекодировать и... и получил на экране абракадабру из иероглифов, а не русские буквы. Пробовал перекодировать и все файлы, и только один main.c
Видно кодировка DOS в этой проге очень важна. Но как тогда сделать чтоб в winavr нормально русские буквы выглядели? Может быть подмену страницы в реестре сделать? У нас на работе для какой то программы так делали.

Насчет прописывания программатора тоже не очень понял. В winavr применяется avrdude. Так ему флаги не понравились

 

serg_svd: Попробовал перекодировать и... и получил на экране абракадабру из иероглифов

А, совсем забыл про это. Надо ещё поменять шрифт и подправить nokia_putchar().
Вечером напишу.

serg_svd: В winavr применяется avrdude. Так ему флаги не понравились

Ну и флаги замени Оставь только "$(hexfile)".

 

Что-то не работало вчера тут...
Короче, чтоб был шрифт не ДОС, надо изменить процедуру:

void nokia_putchar(unsigned char ch)
{
	int pos;
	if (ch >= 'A')
		ch -= 'A' - 0x60;
	else
		ch -= 0x20;
	pos = ch * 5;
	for (ch = 5; ch; ch--)
		nokia_data(pgm_read_byte(&Font5x7[pos++]));
	nokia_data(0);
}

Только не будет буквы Ё.

 

AHTOXA: Короче, чтоб был шрифт не ДОС, надо изменить процедуру:
А комментарии для новичка??? Что и для чего менялось

 

serg_svd: А комментарии для новичка??? Что и для чего менялось

Дык, кодировка изменилась!

В ДОС-кодировке русские буквы начинаются с кода 0x80 (это буква "А"), идут до 0xAF ("п"), потом всякая белиберда, потом 0xE0("р") и до "я".

А в кодировке win-1251 русские буквы начинаются с 0xC0 ("А") и идут подряд до 0xFF ("я").

В моём шрифте не все буквы, для экономии памяти. Есть символы от пробела (0x20) до 0x7F, потом сразу идут русские буквы (начиная с позиции 0x60).

Поскольку теперь у тебя текст для вывода на ЖКИ в кодировке win, то проверяем, если это "А" или больше, то берём символы начиная с позиции 0x60 (ch -= 'A' - 0x60), иначе считаем, что это английские символы, и берём их начиная с позиции 0 (для этого из кода символа вычитаем 0x20).

 

AHTOXA: В моём шрифте не все буквы, для экономии памяти.
Так, если я правильно понял, то при компиляции программы, в память МК грузится не вся таблица символов, а только используемые? Или все же вся таблица?

 

Выкинуты символы от 0 до 1F и от 80 до С0.
Остальные грузятся (это файл font_dos_ru.inc).
Каждому символу соответствует 5 байт.
Дальше так. Ты пишешь: nokia_putchar('A');
По коду символа 'А' вычисляется позиция в шрифте и выводятся 5 байт.

 

АНТОХА собрал экран 3310 и тиньку прошил все работает только не могу разобраться с выводом на экран данных
перепробовал много вариантов понял как выводить текст , а вот вывести цифровое значение не получается. подскажите пожалуста

 

Я сразу писал, что тинька маловата для этого.
Вот, прилагаю доработанный проект, в котором есть функции для преобразования цифры в строку.

Добавились файлы util.c и util.h. Там есть функция
u08 * small_itoa(int value),
которая делает то, что нужно.

Это практически предел, ничего полезного больше в тиньку не влезет.
Можно конечно сократить шрифт, выкинув ненужные буквы. Но лучше всё же взять хотя бы мегу8.

145393.rar

 

У меня на данный момент с подправленной таблицей символов свободно 30 процентов места потом есть еще eprom
но вобще ты прав лучше использовать мегу8 или 64 так можно недумать влезет или нет. За архив спасибо завтра попробую и если все влезет выложу.