void LCD_WR_REG(u8 data)
{
LCD_RS_0;//写地址
LCD_CS_0;
DATAOUT(data);
LCD_WR_0;
LCD_WR_1;
LCD_CS_1;
}
//写寄存器
void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue)
{
LCD_WR_REG(LCD_Reg);
LCD_WR_DATA(LCD_RegValue);
}
//读寄存器
u16 LCD_ReadReg(u8 LCD_Reg)
{
u16 t;
uchar p4,p5;
LCD_WR_REG(LCD_Reg); //写入要读的寄存器号
P4DIR=0x00;
P5DIR=0X00;
P4OUT=0XFF;
P5OUT=0XFF;
LCD_RS_1;
LCD_CS_0;
//读取数据(读寄存器时,并不需要读2次)
LCD_RD_0;
LCD_RD_1;
//DATAIN;
p4=P4IN; p5=P5IN; t=p4+p5<<8;
LCD_CS_1;
P4DIR=0XFF;
P5DIR=0XFF;
P4OUT=0XFF;
P5OUT=0XFF;
return t;
}
//初始化lcd
//该初始化函数可以初始化各种ILI93XX液晶,但是其他函数是基于ILI9320的!!!
//在其他型号的驱动芯片上没有测试!
void LCD_Init(void)
{
//P4,P5 USE AS DATA BUS
P4DIR=0XFF;
P4OUT=0XFF;
P5DIR=0XFF;
P5OUT=0XFF;
delay_ms(50); // delay 50 ms
LCD_WriteReg(0x0000,0x0001);
delay_ms(50); // delay 50 ms
DeviceCode = LCD_ReadReg(0x0000);
lcd5110_number(1,1,DeviceCode); //打印LCD ID
}
|