📄 lcd绝对好用.txt
字号:
#include <reg52.h>
#include <absacc.h>
#define uint unsigned int
#define uchar unsigned char
unsigned char code QING[32]={
/* 请 */
0x00,0x04,0x04,0xC4,0xB4,0x8C,0x87,0x84,0xF4,0x84,0x84,0x84,0x84,0x04,0x00,0x00,
0x00,0x00,0x20,0x18,0x0E,0x04,0x20,0x40,0xFF,0x00,0x02,0x04,0x18,0x30,0x00,0x00
};
unsigned char code CHA[32]={
/* 插 */
0x10,0x10,0x10,0xFF,0x90,0x24,0x24,0xA4,
0x24,0xFC,0x22,0x23,0x22,0xB0,0x20,0x00,
0x02,0x42,0x81,0x7F,0x00,0xFF,0x49,0x48,
0x40,0x7F,0x40,0x49,0x49,0xFF,0x01,0x00
};
unsigned char code KA[32]={
/* 卡 */
0x40,0x40,0x40,0x40,0x40,0x40,0xFF,0x44,
0x44,0x44,0x46,0x44,0x40,0x60,0x40,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,
0x02,0x04,0x0C,0x18,0x00,0x00,0x00,0x00
};
unsigned char code four[16]={0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00};
sbit rest=P1^0;
sbit busy=ACC^7;
sbit E=P2^3;
sbit RW=P2^5;
sbit RS=P2^6;
sbit CS1=P2^0;
sbit CS0=P2^1;
static int Q=0;
void check_busy()
{
P0=0xff;
RS=0;
RW=1;
E=1;
while(P0 & busy);
E=0;
}
/*下面是对液晶屏gxm12864d操作的函数, 128x64点阵,汉字显示,CSA,CSB用来进行左右显示区的选择。*/
/* 发命令i到主窗口*/
void lcd_mwcl(uchar i)
{
CS0=0;CS1=1;
check_busy();
RS=0;
RW=0;
P0=i;
E=1;
E=0;
}
void lcd_mwcr(uchar i)
{
CS0=1;CS1=0;
check_busy();
RS=0;
RW=0;
P0=i;
E=1;
E=0;
}
/* 写数据i到主窗口*/
void lcd_mwdl(uchar i)
{ check_busy();
CS0=0;CS1=1;
RW=0;
RS=1;
P0=i;
E=1;
E=0;
}
void lcd_mwdr(uchar i)
{ check_busy();
CS0=1;CS1=0;
RW=0;
RS=1;
P0=i;
E=1;
E=0;
}
/* 清屏 */
void lcd_clearl(void)
{
uchar i;
uchar page;
for (page=0xb8;page<0xc0;page++)
{
lcd_mwcl(page); /*设置显示页面*/
lcd_mwcl(0x40); /*设置列地址*/
for (i=0;i<64;i++)
{
lcd_mwdl(0);
}
}
}
void lcd_clearr(void)
{
uchar i;
uchar page;
for (page=0xb8;page<0xc0;page++)
{
lcd_mwcr(page); /*设置显示页面*/
lcd_mwcr(0x40); /*设置列地址*/
for (i=0;i<64;i++)
{
lcd_mwdr(0);
}
}
}
//初始化lcd
void lcd_init(void)
{
lcd_mwcl(0xc0);
lcd_mwcr(0xc0);
lcd_mwcr(0x3f);
lcd_mwcl(0x3f);
}
void displayl(uchar x,uchar y,uchar *p)
{ int i,j;
lcd_mwcl(x);//设置页
lcd_mwcl(y);//设置列
for(i=0;i<16;i++)
{lcd_mwdl(*(p+i));}
lcd_mwcl(x+1);//设置页
lcd_mwcl(y);//设置列
for(j=16;j<32;j++)
{lcd_mwdl(*(p+j));}
}
void displayr(uchar x,uchar y,uchar *p)
{ int i,j;
lcd_mwcr(x);//设置页
lcd_mwcr(y);//设置列
for(i=0;i<8;i++)
{lcd_mwdr(*(p+i));}
lcd_mwcr(x+1);//设置页
lcd_mwcr(y);//设置列
for(j=8;j<16;j++)
{lcd_mwdr(*(p+j));}
}
void main(void)
{ rest=0;
rest=1;
E=1;
lcd_clearr();
lcd_clearl();
lcd_init();
/* wenzi*/
displayl(0xb8,0x48,QING);
displayl(0xb8,0x56,CHA);
displayl(0xba,0x48,QING);
displayl(0xba,0x56,CHA);
displayl(0xbc,0x48,QING);
displayl(0xbc,0x56,CHA);
displayl(0xbe,0x48,QING);
displayl(0xbe,0x56,CHA);
/*shuju*/
displayr(0xb8,0x48,no1);
displayr(0xb8,0x56,no2);
displayr(0xb8,0x64,no3);
displayr(0xba,0x48,no1);
displayr(0xba,0x56,no1);
displayr(0xba,0x64,);
displayr(0xbc,0x48,four);
displayr(0xbc,0x56,four);
displayr(0xbc,0x64,four);
displayr(0xbe,0x48,four);
displayr(0xbe,0x56,four);
displayr(0xbe,0x64,four);
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -