📄 lcd_19264_driver.c
字号:
LCD_JHD19264A_RS=0;
LCD_JHD19264A_RW=0; //送指令
LCD_JHD19264A_E=1;
P0=LCD_JHD19264A_DISPLAY_ON; //开显示
LCD_JHD19264A_E=0; //指令有效
LCD_JHD19264A_CSB=0;
LCD_JHD19264A_CSA=1; //开片选10
LCD_JHD19264A_Busy();
LCD_JHD19264A_RS=0;
LCD_JHD19264A_RW=0; //送指令
LCD_JHD19264A_E=1;
P0=LCD_JHD19264A_DISPLAY_ON; //开显示
LCD_JHD19264A_E=0; //指令有效
}
//*******************************************
//函数名称:void LCD_JHD19264A_Write(uchar adress,uchar page,uchar count,uchar *pTAB)
//函数功能:在液晶上绘制(宽*高=count*8)图形函数.切记:count代表宽!!!!!
//形式参数:uchar adress,uchar page,uchar count,uchar *pTAB
//行参说明:
// adress: 列地址(bit0-5:adressY;bit6-7:CS)
// page : 行地址,取值范围0~7
// count : 列的点阵个数
// *pTAB : 图形点阵表首地址
//返回参数:无
//使用说明:无
//*******************************************
void LCD_JHD19264A_Write(uchar adress,uchar page,uchar count,uchar DATA)
{
uchar dcode;
dcode = adress & 0x80; //根据地址DB7设置片选
if(dcode)
LCD_JHD19264A_CSA = 1;
else
LCD_JHD19264A_CSA = 0;
dcode = adress&0x40;
if(dcode) //根据地址DB6设置片选
LCD_JHD19264A_CSB = 1;
else
LCD_JHD19264A_CSB = 0;
page |= 0xb8; //设置页地址
LCD_JHD19264A_Busy();
LCD_JHD19264A_RS = 0;
LCD_JHD19264A_RW = 0; //送指令
LCD_JHD19264A_E = 1;
P0 = page;
LCD_JHD19264A_E=0; //指令有效
dcode = adress & 0x3f; //根据DB5~DB0设置起始Y地址
dcode |= 0x40; //设置Y地址指令的标志位
LCD_JHD19264A_Busy();
LCD_JHD19264A_RS = 0;
LCD_JHD19264A_RW = 0;
LCD_JHD19264A_E = 1;
P0 = dcode;
LCD_JHD19264A_E = 0; //指令有效
for( ; count ; count--) //发送显示数据
{
dcode = ~DATA;
LCD_JHD19264A_Busy();
LCD_JHD19264A_RS = 1;
LCD_JHD19264A_RW = 0; //写数据
LCD_JHD19264A_E = 1;
P0 = dcode;
LCD_JHD19264A_E = 0; //数据有效
}
}
//*******************************************
//函数名称:void LCD_JHD19264A_Clear(void)
//函数功能:清屏
//形式参数:
//行参说明:
//返回参数:无
//使用说明:无
//*******************************************
void LCD_JHD19264A_Clear(void)
{
uchar i;
for(i=0;i<8;i++)
{
LCD_JHD19264A_Write(0,i,64,0x00);
}
for(i=0;i<8;i++)
{
LCD_JHD19264A_Write(0x40,i,64,0x00);
}
for(i=0;i<8;i++)
{
LCD_JHD19264A_Write(0x80,i,64,0x00);
}
}
//*******************************************
//函数名称:void LCD_JHD19264A_Draw_miki(void)
//函数功能:画一幅192*64图,米老鼠
//形式参数:专业取模软件,纵向取模,字节倒序
//行参说明:
//返回参数:无
//使用说明:无
//*******************************************
void LCD_JHD19264A_Draw(uchar *Tab)
{
uint m=0;
uchar i,j,k=0;
{
for(k=0;k<8;)
{
i = *Tab;
LCD_JHD19264A_Write(k,2,1,i);
k++;
Tab++;
}
for(k=0;k<8;)
{
i = *Tab;
LCD_JHD19264A_Write(k,1,1,i);
k++;
Tab++;
}
for(k=8;k<16;)
{
i = *Tab;
LCD_JHD19264A_Write(k,2,1,i);
k++;
Tab++;
}
for(k=8;k<16;)
{
i = *Tab;
LCD_JHD19264A_Write(k,1,1,i);
k++;
Tab++;
}
Tab=Tab-32;
}
}
//从flash中读32字节并转换
void getto()
{
uint i = 0;
ulong adre = 0x1dbc0,buff;
while(adre < 0x7ffff)
{
buff = adre;
P3 = buff;
buff >>= 8;
P7 = buff;
buff >>= 5;
P2 = buff;
adre ++;
C29040_OE = 0;
C29040_OE = 0;
TAB_274001_1[i] = P6;
i++;
if(i==4096)
adre = 0x7ffff;
C29040_OE = 1;
LCD_JHD19264A_Draw(TAB_274001_1);
}
}
//以下为测试用例
void main(void)
{
uint i = 16,m,n;
ulong adre = 0x1dbc0,buff;
Init_Device();
LCD_JHD19264A_Init();
LCD_JHD19264A_Clear();
/* A16 = 0;
A17 = 0;
A18 = 0;
P3 = 0x00;
P7 = 0x00;
C29040_CE = 1;
C29040_OE = 1;
// getto();
LCD_JHD19264A_Draw(TAB_01);
while(1);
*/
/*
while(i)
{
buff = adre;
P3 = i;
buff >>= 8;
P7 = 0x00;
buff >>= 5;
P2 = buff;
adre ++;
C29040_OE = 0;
C29040_OE = 0;
TAB_274001_1[i] = P6;
i++;
if(i==12287)
i=0;
C29040_OE = 1;
LCD_JHD19264A_Draw(TAB_274001_2);
if(i==48)
{i=0;break;
}
}
while(1)
{
LCD_JHD19264A_Draw(TAB_274001_2);
}
*/
while(1)
{
LCD_JHD19264A_Draw(TAB_01);
for(m=0;m<65535;m++)
for(n=0;n<25;n++);
LCD_JHD19264A_Draw(TAB_02);
for(m=0;m<65535;m++)
for(n=0;n<30;n++);
LCD_JHD19264A_Draw(TAB_03);
for(m=0;m<65535;m++)
for(n=0;n<30;n++);
LCD_JHD19264A_Draw(TAB_04);
for(m=0;m<65535;m++)
for(n=0;n<30;n++);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -