最近把Nokia5510的LCD点亮了,驱动函数如下,希望对大家有帮助,另附图一张!!!
// LCD初始化
void LCD_Init(void)
{
//复位LCD_低电平脉冲
LCD_RST_L;
Wait_ms(1);
LCD_RST_H;
//复位串行接口_高电平脉冲
LCD_CE_H;
Wait_ms(1);
LCD_CE_L;
//设置LCD
LCD_Send(0x21, DC_CMD); //使用扩展命令设置LCD模式
LCD_Send(0xD0, DC_CMD); //设置偏置电压
LCD_Send(0x06, DC_CMD); //温度校正
LCD_Send(0x13, DC_CMD); //1:48
LCD_Send(0x20, DC_CMD); //使用基本命令
LCD_Send(0x0C, DC_CMD); //设定显示模式,正常显示
}
// 设置LCD对比度(对比度范围: 0~127)
void LCD_SetContrast(u8 contrast)
{
LCD_Send(0x21, DC_CMD);
LCD_Send(0x80 | contrast, DC_CMD);
LCD_Send(0x20, DC_CMD);
}
// 设置LCD当前坐标
void LCD_SetXY(u8 X, u8 Y)
{
if (X>5) return;
if (Y>83) return;
LCD_Send(0x40 | Y, DC_CMD); // 行
LCD_Send(0x80 | X, DC_CMD); // 列
}
// LCD清屏
void LCD_Clear(void)
{
u16 i;
LCD_Send(0x0c, DC_CMD);
LCD_Send(0x80, DC_CMD);
for (i=0; i<504; i++)
LCD_Send(0, DC_DATA);
}
// 向LCD发送数据
void LCD_Send(u8 data, DCType dc)
{
u8 i="8";
if (dc==DC_CMD)
LCD_DC_CMD; //发送命令
else
LCD_DC_DATA;//发送数据
// LCD_CE_L; //Enable LCD
while (i--)
{
LCD_CLK_L;
if(data&0x80)
LCD_MOSI_H; /* MSB first */
else
LCD_MOSI_L;
LCD_CLK_H;
data <<= 1; /* Data shift */
}
// LCD_CE_H; //Disable LCD
}
// 向LCD写一个英文字符
void LCD_Write_Char(u8 ascii)
{
u8 n;
ascii -= 32; //ASCII码-32
for (n=0; n<6; n++)
LCD_Send(Font6x8[ascii][n], DC_DATA);
}
// 向LCD写英文字符串
void LCD_Write_EnStr(u8 X, u8 Y, u8* s)
{
LCD_SetXY(X,Y);
while (*s)
{
LCD_Write_Char(*s++);
}
}
文章评论(0条评论)
登录后参与讨论