📄 lcd_5110_driver.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 + -