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

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
Roman Venom
Сверлит текстолит когтями
Сообщения: 1135
Зарегистрирован: Сб июл 11, 2009 18:42:21
Откуда: Украина, г.Николаев

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

Сообщение Roman Venom »

всё работает :))
Успех - императив!
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

Сообщение Gudd-Head »

Как преобразовать число (unsigned int) для его вывода на дисплей, т.е. получить пять цифр: единицы, десятки, сотни и т.д. кроме функции BCD? Или кто как выводит числа, не используя чьи-то библиотеки(?) типа lcd.h?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
Roman Venom
Сверлит текстолит когтями
Сообщения: 1135
Зарегистрирован: Сб июл 11, 2009 18:42:21
Откуда: Украина, г.Николаев

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

Сообщение Roman Venom »

Gudd-Head
Как преобразовать число (unsigned int)

А можно уточнить. Просто число в каком-то регистре?
П.С. Изучение С пока только в планах :(
Успех - императив!
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

Сообщение Gudd-Head »

Roman Venom писал(а): А можно уточнить. Просто число в каком-то регистре? П.С. Изучение С пока только в планах :(

Ну, во-первых, int занимает 2 байта. Во-вторых, оно лежит где-то в ОЗУ.
Касаемо моего вопроса... Вроде получилось простым решением в лоб: делением на 10 (10², 10³ если понадобится) и последующим вычитанием :)
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

Gudd-Head писал(а):Как преобразовать число (unsigned int) для его вывода на дисплей, т.е. получить пять цифр: единицы, десятки, сотни и т.д. кроме функции BCD? Или кто как выводит числа, не используя чьи-то библиотеки(?) типа lcd.h?

а стандартная libc - это тоже "чья-то" библиотека? ее можно использовать? а то функция itoa() простаивает напрасно...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

Сообщение Gudd-Head »

ARV писал(а):а стандартная libc - это тоже "чья-то" библиотека? ее можно использовать? а то функция itoa() простаивает напрасно...

У меня в стандартной библиотеке есть только atoi() :cry:
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

sptrintf() тоже нет в стандратной библиотеке?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

Сообщение Gudd-Head »

ARV писал(а):sptrintf() тоже нет в стандратной библиотеке?

sprintf есть в стандартной библиотеке ввода-вывода :) Но в описании отсылают к printf, а она, как я понял, передаёт по UART'у. Это и ввело меня в заблуждение. Спасибо, ARV. Буду мучить её (sprinf). Будут вопросы - обязательно спрошу ещё.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

я на всякий случай накропал вам функцию-аналог itoa() для unsigned int.... по аналогии можете сделать и для более крупных, если надо...

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

char* i2a(unsigned int num){
   static char str[6];
   char *ptr;
   for(ptr = &str[4]; ; ptr--){
      *ptr = num % 10 + '0';
       num /= 10;
       if(!num) return ptr;
   }
}
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

Сообщение Gudd-Head »

ARV писал(а):я на всякий случай накропал вам функцию-аналог itoa() для unsigned int.... по аналогии можете сделать и для более крупных, если надо...

Спасибо! Теперь подобные вопросы я буду задавать тут: viewtopic.php?f=20&t=37190 (Вопросы по С/С++ (СИ)), где надеюсь увидеть Вас :))
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
aam
Собутыльник Кота
Сообщения: 2994
Зарегистрирован: Сб фев 20, 2010 14:00:12
Откуда: Москва

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

Сообщение aam »

Всем привет!
Хочу заюзать индикатор WH0802. Но в мануале на CodeVision http://www.hpinfotech.ro/cvavrman.zip прочитал:
The following LCD formats are supported in alcd.h: 1x8, 2x12, 3x12, 1x16, 2x16, 2x20, 4x20, 2x24 and 2x40 characters.
Инициализировал ЖКИ на 8 символов, в Протеусе подцепил ЖКИ 16х2 (8х2 там нет) - вроде все пашет (2-я строчка выводится). А в натуре будет пахать?
Аватара пользователя
aam
Собутыльник Кота
Сообщения: 2994
Зарегистрирован: Сб фев 20, 2010 14:00:12
Откуда: Москва

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

Сообщение aam »

Неужели я задал такой тупой вопрос???
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

Сообщение Gudd-Head »

aam писал(а):Неужели я задал такой тупой вопрос???

Да. Соберите, да посмотрите.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
aam
Собутыльник Кота
Сообщения: 2994
Зарегистрирован: Сб фев 20, 2010 14:00:12
Откуда: Москва

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

Сообщение aam »

Чтобы собрать, нужно купить детали. Вот куплю я этот индикатор, а потом окажется, что он не пашет - я что его выкидывать буду? А так может я куплю не 8х2, а 12х2 (если найду конечно).
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

Сообщение Gudd-Head »

aam писал(а):Чтобы собрать, нужно купить детали. Вот куплю я этот индикатор, а потом окажется, что он не пашет - я что его выкидывать буду? А так может я куплю не 8х2, а 12х2 (если найду конечно).

Почему все так зациклились на всяких там смуляторах-шпротеусах? Почему сразу "не будет работать" и "выкидывать"??? В даташите всё четко прописано как инициализировать дисплей. Тупо сделать всё по даташиту, и будет вам счастье! В чём проблема? Не заработает - будем думать все вместе :) А уж покупать 2х12 вместо 2х8 (я правильно понял?) только потому что он есть в шпротеусе, и симуляция с ним прошла удачно — ИМХО, бред.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
aam
Собутыльник Кота
Сообщения: 2994
Зарегистрирован: Сб фев 20, 2010 14:00:12
Откуда: Москва

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

Сообщение aam »

