Har loddet sammen LCD og ATmega8 igjen, denne gang 4 bit mode, etter denne tegning
http://www.pocketmagic.net/wp-conten...ayout-full.gif
Bruker PORTD, istedenfor PORTC
Prøver meg frem med LCD simulator
http://www.dinceraydin.com/djlcdsim/djlcdsim.html
og bygger kode etter den.
Programmet ser ut til å virke til jeg har den blinkende markøre fremme.
Etter "while" linjen skulle det dukke opp bokstaver, nærmere bestemt f.
Men markøren forsvinne, ingen bokstaver dukker opp........
Kode
#define F_CPU 16000000 //Klokkefrekvens
#include <math.h>
#include <avr/io.h>
#include <util/delay.h> //Header for _delay_ms()
#include "stdio.h"
int main(){
DDRD = 0xFF;
PORTD = 0x00;
int tell=0;
//Sett 4 bit mode
PORTD = 2; //Data 0010
_delay_ms(1);
PORTD = 34; //Data 0010 + Enable
_delay_ms(1);
PORTD = 2 ; // Data 0010
_delay_ms(1);
PORTD = 0; // Data 0000
_delay_ms(1);
PORTD = 32; // Enable
_delay_ms(1);
PORTD = 0;
_delay_ms(1);
// Display ON/OFF control: display ON, cursor ON, blink ON,
PORTD = 15; //Data 1111
_delay_ms(1);
PORTD = 47; //Data 1111 + Enable
_delay_ms(1);
PORTD = 15; //Data 1111
_delay_ms(1);
PORTD = 0; //RS=1
_delay_ms(1);
PORTD = 32; // Enable
_delay_ms(1);
PORTD = 0;
_delay_ms(100);
tell =0;
while(1){
PORTD = 6; //Data 0110 ( 2 ganger gir f )
_delay_ms(1);
_delay_ms(1);
PORTD = 22; //Data 0110 +RS
_delay_ms(1);
PORTD = 54; //Data 0110 +RS + Enable
_delay_ms(1);
PORTD = 22; //RS=1
_delay_ms(1);
PORTD = 54;
_delay_ms(1);
PORTD = 22;
_delay_ms(1);
PORTD = 16;
_delay_ms(1);
PORTD = 22;
_delay_ms(1);
PORTD = 54;
_delay_ms(1);
PORTD = 22; //RS=1
_delay_ms(1);
PORTD = 54;
_delay_ms(1);
PORTD = 22;
_delay_ms(1);
PORTD = 16;
_delay_ms(1);
PORTD = 22;
_delay_ms(1);
PORTD = 54;
_delay_ms(1);
PORTD = 22; //RS=1
_delay_ms(1);
PORTD = 54;
_delay_ms(1);
PORTD = 22;
_delay_ms(1);
PORTD = 22; //RS=1
_delay_ms(1);
PORTD = 54;
_delay_ms(1);
PORTD = 22;
_delay_ms(1000);
}
}
Hva har jeg glemt/feilet med ?
Sist endret av asmika; 8. februar 2011 kl. 08:35.
Grunn: Glemte tegning