📄 main.c
字号:
LCD_write_string(0,2,str1);
LCD_write_string(0,3,str2);
Disp_H_Line();
Disp_Img(BMP);
write_command(0x01);
drawrectangular(0,40,64,48);
}
}
void initLCD()
{ write_command(0x01);
delay_us(20);
write_command(0x0c);
delay_us(20);
write_command(0x80);
delay_us(20);
}
void write_command(unsigned char COMMAND)
{
RS=0;
RW=0;
E=1;
delay_us(20);
*P_IOA_Data = COMMAND;
delay_us(20);
E=0;
}
void write_data(unsigned char DATA)
{
E=1;
RS=1;
RW=0;
delay_us(20);
*P_IOA_Data = DATA;
delay_us(20);
E=0;
}
void delay_us(int time)
{int i =0;
do
{
time--;
*P_Watchdog_Clear=0x0001;
}
while(time>1);
}
void delay_ms(unsigned int time)
{
while(time != 0)
{
delay_us(100);
time--;
}
}
void LCD_busy( )
{ RS=0;
RW=1;
E=1;
*P_IOB_Dir = 0xff00;
*P_IOB_Attrib=0xffff;
while((*P_IOB_Data&0x80)==0x80);
E=0;
}
void LCD_set_xy( unsigned char x, unsigned char y )
{
unsigned char address;
switch(y){
case 0:
address = 0x8 + x;
break;
case 1:
address = 0x90 + x;
break;
case 2:
address = 0x88 + x;
break;
case 3:
address = 0x98 + x;
break;
default:address = 0x80 + x;}
write_command( address);
}
void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s)
{
LCD_set_xy( X, Y );
while (*s)
{
write_data( *s );
s ++;
delay_us(1);
}
}
void CGRAM()
{ int i=0,j;
for(j=0;j<32;j++)
{
write_command(0x36);
write_command(j+0x80); //行地址
write_command(0x80); //列地址
write_command(0x30);
write_data(zk[i++]);
write_data(zk[i++]);
write_data(zk[i++]);
write_data(zk[i++]);
}
}
void Disp_Img(unsigned char *img)
{ unsigned int j=0;
unsigned char x,y,i;
for(i=0;i<9;i+=8)
for(y=0;y<32;y++) //原来 为 y<26 ,上下两个半屏不能正常对接显示,导致显示的图片中间有空隙
for(x=0;x<8;x++)
{ write_command(0x36); //功能设置---8BIT控制界面,扩充指令集
write_command(y+0x80); //行地址
write_command(x+0x80+i); //列地址
write_command(0x30);
write_data(img[j++]);
write_data(img[j++]);
}
}
void Disp_H_Line()
{ unsigned char x,y;
unsigned char k=0x00;
for(y=0;y<32;y++)
{ k=~k;
for(x=0;x<16;x++)
{ write_command(0x36);
write_command(y+0x80); //行地址
write_command(x+0x80); //列地址
write_command(0x30);
write_data(k);
write_data(k);
}
}
write_command(0x34);
write_command(0x36);
}
void drawrectangular(unsigned char x1,unsigned char y1,unsigned char x2,unsigned char y2)
{
int i,j;
unsigned char x=x2-x1;
unsigned char y=y2-y1;
for(j=0;j<y;j++)
// for(i=0;i<x;i++)
{
write_command(0x36);
write_command(0x80+y1+j); //行地址
write_command(0x80+x1); //列地址
write_command(0x30);
for(i=0;i<x;i+=8)
// write_data(0xff);
write_data(0xff);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -