📄 disp12864.c
字号:
#include<reg52.h>
sbit BUT=P3^0;
sbit CS2= P2^3;
sbit CS1= P2^4;
sbit RS= P2^5;
sbit RW= P2^6;
sbit E= P2^7;
sbit BUSY= P0^7;
#define DATALINE P0
delay()
{
unsigned char i=5;
while(i--);
}
void delay1(unsigned int i){
while(i--);
}
void Busy(bit j)
{
RS=0;
RW=0;
CS1=j;CS2=~j;
E=1;
DATALINE=0XFF;
RW=1;
while(DATALINE==0x80){delay();} //注意此处
}
void write_cmd(unsigned char i,bit j){
Busy(j);
RS=0;RW=0;CS1=j;CS2=~j;
E=1;
DATALINE=i;
delay();
E=0;
}
void write_data(unsigned char i,bit j){
Busy(j);
RS=1;RW=0;CS1=j;CS2=~j;
E=1;
DATALINE=i;
delay();
E=0;
}
void CLR_lcd(void){
unsigned char i,j;
for(i=0;i<8;i++)
{
write_cmd(0xb8+i,1);
write_cmd(0xb8+i,0);
write_cmd(0x40,1);
write_cmd(0x40,0);
for(j=0;j<64;j++) //L R 清屏顺序
{
write_data(0x00,0);
}
for(j=0;j<64;j++)
{
write_data(0x00,1);
}
}
}
void Write_Char1(unsigned char i[]){
unsigned char j;
write_cmd(0xb8,1);
write_cmd(0x40,1);
for(j=0;j<8;j++)
{
write_data(i[j],1);
}
write_cmd(0xb8+1,1);
write_cmd(0x40,1);
for(j=8;j<15;j++)
{
write_data(i[j],1);
}
}
unsigned char code Bmp1[]=
{
/*------------------------------------------------------------------------------
源文件 / 文字 : 5
字宽*字高 : 8*16
------------------------------------------------------------------------------*/
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00
};
unsigned char code Bmp2[]=
{
/*------------------------------------------------------------------------------
源文件 / 文字 :
字宽*字高(像素):16*16
------------------------------------------------------------------------------*/
0x20,0x20,0x22,0x22,0xFE,0x21,0x21,0x20,0x20,0xFF,0x20,0x22,0xAC,0x20,0x20,0x00,
0x04,0x04,0x42,0x82,0x7F,0x01,0x01,0x10,0x10,0x08,0x07,0x1A,0x21,0x40,0xF0,0x00
};
unsigned char code Bmp3[]=
{
/*------------------------------------------------------------------------------
源文件 / 文字 :
宽×高(像素): 16×16
------------------------------------------------------------------------------*/
0x00,0x40,0xB2,0x96,0x9A,0x92,0xF6,0x9A,0x93,0x91,0x99,0x97,0x91,0x90,0x30,0x00,
0x40,0x20,0xA0,0x90,0x4C,0x47,0x2A,0x2A,0x12,0x1A,0x26,0x22,0x40,0xC0,0x40,0x00
};
unsigned char code Bmp4[]=
{
/*------------------------------------------------------------------------------
源文件 / 文字 :
宽×高(像素): 16×16
------------------------------------------------------------------------------*/
0x40,0x40,0x42,0x42,0x42,0x42,0x42,0xFE,0x42,0x42,0x42,0x42,0x42,0x42,0x40,0x00,
0x00,0x00,0x00,0x00,0x20,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
unsigned char code Bmp5[]=
{
/*------------------------------------------------------------------------------
源文件 / 文字 :
宽×高(像素): 16×16
------------------------------------------------------------------------------*/
0x00,0x18,0x0A,0xAA,0xAA,0xAA,0x0A,0xFE,0x0A,0xAA,0xAA,0xAA,0x0A,0x18,0x08,0x00,
0x00,0x00,0x42,0x4A,0x4A,0x4A,0x4A,0x4A,0x4A,0x4A,0x4A,0x4A,0xFE,0x00,0x00,0x00
};
void Write_Char2(unsigned char i[],bit k,unsigned char m,unsigned char n){
unsigned char j;
write_cmd(0xb8|m,k);
write_cmd(0x40|n,k);
for(j=0;j<16;j++)
{
write_data(i[j],k);
}
write_cmd(0xb9+m,k); //write_cmd(0xb8+1|m,k);未成功
write_cmd(0x40|n,k);
for(j=16;j<32;j++)
{
write_data(i[j],k);
}
}
void LCD_Initial(void){
write_cmd(0x3e,1);
write_cmd(0x3e,0);
write_cmd(0x3f,1);
write_cmd(0x3f,0);
write_cmd(0xc0,1);
write_cmd(0xc0,0);
CLR_lcd();
}
main()
{
unsigned char i;
LCD_Initial();
Write_Char2(Bmp2,0,1,0);
for(i=0;i<4;i++)
{
while(BUT);
if(i==0)Write_Char2(Bmp3,0,1,16);
if(i==1)Write_Char2(Bmp4,0,1,32);
if(i==2)Write_Char2(Bmp5,0,1,48);
while(!BUT);
}
CLR_lcd();
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -