Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.85/53: Рейтинг темы: голосов - 53, средняя оценка - 4.85
Momstir
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 120
1

Atmega 328p + WH1602A

08.04.2013, 19:39. Просмотров 9729. Ответов 16
Метки нет (Все метки)

Купил ЖКИ WH1602A, подключил:
1) питание с 5В и земли;
2) регулирование контраста - на PB2 через резистор;
3) RS - на PB3;
4) RW - на PB4;
5) E - на PB5 (в цепи есть светодиод т.к. это Ардуин Нано);
6) DB7:0 - на PB1:0+PD7:2 (8-bit).
При включении (после инициализации в обоих строках все забито прямоугольниками) - код инита комментировал - те же яйца только в профиль.
Что я делаю не так, помогите советом, пожалуйста.
Код прилагаю:
Код
void setup()
{
DDRB|=B00111111;
DDRD|=B11111100;

LCD_Initiotyzotion();
}

void LCD_RS_Mode(boolean mode)
{
if (mode==HIGH) PORTB|=0x08;   // PB3
else PORTB&=0xF7;
}

void LCD_RW_Mode(boolean mode)
{
if (mode==HIGH) PORTB|=0x10;   // PB4
else PORTB&=0xEF;
}

void LCD_DB_State(uint8_t state)
{
PORTB&=B11111100;        // PB1:0
PORTB|=((state>>6)&0x03);
PORTD&=B00000011;        // PD7:2
PORTD|=((state<<2)&0xFD);
}

void LCD_Strobi_On()
{
PORTB|=0x20;             // PB5 on
}

void LCD_Strobi_Off()
{
PORTB&=0xDF;             // PB5 off
}

void LCD_Operation(boolean RS, boolean RW, uint8_t DB)
{
LCD_RS_Mode(RS);
LCD_RW_Mode(RW);
delayMicroseconds(1);
LCD_Strobi_On();
delayMicroseconds(1);
LCD_DB_State(DB);
delayMicroseconds(1);
LCD_Strobi_Off();
delayMicroseconds(1);
}

void LCD_Initiotyzotion()
{
delay(100);
LCD_Operation(LOW,LOW,B00110000);
delay(50);
LCD_Operation(LOW,LOW,B00110000);
delay(100);
LCD_Operation(LOW,LOW,B00110000);

delay(200);
LCD_Operation(LOW,LOW,B00111100);
delay(200);
LCD_Operation(LOW,LOW,B00001000);
delay(200);
LCD_Operation(LOW,LOW,B00000001);
delay(200);
LCD_Operation(LOW,LOW,B00000110);
}

void loop()
{
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.04.2013, 19:39
Ответы с готовыми решениями:

atmega 328p 128Khz
Доброго дня всем! Случайно прошил неверные fuse на на атмега 328p. CKSEL=0011 SUT=00 SPIN и...

Atmega 328p pwm
Привет. Вопрос конечно нубский - но это потому, что я только начинаю знакомится с avr по статьям DY...

АЦП на Atmega 328p u
Замучился... помогите плиз! Не работает АЦП на atmega328p u Зависает на ожидании считывания...

atmega 328p USART
Доброго времени суток и панигите люди добрые :) Общие оговорки: я любознателен, но не знаком с ...

Работа с 7 сегментным индикатором на ATmega 328P
Сделать счёт на 7 сегментном индикаторе от 0 до F и обратно, при этом кнопкой принудительно...

