failguru 0 1 ноября, 2011 Опубликовано 1 ноября, 2011 · Жалоба простой код(выводит символ на lcd), а не пашет ничего вот код на cvavr: #include <io.h> #include <delay.h> #define E PORTC.2 #define RS PORTC.0 #define RW PORTC.1 #define port PORTD int chkbf(){ // проверка флага занятости DDRD=0x00; RS=0; RW=1; E=0; delay_us(2); port=0xff; delay_us(2); E=1; delay_us(2); E=0; return(PIND.7); } void wrcmd(int cmd){ // пишу команду DDRD=0xff; while(chkbf()); RS=0; RW=0; E=0; delay_us(2); port=cmd; delay_us(2); E=1; delay_ms(2); E=0; } void main(){ DDRC=0xff; PORTC=0x00; delay_ms(100); wrcmd(0b00111000); // инициализация delay_us(40); wrcmd(0b00001111); delay_us(40); wrcmd(0b00000001); delay_ms(2); wrcmd(0b00000110); delay_us(40); DDRD=0xff; // пишу символ while(chkbf()); RS=0; RW=1; E=0; delay_us(2); PORTD=0b00110001; delay_us(2); E=1; delay_us(2); E=0; delay_us(50); } че нитак??? v0 для контрастности кинул на землю через резистор 1 кОм вроде нормал Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SortoVaritu 0 1 ноября, 2011 Опубликовано 1 ноября, 2011 · Жалоба Контроллер SPLCD780D? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
failguru 0 1 ноября, 2011 Опубликовано 1 ноября, 2011 · Жалоба S6A0069 самсунговский помойму, даташит даже нашел, прикрепляю 6a0069.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SortoVaritu 0 1 ноября, 2011 Опубликовано 1 ноября, 2011 · Жалоба DDRD=0x00; - выставляете порт D как выход RS=0; RW=1; E=0; delay_us(2); port=0xff; - включаете подтяжку на порт D. почему после 2мкс? delay_us(2); E=1; delay_us(2); E=0; return(PIND.7); http://www.hantronix.com/files/down/splc780d.pdf пункт 5.4 - подробно расписан пример написания слова на дисплее Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 1 ноября, 2011 Опубликовано 1 ноября, 2011 · Жалоба DDRD=0x00; - выставляете порт D как ... ВХОД Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SortoVaritu 0 1 ноября, 2011 Опубликовано 1 ноября, 2011 · Жалоба S6A0069 самсунговский помойму, даташит даже нашел, прикрепляю именно поэтому лучше писать не жки а контроллер, так как в данном случае от жки мало что зависит DDRD=0x00; - выставляете порт D как вход... это я очепятался Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
failguru 0 1 ноября, 2011 Опубликовано 1 ноября, 2011 · Жалоба да, спасибо, поставил в начало функции проверки бизи флага, но это не спасло((((((((( Изчезли темные квадраты!!!! и появился курсор в непонятном месте! УЖЕ ЧТОТО!!!! Вот код переделал: #include <io.h> #include <delay.h> #define E PORTC.2 #define RS PORTC.0 #define RW PORTC.1 #define port PORTD int chkbf(){ // проверка флага занятости DDRD=0x00; port=0xff; RS=0; RW=1; E=0; delay_us(2); E=1; delay_us(2); E=0; return(PIND.7); } void wrcmd(int cmd){ // пишу команду DDRD=0xff; //while(chkbf()); RS=0; RW=0; E=0; delay_us(2); port=cmd; delay_us(2); E=1; delay_ms(2); E=0; } void main(){ DDRC=0xff; PORTC=0x00; delay_ms(20); wrcmd(0b00111000); // инициализация delay_ms(5); wrcmd(0b00001110); delay_us(40); //wrcmd(0b00000001); //delay_ms(2); wrcmd(0b00000110); delay_us(40); DDRD=0xff; // пишу символ while(chkbf()); RS=0; RW=1; E=0; delay_us(2); PORTD=0b1001010111; delay_us(2); E=1; delay_us(2); E=0; delay_us(50); } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 1 ноября, 2011 Опубликовано 1 ноября, 2011 · Жалоба Изчезли темные квадраты!!!! и появился курсор в непонятном месте! УЖЕ ЧТОТО!!!! Ну и поставьте его на базу Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
failguru 0 1 ноября, 2011 Опубликовано 1 ноября, 2011 · Жалоба в //пишу символ поставил RS=1 RW=0 ну как и должно быть, стал писать но вместо символа - черный квадрат Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 1 ноября, 2011 Опубликовано 1 ноября, 2011 · Жалоба в //пишу символ поставил RS=1 RW=0 ну как и должно быть, стал писать но вместо символа - черный квадрат DDRD=0xff; // пишу символ while(chkbf()); RS=1; RW=0; E=1; PORTD=0x30; delay_us(2); E=0 delay_us(2); E=1; } А так Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
failguru 0 1 ноября, 2011 Опубликовано 1 ноября, 2011 (изменено) · Жалоба тоже самое :angry2: Изменено 1 ноября, 2011 пользователем failguru Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SortoVaritu 0 1 ноября, 2011 Опубликовано 1 ноября, 2011 · Жалоба А какой символ вообще должен высветиться... Какой у контроллера знакогенератор? У вас много лишних задержек. Зря закоментили проверку флага занятости в процедуре записи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 1 ноября, 2011 Опубликовано 1 ноября, 2011 · Жалоба тоже самое :angry2: А тупую без while(chkbf()); А какой символ вообще должен высветиться... Какой у контроллера знакогенератор? У вас много лишних задержек. Зря закоментили проверку флага занятости в процедуре записи. 30 в любом 0 И в его коде вообще ничего не пишется сразу 2 ошибки DDRD=0xff; // пишу символ while(chkbf()); RS=0; RW=1; E=0; delay_us(2); PORTD=0b1001010111; delay_us(2); E=1; delay_us(2); E=0; delay_us(50); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
failguru 0 1 ноября, 2011 Опубликовано 1 ноября, 2011 · Жалоба Да, заработало :disco: . Я убрал while(chkbf()); из функции записи команд - лсд инициализировался. Убрал из вывода символа, тоже заработало. Странно, а что проверку занятости не надо делать, или я ее неправильно делаю Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 1 ноября, 2011 Опубликовано 1 ноября, 2011 · Жалоба Да, заработало :disco: . Я убрал while(chkbf()); из функции записи команд - лсд инициализировался. Убрал из вывода символа, тоже заработало. Странно, а что проверку занятости не надо делать, или я ее неправильно делаю Не правильно - читайте выложенный Вами же DS и уберите лишние задержки Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться