реклама на сайте
подробности

 
 
> lcd 4470 avr, инициализация дисплея mt-10S1
demsp
сообщение Jun 28 2018, 18:57
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 17-03-18
Пользователь №: 102 435



Можно ли инициализиовать дисплей 44780, подавая биты на входы дисплея
Код
#include <avr/io.h>
#define F_CPU 16000000UL //16MHz
#include <util/delay.h>

int main(void) {
DDRD = 0b11111100;
PORTD = 0b00000000;
_delay_ms(20);         //задержка 20ms
PORTD = 0b0011 0000;   //PD4=1; PD5=1;
PORTD = 0b0000 1000;   //E=1;
// тут нужна задержка?
PORTD = 0b0000 0000;   //E=0;
_delay_us(40);         //задержка 40us
PORTD = 0b0000 1000;   //E=1;
PORTD = 0b0000 0000;   //E=0;
_delay_us(40);         //задержка 40us
PORTD = 0b0000 1000;   //E=1;
PORTD = 0b0000 0000;   //E=0;
_delay_us(40);         //задержка 40us
PORTD = 0b0010 0000;   //PD5=1;
PORTD = 0b0000 1000;   //E=1;
PORTD = 0b0000 0000;   //E=0;
_delay_us(40);        
// ...
}


A=PD2 (RS)
E=PD3
DB4=PD4
DB5=PD5
DB6=PD6
DB7=PD7

Прикрепленное изображение


Сообщение отредактировал demsp - Jun 29 2018, 06:04
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
demsp
сообщение Jun 29 2018, 12:29
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 17-03-18
Пользователь №: 102 435



Спасибо, но пока не работает ((
Кстати, по диаграмме из даташита необходимо подавать управляющие сигналы на DB4-DB7 "после положительного фронта" на входе Е (подаём 1 на Е, задержка, подаем 1 на DB4-DB7, подаём 0 на Е (запись по спаду), задержка, подаем 0 на DB4-DB7), т.е. должно быть так (в 4bit режиме)
Код
int main(void) {
DDRD = 0b11111100;
PORTD = 0b00000000;
_delay_ms(20);         //задержка 20ms после подачи питания
PORTD = 0b0000 1000;   //E=1;
_delay_us(40);         //задержка 40us
PORTD = 0b0011 1000;   //PD4=1; PD5=1; E=1;
_delay_us(40);         //задержка 40us
PORTD = 0b0011 0000;   //PD4=1; PD5=1; E=0; (запись по спаду)
_delay_us(40);         //задержка 40us
PORTD = 0b0000 0000;
...
}


Так правильно?

Сообщение отредактировал demsp - Jun 29 2018, 12:52
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jun 29 2018, 13:02
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (demsp @ Jun 29 2018, 15:29) *
Спасибо, но пока не работает ((
Такое бывает. Могу порекомендовать купить на али 8-канальный логический анализатор, он рублей 300 стоит сейчас. Очень помогает в подобных случаях - записал диаграмму и сиди себе, рассматривай, времянки измеряй или даже передаваемые данные рассматривай (софт имеет декодеры многих протоколов передачи). Конечно, пока он приедет, вы эту задачу десять раз решить успеете, но к следующей уже будете во всеоружии.

QUOTE (demsp @ Jun 29 2018, 15:29) *
Кстати, по диаграмме из даташита необходимо подавать управляющие сигналы на DB4-DB7 "после фронта" на Е (подаём 1 на Е, задержка, подаем 1 на DB4-DB7, подаём 0 на Е (запись по спаду), задержка, подаем 0 на DB4-DB7),
Да, вы правы, а я подзабыл уже. И ноль на DB4-DB7 можно не подавать, можно сразу же следующие данные выставлять.
QUOTE (demsp @ Jun 29 2018, 15:29) *
Так правильно?
Да, на первый взгляд выглядит правильно. Задержка после E=1 не нужна - по документации задержка от установки данных до E=0 не менее 195 нс, а это меньше времени записи в порт для AVR на макисальной часоте. Длительность E=1 не менее 450 нс тоже получается автоматически без дополнительных задержек (тут я какую-то ерунду написал, не читайте. Это для PIC16F84 на 4 МГц было справедливо). Задержку после E=1 и перед E=0 достаточно сделать по 1 мкс. А вот остальные задержки маловаты. Глянул в свои исходники - после включения питания 200 мс, после первой и второй записи DB6=1, DB7=1 по 50 мс, после третьей записи DB6=1, DB7=1 и после DB6=0, DB7=1 - по 100 мкс и дальше уже по 50 мкс для всех команд кроме очистки крана и возврата курсора (они по 1.6 мс).


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 14:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01382 секунд с 7
ELECTRONIX ©2004-2016