2x12 в протеусе тоже нет, там 2х16 и симулировать можно и на нем, но тема в другом. В библиотеке LCD.H в списке поддерживаемых индикаторов нет индикатора 2х8.
И вообще, я даже больше склонялся к 2х12, т. к. можно больше информации вывести, а размеры у него (имеется ввиду плата) такие же как у 2х8, но вот 2х12 нигде в продаже не видел, а 2х8 есть и стоит всего 150 руб. Делаю я зарядник на 4 пальчиковых аккума. Впринципе 2х8 для зарядки вполне хватило бы (вывод состояния по каждому каналу или меню задания тока и емкости), но с индикатором 2х12 можно было бы еще отображать прошедшее время и установленный ток.
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

Сообщение Gudd-Head »

aam писал(а):В библиотеке LCD.H в списке поддерживаемых индикаторов нет индикатора 2х8.

Ой-ой-ой. Кто-хороший не написал библиотеку... Какой плохой! А ведь выставить команду/данные на вход дисплея и дёрнуть ногой "Е" это так сложно! Проще разбираться в чьих-то каракулях.
aam писал(а):а 2х8 есть и стоит всего 150 руб.

Да, есть такая тема 8) Сам прикупил себе 2х8, пока валяется без дела.

А по сути... Все дисплеи представляются как 2х40. По кр. мере, адрес начала второй строки у всех один и тот же. Просто разная "область видимости" у дисплеев с разным количеством символов.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
olegators68
Поставщик валерьянки для Кота
Сообщения: 2253
Зарегистрирован: Пн ноя 01, 2010 12:19:31
Откуда: Серпухов

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

Сообщение olegators68 »

aam писал(а):2x12 в протеусе тоже нет, там 2х16 и симулировать можно и на нем, но тема в другом. В библиотеке LCD.H в списке поддерживаемых индикаторов нет индикатора 2х8.
И вообще, я даже больше склонялся к 2х12, т. к. можно больше информации вывести, а размеры у него (имеется ввиду плата) такие же как у 2х8, но вот 2х12 нигде в продаже не видел, а 2х8 есть и стоит всего 150 руб. Делаю я зарядник на 4 пальчиковых аккума. Впринципе 2х8 для зарядки вполне хватило бы (вывод состояния по каждому каналу или меню задания тока и емкости), но с индикатором 2х12 можно было бы еще отображать прошедшее время и установленный ток.


Есть:http://icdarom.ru/show_cat3.php?catid=2405000&grid=2400000&idcateg=2405130
Только курьеру, два индикатора придется отдать :(
Вот блин, опять в галерее картину малевича вверх ногами повесили.
Аватара пользователя
aam
Собутыльник Кота
Сообщения: 2994
Зарегистрирован: Сб фев 20, 2010 14:00:12
Откуда: Москва

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

Сообщение aam »

olegators68 писал(а):Только курьеру, два индикатора придется отдать

А нафига мне доставка? Там что самому нельзя забрать?
А вот минимальная сумма у них 1000 руб. - это интересно, чего я на 1000 руб для себя там покупать буду???
ЗЫ: В общем, остается ходить по митинскому рынку или по магазинам.
T0lik
Открыл глаза
Сообщения: 44
Зарегистрирован: Сб авг 07, 2010 18:38:37
Откуда: Таганрог
Контактная информация:

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

Сообщение T0lik »

Пробела с флагом занятости на fdcc1602l
В чем может быть пробела, если вместо цикла написать задержку, то все будет работать

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

   
/* Ожидаем готовности LCd
LCD_DDRDATA &= 0x0F; (LCD_PORTCTRL |=  LCD_wire_RW) // чтение из ЖКИ
(LCD_PORTCTRL |=  LCD_wire_RS) // на шине данные
LCD_BUSY_FLAG=7
 while(0 != (LCD_BUSY_FLAG & LCD_Bus_Read()))
    {   
    }

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

// Установка цикла обмена по шине данных
#define LCD_STARTSTB()      (LCD_PORTCTRL |=  LCD_wire_E)  // начало строба обмена данными
#define LCD_ENDSTB()        (LCD_PORTCTRL &= ~LCD_wire_E)  // окончание строба обмена данными


/******************************************************************************
Цикл чтения из ЖКИ
Перед циклом должны быть произведены установки линий:
LCD_wire_RS(команда/данные)
LCD_wire_RW(запись/чение) = 1

ПРЕДУПРЕЖДЕНИЕ!!! Во избежание порчи данных в неиспользуемых линиях порта данных
ЖКИ в 4-х битном режиме, желательно запрещать прерывания, код которых
взаимодействует со свободными линиями порта, либо в прерывании запоминать
состояние регистров порта, перед внесением изменений, и восстанавливать данные
по завершению прерывания
*******************************************************************************/
UCHAR LCD_Bus_Read(void)
{   
    UCHAR data;
    LCD_STARTSTB();      // начало строба
    NOP();            // необходимо для установки состояния на линии LCD_wire_E


    data = LCD_PINDATA; // читаем данные
    LCD_ENDSTB();       // конец строба
   
#ifdef LCD_4BIT_BUS_REQURED
   
    UCHAR temp = data;          // запоминаем старшую тетраду
   
    LCD_STARTSTB();       // начало строба
    NOP();         // необходимо для установки состояния на линии LCD_wire_E
    data = LCD_PINDATA;    // читаем младшую тетраду
    LCD_ENDSTB();       // конец строба


    SWAP(data);         // младшую тетраду на свое место
    data &= 0x0f;      // очищаем старшую тетраду в data
    temp &= 0xf0;      // очищаем младшую тетраду в temp
    data |= temp;      // совмещаем тетрады
   
#endif//LCD_4BIT_BUS_REQURED

    return data;
}
Ответить

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