Работа с ЖКИ на контроллере HD44780 и его аналогах
- Roman Venom
- Сверлит текстолит когтями
- Сообщения: 1135
- Зарегистрирован: Сб июл 11, 2009 18:42:21
- Откуда: Украина, г.Николаев
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Как преобразовать число (unsigned int) для его вывода на дисплей, т.е. получить пять цифр: единицы, десятки, сотни и т.д. кроме функции BCD? Или кто как выводит числа, не используя чьи-то библиотеки(?) типа lcd.h?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Roman Venom
- Сверлит текстолит когтями
- Сообщения: 1135
- Зарегистрирован: Сб июл 11, 2009 18:42:21
- Откуда: Украина, г.Николаев
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Gudd-Head
А можно уточнить. Просто число в каком-то регистре?
П.С. Изучение С пока только в планах
Как преобразовать число (unsigned int)
А можно уточнить. Просто число в каком-то регистре?
П.С. Изучение С пока только в планах
Успех - императив!
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Roman Venom писал(а): А можно уточнить. Просто число в каком-то регистре? П.С. Изучение С пока только в планах
Ну, во-первых, int занимает 2 байта. Во-вторых, оно лежит где-то в ОЗУ.
Касаемо моего вопроса... Вроде получилось простым решением в лоб: делением на 10 (10², 10³ если понадобится) и последующим вычитанием
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Gudd-Head писал(а):Как преобразовать число (unsigned int) для его вывода на дисплей, т.е. получить пять цифр: единицы, десятки, сотни и т.д. кроме функции BCD? Или кто как выводит числа, не используя чьи-то библиотеки(?) типа lcd.h?
а стандартная libc - это тоже "чья-то" библиотека? ее можно использовать? а то функция itoa() простаивает напрасно...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
ARV писал(а):а стандартная libc - это тоже "чья-то" библиотека? ее можно использовать? а то функция itoa() простаивает напрасно...
У меня в стандартной библиотеке есть только atoi()
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
sptrintf() тоже нет в стандратной библиотеке?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
ARV писал(а):sptrintf() тоже нет в стандратной библиотеке?
sprintf есть в стандартной библиотеке ввода-вывода
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
я на всякий случай накропал вам функцию-аналог 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 и его аналогах
ARV писал(а):я на всякий случай накропал вам функцию-аналог itoa() для unsigned int.... по аналогии можете сделать и для более крупных, если надо...
Спасибо! Теперь подобные вопросы я буду задавать тут: viewtopic.php?f=20&t=37190 (Вопросы по С/С++ (СИ)), где надеюсь увидеть Вас
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Всем привет!
Хочу заюзать индикатор 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-я строчка выводится). А в натуре будет пахать?
Хочу заюзать индикатор 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-я строчка выводится). А в натуре будет пахать?
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Неужели я задал такой тупой вопрос???
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
aam писал(а):Неужели я задал такой тупой вопрос???
Да. Соберите, да посмотрите.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Чтобы собрать, нужно купить детали. Вот куплю я этот индикатор, а потом окажется, что он не пашет - я что его выкидывать буду? А так может я куплю не 8х2, а 12х2 (если найду конечно).
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
aam писал(а):Чтобы собрать, нужно купить детали. Вот куплю я этот индикатор, а потом окажется, что он не пашет - я что его выкидывать буду? А так может я куплю не 8х2, а 12х2 (если найду конечно).
Почему все так зациклились на всяких там смуляторах-шпротеусах? Почему сразу "не будет работать" и "выкидывать"??? В даташите всё четко прописано как инициализировать дисплей. Тупо сделать всё по даташиту, и будет вам счастье! В чём проблема? Не заработает - будем думать все вместе
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
2x12 в протеусе тоже нет, там 2х16 и симулировать можно и на нем, но тема в другом. В библиотеке LCD.H в списке поддерживаемых индикаторов нет индикатора 2х8.
И вообще, я даже больше склонялся к 2х12, т. к. можно больше информации вывести, а размеры у него (имеется ввиду плата) такие же как у 2х8, но вот 2х12 нигде в продаже не видел, а 2х8 есть и стоит всего 150 руб. Делаю я зарядник на 4 пальчиковых аккума. Впринципе 2х8 для зарядки вполне хватило бы (вывод состояния по каждому каналу или меню задания тока и емкости), но с индикатором 2х12 можно было бы еще отображать прошедшее время и установленный ток.
И вообще, я даже больше склонялся к 2х12, т. к. можно больше информации вывести, а размеры у него (имеется ввиду плата) такие же как у 2х8, но вот 2х12 нигде в продаже не видел, а 2х8 есть и стоит всего 150 руб. Делаю я зарядник на 4 пальчиковых аккума. Впринципе 2х8 для зарядки вполне хватило бы (вывод состояния по каждому каналу или меню задания тока и емкости), но с индикатором 2х12 можно было бы еще отображать прошедшее время и установленный ток.
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
aam писал(а):В библиотеке LCD.H в списке поддерживаемых индикаторов нет индикатора 2х8.
Ой-ой-ой. Кто-хороший не написал библиотеку... Какой плохой! А ведь выставить команду/данные на вход дисплея и дёрнуть ногой "Е" это так сложно! Проще разбираться в чьих-то каракулях.
aam писал(а):а 2х8 есть и стоит всего 150 руб.
Да, есть такая тема
А по сути... Все дисплеи представляются как 2х40. По кр. мере, адрес начала второй строки у всех один и тот же. Просто разная "область видимости" у дисплеев с разным количеством символов.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- olegators68
- Поставщик валерьянки для Кота
- Сообщения: 2253
- Зарегистрирован: Пн ноя 01, 2010 12:19:31
- Откуда: Серпухов
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
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
Только курьеру, два индикатора придется отдать
Вот блин, опять в галерее картину малевича вверх ногами повесили.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
olegators68 писал(а):Только курьеру, два индикатора придется отдать
А нафига мне доставка? Там что самому нельзя забрать?
А вот минимальная сумма у них 1000 руб. - это интересно, чего я на 1000 руб для себя там покупать буду???
ЗЫ: В общем, остается ходить по митинскому рынку или по магазинам.
-
T0lik
- Открыл глаза
- Сообщения: 44
- Зарегистрирован: Сб авг 07, 2010 18:38:37
- Откуда: Таганрог
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Пробела с флагом занятости на 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;
}