реклама на сайте
подробности

 
 
> подключение lcd FDCC2004A к atmega8, простой код, а не пашет ничего
failguru
сообщение Nov 1 2011, 14:09
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 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 кОм вроде нормал
Go to the top of the page
 
+Quote Post
3 страниц V  < 1 2 3  
Start new topic
Ответов (30 - 36)
failguru
сообщение Nov 3 2011, 13:36
Сообщение #31


Участник
*

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



Согласен полностью) но как задержку в 120нсек сделать???

Когда задаешь двустрочный, он ничего не отображает((((

Код
void main(){
    DDRC=0xff;
    PORTC=0x00;
    delay_ms(20);
    
    wrcmd(0b00111000);  // инициализация двустрочного режима
    delay_ms(2);
    wrcmd(0b00001110);
    delay_us(40);
    wrcmd(0b00000001);
    delay_ms(2);
    wrcmd(0b00000110);
    delay_us(40);
    wrcmd(0b11000000);  //переход на вторую строчку
    delay_us(2);
    
    for(i=0;i<10;i++)wrsym(48+i);
}


Сообщение отредактировал failguru - Nov 3 2011, 13:48
Go to the top of the page
 
+Quote Post
SortoVaritu
сообщение Nov 3 2011, 13:50
Сообщение #32


Участник
*

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



А вы напишите в первую строчку символов больше чем в нее помещается....
Go to the top of the page
 
+Quote Post
failguru
сообщение Nov 3 2011, 14:05
Сообщение #33


Участник
*

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



она переходит в третью как и должно быть по адресации в даташите, но дальше нет, нужно подрубать двустрочный режим, а он ничего не показывает((((
Go to the top of the page
 
+Quote Post
XVR
сообщение Nov 3 2011, 14:09
Сообщение #34


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(failguru @ Nov 3 2011, 17:36) *
Согласен полностью) но как задержку в 120нсек сделать???
Вставить пару NOP'ов

Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Nov 3 2011, 15:08
Сообщение #35


Профессионал
*****

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



Цитата(XVR @ Nov 3 2011, 18:09) *
Вставить пару NOP'ов

Не надо NOP лучше так
Код
outr    LCD_PORT,temp;/ Выводим первый полубайт в порт
;+ И готовим второй , чтобы не ставить "тупые" NOP для задержки
swap    temp1
cbr    temp1,0x0F
cbr    temp,0xF0
cbi    LCD_Port,LCD_E;" Записываем данные в LCD


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
failguru
сообщение Nov 3 2011, 17:39
Сообщение #36


Участник
*

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



я в асме не очень, примерно понимаю но не все smile3046.gif

а проблема с двустрочным режимом была в том, что нужно было контраст увеличить(резистор меньше поставил(переменного нет)), тк хавать тока стал больше cool.gif
Go to the top of the page
 
+Quote Post
XVR
сообщение Nov 3 2011, 18:01
Сообщение #37


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(failguru @ Nov 3 2011, 21:39) *
я в асме не очень, примерно понимаю но не все smile3046.gif
И не надо. Совет про NOP'ы относился к С (у WinAVR это _NOP() ).
В asm действительно можно вставить что нибудь более полезное rolleyes.gif

Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 12th August 2025 - 06:56
Рейтинг@Mail.ru


Страница сгенерированна за 0.022 секунд с 7
ELECTRONIX ©2004-2016