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

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Alkul
Держит паяльник хвостом
Сообщения: 933
Зарегистрирован: Ср апр 13, 2011 11:09:20
Откуда: Екатеринбург

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

Сообщение Alkul »

Volgol_555 писал(а):CodeVision предлагает только порты D и B, но там мне нужны выходы под USART и внешний кварц. Оно то понятно что нет в настройках CodeWizard подключение к порту С, потому что С.6 - это RESET.

Я ж Вам уже писал в другой теме - пробуйте разные варианты.
Почему бы, например, не подключить LCD на старшие разряды порта D, которые свободны? А для цепей управления почему бы не задействовать разряды PB0, PB1, PB2 порта B?
Вам всего-то нужно 4 линии данных и 3 линии управления.
Аватара пользователя
Volgol_555
Потрогал лапой паяльник
Сообщения: 301
Зарегистрирован: Пт сен 23, 2011 13:13:51
Откуда: Минск
Контактная информация:

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

Сообщение Volgol_555 »

Alkul писал(а):
Volgol_555 писал(а):CodeVision предлагает только порты D и B, но там мне нужны выходы под USART и внешний кварц. Оно то понятно что нет в настройках CodeWizard подключение к порту С, потому что С.6 - это RESET.

Я ж Вам уже писал в другой теме - пробуйте разные варианты.
Почему бы, например, не подключить LCD на старшие разряды порта D, которые свободны? А для цепей управления почему бы не задействовать разряды PB0, PB1, PB2 порта B?
Вам всего-то нужно 4 линии данных и 3 линии управления.

Затем, что я пользуюсь готовыми библиотеками. И программа уже заточена под них. Писать их с нуля не очень весело. А может тогда есть конкретное решение, разбить все по разным портам с использованием тех же библиотек подскажите, а?
Самое гениальное - всегда самое простое
ВитГо
Вымогатель припоя
Сообщения: 680
Зарегистрирован: Ср фев 24, 2010 19:16:07

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

Сообщение ВитГо »

Затем, что я пользуюсь готовыми библиотеками. И программа уже заточена под них. Писать их с нуля не очень весело. А может тогда есть конкретное решение, разбить все по разным портам с использованием тех же библиотек подскажите, а?[/quote]

а вы попробуйте с нуля.. у этого дисплея примитивный интерфейс - написать не сложно
Alkul
Держит паяльник хвостом
Сообщения: 933
Зарегистрирован: Ср апр 13, 2011 11:09:20
Откуда: Екатеринбург

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

Сообщение Alkul »

Volgol_555 писал(а):А может тогда есть конкретное решение, разбить все по разным портам с использованием тех же библиотек подскажите, а?

Ну, с Вашими библиотеками я не знаком. Я писал свои библиотеки на ассемблере.
У меня запись данных (4 бита) делалась в выбранный порт, неиспользуемая "половинка" порта в зависимости от конкретной схемотехники изделия либо забивалась нулями или единицами, либо перед записью данных порт вначале читался во временный регистр, неиспользуемые разряды сохранялись без изменения, в нужную "половину" регистра я писал данные для отправки в LCD и после этого записывал этот модифицированный временный регистр обратно в порт.
Линии же управления у меня всегда были совершенно независимыми друг от друга и могли принадлежать любым разрядам любого порта.
Посмотрите Ваши библиотеки, как в них реализован вывод данных и коммутация управляющих сигналов.

Я не отношусь к своим библиотекам, как к "священной корове", и не проношу единожды написанные библиотеки потом через годы, трепетно сохраняя их неизменными и подстраивая под них все схемотехнические решения.
У меня есть библиотека работы с LCD в "базовом" виде, который и хранится в архиве. Библиотека в базовом виде присоединяется к новому проекту и уже там вносятся необходимые изменения под каждое конкретное схемотехническое решение.
Аватара пользователя
Volgol_555
Потрогал лапой паяльник
Сообщения: 301
Зарегистрирован: Пт сен 23, 2011 13:13:51
Откуда: Минск
Контактная информация:

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

Сообщение Volgol_555 »

