Interfejs 4-bitowy, R/W do masy,RS- PIN B2, EN- PIN B3
Czy moglby ktos sprawdzic czy ten kod jest ok?? Jest on prawie zywcem wziety z ksiazki wydawnictwa BTC, a mimo to na wyswietlaczu mam tylko czarne prostokaty (a rozumiem ze powinienem miecmrugajacy kursor).
Kod: Zaznacz cały
#include<avr/io.h>
typedef struct _bit_struct
{
unsigned char bit0: 1;
unsigned char bit1: 1;
unsigned char bit2: 1;
unsigned char bit3: 1;
unsigned char bit4: 1;
unsigned char bit5: 1;
unsigned char bit6: 1;
unsigned char bit7: 1;
}pole_bitowe;
#define DAJ_BIT(adr) (*((volatile pole_bitowe*) (adr)))
#define _PINB 0x36
#define _PORTB 0x38
#define lcd_rs DAJ_BIT(_PORTB).bit2
#define lcd_en DAJ_BIT(_PORTB).bit3
unsigned char wiersz=0;
unsigned char kolumna=0;
void czekaj_ms(unsigned long pt) // opoznienie o ok 1ms
{
#define tau 10.38
unsigned char tp1;
for(;pt>0;pt--)
{
for(tp1=255;tp1!=0;tp1--);
}
}
void piszilcd(unsigned char instr) //wysylanie instrukcji
{
lcd_rs=0; //konf. lcd na odbieranie instrukcji
lcd_en=1;
PORTB=(PORTB&0x0f) | (instr&0xf0); //przygotuj starszy polbajt do wyslania
asm("nop");
asm("nop");
asm("nop");
lcd_en=0;
czekaj_ms(10L);
lcd_en=1;
PORTB=(PORTB&0x0f) | ((instr&0x0f)<<4);//przygotuj mlodszy polbajt do wyslania
asm("nop");
asm("nop");
asm("nop");
lcd_en=0;
czekaj_ms(10L); //czekaj ok 100 us na gotowosc wyswietlacza
}
int main(void)
{
unsigned char i;
PORTB=0x03;
DDRB=0xff; //lcd podlaczony do portu B
//___________________inicjowanie LCD_____________
czekaj_ms(45*tau);
for(i=0;i<3;i++) //wyslanie 3x 3-
{
lcd_en=1;
PORTB=(PORTB&0x0f) | 0x30;
asm("nop");
asm("nop");
asm("nop");
lcd_en=0;
czekaj_ms(5*tau);
}
lcd_en=1;
PORTB=(PORTB&0x0f) | 0x20; // wyslanie raz 2-
asm("nop");
asm("nop");
asm("nop");
lcd_en=0;
czekaj_ms(10L);
piszilcd(0x28); //4-bitowy, 2 linie, znak 5x7
piszilcd(0x08); //wlacz lcd, wyl kursor, wyl mruganie
piszilcd(0x01); //czysc lcd
czekaj_ms(1.64*tau);
piszilcd(0x06); //bez przesuwania w prawo
piszilcd(0x0f); //wl lcd, wlaczkursor, wl mruganie
while(1);
return 0;
} juz ok. zly kontrast mialem:/
----------------
Jak już MUSISZ wkleić cały kod to zapnij go w tagi CODE. ZbeeGin