📄 esdram.c
字号:
#include<reg51.h>
#include<stdio.h>
#include<absacc.h>
#include<math.h>
#include<INTRINS.h>
#define uchar unsigned char
uchar *p,*p1,*p2;/*建立数组指针*/
sbit A0=P2^0;
sbit A1=P2^1;
sbit E=P2^7;/*读写使能信号,1有效*/
sbit R_W=P3^6;/*读写选择信号;1为读选通,0为写选通*/
sbit D_I=P3^7;/*数据指令选择信号;1为数据操作,0为写指令或读状态*/
char code hanzi[25][33]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,
0x01,0xF0,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0xF0,0x00,0x00,
0x00,0x00,0xE0,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x78,0x00,
0x00,0x00,0x78,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x0F,0xF8,0x00,0x00,0x00,0x70,
0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x38,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xE0,
0x00,0x00,0x07,0xFE,0xF8,0x00,0x00,0x38,0x70,0x00,0x00,0x00,0x01,0xFC,0x00,0x00,
0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0xE0,0x00,0x00,0x03,0xE0,0xE0,0x00,0x00,
0x3C,0x70,0x00,0x00,0x00,0x7F,0xFE,0x00,0xC0,0x01,0xFC,0x00,0x1F,0x00,0x00,0x00,
0x00,0xE0,0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x1C,0x70,0x00,0x00,0x3F,0xFC,0x00,
0x00,0xC7,0xFF,0xFE,0x00,0xF3,0x80,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x03,0x80,
0x00,0x00,0x1C,0x70,0x00,0x3F,0xFE,0x00,0x00,0x01,0xFF,0x00,0x3F,0x00,0x03,0x80,
0x00,0x00,0x00,0xE7,0xE0,0x00,0x00,0x07,0x00,0x00,0x00,0x18,0x60,0xC0,0x0F,0x00,
0x00,0x00,0x01,0xC0,0x00,0x38,0x00,0x03,0x80,0x00,0x00,0x03,0xFF,0xF8,0x00,0x00,
0x1E,0x00,0x00,0x00,0x18,0x61,0xE0,0x00,0x00,0x0C,0x00,0x03,0xC0,0x00,0x60,0x00,
0x03,0x80,0x00,0x00,0xFF,0xE0,0xF0,0x00,0x00,0x0E,0x00,0x00,0x00,0x18,0x61,0xE0,
0x00,0x00,0xFF,0x00,0x07,0x80,0x00,0x00,0x00,0x03,0xF8,0x07,0x00,0x70,0xE0,0xF0,
0x00,0x00,0x0E,0x1F,0xC0,0x00,0x38,0x67,0x80,0x00,0x7F,0x8F,0x80,0x03,0x80,0x00,
0x00,0x00,0x3F,0x80,0x7F,0xC0,0x70,0xE0,0xE0,0x00,0x00,0x0F,0xFF,0xF0,0x0F,0xF8,
0x6E,0x00,0x00,0x38,0x0E,0x00,0x00,0x00,0x1F,0xF0,0x07,0xFF,0x0F,0xE7,0xC0,0x30,
0xFE,0xE0,0x00,0x01,0xFF,0xC0,0x00,0x07,0x18,0x78,0x00,0x00,0x18,0x0C,0x00,0x00,
0x07,0xFF,0xF0,0x07,0x8F,0x0E,0x03,0x80,0x3F,0xF8,0xE0,0x01,0xFF,0xE7,0x00,0x00,
0x00,0x18,0x60,0x00,0x00,0x18,0x1C,0x00,0x00,0x7F,0xE0,0x00,0x00,0x0F,0x06,0x07,
0x80,0x38,0xE0,0xE0,0x00,0xF8,0x07,0x00,0x00,0x00,0x18,0x60,0x00,0x00,0x1C,0x7C,
0x00,0x00,0x00,0x70,0x00,0x00,0x1F,0x07,0x07,0x00,0x38,0xE1,0xC0,0x00,0x00,0x07,
0x00,0x00,0x00,0x18,0x60,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0x70,0x00,0x00,0x3F,
0xF7,0x07,0x00,0x38,0xE1,0xC0,0x00,0x00,0x07,0x00,0x00,0x00,0x18,0x60,0x18,0x00,
0x0D,0xC0,0x00,0x00,0x00,0x70,0x00,0x00,0x3B,0x77,0x07,0x00,0x18,0xFF,0xC0,0x00,
0x00,0x07,0x00,0x00,0x00,0x38,0x60,0x18,0x00,0x00,0xC0,0x00,0x00,0x00,0x70,0x00,
0x00,0x73,0x07,0x3F,0x00,0x1F,0xFF,0xC3,0x00,0x00,0x07,0x00,0x00,0x00,0x78,0x60,
0x18,0x00,0x60,0xC0,0x00,0x00,0x00,0x70,0x00,0x00,0xE3,0x03,0xFE,0x00,0x18,0xE1,
0x83,0x00,0x00,0x07,0x00,0x00,0x03,0xD8,0x60,0x18,0x00,0x60,0xC7,0xC0,0x00,0x00,
0x30,0x00,0x01,0xC3,0x03,0x00,0x00,0x00,0xE0,0x03,0x00,0x00,0x07,0x00,0x00,0x0F,
0x98,0x70,0x3C,0x00,0xE0,0xC3,0xE0,0x00,0x00,0x30,0x00,0x03,0x83,0x03,0x00,0x00,
0x00,0xE0,0x03,0x00,0x00,0x07,0x00,0x00,0x3E,0x18,0x7C,0xFC,0x00,0xE0,0xC1,0xF0,
0x00,0x00,0x70,0x00,0x06,0x03,0x00,0x00,0x00,0x00,0x60,0x03,0x80,0x00,0x07,0x00,
0x00,0x1C,0x18,0x3F,0xF8,0x01,0xE0,0xC0,0xF0,0x00,0x00,0x70,0x00,0x00,0x03,0x00,
0x00,0x00,0x00,0x70,0x07,0x80,0x00,0x07,0x00,0x00,0x00,0x18,0x07,0x80,0x01,0xC0,
0xC0,0x70,0x00,0x00,0x70,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x78,0x1F,0x80,0x00,
0xFF,0x00,0x00,0x00,0x18,0x00,0x00,0x01,0x8D,0xC0,0x00,0x00,0x03,0x70,0x00,0x00,
0x07,0x00,0x00,0x00,0x00,0x3F,0xFF,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x07,0xC0,0x00,0x00,0x01,0xF0,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x07,0xF8,
0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0xF0,
0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0xE0,0x00,0x00,0x03,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,
0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 //52
};
uchar data l1;
uchar data l2;
uchar data page; /*行地址*/
uchar data col1; /*列地址高字节*/
uchar data col=0x00; /*列地址低字节*/
uchar data yanse1; /*背景色*/
uchar data yanse10;
uchar data yanse2; /*前景色-显示字符颜色*/
uchar data yanse20;
#define dlcd XBYTE[0x0000]/*定义送数据的地址*/ //每个像素点显示颜色为16位色,连续写入两个字节(16位)显示一个像素点颜色
#define clcd1 XBYTE[0x0100]/*定义送指令的地址*/ //写数据前用:设定行地址低8位,行地址0-255对应液晶屏从上到下1到256行
#define clcd2 XBYTE[0x0200]/*定义送指令的地址*/ //设定列地址低8位,列地址0-255
#define clcd3 XBYTE[0x0300]/*定义送指令的地址*/ //设定显示页、操作页地址;行列地址高位
/**************************************************/
void Clearlcd();/*清屏*/
void Hanz();
void Hanz1();
//void Xian();
//void Xian1();
//void Xian2();
//void Xian3();
//void Xian4();
//void Imim();/*初始化*/
void Delay();/*延时*/
/********************主程序********************/
void main()
{
while(1)
{
yanse1=0x00; /*蓝色*/
yanse10=0x1f; //后5位是蓝色
Clearlcd();
Delay();
yanse1=0xff; /*白*/
yanse10=0xff;
Clearlcd();
Delay();
yanse1=0xf8; /*红*/
yanse10=0x00;
Clearlcd();
Delay();
yanse1=0x00; /*黑*/
yanse10=0x00;
Clearlcd();
Delay();
yanse1=0x07; /*绿*/
yanse10=0xe0;
Clearlcd();
Delay();
//例如:在第16行16列显示一行兰底黄字
l1=33;
l2=25;
page=0x10;//行地址16
col1=0x00;//列地址低字节
col=0x10;//列地址高字节
yanse1=0x00; /*蓝色*/
yanse10=0x1f;
yanse2=0xff; /*黄色*/
yanse20=0xe0;
p=hanzi;
Hanz();
//Delay();/*延时*/
//Imim();/*初始化*/
// Clearlcd();
//p=hanzi;
//Hanz();
}
//loop:goto loop;
}
/********************延时子程序********************/
void Delay()
{
uchar data i,j;
for(i=0;i<255;i++)
for(j=0;j<255;j++);
}
//1.用某颜色清屏
void Clearlcd() /*入口:yanse1,yanse10=清屏颜色*/
{
uchar data i,j;
uchar data k=0x00;
clcd3=0x00; /*设定显示页和操作页*/
for(i=0;i<255;i++)
{
clcd1=k; /*设定行地址*/
clcd2=0x00; /*设定列地址*/
for(j=0;j<160;j++) /*连续写4个像素点显示数据*/
{
dlcd=yanse1;
dlcd=yanse10;
dlcd=yanse1;
dlcd=yanse10;
dlcd=yanse1;
dlcd=yanse10;
dlcd=yanse1;
dlcd=yanse10;
}
k=k+0x01;
}
clcd1=k; /*设定行地址*/
clcd2=0x00; /*设定列地址*/
for(j=0;j<160;j++) /*连续写4个像素点显示数据*/
{
dlcd=yanse1;
dlcd=yanse10;
dlcd=yanse1;
dlcd=yanse10;
dlcd=yanse1;
dlcd=yanse10;
dlcd=yanse1;
dlcd=yanse10;
}
k=0x00;
clcd3=0x04; /*设定显示页和操作页*/
for(i=0;i<224;i++)
{
clcd1=k; /*设定行地址*/
clcd2=0x00; /*设定列地址*/
for(j=0;j<160;j++) /*连续写4个像素点显示数据*/
{
dlcd=yanse1;
dlcd=yanse10;
dlcd=yanse1;
dlcd=yanse10;
dlcd=yanse1;
dlcd=yanse10;
dlcd=yanse1;
dlcd=yanse10;
}
k=k+0x01;
}
}
//2.显示一行汉字子程序,汉字字模表在程序中
void Hanz() /*入口:*p=汉字字模16位首地址*/
{ /*page=汉字显示位置左上角坐标行地址*/
uchar data i,j,col2; /*col,col1=汉字显示位置左上角坐标列地址*/
for(i=0;i<l1;i++) /*yanse1,yanse10=汉字显示背景色,yanse2,yanse20=汉字显示颜色*/
{ /*l1=字模表中显示一行字节数*/
clcd3=0x00; /*l2=显示汉字行数*/
clcd1=page; clcd2=col;
clcd2=col1;
page=page+0x01;
for(j=0;j<l2;j++)
{
Hanz1();
}
col2=col1;
col2=col2+0x01;
if((col2|0x00)!=0x00)
{
}
else
{
col=0x01;
}
}
}
void Hanz1()
{
uchar data i,wbyte,wbyte1;
wbyte=*p;
for(i=0;i<8;i++)
{
wbyte1=wbyte;
if((wbyte1&0x80)!=0x80)
{
wbyte=wbyte<<1;
dlcd=yanse1;
dlcd=yanse10;
}
else
{
wbyte=wbyte<<1;
dlcd=yanse2;
dlcd=yanse20;
}
}
p=p+1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -