Страница 24 из 123

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

Добавлено: Чт ноя 11, 2010 01:17:01
Roman Venom
всё работает :))

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

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

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

Добавлено: Чт ноя 11, 2010 17:37:16
Roman Venom
Gudd-Head
Как преобразовать число (unsigned int)
А можно уточнить. Просто число в каком-то регистре?
П.С. Изучение С пока только в планах :(

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

Добавлено: Пт ноя 12, 2010 09:56:33
Gudd-Head
Roman Venom писал(а): А можно уточнить. Просто число в каком-то регистре? П.С. Изучение С пока только в планах :(
Ну, во-первых, int занимает 2 байта. Во-вторых, оно лежит где-то в ОЗУ.
Касаемо моего вопроса... Вроде получилось простым решением в лоб: делением на 10 (10², 10³ если понадобится) и последующим вычитанием :)

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

Добавлено: Пт ноя 12, 2010 11:56:36
ARV
Gudd-Head писал(а):Как преобразовать число (unsigned int) для его вывода на дисплей, т.е. получить пять цифр: единицы, десятки, сотни и т.д. кроме функции BCD? Или кто как выводит числа, не используя чьи-то библиотеки(?) типа lcd.h?
а стандартная libc - это тоже "чья-то" библиотека? ее можно использовать? а то функция itoa() простаивает напрасно...

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

Добавлено: Пт ноя 12, 2010 12:17:04
Gudd-Head
ARV писал(а):а стандартная libc - это тоже "чья-то" библиотека? ее можно использовать? а то функция itoa() простаивает напрасно...
У меня в стандартной библиотеке есть только atoi() :cry:

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

Добавлено: Пт ноя 12, 2010 13:18:38
ARV
sptrintf() тоже нет в стандратной библиотеке?

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

Добавлено: Пт ноя 12, 2010 13:49:28
Gudd-Head
ARV писал(а):sptrintf() тоже нет в стандратной библиотеке?
sprintf есть в стандартной библиотеке ввода-вывода :) Но в описании отсылают к printf, а она, как я понял, передаёт по UART'у. Это и ввело меня в заблуждение. Спасибо, ARV. Буду мучить её (sprinf). Будут вопросы - обязательно спрошу ещё.

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

Добавлено: Пт ноя 12, 2010 14:19:27
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;
   }
}

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

Добавлено: Пт ноя 12, 2010 14:22:27
Gudd-Head
ARV писал(а):я на всякий случай накропал вам функцию-аналог itoa() для unsigned int.... по аналогии можете сделать и для более крупных, если надо...
Спасибо! Теперь подобные вопросы я буду задавать тут: http://radiokot.ru/forum/viewtopic.php?f=20&t=37190 (Вопросы по С/С++ (СИ)), где надеюсь увидеть Вас :))

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

Добавлено: Чт ноя 25, 2010 08:38:33
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-я строчка выводится). А в натуре будет пахать?

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

Добавлено: Пт ноя 26, 2010 13:10:29
aam
Неужели я задал такой тупой вопрос???

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

Добавлено: Пт ноя 26, 2010 13:46:41
Gudd-Head
aam писал(а):Неужели я задал такой тупой вопрос???
Да. Соберите, да посмотрите.

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

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

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

Добавлено: Сб ноя 27, 2010 16:03:18
Gudd-Head
aam писал(а):Чтобы собрать, нужно купить детали. Вот куплю я этот индикатор, а потом окажется, что он не пашет - я что его выкидывать буду? А так может я куплю не 8х2, а 12х2 (если найду конечно).
Почему все так зациклились на всяких там смуляторах-шпротеусах? Почему сразу "не будет работать" и "выкидывать"??? В даташите всё четко прописано как инициализировать дисплей. Тупо сделать всё по даташиту, и будет вам счастье! В чём проблема? Не заработает - будем думать все вместе :) А уж покупать 2х12 вместо 2х8 (я правильно понял?) только потому что он есть в шпротеусе, и симуляция с ним прошла удачно — ИМХО, бред.

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

Добавлено: Сб ноя 27, 2010 17:39:38
aam
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
Gudd-Head
aam писал(а):В библиотеке LCD.H в списке поддерживаемых индикаторов нет индикатора 2х8.
Ой-ой-ой. Кто-хороший не написал библиотеку... Какой плохой! А ведь выставить команду/данные на вход дисплея и дёрнуть ногой "Е" это так сложно! Проще разбираться в чьих-то каракулях.
aam писал(а):а 2х8 есть и стоит всего 150 руб.
Да, есть такая тема 8) Сам прикупил себе 2х8, пока валяется без дела.

А по сути... Все дисплеи представляются как 2х40. По кр. мере, адрес начала второй строки у всех один и тот же. Просто разная "область видимости" у дисплеев с разным количеством символов.

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

Добавлено: Вт ноя 30, 2010 16:49:14
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=2 ... eg=2405130
Только курьеру, два индикатора придется отдать :(

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

Добавлено: Вт ноя 30, 2010 19:58:09
aam
olegators68 писал(а):Только курьеру, два индикатора придется отдать
А нафига мне доставка? Там что самому нельзя забрать?
А вот минимальная сумма у них 1000 руб. - это интересно, чего я на 1000 руб для себя там покупать буду???
ЗЫ: В общем, остается ходить по митинскому рынку или по магазинам.

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

Добавлено: Сб дек 11, 2010 17:12:37
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;
}