st_1, да конечно!
1.суть проблемы :
ЖКИ инициализируется и нормально работает (без малейших нареканий) только при подключении к выводу(любому) порта A или B земли, т.е. минуса источника питания(проверил эмпирически... Порт D не влияет, порта C и Е используются для работы с ЖКИ). Причём эти порты настроены как выход. Если схему включать сразу с не подключённой землёй - ЖКИ просто не инициализируется, если отключить землю во время работы, то или "картинка" не меняется, или меняется хаотичным образом - когда идёт какой-то обмен ЖКИ с МК...
2.Текст программы:
[HTML]#include ‹delay.h›
#include ‹mega8515.h›
#define RS PORTE.0 // 0-команда; 1-данные
#define RW PORTE.1 // 0-запись в ЖКИ; 1-чтение из ЖКИ
#define E PORTE.2
#define D PORTC
bit btn0=0, btn1=0;
char adr=0xD0;
// Проверка занятости ЖКИ
void BF(void)
{
RS=0;RW=1;
PORTC=0xFF;
DDRC=0x00;
delay_us(1);
E=1;
delay_us(1);
while(PINC.7 == 1)
{};
E=0;
delay_us(100);
PORTC=0x80;
DDRC=0xFF;
RW=0;
}
void LCD_init(void)
{
delay_ms(200);//пауза ппосле включения и перед инициализацией
RS=0;RW=0;//
E=1;D=0x30;// первая инициализация
delay_us(1);//Минимально допустимая длительность сигнала E=1
E=0;
delay_ms(100);//Пауза между командами
RS=0;RW=0;//
E=1;D=0x30; // вторая инициализация
delay_us(1);//Минимально допустимая длительность сигнала E=1
E=0;
delay_ms(100);//Пауза между командами
RS=0;RW=0;
E=1;D=0x30; //третья инициализация
delay_us(1);
E=0;
delay_ms(100);//Пауза между командами
RS=0;RW=0;
E=1;D=0x38;//8 bit mode ON, 2 lines, 5*8 font,
delay_us(1);
E=0;
delay_ms(100);
RS=0;RW=0;
E=1;D=0x0F;//display ON, cursor ON, blink ON,
delay_us(1);
E=0;
delay_ms(100);
RS=0;RW=0;
E=1;D=0x01;//Clear display
delay_us(1);
E=0;
delay_ms(100);
RS=0;RW=0;
E=1;D=0x06;//increase cursor position, scroll display OFF,
delay_us(1);
E=0;
delay_ms(100);
};
void WriteData(char s)
{
BF();
RS=1;RW=0;
D=s;
E=1;
delay_us(1);
E=0;
//delay_ms(50);
}
void WriteCmd(char s)
{
BF();
RS=0;RW=0;
D=s;
E=1;
delay_us(1);
E=0;
//delay_ms(50);
}
void main(void)
{
PORTA=0x00;
DDRA=0xFF;
PORTB=0xFF;
DDRB=0x00;
PORTC=0x00;
DDRC=0xFF;
PORTD=0x00;
DDRD=0xFF;
PORTE=0x00;
DDRE=0x07;
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
MCUCR=0x00;
EMCUCR=0x00;
TIMSK=0x00;
UCSRB=0x00;
ACSR=0x80;
SPCR=0x00;
LCD_init();
WriteData(0x41);//А
WriteData(0x4

;//Н
WriteData(0xB0);//Ю
WriteData(0x54);//Т
WriteData(0x4B);//К
WriteData(0x41);//А
WriteCmd(0xC0);
WriteData(0xB1 );//
WriteCmd(0x90);
WriteData(0xA7 );//
WriteData(0xB0 );//
WriteData(0xA0 );//
WriteData(0xA7 );//
WriteData(0xB0 );//
WriteCmd(0xD0);
WriteData(0x54 );//
WriteData(0x45 );//
WriteData(0xA0 );//
WriteData(0xB1 );//
WriteData(0x21 );//
WriteData(0x21 );//
WriteData(0x21 );//
WriteData(0x21 );//
WriteData(0x21 );//
WriteData(0x21 );//
while (1)
{
}
}
[/HTML]
3.Электрические параметры:
При включённой земле U1=5.1v U0=0.07v
При отсутствии земли U1=4.98v U0=1.24v
------------------------------------------