|
подключение lcd FDCC2004A к atmega8, простой код, а не пашет ничего |
|
|
|
Nov 1 2011, 14:09
|
Участник

Группа: Участник
Сообщений: 30
Регистрация: 1-11-11
Пользователь №: 68 094

|
простой код(выводит символ на 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 кОм вроде нормал
|
|
|
|
|
Nov 1 2011, 14:55
|
Участник

Группа: Участник
Сообщений: 44
Регистрация: 4-11-10
Пользователь №: 60 647

|
Контроллер SPLCD780D?
|
|
|
|
|
Nov 1 2011, 15:11
|
Участник

Группа: Участник
Сообщений: 30
Регистрация: 1-11-11
Пользователь №: 68 094

|
S6A0069 самсунговский помойму, даташит даже нашел, прикрепляю
|
|
|
|
|
Nov 1 2011, 15:26
|
Участник

Группа: Участник
Сообщений: 44
Регистрация: 4-11-10
Пользователь №: 60 647

|
Код 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 - подробно расписан пример написания слова на дисплее
|
|
|
|
|
Nov 1 2011, 15:33
|
Участник

Группа: Участник
Сообщений: 44
Регистрация: 4-11-10
Пользователь №: 60 647

|
Цитата(failguru @ Nov 1 2011, 18:11)  S6A0069 самсунговский помойму, даташит даже нашел, прикрепляю именно поэтому лучше писать не жки а контроллер, так как в данном случае от жки мало что зависит DDRD=0x00; - выставляете порт D как вход... это я очепятался
|
|
|
|
|
Nov 1 2011, 15:55
|
Участник

Группа: Участник
Сообщений: 30
Регистрация: 1-11-11
Пользователь №: 68 094

|
да, спасибо, поставил в начало функции проверки бизи флага, но это не спасло((((((((( Изчезли темные квадраты!!!! и появился курсор в непонятном месте! УЖЕ ЧТОТО!!!! Вот код переделал: Код #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); }
|
|
|
|
|
Nov 1 2011, 16:39
|

Профессионал
    
Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339

|
Цитата(failguru @ Nov 1 2011, 20:08)  в //пишу символ поставил 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; } А так
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
Nov 1 2011, 17:05
|
Участник

Группа: Участник
Сообщений: 44
Регистрация: 4-11-10
Пользователь №: 60 647

|
А какой символ вообще должен высветиться... Какой у контроллера знакогенератор? У вас много лишних задержек. Зря закоментили проверку флага занятости в процедуре записи.
|
|
|
|
|
Nov 1 2011, 17:07
|

Профессионал
    
Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339

|
Цитата(failguru @ Nov 1 2011, 20:53)  тоже самое  А тупую без while(chkbf()); Цитата(SortoVaritu @ Nov 1 2011, 21:05)  А какой символ вообще должен высветиться... Какой у контроллера знакогенератор? У вас много лишних задержек. Зря закоментили проверку флага занятости в процедуре записи. 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);
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|