Работа с ЖКИ на контроллере HD44780 и его аналогах

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
levaclaus
Потрогал лапой паяльник
Сообщения: 302
Зарегистрирован: Пн янв 07, 2008 16:56:28
Откуда: Минск

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение levaclaus »

жк русифицировал, спасибо. Теперь вопрос вот какой, как двигать часть строки. Строка 40 символов, 14 заняты статичной информацией. На оставшиеся 26 может вывалиться из буфера 120 символов. Обрезать - не красиво. В принципе, известно количество принятых символов в этом буфере. Например их 50?
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Jack_A »

Ну и в чем вопрос состоит? В 26 знакомест втиснуть 50 или 120 символов? Отобрать из них нужные, остальные в ... ? И чем в этой неразрешихе форумчане могут помочь ?
Можно организовать бегущую строку.
Изображение
Аватара пользователя
Eprinter
Опытный кот
Сообщения: 802
Зарегистрирован: Сб дек 19, 2009 14:51:11
Откуда: Нашенский

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Eprinter »

СКАЗОЧНИК писал(а):Итак... Благодарю всех, кто помог. Выкладываю крайний результат работы, больше переделывать его не буду, ибо считаю достаточным.

Огромное спасибо!
Отличный код, именно то, что нужно - ассемблер, 4 линии, разные порты, заработал сразу. Сэкономил кучу времени :beer:
[color=#006699]In der großen Familie nicht kluven klatz-klatz![/color]
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение СКАЗОЧНИК »

Благодарю за отзыв.
Однако, я бы потестировал его какое-то время на наличие каких-нибудь косяков. И еще допилил бы чуток, там стоит добавить кусочек, который бы проверял ответ от ЖКИ (флаг занятости) и если он долго не приходит, по таймауту делал бы переинициализацию. :) Несколько страниц выше кто-то про это говорил.

З.Ы. Я же пытался сделать его максимально компактным по занимаемой памяти.
Станислав
12val12
Потрогал лапой паяльник
Сообщения: 315
Зарегистрирован: Пт янв 29, 2010 19:42:27

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение 12val12 »

Покажите пожалуйста пример на CV AVR (мега 8-16 или 8515-8535)
где выводится значение перменной на экран
фуета типа этой
"void lcd_puts(unsigned char *str)"
"cd_putchar(char[song[t]]);"
не интересует совсем
ух ты.... показывает
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Аlex »

12val12 писал(а): фуета типа этой
"void lcd_puts(unsigned char *str)"
"cd_putchar(char[song[t]]);"
не интересует совсем
В таком случае, скажите нам, что интересует.
Я, например, кроме вывода через строку, вариантов не вижу.
12val12
Потрогал лапой паяльник
Сообщения: 315
Зарегистрирован: Пт янв 29, 2010 19:42:27

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение 12val12 »

значения двух перменных
буквы и прочее кавно типа "хелло ворлд" не интересуетт
весь интернет в этом овне вывода перемнных нет.!
вот процедура для графич экрана

void print_longint_short (unsigned long int s)
{
unsigned char c9,c8,c7,c6,c5,c4,c3,c2,c1,c0;
c9=0; c8=0;c7=0;c6=0;c5=0;c4=0; // c3=0;c2=0;c1=0;

while (s>=1000000000){s-=1000000000;c9++;}
while (s>=100000000){s-=100000000;c8++;}
while (s>=10000000){s-=10000000;c7++;}
while (s>=1000000){s-=1000000;c6++;}
while (s>=100000){s-=100000;c5++;}
while (s>=10000){s-=10000;c4++;}
while (s>=1000){s-=1000;c3++;}
while (s>=100){s-=100;c2++;}
while (s>=10){s-=10;c1++;}
c0=s;
if (c9>0) { print_char(c9); }
if (c9>0 | c8>0 ) { print_char(c8); }
if (c9>0 | c8>0 | c7>0 ) { print_char(c7); }
if (c9>0 | c8>0 | c7>0 | c6>0 ) { print_char(c6); }
print_char(c5);
print_char(c4);
print_char(c3);
}

все понятно
не видел программ с таким же для HD44780 , а ведь для него еще проще чем для графич LCD -там символы в ПЗУ
ух ты.... показывает
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Аlex »

12val12 писал(а):вот процедура для графич экрана

..........
..........
if (c9>0) { print_char(c9); }
if (c9>0 | c8>0 ) { print_char(c8); }
if (c9>0 | c8>0 | c7>0 ) { print_char(c7); }
if (c9>0 | c8>0 | c7>0 | c6>0 ) { print_char(c6); }
print_char(c5);
print_char(c4);
print_char(c3);
.......
......
Тогда совсем не понятно, учитывая, что @уета типа print_char - не интересует.
Вы уж определитесь, что вам нужно и что интересует.
12val12
Потрогал лапой паяльник
Сообщения: 315
Зарегистрирован: Пт янв 29, 2010 19:42:27

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение 12val12 »

ВЫВЕСТИ 2 ПЕЕРМЕННЫХ ЛОНГ
1 ШТ В ВЕРХНЮЮ СТРОКУ
1 ШТ В НИЖНЮЮ СТРОКУ
ХОЧУ ГОТОВЫЙ ПРИМЕР С ПЕРЕМЕННЫМИ
Последний раз редактировалось 12val12 Пт мар 04, 2016 18:12:19, всего редактировалось 1 раз.
ух ты.... показывает
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение WiseLord »

Не понимаю проблемы. Нужно вывести цифру i - выводим её код (0x30 + i) из таблицы символов. Нужно вывести число - разбиваем на цифры и выводим.
12val12
Потрогал лапой паяльник
Сообщения: 315
Зарегистрирован: Пт янв 29, 2010 19:42:27

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение 12val12 »

WiseLord писал(а):Не понимаю проблемы. Нужно вывести цифру i - выводим её код (0x30 + i) из таблицы символов. Нужно вывести число - разбиваем на цифры и выводим.

да именно это ! но хочется готовый пример нигде нет
ух ты.... показывает
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение WiseLord »

А чем тот же код выше не устраивает? Вполне себе должен работать, разве что там в print_char добавлять 0x30 (код '0') надо будет.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Аlex »

12val12 писал(а):ВЫВЕСТИ 2 ПЕЕРМЕННЫХ ЛОНГ
1 ШТ В ВЕРХНЮЮ СТРОКУ
1 ШТ В НИЖНЮЮ СТРОКУ
ХОЧУ ГОТОВЫЙ ПРИМЕР С ПЕРЕМЕННЫМИ
А чё орать то так ?
Вы сами говорите, что фуета типа вывода char вас не интересует. Как тогда вывести, скажите ?
А то "Помогите вывести символы", но вывод символов не интересует. Как Вас понять ? :)
12val12
Потрогал лапой паяльник
Сообщения: 315
Зарегистрирован: Пт янв 29, 2010 19:42:27

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение 12val12 »

спасибо прийдется писать самому
выложу
ух ты.... показывает
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Аlex »

12val12 писал(а):прийдется писать самому
Открою Вам секрет. Все, кто пишет программы, пишут их сами :)
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение WiseLord »

12val12 писал(а):прийдется писать самому
выложу
Вряд ли полученный код будет лучше чем любой другой подобный, так что смысла особого выкладывать нет. Это то, что делается походя и не представляет никакого алгоритмического интереса.
12val12
Потрогал лапой паяльник
Сообщения: 315
Зарегистрирован: Пт янв 29, 2010 19:42:27

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение 12val12 »

написал . можно улучшить?

Код: Выделить всё

/*******************************************************
This program was created by the
CodeWizardAVR V3.12 Advanced
Automatic Program Generator
© Copyright 1998-2014 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project :1602 display
Version : 1
Date    : 28.12.2014
Author  :  Serg
Company :  Good-chip.in.ua      + 12va12
Comments:


Chip type               : ATmega8
Program type            : Application
AVR Core Clock frequency: 1,000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 256
*******************************************************/

#include <mega8.h>
#include <delay.h> //Библиотека задержки
#include <alcd.h> // Alphanumeric LCD functions

  unsigned long k;
  void print_longint (unsigned char Nstr, unsigned long int s)   
  {
  unsigned char  C9,C8,C7,C6,C5,C4,C3,C2,C1,C0;       
   C9=0;C8=0;C7=0;C6=0;C5=0;C4=0;C3=0;C2=0;C1=0;C0=0;   
 while (s>=1000000000){s-=1000000000;C9++;}   
 while (s>=100000000){s-=100000000;C8++;}   
 while (s>=10000000){s-=10000000;C7++;}   
 while (s>=1000000){s-=1000000;C6++;}   
 while (s>=100000){s-=100000;C5++;}     
 while (s>=10000){s-=10000;C4++;}
 while (s>=1000){s-=1000;C3++;}
 while (s>=100){s-=100;C2++;}
 while (s>=10){s-=10;C1++;}
 C0=s;     
            lcd_gotoxy(3,Nstr)  ;lcd_putchar(0x30 + C9);
            lcd_gotoxy(4,Nstr)  ;lcd_putchar(0x30 + C8);
            lcd_gotoxy(5,Nstr)  ;lcd_putchar(0x30 + C7);
            lcd_gotoxy(6,Nstr)  ;lcd_putchar(0x30 + C6);
            lcd_gotoxy(7,Nstr)  ;lcd_putchar(0x30 + C5);
            lcd_gotoxy(8,Nstr)  ;lcd_putchar(0x30 + C4);
            lcd_gotoxy(9,Nstr)  ;lcd_putchar(0x30 + C3); 
            lcd_gotoxy(10,Nstr) ;lcd_putchar(0x27);     
            lcd_gotoxy(11,Nstr) ;lcd_putchar(0x30 + C2);
            lcd_gotoxy(12,Nstr) ;lcd_putchar(0x30 + C1);
            lcd_gotoxy(13,Nstr) ;lcd_putchar(0x30 + C0);
          } 

void main(void)
{
// Alphanumeric LCD Инициализация
// Connections are specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTD Bit 0
// RD - PORTD Bit 1
// EN - PORTD Bit 2
// D4 - PORTD Bit 4
// D5 - PORTD Bit 5
// D6 - PORTD Bit 6
// D7 - PORTD Bit 7
// количество символов: 16
lcd_init(16);

while (1)
      {
     lcd_puts("good-chip.in.ua");// вывести надпись good-chip.in.ua
     delay_ms(300);   //подождать 300 милисекунд
     lcd_clear();      //очистить дисплей   
     lcd_puts("Radio electronics as a hobby");  //вывести надпись Radio electronics as a hobby
     delay_ms(300); //подождать 300 милисекунд   
      lcd_clear();      //очистить дисплей       
           for (k=0;k<4000000000;k++)
           {     
       print_longint(0,4000000000-k);   
       print_longint(1,k);   
       }
     delay_ms(1000); //подождать 1000 милисекунд   
     lcd_clear();    //очистить дисплей   
      }
}

ух ты.... показывает
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Аlex »

12val12 писал(а):можно улучшить?
Можно. Главное - зачем ? Если работает, то пусть себе работает. "Лучшее - враг хорошего" (с) :)
Кстати, а работает ? Что показывает ? :)
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение ARV »

комментарии в коде убивают :(

Код: Выделить всё

 с = 2 * 2; // це равно два умножить на два
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Аlex »

Чисто по-хохляцки :))
Ответить

Вернуться в «Периферия»