Stap 3: De code en uploaden naar je board
Wij maken de code voor dit experiment,
Ik gebruikte AVR Studio voor het en geüpload met USBASP, zie de foto
volledige code:
#include < avr/io.h >
#include < util/delay.h >
structuur toe bit veld operaties mogelijk te maken de naam conversies: PORTA.0 -> PORT_A.b0 PORTB.7 -> PORT_B.b7
typedef struct {uint8_t b0:1;
uint8_t b1:1;
uint8_t b2:1;
uint8_t b3:1;
uint8_t b4:1;
uint8_t b5:1;
uint8_t b6:1;
uint8_t b7:1; } bits;
define alle poorten van uw microcontroller, meer poorten afhankelijk van de beschikbare mcu-poorten toevoegen
#define PORT_D (* (vluchtige bits *) & PORTD)
#define PIN_D (* (vluchtige bits *) & PIND)
#define DDR_D (* (vluchtige bits *) & DDRD)
#define PORT_G (* (vluchtige bits *) & PORTG)
#define PIN_G (* (vluchtige bits *) & PING)
#define DDR_G (* (vluchtige bits *) & DDRG)
Klokfrequentie hier vermelden
#define _XTAL_FREQ 8000000
#define lcd_data_pin PORTA
#define nl PORT_D.b0
#define rs PORT_D.b1
#define rw PORT_D.b2
nietig lcd_init();
VOID lcd_data (unsigned char data1);
VOID lcd_cmd (unsigned char cmd);
VOID lcd_control (unsigned char cmdordata);
VOID lcd_string (unsigned char * str);
ongeldig lcd_init() {}
lcd_cmd(0x30);
_delay_ms(10);
lcd_cmd(0x38);
_delay_ms(10);
lcd_cmd(0x0F);
_delay_ms(10);
lcd_cmd(0x80);
_delay_ms(10);
}
VOID lcd_data (unsigned char data1)
{
lcd_data_pin = data1; / / & 0x0F;
nl = 1;
RS = 1;
RW = 0;
_delay_ms(10);
nl = 0;
}
VOID lcd_cmd (unsigned char cmd) {}
lcd_data_pin = cmd;
nl = 1;
RS = 0;
RW = 0;
_delay_ms(10);
nl = 0;
}
VOID lcd_string (unsigned char * str) {}
while(*str) {}
lcd_data(*str++);
}
}
int main() {}
DDR_D.B0 = 1;
DDR_D.B1 = 1;
DDR_D.B2 = 1;
DDRA = 0XFF;
lcd_init();
while(1) {}
_delay_ms (10);
lcd_cmd (0x80); //put de cursor in de eerste rij
_delay_ms (10);
lcd_cmd (0x01); //Clear display
_delay_ms (10);
lcd_cmd (0xC0), de tweede rij //goto
_delay_ms (10);
lcd_cmd(0x01); Duidelijk display
lcd_cmd (0x80); //put de cursor in de eerste rij
_delay_ms (10);
lcd_cmd (0x01); //Clear display
_delay_ms (10);
lcd_string("Message");
lcd_cmd (0xC0), de tweede rij //goto
lcd_string("flasher");
_delay_ms(1000);
volgende scherm
lcd_cmd (0x80); //put de cursor in de eerste rij
_delay_ms (10);
lcd_cmd (0x01); //Clear display
_delay_ms (10);
lcd_string ("met ATMEGA128");
lcd_cmd (0xC0), de tweede rij //goto
lcd_string ("door arick");
_delay_ms(1000);
volgende scherm
lcd_cmd (0x80); //put de cursor in de eerste rij
_delay_ms (10);
lcd_cmd (0x01); //Clear display
_delay_ms (10);
lcd_string ("gepubliceerd op");
lcd_cmd (0xC0), de tweede rij //goto
lcd_string("instructable.com");
_delay_ms(1000);
volgende scherm
lcd_cmd (0x80); //put de cursor in de eerste rij
_delay_ms (10);
lcd_cmd (0x01); //Clear display
_delay_ms (10);
lcd_string ("Made in");
lcd_cmd (0xC0), de tweede rij //goto
lcd_string("Australia");
_delay_ms(1000);
}
Return (0);
}