Volgol_555 писал(а):CodeVision предлагает только порты D и B, но там мне нужны выходы под USART и внешний кварц. Оно то понятно что нет в настройках CodeWizard подключение к порту С, потому что С.6 - это RESET.
Я ж Вам уже писал в другой теме - пробуйте разные варианты.
Почему бы, например, не подключить LCD на старшие разряды порта D, которые свободны? А для цепей управления почему бы не задействовать разряды PB0, PB1, PB2 порта B?
Вам всего-то нужно 4 линии данных и 3 линии управления.
Volgol_555 писал(а):CodeVision предлагает только порты D и B, но там мне нужны выходы под USART и внешний кварц. Оно то понятно что нет в настройках CodeWizard подключение к порту С, потому что С.6 - это RESET.
Я ж Вам уже писал в другой теме - пробуйте разные варианты.
Почему бы, например, не подключить LCD на старшие разряды порта D, которые свободны? А для цепей управления почему бы не задействовать разряды PB0, PB1, PB2 порта B?
Вам всего-то нужно 4 линии данных и 3 линии управления.
Затем, что я пользуюсь готовыми библиотеками. И программа уже заточена под них. Писать их с нуля не очень весело. А может тогда есть конкретное решение, разбить все по разным портам с использованием тех же библиотек подскажите, а?
Затем, что я пользуюсь готовыми библиотеками. И программа уже заточена под них. Писать их с нуля не очень весело. А может тогда есть конкретное решение, разбить все по разным портам с использованием тех же библиотек подскажите, а?[/quote]
а вы попробуйте с нуля.. у этого дисплея примитивный интерфейс - написать не сложно
Volgol_555 писал(а):А может тогда есть конкретное решение, разбить все по разным портам с использованием тех же библиотек подскажите, а?
Ну, с Вашими библиотеками я не знаком. Я писал свои библиотеки на ассемблере.
У меня запись данных (4 бита) делалась в выбранный порт, неиспользуемая "половинка" порта в зависимости от конкретной схемотехники изделия либо забивалась нулями или единицами, либо перед записью данных порт вначале читался во временный регистр, неиспользуемые разряды сохранялись без изменения, в нужную "половину" регистра я писал данные для отправки в LCD и после этого записывал этот модифицированный временный регистр обратно в порт.
Линии же управления у меня всегда были совершенно независимыми друг от друга и могли принадлежать любым разрядам любого порта.
Посмотрите Ваши библиотеки, как в них реализован вывод данных и коммутация управляющих сигналов.
Я не отношусь к своим библиотекам, как к "священной корове", и не проношу единожды написанные библиотеки потом через годы, трепетно сохраняя их неизменными и подстраивая под них все схемотехнические решения.
У меня есть библиотека работы с LCD в "базовом" виде, который и хранится в архиве. Библиотека в базовом виде присоединяется к новому проекту и уже там вносятся необходимые изменения под каждое конкретное схемотехническое решение.
Взглянул я на библиотеки и вообще не понял как там и что реализовано - куча всего, а где конкретно порты читает не знаю((
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>
вот так производится настройка на порт В в 4 бита, как мне сделать эту настройку на произвольные порты? я командами ассемблера вообще не владею
вот выкладываю 2 файла библиотеки. Может вы мне подскажете что мне с ними конкретно делать,
а на счет написать все самому - я не понимаю зачем, если другие уже написали, мне лишь нужно правильно обратиться к этому...
О, спасибо. Надеюсь поможет. Осталось разобраться как правильно все сделать - комменты я видел, но я что-то в последнее время туплю(устал наверное(( ).
Как правильно прописать пины?
Вот так: PORTB.1=E; .....PORTC.3=DB1.....????
Сразу же непонятно как инклудить пинаутс, точнее что это за отдельная библиотека? Я подключал же библиотеки stdio.h и lcd.h
Объясни пожалуйста на примере - напиши что и как править - как человеку едва знающему Си).
Прошу прощения за неудобства, вызванные возможно нелепыми вопросами.
И сразу вопрос: выходит команда lcd_puts(char data) не прокатит? вместо нее
lcd_write_data(char data); ????
Я видел в твоей библиотеке коды для русских символов - как мне правильно написать, чтобы вывести на экран?
Объясни пожалуйста на примере - напиши что и как править - как человеку едва знающему Си).
Прошу прощения за неудобства, вызванные возможно нелепыми вопросами.
Включил мозги - нашел вот такие строки в библиотеке 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
Очевидно можно написать и на каждый пин в отдельности,но не совсем ясно что, есть что - код на ассемблере, я его не знаю. не понимаю Где конкретно происходит разбор команд по портам? (возможно не точно выразился, но надеюсь понятно). Помогите разобраться с этими строчками в отдельности!
eeprom unsigned char et1="Helloworld from eeprom";
lcd_putse(et1);
также можно "включить" перекодировку в русские буквы(чтоб понимало кириллицу) вот только у меня таких дисплеев нет...ровно один такой был потому если надо - ghbkj;bk вот другой файл библиотеки
файл пинаутс конечно один и тот же и в нём надо порасставлять всё как у тебя по разводке...он сам беспокоится о направлениях и сам переводит на время простоя выводы в Z состояние
Хорошо. Раз твоя библиотека, то пожалуйста ответь: пинауты прописать в основной проге?, если да, то как именно - приведи пример, пожалуйста.
И ещё вопрос, чем твоя библиотека отличается от библиотеки CodeVision? Или ответь на такой вопрос - что можно с твоей библиотекой и чего нельзя...я хочу знать с какими проблемами могу вдруг потом столкнуться!
помоему тут вообще всё написано более чем подробно...просто отредактируйте этот файл в соответствии с Вашей разводкой/подключением и инклудните до 44780.c ....
что можно а что нельзя? можно всё что может экран....плюс пара вспомогательных функций...
чем отличается? меньше места, любые пины, открытый исходный код, правильная работы через бизифлаг а не тупо выдержками....что я ещё могу сказать ? поддержка кириллицы напрямую
берите пользуйтесь и когда возникнут вопросы - обращайтесь...я с ними достаточно намучался
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.
Всем привет. Я не совсем по теме, но это касается ЖКИ. У меня HD1602D - в даташите написано что питание подсветки 120 mA((. Соответственно, питать напрямую с ноги МК я не могу. Реле отпадает из-за ограниченности в свободном пространстве для элементов. Остается вроде как транзистор, но я увы не знаю как с ними до конца работать. Пробовал читать статьи и все равно(( Мне нужно, чтобы кто-то доходчиво объяснил на примере...
Можно ли с биполярного транзистора npn H8550 (просто у меня их куча) реализовать ток в 120 mA на подсветку дисплея, при этом, я так понимаю, к базе должна быть подключена нога ATmega8. Если да, то подскажите как именно подключить все и сделать именно 120 mA на выходе. Если с этим транзистором нельзя, то подскажите как подключить другой( Просто не понимаю как токи идут, и как знать какой именно ток будет на выходе...т.е. эмитере?
Заранее спс)
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 нужно подключить к земле.
Большое спасибо. Мне нужно будет включать подсветку, когда освещение в комнате упадет ниже определенного уровня.
Остался вопрос: как вы подобрали номиналы резисторов? Было бы здорово научиться рассчитывать их.
И...ведь транзистор типа npn так устроен, что ток течет с базы в МК и с эмитера "внутрь" транзистора? или я не прав? Соответственно ток с эмитера будет не выходить на анод подсветки, а наоборот как бы стекать оттуда? Тогда как же подключать к подсветке: вот пример
Ведь ток должен течь с анода на катод, а здесь получается как-то наоборот? У меня какой-то офигенный провал в теории транзисторов. Помогите разобраться(
Arlleex писал(а):На указанной картинке токи текут абсолютно в противоположных нарисованному направлениях.
Странно. Зачем тогда публиковать неверную статью на сайте? http://www.radiomaster.ru/articles/view/88/
Если эта инфо действительная не верна, то тогда остался вопросы, как вы произвели расчеты номиналов?
через резистор 100 Ом 120 мА ни как не потекут от 5 вольт, да и не надо, 20-50 хватит особенно ночью,
ваш транзистор PNP и стрелка на на эмиттере указывает направление тока через транзистор.