16
mtystis
0 / 0 / 0
Регистрация: 05.04.2013
Сообщений: 4
08.04.2013, 21:19 2
А почему неизпользуеш готовие библиотеки?
0
Momstir
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 120
08.04.2013, 21:43 3
С ними мало чему научишься. Хочется хардкора.
0
HotD
1 / 1 / 0
Регистрация: 05.10.2017
Сообщений: 2,048
08.04.2013, 21:53 4
Так может тогда выкинуть ардуину, и писать на нормальном Си?
0
Momstir
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 120
08.04.2013, 22:09 5
А в Ардуине не С и не GCC как компилятор?
Давайте плиз по сути, а то после слова Ардуин у некоторых случается помешательство...
0
HotD
1 / 1 / 0
Регистрация: 05.10.2017
Сообщений: 2,048
08.04.2013, 22:21 6
Тогда взять готовую библиотеку, поглядать как она работает. Поглядать в даташит на HD44780. Подцепить лог.анализатор к портам. На крайний случай - осцилл.
0
itysiy
0 / 0 / 0
Регистрация: 18.01.2012
Сообщений: 1,418
08.04.2013, 22:42 7
Цитата Сообщение от Momstir
При включении (после инициализации в обоих строках все забито прямоугольниками)
если все забито прямоугольниками (обе строки), значит контраст не настроен. Неинициализированный дисплей забивает прямоугольниками только одну строку. Нужно покрутить резистор. Если кручение не помогает, может с подключением контраста что-то не то. Может дисплею для контраста нужно отрицательное напряжение.
0
omx
0 / 0 / 0
Регистрация: 11.11.2016
08.04.2013, 22:47 8
Какое напряжение на V0? Все квадраты значит что контраст зашкаливает. Покрутите резистор (если он переменный конечно). У моего экземпляра noname 1602 напряжение на V0 когда хорошо виден текст ~1.2 В. Причём если нет инита вообще - работает только верхняя строка, что б заработала нижняя - контроллер должен быть правильно инициализирован. Так что видимо с инициализацией всё ок - крутите контраст.
0
Momstir
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 120
08.04.2013, 23:08 9
Резистор использован постоянный не для регулирования напряжения, а для ограничения тока.
Если в сетапе закомментить LCD_Initiotyzotion(); и подать на ногу контраста землю (логич. 0), то горят обе полосы/строки квадратами. Если подать лог.1, то экран полностью пустой.
Пробовал тестером прозванивать ноги для анализа работы команд - все ОК, согласно LCD_Operation(LOW,LOW,B00000110); +5В только на ногах DB2:1, на остальных земля.
Ноги с Rx/Tx побоялся использовать чтобы не убить возможность работы по УАРТ, но думаю зря, т.к. в МК залит бутлоадер, который всяко работает до передачи управления моему коду (да и УАРТ не использую).
0
omx
0 / 0 / 0
Регистрация: 11.11.2016
08.04.2013, 23:12 10
В общем либо ШИМом делайте регулировку контраста, либо ставьте переменный резистор.
0
Momstir
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 120
08.04.2013, 23:35 11
При регулировании ШИМом ток ограничить стоит или пускать напрямую?
0
OtixPM
0 / 0 / 0
Регистрация: 11.01.2013
Сообщений: 5,483
09.04.2013, 00:24 12
Цитата Сообщение от Momstir
При регулировании ШИМом ток ограничить стоит или пускать напрямую?
Вы сначала проверьте, что всё работает нормально. То есть - переменный резистор (в трёхвыводном подключении). Пять минут на всю проверку. V0 может оказаться как высоким (ближе к 5V), так и низким (близко к GND), у некоторых LCD бывает даже отрицательной потенциал :-(
А чтобы простым постоянным резистором можно было правильный контраст обеспечить - такого Вы ни в одной схеме включения 1602 не найдёте.

Потом, если захотите ШИМ, ограничивающий резистор лучше чтобы был. А если в самом WH1602 не установлен резистор (бывает по-разному), то обязательно ставьте внешний.
0
Momstir
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 120
09.04.2013, 00:48 13
Спасибо, завтра утром кину соплю на землю, чтобы получить делитель 1/2 или 2/3 (как выйдет по номиналам), а там будет видно.
Хотя я не пойму почему при одном из краевых условий (либо максимальная, либо минимальная контрастность) все равно ничего не видно.
В даташите на мою модель Vo от 0 до 5В вроде. Без отрицательных напряжений.
0
mtystis
0 / 0 / 0
Регистрация: 05.04.2013
Сообщений: 4
09.04.2013, 00:50 14
Цитата Сообщение от Momstir
С ними мало чему научишься. Хочется хардкора.
Ты начинаюшчий в этом сфере? Тогда хардкор ненадо. Сначало возьми стер-баи-степ инструкцию (http://learn.adafruit.com/character-lcd ... racter-lcd) и когда заработает демо тогда сможеш перети на хардкор и ШИМ. А то сечас тебе толком непонятно чо глюкует. Это совет другова чайника. :)
0
omx
0 / 0 / 0
Регистрация: 11.11.2016
09.04.2013, 02:01 15
Цитата Сообщение от Momstir
Хотя я не пойму почему при одном из краевых условий (либо максимальная, либо минимальная контрастность) все равно ничего не видно.
В даташите на мою модель Vo от 0 до 5В вроде. Без отрицательных напряжений.
Ну всё правильно. При 5В на V0 - контрастность нулевая (напряжение на "стекле" берётся от Vcc до V0), а при 0 - избыточная. Вот и надо подбирать такое напряжение, при котором хорошо видны символы при данной температуре. То что указано от 0В до 5В, значит всего лишь что модулю не поплохеет при длительном включении, а не то что будет работать. Не зря во всех даташитах рисуют схему регулировки контраста в виде подстроечного резистора. А вообще драйверы hd44780 допускают до 11В напряжения на "стекле".
0
Sotmziv
0 / 0 / 0
Регистрация: 05.04.2013
Сообщений: 1
09.04.2013, 10:22 16
Цитата Сообщение от Momstir
Хочется хардкора.
Вы его имеете! :)
0
Momstir
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 120
09.04.2013, 14:38 17
Спасибо за помощь - все получилось. Виной всему долбаный Vo.
0
09.04.2013, 14:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2013, 14:38

Как проверить работоспособность Atmega 328p?
Добрый день, кошаки. Помогите, пожалуйста. У меня есть опыт с Ардуино, но совсем нет опыта работы...

Передача сообщения через UART для Atmega 328P
Добрый день. Сам я новичок в этом деле. Сделал устройство бегущей строки на Atmega328P по этой...

Макетная плата для Atmega 32?atmega 8
Здравствуйте !Уважаемые мастера нужна помощь (а именно нужна схема макетной платы для меги 32 и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru