⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd_5110_driver.c

📁 5510驱动
💻 C
字号:
/****************************************************************************
 **             - LCD_5110_driver.c -
 **
 **     5110型号的LCD驱动程序
 **
 **     驱动芯片:PCD8544
 **
 **         Programmer:高其良
 **    
 **     File version: $2008.9.18$
 **
 ***************************************************************************/

#include "lcd_5110_driver.h"

/****************************************基本函数*******************************************/

/*8bit写入*/
void Lcd5110Write8Bit(unsigned char byte)
{
  unsigned char temp;
  
  for(temp=8;temp>0;temp--)
  {
    LCD_5110_CLK = 0;    
    LCD_5110_DIN = (byte&0x80)>>7; 
    byte = byte<<1;
    LCD_5110_CLK = 1;
  }
}

/*写数据*/
void Lcd5110Wdat(unsigned char dat)
{
  LCD_5110_DC = 1;
  LCD_5110_CS = 0;
  Lcd5110Write8Bit(dat);
  LCD_5110_CS = 1;
}

/*写命令*/
void Lcd5110Wcom(unsigned char com)
{
  LCD_5110_DC = 0;
  LCD_5110_CS = 0;
  Lcd5110Write8Bit(com);
  LCD_5110_CS = 1;
}

/****************************************扩展函数*******************************************/

/*初始化函数*/
void Lcd5110Initializtion(void)
{
  LCD_5110_IO_INITIALIZTION();
  Lcd5110Wcom(LCD_5110_FUNCTION_SET(0x01));
  Lcd5110Wcom(LCD_5110_SET_VOP(0x48));
  Lcd5110Wcom(LCD_5110_TEMPERATURE_CONTROL(0x02));
  Lcd5110Wcom(LCD_5110_BIAS_SYSTEM(0x03));
  Lcd5110Wcom(LCD_5110_FUNCTION_SET(0x00));
  Lcd5110Wcom(LCD_5110_DISPLAY_CONTROL(0x04));
}

/*睡眠模式*/
void Lcd5110PowerDownMode(void)
{
  Lcd5110Wcom(LCD_5110_FUNCTION_SET(0x04));
}

/*定位函数*/
void Lcd5110Locate(unsigned char page,unsigned char column)
{
  Lcd5110Wcom(LCD_5110_SET_Y(page));
  Lcd5110Wcom(LCD_5110_SET_X(column));
}

/*清屏函数*/
void Lcd5110Cls(void)
{
  unsigned char temp1,temp2;
  for(temp1=0;temp1<6;temp1++)
  {
    Lcd5110Locate(temp1,0x00);
    for(temp2=0;temp2<84;temp2++)
    {
      Lcd5110Wdat(0x00);
      //Lcd5110Wdat(0xf0);
    }
  }
}

/****************************************常用函数*******************************************/

/*ASC码输出*/
void Lcd5110AscPrintf(unsigned char page,unsigned char column,unsigned char __flash *p)
{ 
  unsigned char temp;
  
  Lcd5110Locate(page,column);
  for (temp=0;temp<8;temp++)
  {
    Lcd5110Wdat(p[temp]);
  }
  Lcd5110Locate(page+1,column);
  for (temp=8;temp<16;temp++)
  {
    Lcd5110Wdat(p[temp]);
  }
}

/*汉字输出*/
void Lcd5110CcharPrintf(unsigned char page,unsigned char column,unsigned char __flash *p)
{
  unsigned char temp;
  
  Lcd5110Locate(page,column);
  for (temp=0;temp<16;temp++)
  {
    Lcd5110Wdat(p[temp]);
  }
  Lcd5110Locate(page+1,column);
  for (temp=16;temp<32;temp++)
  {
    Lcd5110Wdat(p[temp]);
  }
}

/*BMP图象输出*/
void Lcd5110BmpPrintf(unsigned char page,unsigned char column,unsigned char __flash *p)
{
  unsigned char width,height;
  unsigned int temp = 0x02;
  
  for(height=0;height< p[1]/8+((p[1]%8!=0x00)&0x01);height++)
  {
    Lcd5110Locate(page+height,column);
    for(width=0;width<p[0];width++)
    {
      Lcd5110Wdat(p[temp]);
      temp++;
    }
  } 
}

/*数字输出*/
void Lcd5110NumberPrintf(unsigned char page,unsigned char column,unsigned char __flash *p,unsigned int s)
{
  unsigned char tk,k,h,t;
  tk=(unsigned char)(s/10000);s=s-tk*10000;
  k=(unsigned char)(s/1000);s=s-k*1000;
  h=(unsigned char)(s/100);s=s-h*100;
  t=(unsigned char)(s/10);s=s-t*10;
  if (tk!=0) Lcd5110AscPrintf(page,column,p+16*'0'-32*16+16*tk),column=column+8;
  if (k!=0||tk!=0)  Lcd5110AscPrintf(page,column,p+16*'0'-32*16+16*k),column=column+8;
  if (h!=0||k!=0||tk!=0)  Lcd5110AscPrintf(page,column,p+16*'0'-32*16+16*h),column=column+8;
  if (t!=0||h!=0||k!=0||tk!=0)  Lcd5110AscPrintf(page,column,p+16*'0'-32*16+16*t),column=column+8;
  Lcd5110AscPrintf(page,column,p+16*'0'-32*16+16*s);
}

/*******************************************************************************************/















⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -