Allt inkopplat på en STK500 kopplingen är checkad 10tals ggr.
Iaf koden
Kod: Markera allt
/*
R/W - Jord
RS - PC0
E - PC2
D0 - PD0
D1 - PD1
D2 - PD2
D3 - PD3
D4 - PD4
D5 - PD5
D6 - PD6
D7 - PD7
*/
#define F_CPU 1000000UL
#include <io.h>
#include <util/delay.h>
#define LCD PORTD
#define LCD_DDRX DDRD
#define E PC2 //definerar PORT PC2 till E
#define RS PC0 //definerar PORT PC0 til RS
void toggle_enable(void){
DDRC = 0xFF; //alla DDRC till utgångar
_delay_ms(1);
PORTC &= ~(1 << E); //sätter E till 0
_delay_ms(1);
PORTC |= (1 << E); //sätter E till 1
_delay_ms(1);
PORTC &= ~(1 << E); // sätter E till 0
_delay_ms(1);
}
void write_lcd(unsigned char byte){
DDRC = 0xFF; //alla DDRC till utgångar
PORTC &= ~(1 << RS);
LCD_DDRX = 0xFF; //lcd port till utgång
LCD = 0X00;
LCD = byte;
toggle_enable();
}
void write_data(unsigned char byte){
DDRC = 0xFF; //alla DDRC till utgångar
PORTC |= (1 << RS);
LCD_DDRX = 0xFF; //lcd port till utgång
LCD = 0X00; // nollställ LCD
LCD = byte;
toggle_enable();
}
void lcd_init(void){
LCD_DDRX=0xFF;
LCD=0x00;
_delay_ms(100);
write_lcd(0x30); //initieringsslinga 8 bitar, efter stromboms manual
_delay_ms(10);
write_lcd(0x30);
_delay_ms(10);
write_lcd(0x30);
_delay_ms(10);
write_lcd(0x38);
_delay_ms(10);
write_lcd(0x08);
_delay_ms(10);
write_lcd(0x01);
_delay_ms(10);
write_lcd(0x06);
_delay_ms(10);
write_lcd(0x01);
_delay_ms(10);
write_lcd(0x0F);
}
int main(void){ //huvudprogram
_delay_ms(100);
lcd_init(); //initiera
_delay_ms(1);
write_lcd(0x0F); //sätt på LCD med blinkande cursor
_delay_ms(1);
PORTC |= (1 << RS); //sätt RS hög för säkerhets skull(om det inte funkat i write_data funktionen
write_data(0x30);
PORTC &= ~(1 << E); // sätter E till 0
while(1){}
}
Nu till problemen: I AVRstudio och debuggern ser det hela ut att fungera fint, Enable signalen pulsar efter varje utlagd data. Men på slutet då RS borde vara hög är den låg, samtidigt så är de portarna där de borde ligga en 1 där flaxar spänningen mellan 1- 4 volt. vilket är skumt?
Just nu händer inget alls det är endast en rad svarta fyrkanter överst (med stark kontrast påskruvad)
Det händer inte det minsta när jag kör koden, förut när jag kört 4 bitars mode å andra koder har de iaf blivit dubbla rader med fyrkanter och lite flaxande.
Funderar på att köpa en ny display och fortsätta labba för att utesluta fel på displayen, annars är det bara glapp som ja kan tänka mig är fel. Har försökt så många ggr snart så att det nästan borde fungera av ren tur.
Kan tillägga att jag läst igenom databladet ett antal ggr, ett antal tutorials på internet, samt sodjans Epemag pdf. Alla mkt bra och det får väl bli sista alternativet att köpa en DIP och köra för hand för att sedan försöka igen på AVRen.
Tacksam för alla förslag på vad som kan vara fel, kommentarer på koden samt egna koder som körs i 8bits mode.