Сообщение
kentik » Пн май 06, 2013 11:13:42
Сделал все как вы написали:
Объявление:
Спойлер #define LCD_LO_DDR DDRD
#define LCD_LO_PORT PORTD
#define LCD_LO_PIN PIND
#define LCD_CS_DDR DDRC
#define LCD_CS_PORT PORTC
#define LCD_CS_PIN PINC
#define LCD_CS_BIT 0
#define LCD_RS_DDR DDRC
#define LCD_RS_PORT PORTC
#define LCD_RS_PIN PINC
#define LCD_RS_BIT 1
#define LCD_WR_DDR DDRC
#define LCD_WR_PORT PORTC
#define LCD_WR_PIN PINC
#define LCD_WR_BIT 2
#define LCD_RST_DDR DDRC
#define LCD_RST_PORT PORTC
#define LCD_RST_PIN PINC
#define LCD_RST_BIT 3
#define LCD_SET_CS() LCD_CS_PORT |= (1<<LCD_CS_BIT)
#define LCD_CLR_CS() LCD_CS_PORT &= ~(1<<LCD_CS_BIT)
#define LCD_DIR_CS(x) LCD_CS_DDR |= (1<<LCD_CS_BIT)
#define LCD_SET_RS() LCD_RS_PORT |= (1<<LCD_RS_BIT)
#define LCD_CLR_RS() LCD_RS_PORT &= ~(1<<LCD_RS_BIT)
#define LCD_DIR_RS(x) LCD_RS_DDR |= (1<<LCD_RS_BIT)
#define LCD_SET_WR() LCD_WR_PORT |= (1<<LCD_WR_BIT)
#define LCD_CLR_WR() LCD_WR_PORT &= ~(1<<LCD_WR_BIT)
#define LCD_DIR_WR(x) LCD_WR_DDR |= (1<<LCD_WR_BIT)
#define LCD_SET_RST() LCD_RST_PORT |= (1<<LCD_RST_BIT)
#define LCD_CLR_RST() LCD_RST_PORT &= ~(1<<LCD_RST_BIT)
#define LCD_DIR_RST(x) LCD_RST_DDR |= (1<<LCD_RST_BIT)
функции:
Спойлер void LCD_WrCmd(unsigned char cmd)
{
LCD_CLR_RS();
LCD_LO_PORT = cmd>>8;
LCD_LO_PORT = cmd;
LCD_CLR_WR();
LCD_SET_WR();
}
void LCD_WrDat(unsigned int val)
{
LCD_CLR_CS();
LCD_SET_RS();
LCD_LO_PORT = val>>8;
LCD_LO_PORT = val;
LCD_CLR_WR();
LCD_SET_WR();
}
void LCD_InitPort(void)
{
LCD_SET_RST();
delay_ms(10);
LCD_CLR_RST();
delay_ms(30);
LCD_SET_RST();
delay_ms(50);
LCD_SET_WR();
LCD_SET_RS();
LCD_CLR_CS();
LCD_WrCmd(0x0007);LCD_WrDat(0x0021);
LCD_WrCmd(0x0000);LCD_WrDat(0x0001);
LCD_WrCmd(0x0007);LCD_WrDat(0x0023);
LCD_WrCmd(0x0010);LCD_WrDat(0x0000);
delay_ms(30);
LCD_WrCmd(0x0007);LCD_WrDat(0x0033);
LCD_WrCmd(0x0011);LCD_WrDat(0x6058);
LCD_WrCmd(0x0002);LCD_WrDat(0x0600);
}
void display_rgb(unsigned int data)
{
unsigned int i,j;
for(i=0;i<320;i++)
{
for(j=0;j<240;j++)
{
LCD_WrDat(data);
}
}
}
ну и main:
DDRD = 0xff;
DDRC = 0xff;
LCD_InitPort();
delay_ms(100);
display_rgb(0x07E0);
while (1){};
ноль внимания. фунт презрения.