Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Чт ноя 11, 2010 16:20:45
Друг Кота
Карма: 67
Рейтинг сообщений: 1066
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19945 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
Как преобразовать число (unsigned int) для его вывода на дисплей, т.е. получить пять цифр: единицы, десятки, сотни и т.д. кроме функции BCD? Или кто как выводит числа, не используя чьи-то библиотеки(?) типа lcd.h?
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт ноя 12, 2010 09:56:33
Друг Кота
Карма: 67
Рейтинг сообщений: 1066
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19945 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
Roman Venom писал(а):
А можно уточнить. Просто число в каком-то регистре? П.С. Изучение С пока только в планах
Ну, во-первых, int занимает 2 байта. Во-вторых, оно лежит где-то в ОЗУ. Касаемо моего вопроса... Вроде получилось простым решением в лоб: делением на 10 (10², 10³ если понадобится) и последующим вычитанием
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Как преобразовать число (unsigned int) для его вывода на дисплей, т.е. получить пять цифр: единицы, десятки, сотни и т.д. кроме функции BCD? Или кто как выводит числа, не используя чьи-то библиотеки(?) типа lcd.h?
а стандартная libc - это тоже "чья-то" библиотека? ее можно использовать? а то функция itoa() простаивает напрасно...
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт ноя 12, 2010 12:17:04
Друг Кота
Карма: 67
Рейтинг сообщений: 1066
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19945 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
ARV писал(а):
а стандартная libc - это тоже "чья-то" библиотека? ее можно использовать? а то функция itoa() простаивает напрасно...
У меня в стандартной библиотеке есть только atoi()
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт ноя 12, 2010 13:49:28
Друг Кота
Карма: 67
Рейтинг сообщений: 1066
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19945 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
ARV писал(а):
sptrintf() тоже нет в стандратной библиотеке?
sprintf есть в стандартной библиотеке ввода-вывода Но в описании отсылают к printf, а она, как я понял, передаёт по UART'у. Это и ввело меня в заблуждение. Спасибо, ARV. Буду мучить её (sprinf). Будут вопросы - обязательно спрошу ещё.
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт ноя 12, 2010 14:22:27
Друг Кота
Карма: 67
Рейтинг сообщений: 1066
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19945 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
ARV писал(а):
я на всякий случай накропал вам функцию-аналог itoa() для unsigned int.... по аналогии можете сделать и для более крупных, если надо...
Спасибо! Теперь подобные вопросы я буду задавать тут: viewtopic.php?f=20&t=37190 (Вопросы по С/С++ (СИ)), где надеюсь увидеть Вас
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Всем привет! Хочу заюзать индикатор 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 и его аналогах
Добавлено: Пт ноя 26, 2010 13:46:41
Друг Кота
Карма: 67
Рейтинг сообщений: 1066
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19945 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
aam писал(а):
Неужели я задал такой тупой вопрос???
Да. Соберите, да посмотрите.
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Чтобы собрать, нужно купить детали. Вот куплю я этот индикатор, а потом окажется, что он не пашет - я что его выкидывать буду? А так может я куплю не 8х2, а 12х2 (если найду конечно).
Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Сб ноя 27, 2010 16:03:18
Друг Кота
Карма: 67
Рейтинг сообщений: 1066
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19945 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
aam писал(а):
Чтобы собрать, нужно купить детали. Вот куплю я этот индикатор, а потом окажется, что он не пашет - я что его выкидывать буду? А так может я куплю не 8х2, а 12х2 (если найду конечно).
Почему все так зациклились на всяких там смуляторах-шпротеусах? Почему сразу "не будет работать" и "выкидывать"??? В даташите всё четко прописано как инициализировать дисплей. Тупо сделать всё по даташиту, и будет вам счастье! В чём проблема? Не заработает - будем думать все вместе А уж покупать 2х12 вместо 2х8 (я правильно понял?) только потому что он есть в шпротеусе, и симуляция с ним прошла удачно — ИМХО, бред.
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
2x12 в протеусе тоже нет, там 2х16 и симулировать можно и на нем, но тема в другом. В библиотеке LCD.H в списке поддерживаемых индикаторов нет индикатора 2х8. И вообще, я даже больше склонялся к 2х12, т. к. можно больше информации вывести, а размеры у него (имеется ввиду плата) такие же как у 2х8, но вот 2х12 нигде в продаже не видел, а 2х8 есть и стоит всего 150 руб. Делаю я зарядник на 4 пальчиковых аккума. Впринципе 2х8 для зарядки вполне хватило бы (вывод состояния по каждому каналу или меню задания тока и емкости), но с индикатором 2х12 можно было бы еще отображать прошедшее время и установленный ток.
Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Сб ноя 27, 2010 17:53:16
Друг Кота
Карма: 67
Рейтинг сообщений: 1066
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19945 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
aam писал(а):
В библиотеке LCD.H в списке поддерживаемых индикаторов нет индикатора 2х8.
Ой-ой-ой. Кто-хороший не написал библиотеку... Какой плохой! А ведь выставить команду/данные на вход дисплея и дёрнуть ногой "Е" это так сложно! Проще разбираться в чьих-то каракулях.
aam писал(а):
а 2х8 есть и стоит всего 150 руб.
Да, есть такая тема Сам прикупил себе 2х8, пока валяется без дела.
А по сути... Все дисплеи представляются как 2х40. По кр. мере, адрес начала второй строки у всех один и тот же. Просто разная "область видимости" у дисплеев с разным количеством символов.
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
2x12 в протеусе тоже нет, там 2х16 и симулировать можно и на нем, но тема в другом. В библиотеке LCD.H в списке поддерживаемых индикаторов нет индикатора 2х8. И вообще, я даже больше склонялся к 2х12, т. к. можно больше информации вывести, а размеры у него (имеется ввиду плата) такие же как у 2х8, но вот 2х12 нигде в продаже не видел, а 2х8 есть и стоит всего 150 руб. Делаю я зарядник на 4 пальчиковых аккума. Впринципе 2х8 для зарядки вполне хватило бы (вывод состояния по каждому каналу или меню задания тока и емкости), но с индикатором 2х12 можно было бы еще отображать прошедшее время и установленный ток.
А нафига мне доставка? Там что самому нельзя забрать? А вот минимальная сумма у них 1000 руб. - это интересно, чего я на 1000 руб для себя там покупать буду??? ЗЫ: В общем, остается ходить по митинскому рынку или по магазинам.
Пробела с флагом занятости на 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; // совмещаем тетрады
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения