Professional Documents
Culture Documents
html
#define F_CPU 1600000UL
#include <avr/io.h>
#include <util/delay.h>
#define LCD_PORT
PORTC
#define LCD_BUSY 3
#define LCD_CMD 4
#define LCD_RW 5
//RW C5
#define LCD_LED 6
#define LCD_SEL 7
// Enable D.7
void lcd_init(void);
void lcd_writeCommand(unsigned char);
void lcd_writeData(unsigned char);
int main()
{
_delay_ms(5);
lcd_init();
lcd_writeCommand(0xC9);
lcd_writeCommand(0x0E);
lcd_writeData(0x48);
lcd_writeData(0x41);
return 0;
}
void lcd_init(void)
{
DDRC=0xff;
//Port C is output
DDRD|=(1<<LCD_SEL);
PORTD&=~(1<<LCD_SEL);
//E->Low.
LCD_PORT&=~(1<<LCD_RW);
//Write
LCD_PORT&=~(1<<LCD_CMD);//Command
PORTD|=(1<<LCD_SEL);
//E->High.
//E->Low.
_delay_ms(20);
PORTD|=(1<<LCD_SEL); //E->High.
_delay_ms(20);
PORTD&=~(1<<LCD_SEL);
//E->Low.
_delay_ms(20);
PORTD|=(1<<LCD_SEL);
//E->High.
_delay_ms(20);
PORTD&=~(1<<LCD_SEL);
//E->Low.
_delay_ms(20);
PORTD|=(1<<LCD_SEL);
//E->High.
//E->Low.
_delay_ms(20);
PORTD|=(1<<LCD_SEL);
//E->High.
_delay_ms(20);
PORTD&=~(1<<LCD_SEL);
//E->Low.
_delay_ms(20);
PORTD|=(1<<LCD_SEL);
//E->High.
LCD_PORT=(LCD_PORT&0xF0)|0x08;//
PORTD&=~(1<<LCD_SEL);
//E->Low.
_delay_ms(20);
lcd_writeCommand(0x08);
lcd_writeCommand(0x01);
lcd_writeCommand(0x06);
}
//Write
LCD_PORT&=~(1<<LCD_CMD);//Command
PORTD|=(1<<LCD_SEL);
//E->High.
LCD_PORT=((LCD_PORT&0xF0)|((data&0xF0)>>4));
PORTD&=~(1<<LCD_SEL);
//E->Low.
_delay_ms(20);
PORTD|=(1<<LCD_SEL);
//E->High.
LCD_PORT=((LCD_PORT&0xF0)|(data&0x0F));
PORTD&=~(1<<LCD_SEL);
_delay_ms(20);
}
//E->Low.
//Write
LCD_PORT|=(1<<LCD_CMD); //ASCII
PORTD|=(1<<LCD_SEL);
//E->High.
LCD_PORT=((LCD_PORT&0xF0)|((data&0xF0)>>4));
PORTD&=~(1<<LCD_SEL);
//E->Low.
_delay_ms(20);
PORTD|=(1<<LCD_SEL);
//E->High.
LCD_PORT=((LCD_PORT&0xF0)|(data&0x0F));
PORTD&=~(1<<LCD_SEL);
_delay_ms(20);
}
//E->Low.