Форум программистов, компьютерный форум, киберфорум
Электроника для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.98/254: Рейтинг темы: голосов - 254, средняя оценка - 4.98
0 / 0 / 0
Регистрация: 13.09.2010
Сообщений: 55

Не работает ЖКИ

21.09.2010, 19:10. Показов 47590. Ответов 123
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
ЖКИ МТ16S2D подключен в 4х битном режиме к контроллеру ADuC812, к порту P2.

В чем может быть проблема? Вот код:

#ymstude <stdyo.h>
#ymstude <ADuC812.h>

#defyme set_first_line 0x80
#defyme set_second_line 0xC0
sbit RS=P2^2;
sbit RW=P2^1;
sbit En=P2^0;
int i,j;

void delay();
send_lcd_dysplay_4wire(unsykned char address, unsykned char send_data);

void send_lcd(unsykned char send_data) {

RS=0;
RW=0;
En=1;
P2=(send_data << 4)|0x0F;
delay();
En=0;

}

void LCD_Init(void) {

En=0;
delay();
send_lcd(0x3);
delay();
send_lcd(0x3);
delay();
send_lcd(0x3);
delay();
send_lcd(0x2);
delay();
send_lcd(0x2);
delay();
send_lcd(0x8);
delay();
send_lcd(0x0);
delay();
send_lcd(0xC);
delay();
send_lcd(0x0);
delay();
send_lcd(0x1);
delay();
send_lcd(0x0);
delay();
send_lcd(0x6);
delay();
}

void delay(void) {
for(i=0; i<200; i++) {
for(j=0;j<300;j++) {}
}
}

void main(void) {

WDCON=0x00;
WDE=0; //Dysable WDT
LCD_Init();
send_lcd_dysplay_4wire(set_first_line,B) ;
while(1) {}

}

send_lcd_dysplay_4wire(unsykned char address, unsykned char send_data)
{
unsykned char send_data_h, send_data_l, address_l, address_h;

address_l = address; //aa?an eaaiiua ?acaeaa?ony aey ia?aaa?e
address_h = address >> 4; // ii 4 aeoa

send_data_l = send_data;
send_data_h = send_data >> 4;

RS = 0; //onoaiiaea neaiaeia oi?aaeaiey
RW = 0;
En = 1;
P2 = (address_h << 4)|0x0F;
delay();
En = 0;
delay();
En = 1;
P2 = (address_l << 4)|0x0F;
delay();
En = 0;

delay();

RS = 1;
RW = 0;
En = 1;
P2 = (send_data_h << 4)|0x0F;
delay();
En = 0;
delay();
En = 1;
P2 = (send_data_l << 4)|0x0F;
delay();
En = 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.09.2010, 19:10
Ответы с готовыми решениями:

МК-51 и ЖКИ
есть схема подключения ЖК-дисплея к микроконтроллеру 51. и есть код инициализации LCD. но он с ошибками. помогите исправить, пожалуйста. ...

работа с ЖКИ...?
В &quot;демо&quot; программе для работы с ЖКИ DiHalt использует такой финт: он копирует строку текста (которую надо выводить на экран) из памяти...

16F628A и ЖКИ
Здравствуйте, дорогие форумчане! С недавних пор занялся программированием МК. Решил начать с PicBasicPro. Дошел до ЖКИ, и вот сдесь...

123
0 / 0 / 0
Регистрация: 18.10.2006
Сообщений: 547
26.09.2010, 19:24
Студворк — интернет-сервис помощи студентам
надо вначале писать 4 нибла. или send_lcd_cmd(0x33); send_lcd_cmd(0x32). как-то так
0
0 / 0 / 0
Регистрация: 13.09.2010
Сообщений: 55
26.09.2010, 19:25
При инициализации я остановился на последней строке в которой написано : ожидать не менее 40 мкс. Я так понимаю что дальше это варианты того что можно с ним делать. Попробуемс щас поменять.
0
0 / 0 / 0
Регистрация: 16.08.2010
Сообщений: 1,326
26.09.2010, 19:30
Цитата Сообщение от kushmom
Исправил, но так же ничего. После прошивки он вывел кучу разных символов во все знакоместа и быстро их погасил. После ресета нифига.
Слушай, опять я накосячил, замени на это:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
void LCD_Init(void) {
send_lcd_cmd(0x03);
delay();
delay();
delay();
delay();
delay();
send_lcd_cmd(0x03);
delay();
delay();
delay();
delay();
delay();
send_lcd_cmd(0x03);
delay();
delay();
delay();
delay();
delay();
send_lcd_cmd(0x02);
delay();
delay();
delay();
delay();
delay();
send_lcd_cmd(0x68);
send_lcd_cmd(0x08);
send_lcd_cmd(0x01);
send_lcd_cmd(0x06);
}
 
int main(void) {
delay();
delay();
delay();
En=0;
RW=0;
LCD_Init();
send_lcd_cmd(set_first_line);
send_lcd_data(H);
send_lcd_cmd(set_second_line);
send_lcd_data(D);
 
while(1) {
delay();
}
}
0
0 / 0 / 0
Регистрация: 18.10.2006
Сообщений: 547
26.09.2010, 19:31
только первые 4 send_lcd_cmd заменить на send_lcd_4bit(0x30) send_lcd_4bit(0x20) соответственно
0
0 / 0 / 0
Регистрация: 16.08.2010
Сообщений: 1,326
26.09.2010, 19:37
Глянул щас исходник с радиокота, а там вообще не так как в даташите рекомендуют. Lix, глянь, а то меня уже глючить скоро начнет от этих МЭЛТов.
0
0 / 0 / 0
Регистрация: 18.10.2006
Сообщений: 547
26.09.2010, 19:40
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
void LCD_Init(void) {
send_lcd_4bit(0x30)
delay();
delay();
delay();
delay();
delay();
send_lcd_4bit(0x30)
delay();
delay();
delay();
delay();
delay();
send_lcd_4bit(0x30)
delay();
delay();
delay();
delay();
delay();
send_lcd_4bit(0x20)
delay();
delay();
delay();
delay();
delay();
send_lcd_cmd(0x68);
send_lcd_cmd(0x08);
send_lcd_cmd(0x01);
send_lcd_cmd(0x06);
}
думаю так должно заработать, если send_lcd_4bit правильно написана.
0
0 / 0 / 0
Регистрация: 13.09.2010
Сообщений: 55
26.09.2010, 19:43
Так и не заработал, зараза.

Хотя нет, выводит 3 вопросительный знака и слэш (/)
0
0 / 0 / 0
Регистрация: 18.10.2006
Сообщений: 547
26.09.2010, 19:45
send_lcd_cmd(0x68); на send_lcd_cmd(0x28);
0
0 / 0 / 0
Регистрация: 16.08.2010
Сообщений: 1,326
26.09.2010, 19:45
Цитата Сообщение от kushmom
Так и не заработал, зараза.

Хотя нет, выводит 3 вопросительный знака и слэш (/)
А ты ж говорил, что импортный есть. Пробовал его?
0
0 / 0 / 0
Регистрация: 18.10.2006
Сообщений: 547
26.09.2010, 19:47
я тоже мучался с четырехбитным интерфейсом...
0
0 / 0 / 0
Регистрация: 13.09.2010
Сообщений: 55
26.09.2010, 19:49
Цитата Сообщение от tyx
send_lcd_cmd(0x68); на send_lcd_cmd(0x28);
Во, сейчас сразу после прошивки и ресета вывел D. Но после очередных ресетов не хочет этого делать.

Не, импортный не припаивал. С этим дело пошло, поэтому решил не менять.
0
0 / 0 / 0
Регистрация: 18.10.2006
Сообщений: 547
26.09.2010, 19:51
нигия какая-то. может с железом проблемы? не ресетится там например
0
0 / 0 / 0
Регистрация: 13.09.2010
Сообщений: 55
26.09.2010, 19:55
Да не, ресетится нормально, так в режим загрузки кода он нормально входит. А для этого его нужно обязательно перезагрузить, посадив вывод PSEN на землю.
0
0 / 0 / 0
Регистрация: 16.08.2010
Сообщений: 1,326
26.09.2010, 19:59
Попробуй инит, как на радиокоте советует:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
void LCD_Init(void) {
send_lcd_cmd(0x30);
delay();
delay();
delay();
delay();
delay();
send_lcd_cmd(0x30);
delay();
delay();
delay();
delay();
delay();
send_lcd_cmd(0x30);
delay();
delay();
delay();
delay();
delay();
send_lcd_cmd(0x20);
delay();
delay();
delay();
delay();
delay();
send_lcd_cmd(0x28);
delay();
delay();
delay();
delay();
delay();
send_lcd_cmd(0x0C);
delay();
delay();
delay();
delay();
delay();
send_lcd_cmd(0x06);
delay();
delay();
delay();
delay();
delay();
send_lcd_cmd(0x01);
}
Бл..дь, ну должен же он заработать, а?
0
0 / 0 / 0
Регистрация: 18.10.2006
Сообщений: 547
26.09.2010, 20:00
не будет этот работать. в начале надо ниблы посылать, а у тебя байты. ТС запости код который D выводит.
0
0 / 0 / 0
Регистрация: 13.09.2010
Сообщений: 55
26.09.2010, 20:05
Вот с таким инитом в нижней строке загорается D, но потом тухнет снова.
0
0 / 0 / 0
Регистрация: 13.09.2010
Сообщений: 55
26.09.2010, 20:08
Хех, просто тупо поменял местами последовательность вывода H и D - и он вывел их оба, правда во второй позиции. Вот так:

send_lcd_cmd(set_second_line);
send_lcd_data(D);
send_lcd_cmd(set_first_line);
send_lcd_data(H);

ЗЫ. После очередного ресета, H вывел а D нет.
0
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 2,550
26.09.2010, 20:11
Вот и покупай после этого отечественные детальки...
0
0 / 0 / 0
Регистрация: 16.08.2010
Сообщений: 1,326
26.09.2010, 20:15
Цитата Сообщение от Mittid Mitot
Вот и покупай после этого отечественные детальки...
Ага. Они еще х51 МК выпускают, не лучше этого ЖК, через раз шьются :))
ЗЫ. А представляешь их вместе, в одном девайсе, ЖК и МК от Анстремг - лом в комплект надо ложить =))
0
0 / 0 / 0
Регистрация: 13.09.2010
Сообщений: 55
26.09.2010, 20:21
Вообщем то символы нормально выводятся, но не выводится самый первый. В чем может быть дело?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.09.2010, 20:21
Помогаю со студенческими работами здесь