Взглянул я на библиотеки и вообще не понял как там и что реализовано - куча всего, а где конкретно порты читает не знаю((
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>
вот так производится настройка на порт В в 4 бита, как мне сделать эту настройку на произвольные порты? я командами ассемблера вообще не владею
вот выкладываю 2 файла библиотеки. Может вы мне подскажете что мне с ними конкретно делать,
а на счет написать все самому - я не понимаю зачем, если другие уже написали, мне лишь нужно правильно обратиться к этому...
Вложения
LCD.H
(1.25 КБ) 337 скачиваний
Самое гениальное - всегда самое простое
clawham
Поставщик валерьянки для Кота
Сообщения: 1957
Зарегистрирован: Пт окт 31, 2008 09:38:55
Откуда: Одесса
Контактная информация:

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

Сообщение clawham »

бери мою либку - там можно на любую ногу любого порта любой вывод LCD вешать
Вложения
hd44780.rar
сначала заполняеш пинаутс, потом его инклюдиш...после него инклюдиш 44780
(1.73 КБ) 279 скачиваний
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.
Аватара пользователя
Volgol_555
Потрогал лапой паяльник
Сообщения: 301
Зарегистрирован: Пт сен 23, 2011 13:13:51
Откуда: Минск
Контактная информация:

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

Сообщение Volgol_555 »

О, спасибо. Надеюсь поможет. Осталось разобраться как правильно все сделать - комменты я видел, но я что-то в последнее время туплю(устал наверное(( ).
Как правильно прописать пины?
Вот так: PORTB.1=E; .....PORTC.3=DB1.....????
Сразу же непонятно как инклудить пинаутс, точнее что это за отдельная библиотека? Я подключал же библиотеки stdio.h и lcd.h
Объясни пожалуйста на примере - напиши что и как править - как человеку едва знающему Си).
Прошу прощения за неудобства, вызванные возможно нелепыми вопросами.

И сразу вопрос: выходит команда lcd_puts(char data) не прокатит? вместо нее
lcd_write_data(char data); ????
Я видел в твоей библиотеке коды для русских символов - как мне правильно написать, чтобы вывести на экран?

Объясни пожалуйста на примере - напиши что и как править - как человеку едва знающему Си).
Прошу прощения за неудобства, вызванные возможно нелепыми вопросами.
Самое гениальное - всегда самое простое
Аватара пользователя
Volgol_555
Потрогал лапой паяльник
Сообщения: 301
Зарегистрирован: Пт сен 23, 2011 13:13:51
Откуда: Минск
Контактная информация:

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

Сообщение Volgol_555 »

Включил мозги - нашел вот такие строки в библиотеке LCD:
#asm
.equ __lcd_direction=__lcd_port-1
.equ __lcd_pin=__lcd_port-2
.equ __lcd_rs=0
.equ __lcd_rd=1
.equ __lcd_enable=2
.equ __lcd_busy_flag=7
#endasm
здесь ясно, что проходит запись пинов на основе строки основной программы:
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
Очевидно можно написать и на каждый пин в отдельности,но не совсем ясно что, есть что - код на ассемблере, я его не знаю. не понимаю Где конкретно происходит разбор команд по портам? (возможно не точно выразился, но надеюсь понятно). Помогите разобраться с этими строчками в отдельности!
Самое гениальное - всегда самое простое
clawham
Поставщик валерьянки для Кота
Сообщения: 1957
Зарегистрирован: Пт окт 31, 2008 09:38:55
Откуда: Одесса
Контактная информация:

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

Сообщение clawham »

значиться так по тому что дал я

в кодевижне пишеш

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

#include <mega103.h>
#include <math.h>
#include <delay.h>
#include <1wire.h>

#include <stdio.h>
#include <stdlib.h>
#include <pinout.c>

#include <brezenhem.c>

#include <interupt.c>
#include <ports.c>

#include <hd44780.c>
#include <uart.c>



это мой набор инклюдов....конечно лишнее можно повыкидывать

а теперь про пользование

чтоб вывести на экран строку завершенную нулём из флеши(константа) нужно написать

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

lcd_putsf("helloworld!")


чтоб написать на экране чтото из буффера в RAMe

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

char buf[20];
sprintf(buf, "helloworld from ram");
lcd_puts(buf);


чтоб вывести строку завершенную нулём из еепрома

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

eeprom unsigned char et1="Helloworld from eeprom";
lcd_putse(et1);


также можно "включить" перекодировку в русские буквы(чтоб понимало кириллицу) вот только у меня таких дисплеев нет...ровно один такой был потому если надо - ghbkj;bk вот другой файл библиотеки

файл пинаутс конечно один и тот же и в нём надо порасставлять всё как у тебя по разводке...он сам беспокоится о направлениях и сам переводит на время простоя выводы в Z состояние :)
Вложения
44780.rar
полная библиотека 44780
(2.25 КБ) 245 скачиваний
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.
Аватара пользователя
Volgol_555
Потрогал лапой паяльник
Сообщения: 301
Зарегистрирован: Пт сен 23, 2011 13:13:51
Откуда: Минск
Контактная информация:

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

Сообщение Volgol_555 »

Хорошо. Раз твоя библиотека, то пожалуйста ответь: пинауты прописать в основной проге?, если да, то как именно - приведи пример, пожалуйста.
И ещё вопрос, чем твоя библиотека отличается от библиотеки CodeVision? Или ответь на такой вопрос - что можно с твоей библиотекой и чего нельзя...я хочу знать с какими проблемами могу вдруг потом столкнуться!
Самое гениальное - всегда самое простое
clawham
Поставщик валерьянки для Кота
Сообщения: 1957
Зарегистрирован: Пт окт 31, 2008 09:38:55
Откуда: Одесса
Контактная информация:

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

Сообщение clawham »

вы открывали файл pinouts.c ?

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

/// LCD ports configuration ///
/// Output pins definitions ///

#define RS PORTC.2
#define RW PORTC.1
#define E  PORTC.0

#define D4 4
#define D5 3
#define D6 2
#define D7 1

#define DB4 PORTB.D4
#define DB5 PORTB.D5
#define DB6 PORTB.D6
#define DB7 PORTB.D7
/// Input pins definitions///
/// (bits locations must be the same as outputs) ///
#define DB4I PINB.D4
#define DB5I PINB.D5
#define DB6I PINB.D6
#define DB7I PINB.D7
/// Data directions ///
#define RS_DR DDRC.2
#define RW_DR DDRC.1
#define E_DR  DDRC.0

#define DB4_DR DDRB.D4
#define DB5_DR DDRB.D5
#define DB6_DR DDRB.D6
#define DB7_DR DDRB.D7
///////////////////////



помоему тут вообще всё написано более чем подробно...просто отредактируйте этот файл в соответствии с Вашей разводкой/подключением и инклудните до 44780.c ....

что можно а что нельзя? можно всё что может экран....плюс пара вспомогательных функций...
чем отличается? меньше места, любые пины, открытый исходный код, правильная работы через бизифлаг а не тупо выдержками....что я ещё могу сказать ? поддержка кириллицы напрямую :)

берите пользуйтесь и когда возникнут вопросы - обращайтесь...я с ними достаточно намучался
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.
Аватара пользователя
Volgol_555
Потрогал лапой паяльник
Сообщения: 301
Зарегистрирован: Пт сен 23, 2011 13:13:51
Откуда: Минск
Контактная информация:

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

Сообщение Volgol_555 »

Всем привет. Я не совсем по теме, но это касается ЖКИ. У меня HD1602D - в даташите написано что питание подсветки 120 mA((. Соответственно, питать напрямую с ноги МК я не могу. Реле отпадает из-за ограниченности в свободном пространстве для элементов. Остается вроде как транзистор, но я увы не знаю как с ними до конца работать. Пробовал читать статьи и все равно(( Мне нужно, чтобы кто-то доходчиво объяснил на примере...
Можно ли с биполярного транзистора npn H8550 (просто у меня их куча) реализовать ток в 120 mA на подсветку дисплея, при этом, я так понимаю, к базе должна быть подключена нога ATmega8. Если да, то подскажите как именно подключить все и сделать именно 120 mA на выходе. Если с этим транзистором нельзя, то подскажите как подключить другой( Просто не понимаю как токи идут, и как знать какой именно ток будет на выходе...т.е. эмитере?
Заранее спс)
Самое гениальное - всегда самое простое
Alkul
Держит паяльник хвостом
Сообщения: 933
Зарегистрирован: Ср апр 13, 2011 11:09:20
Откуда: Екатеринбург

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

Сообщение Alkul »

Volgol_555 писал(а):Можно ли с биполярного транзистора npn H8550 (просто у меня их куча) реализовать ток в 120 mA на подсветку дисплея

Судя по даташиту, ток коллектора 1,5А. Значит, можно.
Но это если Вам нужно коммутировать подсветку. Если же подсветка должна постоянно светиться, то можно поступить проще - подать на выв.15 LCD через резистор 100 Ом 1 Вт напряжение +5В.

Volgol_555 писал(а):подскажите как именно подключить все и сделать именно 120 mA на выходе.

Если хотите коммутировать, тогда так:
базу подключить к выводу контроллера через резистор 390 Ом 0,125 Вт, коллектор на +5В через резистор 100 Ом 1 Вт, эмиттер на выв.15 LCD.

Естественно, что и в первом, и во втором случае выв.16 LCD нужно подключить к земле.
Аватара пользователя
Volgol_555
Потрогал лапой паяльник
Сообщения: 301
Зарегистрирован: Пт сен 23, 2011 13:13:51
Откуда: Минск
Контактная информация:

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

Сообщение Volgol_555 »

Большое спасибо. Мне нужно будет включать подсветку, когда освещение в комнате упадет ниже определенного уровня.
Остался вопрос: как вы подобрали номиналы резисторов? Было бы здорово научиться рассчитывать их.
И...ведь транзистор типа npn так устроен, что ток течет с базы в МК и с эмитера "внутрь" транзистора? или я не прав? Соответственно ток с эмитера будет не выходить на анод подсветки, а наоборот как бы стекать оттуда? Тогда как же подключать к подсветке: вот пример
Ведь ток должен течь с анода на катод, а здесь получается как-то наоборот? У меня какой-то офигенный провал в теории транзисторов. Помогите разобраться(
Вложения
Безымянный.png
(12.4 КБ) 395 скачиваний
Самое гениальное - всегда самое простое
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

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

Сообщение Arlleex »

На указанной картинке токи текут абсолютно в противоположных нарисованному направлениях.
Не умеешь - не берись, но не взявшись не научишься...
Аватара пользователя
Volgol_555
Потрогал лапой паяльник
Сообщения: 301
Зарегистрирован: Пт сен 23, 2011 13:13:51
Откуда: Минск
Контактная информация:

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

Сообщение Volgol_555 »

Arlleex писал(а):На указанной картинке токи текут абсолютно в противоположных нарисованному направлениях.

Странно. Зачем тогда публиковать неверную статью на сайте? http://www.radiomaster.ru/articles/view/88/
Если эта инфо действительная не верна, то тогда остался вопросы, как вы произвели расчеты номиналов?
Самое гениальное - всегда самое простое
BVS
Потрогал лапой паяльник
Сообщения: 336
Зарегистрирован: Пн май 23, 2011 18:27:41

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

Сообщение BVS »

через резистор 100 Ом 120 мА ни как не потекут от 5 вольт, да и не надо, 20-50 хватит особенно ночью,
ваш транзистор PNP и стрелка на на эмиттере указывает направление тока через транзистор.
как вы произвели расчеты номиналов?
по закону ОМА
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

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

Сообщение Arlleex »

Ну, теперь вы будете знать, что там на сайте картинки не верны.
Не умеешь - не берись, но не взявшись не научишься...
ВитГо
Вымогатель припоя
Сообщения: 680
Зарегистрирован: Ср фев 24, 2010 19:16:07

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

Сообщение ВитГо »

Arlleex писал(а):Ну, теперь вы будете знать, что там на сайте картинки не верны.


картинки верны, просто на них показано движение отрицательных частиц (т.е. электронов)...
Alkul
Держит паяльник хвостом
Сообщения: 933
Зарегистрирован: Ср апр 13, 2011 11:09:20
Откуда: Екатеринбург

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

Сообщение Alkul »

BVS писал(а):ваш транзистор PNP

Вы даташит-то открывали? Транзистор NPN.
http://www.alldatasheet.com/datasheet-pdf/pdf/230277/ETC2/H8550.html
Ответить

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