|
|
|
|
Добрый день ! Помогите разобраться, написал программу вывода на СИ (CVAVR) для Mega8 + LCD Nokia3310. Все работает, но вот беда, почему-то не получается включить режим отображения вывода черным по белому (normal). Все время пишет в инверсном виде т.е. белым по черному. Так же (видимо по той же причине) не включается режим зеркалирования. Вообще такое ощущение что вообще не включаются расширенные (extended) команды. Я подозреваю, что что-то делаю неправильно, но никак не могу понять что именно. Не дайте погибнуть человеку, неделю мучаюсь...... В архиве проект для CVAVR и проект для Протеуса. Чужой hex в протеусе показывает все правильно. 247637.rar |
|
|
Господа, никто не поможет? |
|
|
Попробуйте так
while(1) { PORTD.5=0; lcd_send(0x0D,1); delay_ms(100); PORTD.5=1; lcd_send(0x0C,1); delay_ms(100); }
|
|
|
Я наверное чего то не понимаю, зачем PORTD.5=0, PORTD.5=1 ? В моей программе это бессмыслица, тем более что PORTD.5 это вход. Задержки конечно же пробовал не помогает. Если имеется ввиду PORTС.5 , то не помогает. |
|
|
1) В своей программе вы настраиваете portd на выход, если это бессмыслица, то я-то при чём? 2) Вы именно альтернируете PORTD.5 в вашей программе с помощью оператора if, чтобы помигать диодом. 3) В соответствии с п.1 и п.2 делаю вывод, что программу писали не вы. |
|
|
Lerik: Все время пишет в инверсном виде т.е. белым по черному. В Протэусе тоже пишет в инверсном виде? Я вчера попытался скомпилировать Ваш проект в CVAVR 1.23.8с Он мне выдал 50 ошибок. Может я чего то не то делаю, я CVAVR не пользуюсь, но пару программ компилировал без особых проблем. В файле lcd.c коды инициализации жк дисплейа такие же как и в даташите, т.е. правильные. Вашу ошибку выявить нет возможности т.к. не могу запустить симуляцию в протэусе. P.S. GM Добрый вечер. Программа и «порубанный» файл симуляции говорят, что Lerik нашёл проект блока питания и пытается написать свою программу управления т.к. исходника судя по всему не имеет.
|
|
|
Привет Link, сколько лет, сколько зим! Мне и без компиляции видно, что вроде всё нормально. Но если не работает, надо искать ошибку. Предлагал товарисчу сделать попеременную смену режима с инверсного на прямой и обратно каждые 100мс, должна же картинка изменяться...Так вместо того, чтобы сделать как говорят, и доложить результаты, он начинает толковать о бессмыслице, о том что у него порт стоит на вход... Порт-то стоит, да настроен на выход. Ну разуй глаза и посмотри в программу, там всё написано...Прошу прощения за резкость.
|
|
|
GM: Привет Link, сколько лет, сколько зим! Это точно. В место Lerica послушался Вашего совета и посмотрел его тестовую программу. Leric Глянул я Вашу тестовую программу. // Lcd_Mode(1); lcd_send(0x0C, LCD_CMD); //Вот эта команда включает нормальный режим, который в прочем уже включен при инициализации дисплея. lcd_goto_xy(15,4); lcd_str(str2); // Lcd_Mode(2); lcd_send(0x0D, LCD_CMD);// А вот именно эта строка инвертирует дисплей. После инвертирования дисплея, Вы в своей программе уходите в цикл, и больше нормальный режим не включаете. lcd_goto_xy(25,6); lcd_str(str1); Так что теперь как Вы думаете - почему у Вас все в инверсном печатает?
|
|
|
GM: " Ну разуй глаза и посмотри в программу, там всё написано...Прошу прощения за резкость." Прощаю , весна, обострениия... Порт D на выход - все правильно, он "диодиком" моргает чтобы было видно что протеус симулит. Но то что Вы предложили работать не будет даже теоретически, потому что если бы Вы посмотрели внимательно , к тому времени как начинает мигать светодиод, все уже на экран выведено и смена режимов нормальный-инверсный ни к чему не может привести, так как ничего на экран не выводится !!! Ну или Вы просто не понимаете как работает LCD Nokia 3310 |
|
|
to Link : "lcd_send(0x0D, LCD_CMD);// А вот именно эта строка инвертирует дисплей. После инвертирования дисплея, Вы в своей программе уходите в цикл, и больше нормальный режим не включаете. Так что теперь как Вы думаете - почему у Вас все в инверсном печатает?" Да действительно, все вроде правильно, но перед этим то нет включенного режима инверсии и изначально он выключен но печатет все равно в инверсном !!! Поверьте мне, что на таком я бы не споткнулся потому как уже 2 недели борюсь с этим ..... и безрезультатно, поэтому я выложил проект и хотел что бы меня "ткнули носом" где же у меня ошибка, я подозреваю что там все просто только я чего-то не понимаю, возможно проблемы с задержками поэтому дисплей не отрабатывает, может еще чего. Если кто реально писал аналогичную программу или сталкивался тот конечно может подсказать. Это действительно блок питания, он у меня работает достаточно давно, есть у меня и исходники но к сожалению они написаны на ассемблере. Хотелось просто в качестве тренировки переписать на СИ, что бы всегда была возможность изменить код так как мне надо Про 50 ошибок, может просто у Вас версия старенькая у меня 2.03.9 Standart. Спасибо всем откликнувшимся. |
|
|
|
|