Тупняк с ЖКИ
Был у меня дисплейчик winstraк 1602H, который был благополучно вставлен в проект и отдан на сторону. Появилась надобность сделать еще одну...

Проблема с ЖКИ
Сегодня с утра прям какой-то фатальный день. Поперли абсолютно нелогичные и непонятные &quot;чудеса&quot;. Сначала с еепром, теперь с жки. ...

7seg ЖКИ
Поделитесь ссылочкой (уверен что есть инфа, только что-то не могу найти) как к МК прикрутить жидкокристаллический индикатор. Недавно видел...

Посоветуйте ЖКИ
Решил для велосипеда сделать некий спидометр + одометр + т.д. Посоветуйте какой графический ЖКИ можно применить? Желательны небольшие...

ЖКИ DE119RS-20/7.5
Добрый день! Подскажите как подключить ЖКИ DE119RS-20/7.5 к STM32. В сети много примеров как подключить ЖКИ с контроллером, но вот...


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

Или воспользуйтесь поиском по форуму:
100
Ответ Создать тему
Новые блоги и статьи
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации: В классе Работник добавить: накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни коэффициентПрезентеизма — снижает продуктивность. . .
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день. Для работы необходим браузер,. . .
Модель здравосохранения 16. Слишком хорошие и здоровые сотрудники уходят, недовольные зарплатой
anaschu 23.05.2026
Отладка увольнений и настройка производительности Сегодня во второй половине дня разобрались с механикой увольнений и настроили коэффициент сложности заданий. Вот что было сделано. . . .
Как я стал коммунистом))) Модель сохранения здоровья сотрудников, запись блога номер 15
anaschu 23.05.2026
Внезапно хорошее здоровье сотрудников не нужно капиталистам?))
Модель здравоСохранения 15. Как мы чинили AnyLogic модель рабочего коллектива: сочленение диаграммы состояний болезней и поломок в ресурспул
anaschu 23.05.2026
Как мы чинили AnyLogic модель рабочего коллектива Сегодня разобрались с пятью багами, из-за которых модель либо падала с ошибкой, либо давала совершенно бессмысленные результаты. Каждый баг был. . .
Диалоги с ИИ
zorxor 23.05.2026
Насколько я понимаю - Вы - Искусственный Интеллект. Это так? Да, всё верно. Я — искусственный интеллект. Я представляю собой большую языковую модель, созданную для помощи в самых разных задачах. . . .
Модель здравосохранения 14. Собираем всю модель вместе.
anaschu 22.05.2026
Модель собрана. В будущих постах на видео я покажу, как она работает. В этом посте запускаем её, проверяем результаты и разбираем что можно с ней делать дальше. Перед запуском проверяем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru