📄 lcd12864.txt
字号:
{
x=x+0xb8;
LCD_wcode(x,1,1);
y=y+0x40;
LCD_wcode(y,1,1);
}
//判断X,Y轴并写入一位数据,k=1反显
void LCD_writeAword(unsigned char LCD_store,unsigned char *y,unsigned char k)
{
if(*y==64 || *y==LCD_y)//判断是否要写X,Y轴
{
if(*y>=64)
{
LCD_set_adr(LCD_x,*y-64);
}
else
{
LCD_set_adr(LCD_x,*y);
}
}
if(*y>=64)
{
if(k==0)
{
LCD_wdata(LCD_store,0,1);
}
else
{
LCD_wdata(~LCD_store,0,1);
}
}
else
{
if(k==0)
{
LCD_wdata(LCD_store,1,0);
}
else
{
LCD_wdata(~LCD_store,1,0);
}
}
(*y)++;
}
//a[]数据指针,w宽,h高,move 字节移动,move_little 位移(0-7),head 数据开头指针地址,trail 数据最后指针地址,k=1反显
void LCD_write(unsigned char a[],unsigned char w,unsigned char h,unsigned char k)
{
unsigned char loop,loop2,y;
unsigned char word_p=0;//计数指针
y=LCD_y;
for(loop2=0;loop2<h;loop2++)
{
for (loop=0;loop<w;loop++)
{
LCD_writeAword(a[word_p],&y,k);
word_p++;
}
LCD_x++;y=LCD_y;
}
}
//填充子程序
void LCD_write_full(unsigned char d,unsigned char w,unsigned char h)
{
unsigned char loop,loop2,y;
y=LCD_y;
for(loop2=0;loop2<h;loop2++)
{
for (loop=0;loop<w;loop++)
{
LCD_writeAword(d,&y,0);
}
LCD_x++;y=LCD_y;
}
}
void main()
{
PCA0MD=0; //关闭看门狗
/********************************************端口初始化************************/
P0MDOUT=0xed; //输出:SCK(p0.0),MOSI(p0.2),CSn(p0.3)
P1MDOUT=0xff; //8位输出
P2MDOUT=0xff;
XBR0=0x02; //将SPI0配置到端口
XBR1=0x40; //交叉开关使能
/*******************************************设定内部时钟***********************/
OSCICN=0xc3; //不分频
CLKSEL=0x10; //使用内部振荡,usb时钟6M
EMI0CN=0x00; //2K地址块以取模的方式映射到整个外部数据存储器的地址空间
/******************************************外部存储器XRAM接口控制初始化********/
ET0=1; //允许T0计数溢出时产生中断请求
RST=0;
delay(1000);
E=0;
RST=1;
delay(200);
D_I=0;R_W=1;
CS1=1;CS2=1;
LCD_data=0xff;
E=1;
delay(200);
E=0;
//开显示
LCD_wcode(0x3f,1,1);
//设Z坐标
LCD_wcode(0xc0,1,1);
//设光标
LCD_x=0;LCD_y=0;
LCD_write_full(0x00,128,8);
delay(50000);
delay(50000);
delay(50000);
delay(50000);
LCD_x=0;LCD_y=0;
LCD_write((font8),128,2,0);
LCD_x=2;LCD_y=0;
LCD_write((font9),128,2,0);
LCD_x=4;LCD_y=0;
LCD_write((font10),128,2,0);
LCD_x=6;LCD_y=0;
LCD_write((font11),128,2,0);
n=100;
i=0;
v=0;
RED=0;
while(1)
{
n--;
if(n==0)
{n=50;
if(v==0){
LCD_x=0;LCD_y=0;
LCD_write((font8),128,2,0);
LCD_x=2;LCD_y=0;
LCD_write((font9),128,2,0);
LCD_x=4;LCD_y=0;
LCD_write((font10),128,2,0);
LCD_x=6;LCD_y=0;
LCD_write((font11),128,2,0);
LCD_x=1;LCD_y=0;
LCD_write((BMP3),64,4,0);
LCD_x=5;LCD_y=0;
LCD_write((BMP4),64,2,0);
delay(50000);
delay(50000);
delay(50000);
delay(50000);
delay(50000);
delay(50000);
delay(50000);
delay(50000);
delay(50000);
delay(50000);
delay(50000);
delay(50000);
delay(50000);
delay(50000);
delay(50000);
delay(50000);
delay(50000);
LCD_x=0;LCD_y=0;
LCD_write((font8),128,2,0);
LCD_x=2;LCD_y=0;
LCD_write((font9),128,2,0);
LCD_x=4;LCD_y=0;
LCD_write((font10),128,2,0);
LCD_x=6;LCD_y=0;
LCD_write((font11),128,2,0);
}
else
{
LCD_x=0;LCD_y=0;
LCD_write((font8),128,2,0);
LCD_x=2;LCD_y=0;
LCD_write((font9),128,2,0);
LCD_x=4;LCD_y=0;
LCD_write((font10),128,2,0);
LCD_x=6;LCD_y=0;
LCD_write((font11),128,2,0);
LCD_x=0;LCD_y=64;
LCD_write((BMP1),64,4,0);
LCD_x=4;LCD_y=64;
LCD_write((BMP2),64,4,0);
delay(50000);
delay(50000);
delay(50000);
delay(50000);
delay(50000);
delay(50000);
delay(50000);
delay(50000);
delay(50000);
delay(50000);
delay(50000);
delay(50000);
LCD_x=0;LCD_y=0;
LCD_write((font8),128,2,0);
LCD_x=2;LCD_y=0;
LCD_write((font9),128,2,0);
LCD_x=4;LCD_y=0;
LCD_write((font10),128,2,0);
LCD_x=6;LCD_y=0;
LCD_write((font11),128,2,0);
}
v=~v;
if(i==2)
{BLUE=1;GREEN=0;RED=0;
i=0;}
else if(i==1)
{BLUE=0;GREEN=1;RED=0;i++;}
else
{BLUE=0;GREEN=0;RED=1;i++;}
}
delay(50000);
delay(50000);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -