📄 main.c
字号:
0xA4,0x04,0x24,0x04,0x25,0xF4,0x24,0x04,0x3C,0x04,0x24,0x04,0x20,0x28,0x00,0x10
};
unsigned char code HZ3[]=
{
/****************************0(8*16)index=0x00******************************/
0x00,0x00,0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x3C,0x00,0x00,0x00,
/****************************1(8*16)index=0x01******************************/
0x00,0x00,0x08,0x18,0x28,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00,0x00,
/****************************2(8*16)index=0x02******************************/
0x00,0x00,0x3C,0x42,0x42,0x02,0x02,0x04,0x04,0x08,0x10,0x20,0x7E,0x00,0x00,0x00,
/****************************3(8*16)index=0x03******************************/
0x00,0x00,0x3C,0x42,0x42,0x02,0x02,0x1C,0x02,0x02,0x42,0x42,0x3C,0x00,0x00,0x00,
/****************************4(8*16)index=0x04******************************/
0x00,0x00,0x04,0x0C,0x14,0x24,0x24,0x44,0x84,0xFE,0x04,0x04,0x04,0x00,0x00,0x00,
/****************************5(8*16)index=0x05******************************/
0x00,0x00,0x3E,0x20,0x20,0x40,0x7C,0x42,0x02,0x02,0x42,0x44,0x3C,0x00,0x00,0x00,
/****************************6(8*16)index=0x06******************************/
0x00,0x00,0x3C,0x42,0x42,0x40,0x5C,0x62,0x42,0x42,0x42,0x42,0x3C,0x00,0x00,0x00,
/****************************7(8*16)index=0x07******************************/
0x00,0x00,0x7E,0x02,0x04,0x04,0x08,0x08,0x08,0x10,0x10,0x10,0x10,0x00,0x00,0x00,
/****************************8(8*16)index=0x08******************************/
0x00,0x00,0x3C,0x42,0x42,0x42,0x42,0x3C,0x42,0x42,0x42,0x42,0x3C,0x00,0x00,0x00,
/****************************9(8*16)index=0x09******************************/
0x00,0x00,0x3C,0x42,0x42,0x42,0x42,0x46,0x3A,0x02,0x42,0x42,0x3C,0x00,0x00,0x00,
/**************************百分号("%")(8*16)index=0x0A**********************/
0x00,0x00,0x00,0x44,0xA4,0xA8,0xA8,0xA8,0x54,0x1A,0x2A,0x2A,0x2A,0x44,0x00,0x00,
/****************************冒号(:)(8*16)index=0x0B************************/
0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,
/****************************m(8*16)index=0x0C******************************/
0x00,0x00,0x00,0x00,0x00,0x6C,0x92,0x92,0x92,0x92,0x92,0x00,0x00,0x00,0x00,0x00,
/***************************加号(+)(8*16)index=0x0D*************************/
0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x10,0xFE,0x10,0x10,0x10,0x10,0x00,0x00,0x00,
/***************************横线(-)(8*16)index=0x0E*************************/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/**************************星号(*)(8*16)index=0x0F**************************/
0x00,0x00,0x00,0x00,0x10,0x10,0xD6,0x38,0x38,0xD6,0x10,0x10,0x00,0x00,0x00,0x00,
/**************************小数点(8*16)index=0x10***************************/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x38,0x38,0x00,0x00,
/**************************空格(" ")(8*16)index=0x11************************/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/**************************斜线("/")(8*16)index=0x12************************/
0x00,0x00,0x01,0x02,0x02,0x04,0x04,0x08,0x08,0x10,0x10,0x20,0x20,0x40,0x40,0x00
};
void WRITE_D(int D) //写数据
{
checkbusy();
cd=0;
ce=1;
ce=0;
rd=1;
wr=0;
P2=D;
wr=1;
ce=1;
}
void WRITE_C(int C) //写命令
{
checkbusy();
cd=1;
ce=1;
ce=0;
rd=1;
wr=0;
P2=C;
wr=1;
ce=1;
}
void COM_1(int D1,int C1) //单参数函数
{
WRITE_D(D1);
WRITE_C(C1);
}
void COM_2(int D1,int D2,int C1) //双参数函数
{
WRITE_D(D1);
WRITE_D(D2);
WRITE_C(C1);
}
void COM_0(int C1) //无参数指令
{
WRITE_C(C1);
}
void ClearScreen(void)
{
unsigned char i,j;
COM_2(0x00,0x00,0x24);//图形地址指针设置
for(i=0;i<128;i++)//128行
{
for(j=0;j<30;j++)//每行30个字节
{
COM_1(0x00,0xC0);//数据写,地址指针加1
}
}
COM_2(0x00,0x10,0x24);//文本地址指针设置
for(i=0;i<128;i++)
{
for(j=0;j<30;j++)
{
COM_1(0x00,0xC0);//数据写,地址指针加1
}
}
}
void initlcd(void) //初始化
{
rst=0; //reset
delay(10); //delay 10ms
rst=1;
COM_0(0x90);//显示关
COM_2(0x00,0x10,0x40); //设置文本区首地址
COM_2(0x1E,0x00,0x41); //设置文本区域(宽度)
COM_2(0x00,0x00,0x42); //设置图形首地址
COM_2(0x1E,0x00,0x43); //设置图形区域(宽度)
COM_0(0x88); //CGRAM方式,OR模式
//COM_2(0x10,0x06,0x21); //设置光标指针
//COM_2(0x00,0x00,0x22); //CGRAM偏置地址寄存器设置
//COM_2(0x00,0x00,0x24); //地址指针设置,设置将要进行操作的显示缓冲区(RAM)的一个单元地址
//COM_0(0xA0); //设置光标一行
COM_0(0x9F); //图形显示开,文本显示开,光标显示开,光标闪烁开
}
void ShowHZB(unsigned char line,unsigned char column,unsigned char indexB) //正显示16*16
{
unsigned char add_h,add_l;
unsigned int addr;
unsigned int StartAddr;
StartAddr=line*30+column; //定位起始行
addr=indexB*16; //code 储存地址,即字符代码地址
while(addr<(indexB+2)*16) //每次写32个字节
{
add_l=StartAddr%(0x0100); //低位地址
add_h=StartAddr/(0x0100); //高位地址
COM_2(add_l,add_h,0x24); //定位当前操作位置
COM_1(HZ2[addr],0xc0); //向当前操作位置写入要显示的内容,左半部分
COM_1(HZ2[addr+1],0xc0); //向当前操作位置写入要显示的内容,右半部分
COM_0(0x9F); //图形显示开,文本显示开,光标显示开,光标闪烁开
addr++;
addr++; //使字符代码指针指向下一要写入的字节
StartAddr=StartAddr+30; //每行30个字节,本指令使指针指向将要写入汉字(显示缓存)的下一行
}
StartAddr=0; //写完一个汉字(16行)后,起始行复0
}
void R_ShowHZB(unsigned char line,unsigned char column,unsigned char indexB) //反显示16*16
{
unsigned char add_h,add_l,dat;
unsigned int addr;
unsigned int StartAddr;
StartAddr=line*30+column; //定位起始行
addr=indexB*16; //code 储存地址
while(addr<(indexB+2)*16)
{
add_l=StartAddr%(0x0100); //低位地址
add_h=StartAddr/(0x0100); //高位地址
COM_2(add_l,add_h,0x24); //定位当前操作位置
dat=HZ2[addr];
dat=~dat;
COM_1(dat,0xc0);
dat=HZ2[addr+1];
dat=~dat;
COM_1(dat,0xc0);
COM_0(0x9F); //图形显示开,文本显示开,光标显示开,光标闪烁开
addr++;
addr++;
StartAddr=StartAddr+30;
}
StartAddr=0;
}
void Showchar(unsigned char line,unsigned char column,unsigned char index) //显示字符8*16
{
unsigned char add_h,add_l;
unsigned int addr;
unsigned int StartAddr;
StartAddr=line*30+column; //定位起始行
addr=index*16; //code 储存地址
while(addr<(index+1)*16)
{
add_l=StartAddr%(0x0100); //低位地址
add_h=StartAddr/(0x0100); //高位地址
COM_2(add_l,add_h,0x24); //定位当前操作位置
COM_1(HZ3[addr],0xc0);
COM_0(0x9F);
addr++;
StartAddr=StartAddr+30;
}
StartAddr=0;
}
void R_Showchar(unsigned char line,unsigned char column,unsigned char index) //反显示8*16
{
unsigned char add_h,add_l,dat;
unsigned int addr;
unsigned int StartAddr;
StartAddr=line*30+column; //定位起始行
addr=index*16; //code 储存地址
while(addr<(index+1)*16)
{
add_l=StartAddr%(0x0100); //低位地址
add_h=StartAddr/(0x0100); //高位地址
COM_2(add_l,add_h,0x24); //定位当前操作位置
dat=~HZ3[addr];
COM_1(dat,0xc0);
COM_0(0x9F);
addr++;
StartAddr=StartAddr+30;
}
StartAddr=0;
}
void checkbusy(void)
{
unsigned char data0;
cd=1;
ce=1;
ce=0;
rd=0;
wr=1;
data0=P2;
rd=1;
ce=1;
while((data0&0x03)!=0x03);
}
void delay(unsigned int t)
{
while(t!=0) t--; //t=10,10us
}
void main(void) //主程序
{
fs=0; //font select ,H:6x8,L:8x8
initlcd(); //初始化
ClearScreen(); //清屏
ShowHZB(0,2,0x00);
// R_Showchar(0,2,0x00);
//ShowHZB(32,23,0x02);
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -