📄 240128.c
字号:
#include<reg51.h>
#include<stdio.h>
#include<absacc.h>
#define uchar unsigned char
uchar *p,*p1,*p2;/*建立数组指针*/
uchar q;/*判忙*/
uchar data i;
uchar data wbyte;
uchar data Column;/*定义列*/
int data Page,Page1;/*定义页*/
sbit C_D=P2^0;
sbit FS=P3^5;/*为1时,为6*8点阵;为0时,为8*8点阵*/
sbit E=P2^7;/*读写使能信号,1有效*/
sbit R_W=P3^6;/*读写选择信号;1为读选通,0为写选通*/
sbit D_I=P3^7;/*数据指令选择信号;1为数据操作,0为写指令或读状态*/
#define dlcd XBYTE[0x0000]/*定义送数据的地址*/
#define clcd XBYTE[0x0100]/*定义送指令的地址*/
char code Hanzi[128]= /*文本数组*/
{
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,
0x11,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x0e,0x0f,
0x21,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,
0x31,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,
0x41,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,
0x51,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f,
0x61,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,
0x71,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7f
};
char code Hanzi1[26][35]= /*图形数组*/
{
0x00,0x03,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,0xC0,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x07,0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x01,
0xE0,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,
0x0F,0x80,0x00,0x00,0x03,0xFF,0xC0,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x3E,0x00,
0x00,0x00,0x3F,0xF0,0x00,0x00,0x1F,0xFC,0x00,0x00,0x0F,0x80,0x00,0x00,0x03,0xFB,
0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x7F,0xF8,0x00,0x00,
0x1F,0xDE,0x00,0x00,0x07,0xC0,0x00,0x00,0x03,0xE7,0xC0,0x00,0x00,0x01,0xFE,0x00,
0x00,0x00,0x7E,0x00,0x00,0x00,0xFE,0x3C,0x00,0x00,0x00,0x1F,0x00,0x00,0x03,0xC0,
0x00,0x00,0x0F,0xEF,0x80,0x00,0x00,0x01,0xFE,0x00,0x00,0x01,0xFB,0xE0,0x00,0x00,
0xC0,0x1C,0x00,0x01,0xCF,0xDF,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0xCF,0x00,0x00,
0x00,0x0F,0xF0,0x00,0x00,0x03,0xFF,0xE0,0x00,0x0C,0x1C,0x1E,0x00,0x00,0xFF,0xFE,
0x00,0x00,0x03,0xFE,0x00,0x00,0x0F,0xFE,0x00,0x00,0x00,0x7F,0xE0,0x00,0x00,0x0F,
0xFF,0xE0,0x00,0x0E,0x3F,0x1E,0x00,0x00,0xFF,0xFE,0x00,0x00,0x0F,0xFF,0x80,0x00,
0x0F,0xFC,0x00,0x00,0x00,0x3F,0xF8,0x00,0x00,0x3F,0xFF,0x80,0x00,0x0E,0x7F,0x0E,
0x00,0x00,0xF7,0xFC,0x00,0x00,0x1F,0xC3,0xC0,0x00,0x0C,0xFE,0x00,0x00,0x00,0x1F,
0xFC,0x00,0x00,0x6F,0xEF,0x00,0x00,0x1F,0xFF,0x0E,0x00,0x00,0xFF,0xF8,0x00,0x03,
0xBF,0x83,0xE0,0x00,0x00,0xFF,0x00,0x00,0x00,0x03,0xFF,0xE0,0x00,0xFF,0x9E,0x00,
0x00,0x1F,0xFE,0x0E,0x00,0x00,0xFF,0xF0,0x00,0x03,0xF7,0xE3,0xE0,0x00,0x00,0x7F,
0xE0,0x00,0x00,0x03,0xFF,0xF8,0x00,0xFE,0x3F,0x00,0x00,0x1F,0xDE,0x0E,0x00,0x00,
0x7F,0xE0,0x00,0x01,0xE7,0xF7,0xE0,0x00,0x00,0x3F,0xF0,0x00,0x00,0x07,0xF8,0x78,
0x00,0xF8,0xFF,0xC0,0x00,0x1F,0x1E,0xFF,0x00,0x00,0x7F,0xE0,0x00,0x01,0xFF,0xFF,
0xC0,0x00,0x00,0xFF,0xF8,0x00,0x00,0x1F,0xB8,0x3C,0x00,0x71,0xFB,0xC0,0x00,0x3F,
0x7F,0xFF,0x00,0x00,0x1D,0xF8,0x00,0x01,0xFF,0xEF,0x80,0x00,0x07,0xE7,0xF8,0x00,
0x01,0xFF,0x78,0x3C,0x00,0x03,0xE7,0xC0,0x00,0x38,0xFF,0xFF,0x00,0x00,0x1F,0xFE,
0x00,0x01,0xFF,0xDF,0x00,0x00,0x0F,0x87,0xF0,0x00,0x01,0xFF,0xFC,0x38,0x00,0x07,
0xFF,0x80,0x00,0x38,0xFF,0xEF,0x00,0x00,0x1F,0xFE,0x00,0x01,0xEF,0xFE,0x00,0x00,
0x3F,0x07,0x80,0x00,0x01,0xE7,0xFC,0x38,0x00,0x07,0xFF,0x00,0x00,0x38,0xFE,0xCF,
0x00,0x03,0xBD,0xFE,0x00,0x01,0xFF,0xFC,0x00,0x00,0x3E,0x07,0x80,0x00,0x01,0xC7,
0xF8,0x38,0x00,0x07,0xFE,0x00,0x00,0x38,0x7F,0xCF,0x00,0x03,0xFD,0xFC,0x00,0x00,
0xFF,0xFC,0x00,0x00,0x3C,0x07,0x80,0x00,0x01,0xC7,0xFC,0x78,0x00,0x07,0x7C,0x00,
0x00,0x38,0x7F,0xCF,0x00,0x03,0xFD,0xF0,0x00,0x00,0xFF,0xFC,0x00,0x00,0x38,0x07,
0x80,0x00,0x01,0xC1,0xFC,0x78,0x00,0x00,0x1C,0x00,0x00,0x3C,0xFF,0xCF,0x00,0x03,
0xFF,0xC0,0x00,0x00,0x7F,0x80,0x00,0x00,0x38,0x07,0x80,0x00,0x01,0xC7,0xFC,0x78,
0x00,0x00,0x1F,0xE0,0x00,0x3C,0xFF,0x8F,0x00,0x01,0xDF,0xC0,0x00,0x00,0x7F,0x00,
0x00,0x00,0x18,0x07,0x80,0x00,0x01,0xC7,0xE0,0x70,0x00,0x18,0x7C,0x78,0x00,0x1E,
0xFC,0x1F,0x00,0x00,0x1F,0xFF,0x00,0x00,0x07,0x80,0x00,0x00,0x0C,0x07,0x80,0x00,
0x01,0xC7,0xFC,0xF0,0x00,0x1F,0x9C,0x7C,0x00,0x0F,0xF8,0x3E,0x00,0x01,0xFF,0xFF,
0xC0,0x00,0x07,0xFF,0x80,0x00,0x07,0x0F,0x00,0x00,0x00,0xC0,0xEF,0xF0,0x00,0x1F,
0x9D,0xFC,0x00,0x07,0xFF,0xFE,0x00,0x1F,0xFF,0xFF,0xC0,0x00,0x03,0xFF,0xC0,0x00,
0x03,0xCF,0x00,0x00,0x00,0x00,0xE7,0xE0,0x00,0x3F,0xFC,0x7C,0x00,0x03,0xDF,0xFC,
0x00,0x0F,0xE0,0x07,0xC0,0x00,0x00,0xFF,0x80,0x00,0x01,0xFF,0x00,0x00,0x00,0x00,
0xE3,0xE0,0x00,0x3C,0xFC,0x18,0x00,0x00,0x07,0xF8,0x00,0x07,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x41,0xC0,0x00,0x18,0x3C,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,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,
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,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
};
uchar data j=112;/*所建立的文本数组中元素的个数*/
uchar data j1=26;/*所建立的图形数组中元素每一行的个数*/
/*为所建立图形数组的行*/
uchar data j2=35;/*所建立的图形数组中元素每一列的个数*/
/*为所建立图形数组的列*/
uchar data k=0x20;/*文本数组起始点地址低八位*/
uchar data k1=0x00;/*文本数组起始点地址高八位*/
int data col=0x01e4;/*图形起始点坐标*/
int data col1;
uchar data l1,o1;
/**************************************************/
void WCom1(uchar);/*单步写指令*/
void WCom2(uchar);/*连续写指令*/
void DCom1(uchar);/*单步送数据*/
void DCom2(uchar);/*连续送数据*/
void Clearlcd();/*清屏*/
void Imim();/*初始化*/
void Delay();/*延时*/
void Hanz();/*写文本*/
void Hanz1();/*写图形*/
void Wbite();/*写图形子程序*/
/********************主程序********************/
void main()
{
Delay();
Delay();
Delay();/*延时*/
FS=0;
Imim();/*初始化*/
p=Hanzi;/*指针指向文本数组的首地址*/
p1=Hanzi1;/*指针指向图形数组的首地址*/
Hanz();/*写文本程序*/
Delay();
Delay();
Delay();
Delay();
Clearlcd();
Hanz1();/*写图形程序*/
loop:goto loop;
}
/********************单步写指令送数据子程序********************/
void WCOM1(uchar d) /*写指令程序*/
{
Loop:
q=clcd;/*将p0口状态读入*/
if((q&0x03)!=0x03)/*判断屏幕是否忙*/
{
goto Loop;/*若忙,循环等待*/
}
clcd=d;/*将数据送入p0口*/
}
/********************单步送数据子程序********************/
void DCOM1(uchar d) /*送数据程序*/
{
Loop:
q=clcd;/*将p0口状态读入*/
if((q&0x03)!=0x03)/*判断屏幕是否忙*/
{
goto Loop;/*若忙,循环等待*/
}
dlcd=d;/*将数据送入p0口*/
}
/********************连续写指令送数据子程序********************/
void WCOM2(uchar d) /*写指令程序*/
{
Loop:
q=clcd;/*将p0口状态读入*/
if((q&0x08)!=0x08)/*判断屏幕是否忙*/
{
goto Loop;/*若忙,循环等待*/
}
clcd=d;/*将数据送入p0口*/
}
/********************连续送数据子程序********************/
void DCOM2(uchar d) /*送数据程序*/
{
Loop:
q=clcd;/*将p0口状态读入*/
if((q&0x08)!=0x08)/*判断屏幕是否忙*/
{
goto Loop;/*若忙,循环等待*/
}
dlcd=d;/*将数据送入p0口*/
}
/********************初始化子程序********************/
void Imim()
{
Delay();
WCOM1(0x90);/*关显示指令*/
DCOM1(0x00);
DCOM1(0X00);
WCOM1(0x40);/*文本区首址设定*/
DCOM1(0x1e);
DCOM1(0X00);
WCOM1(0x41);/*文本区宽度设定*/
DCOM1(0x00);
DCOM1(0x00);
WCOM1(0x42);/*图形区首址设定*/
DCOM1(0x1e);
DCOM1(0x00);
WCOM1(0x43);/*图形区宽度设定*/
DCOM1(0X00);
DCOM1(0X00);
WCOM1(0X21);/*光标指针设置*/
WCOM1(0xa7);/*光标形状设置*/
WCOM1(0x80);/*显示方式设置*/
Clearlcd();/*清屏*/
WCOM1(0x9f);/*开显示指令*/
}
/********************延时子程序********************/
void Delay()
{
uchar data i,j;
for(i=0;i<255;i++)
for(j=0;j<255;j++);
}
/********************基本指令集清屏子程序********************/
void Clearlcd()
{
uchar data i,j;
DCOM1(0X00);
DCOM1(0X00);
WCOM1(0X24);/*地址指针设置*/
for(i=0;i<30;i++)
{
for(j=0;j<255;j++)
{
DCOM1(0x00);
WCOM1(0xc0);/*单步写数据*/
}
}
}
/********************写文本程序********************/
void Hanz()
{
DCOM1(k);
DCOM1(k1);
WCOM1(0X24);/*地址指针设置*/
WCOM1(0xb0);/*自动写方式设定*/
for(i=0;i<j;i++)
{
wbyte=*p;
DCOM2(wbyte);/*将汉字数组数据送入*/
p=p+1;
}
WCOM2(0xb2);/*自动写方式结束*/
}
/********************写图形程序********************/
void Hanz1()
{
Column=0;
wbyte=*p1;
col1=col;
l1=col1;
DCOM1(l1); /*送入图形地址低八位*/
col1=col1>>8;
o1=col1;
DCOM1(o1); /*送入图形地址高八位*/
WCOM1(0X24);/*地址指针设置*/
for(i=0;i<j2;i++)
{
for(j=0;j<j1;j++)
{
wbyte=*p1;
Wbite();
}
}
}
/********************写图形子程序********************/
void Wbite()
{
if(Column<26)
{
DCOM1(wbyte);/*将汉字数组数据送入*/
WCOM1(0xc0); /*单步写数据*/
p1=p1+1;
Column=Column+1;
}
else if(Column=26)
{
Column=0;
col=col+0x001e;/*写下一行*/
col1=col;
o1=col1;
DCOM1(o1); /*送入图形地址低八位*/
col1=col1>>8;
l1=col1;
DCOM1(l1);
WCOM1(0X24);/*地址指针设置*/
DCOM1(wbyte);/*将汉字数组数据送入*/
WCOM1(0xc0); /*单步写*/
p1=p1+1;
Column=Column+1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -