原创 stm32-nokia5510的调试

2010-6-17 18:05 2943 6 6 分类: MCU/ 嵌入式

最近把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当前坐标ac6aee09-1f0b-42af-bb9b-fe1a87c44539.jpg
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++);
 }
}

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
6
关闭 站长推荐上一条 /3 下一条