Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
02.08.2014, 14:19
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
|
Подключение дисплея WH0802A
Добрый день. Имеется экран WH0802A-TMI-CT и необходимо подключить его к МК с питанием 3.3В. Раньше я подключал на экран +5 питания и напрямую на ножки МК и все работало (но дисплей был немного другой WH4004). Сейчас подключил WH0802A-TMI-CT и кроме инициализации ничего не работает. Хотя библиотеку писал сам и не раз использовал. Как я предполагаю дело в не согласовании уровней. т.е. с 3.3 В надо поднять до 5. Хотя странно, что работало с другим экраном.
Решил попробовать из имеющегося и взял ИР22, питание +5, на вход подаю 3.3 В и на выходе планировал получить 5, но в реальности получилось 3.7В, с чем экран не работает тоже.
Подскажите, может ли не работать экран из-за того, что на управляющие линии подается 3.3 В?
Библиотека в приложении, контроллер STM32F051C8
|
|
|
|
02.08.2014, 14:24
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,053
Сказал спасибо: 3,042
Сказали Спасибо 3,212 раз(а) в 2,182 сообщении(ях)
|
Re: Подключение дисплея WH0802A
Сообщение от swat24
|
Имеется экран WH0802A-TMI-CT и необходимо подключить его к МК с питанием 3.3В. Раньше я подключал на экран +5 питания и напрямую на ножки МК и все работало (но дисплей был немного другой WH4004). Сейчас подключил WH0802A-TMI-CT и кроме инициализации ничего не работает.
|
Сигнал Busy контролируете? Если да и инициализация проходит, то дело не в уровнях, а в напряжении, подаваемом на саму панель. Подайте на вывод регулировки контраста отрицательное напряжение в 1.5-2.0 вольта и проверьте появление символов.
|
|
|
|
02.08.2014, 14:48
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
|
Re: Подключение дисплея WH0802A
нет, сигнал не контролирую, при выводе текста:
lcd_text("321",1,1);
на экране в первом символе 1 строки горит "Ч" а следующее знакоместо мигает
т.е. символы он показать может, но выводит что попало...
Кроме не соответствия напряжений управления у меня больше вариантов нет. т.к. эта библиотека у меня работала раньше... та и сейчас ее не раз проверял. Экран точно рабочий, т.к. поставил его в БП и он там запустился нормально.
Какие еще могут быть предположения?
Последний раз редактировалось swat24; 02.08.2014 в 15:26.
|
|
|
|
02.08.2014, 15:41
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
|
Re: Подключение дисплея WH0802A
Самое интересное, что этот же код на STM32F407 работает
|
|
|
|
02.08.2014, 18:13
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Подключение дисплея WH0802A
Тайминги проверяй... Понизь для начала частоту генератора контроллера в 2-4-8 раз
|
|
|
|
02.08.2014, 19:35
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
|
Re: Подключение дисплея WH0802A
niXto, пробовал в основном цикле менять состояние ножки с использованием задержек. Выставлял 5 мс в программе - на осциллографе 5-6 мс. в микросекундах тоже погрешность не очень большая.
Задержки у меня по таймеру. т.е. я рассчитываю делитель и период в зависимости от частоты таймера. Если изменю частоту МК то тоже надо будет пересчитывать задержки. Что мало, что изменит. Но сейчас попробую
То, что инициализировался экран я понимаю по тому, что он очистился. А вот с выводом... Пробовал 8 битный режим, результат практически тот же, только в этот раз он пустой вообще...
Вроде уже и не первый день с ними работаю, та и запустил его же на 407. Похоже это что-то не так в МК, хотя ножками дергает и задержки время задержки нормальное.
|
|
|
|
02.08.2014, 19:54
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Подключение дисплея WH0802A
В 4-битном режиме пауза между 2 импульсами должна быть порядка десятка мкс... И длительность импульсов около 10 мкс. Иначе он или успеет захлопнуться после первого, или не заметит импульсы
|
|
|
|
02.08.2014, 20:05
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
|
Re: Подключение дисплея WH0802A
больше 39, судя по даташиту. Пробовал 40, сейчас 100 мкс. При записи в LCD дергаю ножкой через 100 мкс.
Пробовал менять частоту таймера - изменяются только символы, которые отображаются. И то не всегда (менял делителем от 6 до 48 мгц)
В приложении схема подключения. Стандартная... используется только порт Б.
Инициализация выглядит следующим образом. Брал с рабочего проекта.
Код:
|
GPIO_InitTypeDef gpio;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
gpio.GPIO_Pin = GPIO_Pin_4| GPIO_Pin_5|GPIO_Pin_6| GPIO_Pin_7|GPIO_Pin_8| GPIO_Pin_9;
gpio.GPIO_Mode = GPIO_Mode_OUT;
gpio.GPIO_OType = GPIO_OType_PP;
gpio.GPIO_PuPd = GPIO_PuPd_NOPULL;
gpio.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &gpio);
mDelay(15);
//1
Lcd_Write(0x30);
delay(0xFFF);
mDelay(4);
//2
Lcd_Write(0x30);
uDelay(100);
//3
Lcd_Write(0x30);
uDelay(100);
//4
Lcd_Write(0x20);
uDelay(100);
//5
Lcd_Write(0x20);
Lcd_Write(0x80);
uDelay(100);
//6
Lcd_Write(0);
Lcd_Write(0x60);
uDelay(100);
//7
Lcd_Write(0);
Lcd_Write(0xC0);
uDelay(2000);
//8
Lcd_Write(0);
Lcd_Write(0x30);
uDelay(100); |
Единственное, что может сделать экран - очиститься... а при любом выводе - крякозябры и мигает знакоместо
Последний раз редактировалось swat24; 02.08.2014 в 20:23.
|
|
|
|
03.08.2014, 02:23
|
|
Временная регистрация
Регистрация: 18.04.2011
Сообщений: 84
Сказал спасибо: 23
Сказали Спасибо 6 раз(а) в 4 сообщении(ях)
|
Re: Подключение дисплея WH0802A
При инициализации ( посылке команд) rs устанавливается в 0. А при посылке того что вывести в 1. Я этого в коде не увидел проверь.
|
|
|
|
03.08.2014, 13:17
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
|
Re: Подключение дисплея WH0802A
Uvavan, Это я знаю, и в том примере, что тебе скидывал все есть. Тем более оно работает на 407.
Похоже не получается выставить нормальные задержки. Например:
Код:
|
uDelay(10);
GPIO_SetBits(GPIOB, GPIO_Pin_9);
uDelay(10);
GPIO_ResetBits(GPIOB, GPIO_Pin_9); |
При включении должна переключаться ножка через каждый 10 мкс. На практике - через каждые 80-90 мкс. Т.е. такие мелкие задержки он выставить не может через таймер.
Если поставить задержку в 1 мкс - в реальности будет 65. Сейчас попробую переписать задержки
Задержки переписал, почти ничего не изменилось, на экране что попало показывает... Длительность подбирал по осциллографу.
В общем заработало, добавил задержки после каждой отправки команды/данных и увеличил уже имеющиеся
Последний раз редактировалось swat24; 03.08.2014 в 16:25.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 01:09.
|
|