📄 lcd12864.#1
字号:
//#include <c8051f020.h>
//#define uchar unsigned char
//#define uint unsigned int
sbit CS1=P3^3;
sbit CS2=P3^4;
sbit RS=P3^0;
sbit RW=P3^1;
sbit EN=P3^2;
sbit RST=P3^5;
#define DataPort P2
//uchar data stop;
//uchar data chose;
//uchar data serial_data[13]={1,2,3,4};
//uchar data count;
/************************函数列表**************************/
//--------------------------------------------------
void delay(unsigned long v);
void wcode(uchar c,uchar csl,uchar csr);
void wdata(uchar c,uchar csl,uchar csr);
void set_startline(uchar i);
void set_xy(uchar x,uchar y);
void dison_off(uchar o);
void reset();
void lcd_init(void);
void lw(uchar x, uchar y, uchar dd);
void display_hz(uchar x, uchar y, uchar n, uchar fb);
/*******************************************************/
//*************显示第二行(8个字)**********
/*for(loop=0;loop<8;loop++)
display_hz(2*loop,2,loop+8);
//**************显示第三行(8个字)*************
for(loop=0;loop<8;loop++)
display_hz(2*loop,4,loop+16);
//*************显示第四行(8个字)*************
for(loop=0;loop<8;loop++)
display_hz(2*loop,6,loop+24);
//*************************/
/*---------------------------------------------------------*/
void delay(unsigned long v)
{
while(v!=0)v--;
}
/*----------------------------------------------------------*/
void lcd_busy(void)
{
RS=0;RW=1;DataPort=0xff;
while(1){
EN=1;
if(DataPort<0x80) break;
EN=0;
}
EN=0;
}
/*-----------------------------------------------------------*/
void wcode(uchar c,uchar csl,uchar csr)
{
CS1=csl;
CS2=csr;
lcd_busy();
RS=0;
RW=0;
DataPort=c;
EN=1;
EN=0;
}
/*------------------------------------------------------*/
void wdata(uchar c,uchar csl,uchar csr)
{
CS1=csl;
CS2=csr;
lcd_busy();
RS=1;
RW=0;
DataPort=c;
EN=1;
EN=0;
}
/*------------------------------------------------------*/
void lw(uchar x, uchar y, uchar dd)
{
if(x>=64)
{set_xy(x-64,y);
wdata(dd,0,1);}
else
{set_xy(x,y);
wdata(dd,1,0);}
}
/*---------------------------------------------------*/
void set_startline(uchar i)
{
i=0xc0+i;
wcode(i,1,1);
}
/*----------------------------------------------*/
void set_xy(uchar x,uchar y)
{
x=x+0x40;
y=y+0xb8;
wcode(x,1,1);
wcode(y,1,1);
}
/*-------------------------------------------------------------*/
void dison_off(uchar o)
{
o=o+0x3e;
wcode(o,1,1);
}
/*----------------------------------------------------------------------*/
void reset()
{
RST=0;
delay(20);
RST=1;
delay(20);
}
/*---------------------------------------------------------------*/
void lcd_init(void)
{uchar x,y;
reset();
set_startline(0);
dison_off(0);
for(y=0;y<8;y++)
{
for(x=0;x<128;x++)lw(x,y,0);
}
dison_off(1);
}
/*----------------------------------------------------------------------------*/
void displayhz(uchar xx, uchar yy, uchar n)
{
uchar i,dx;
for(i=0;i<16;i++)
{
dx=hzk[2*i+n*32];
lw(xx*8+i,yy,dx);
dx=hzk[2*i+1+n*32];
lw(xx*8+i,yy+1,dx);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -