#include #include #define MrLCDsCrib PORTA #define DataDir_MrLCDsCrib DDRA #define MrLCDsControl PORTB #define DataDir_MrLCDsControl DDRB #define Lightswitch 2 #define ReadWrite 1 #define BiPolarMood 0 void Check_IF_MrLCD_isBusy(void); void Peek_A_Boo(void); void Send_A_Command(unsigned char command); void Send_A_Character(unsigned char character); int main(void) { DataDir_MrLCDsControl |= 1 << Lightswitch | 1 << ReadWrite | 1 << BiPolarMood; _delay_ms(15); Send_A_Command(0x01); //clear screen _delay_ms(2); Send_A_Command(0x38); _delay_us(50); Send_A_Command(0b00001111); _delay_us(50); Send_A_Character(0x41); //Display "A" Send_A_Character(0x42); Send_A_Character(0x43); Send_A_Character(0x44); Send_A_Character(0x45); Send_A_Character(0x46); Send_A_Character(0x47); Send_A_Character(0x48); Send_A_Character(0x49); while(1) { } } void Check_IF_MrLCD_isBusy() { DataDir_MrLCDsCrib = 0; MrLCDsControl |= 1 << ReadWrite; MrLCDsControl &= ~ 1 << BiPolarMood; while(MrLCDsCrib >= 0x80) { Peek_A_Boo(); } DataDir_MrLCDsCrib = 0xFF; } void Peek_A_Boo() { MrLCDsControl |= 1 << Lightswitch; asm volatile ("nop"); asm volatile ("nop"); MrLCDsControl &= ~ 1 << Lightswitch; } void Send_A_Command(unsigned char command) { Check_IF_MrLCD_isBusy(); MrLCDsCrib = command; MrLCDsControl &= ~ (1 << ReadWrite | 1 << BiPolarMood); Peek_A_Boo(); MrLCDsCrib = 0; } void Send_A_Character(unsigned char character) { Check_IF_MrLCD_isBusy(); MrLCDsCrib = character; MrLCDsControl &= ~ (1 << ReadWrite); MrLCDsControl |= 1 << BiPolarMood; Peek_A_Boo(); MrLCDsCrib = 0; }