📄 605.c
字号:
#include<reg51.h>
#include<stdio.h>
#include<absacc.h>
#define uchar unsigned char
uchar *p,*p1;/*建立数组指针*/
uchar data i;
uchar data wbyte;
sbit Bt=P1^7; /*p1口的最高位*/
sbit Bt1=P1^0;/*p1口的最低位*/
//sbit E=P3^1;/*片选信号,低电平有效*/
sbit R_W=P3^0;/*读写选择信号*/
sbit D_I=P3^1;/*数据指令选择信号*/
#define dlcd XBYTE[0x0000]/*定义送数据的地址*/
char code Hanzi[4]= /*文本数组*/
{
0xff,0Xff,0Xff,0X81,
};
char code Hanzi2[4]= /*文本数组*/
{
0xff,0Xff,0X81,0Xcf,
};
char code Hanzi3[4]= /*文本数组*/
{
0xff,0X81,0xcf,0x92,
};
char code Hanzi4[4]= /*文本数组*/
{
0X81,0xcf,0x92,0X86,
};
char code Hanzi5[4]= /*文本数组*/
{
0xcf,0x92,0x86,0xcc,
};
char code Hanzi6[4]= /*文本数组*/
{
0x92,0x86,0xcc,0xa4,
};
char code Hanzi7[4]= /*文本数组*/
{
0x86,0xcc,0xa4,0Xa0,
};
char code Hanzi8[4]= /*文本数组*/
{
0xcc,0xa4,0Xa0,0X8f,
};
char code Hanzi9[4]= /*文本数组*/
{
0xa4,0Xa0,0X8f,0X00,
};
char code Hanzi10[4]= /*文本数组*/
{
0Xa0,0X8f,0X00,0X04,
};
char code Hanzi11[4]= /*文本数组*/
{
0X8f,0X00,0X04,0X08,
};
char code Hanzi12[4]= /*文本数组*/
{
0x00,0X04,0X08,0Xb1,
};
char code Hanzi1[4]= /*清屏数组*/
{
0xff,0xff,0xff,0xff,
};
/**************************************************/
void WCom();/*写3位指令,100*/
void WCom1(uchar);/*写9位指令*/
void WCom2(uchar);/*写3位指令,101*/
void WCom3(uchar);/*写6位地址指令*/
void WCom4(uchar);/*连续写数据指令*/
void Imim();/*初始化*/
void Delay();/*延时*/
void Hanz();/*写文本*/
void Clear();/*清屏*/
/********************主程序********************/
void main()
{
Delay();
p=Hanzi1;/*指针指向文本数组的首地址*/
Hanz();/*写文本程序*/
Delay();Delay();//Delay();
loop:
p=Hanzi;/*指针指向文本数组的首地址*/
Hanz();/*写文本程序*/
Delay();Delay();Delay();
p=Hanzi2;/*指针指向文本数组的首地址*/
Hanz();/*写文本程序*/
Delay();Delay();Delay();
p=Hanzi3;/*指针指向文本数组的首地址*/
Hanz();/*写文本程序*/
Delay();Delay();Delay();
p=Hanzi4;/*指针指向文本数组的首地址*/
Hanz();/*写文本程序*/
Delay();Delay();Delay();
p=Hanzi5;/*指针指向文本数组的首地址*/
Hanz();/*写文本程序*/
Delay();Delay();Delay();
p=Hanzi6;/*指针指向文本数组的首地址*/
Hanz();/*写文本程序*/
Delay();Delay();Delay();
p=Hanzi7;/*指针指向文本数组的首地址*/
Hanz();/*写文本程序*/
Delay();Delay();Delay();
p=Hanzi8;/*指针指向文本数组的首地址*/
Hanz();/*写文本程序*/
Delay();Delay();Delay();
p=Hanzi9;/*指针指向文本数组的首地址*/
Hanz();/*写文本程序*/
Delay();Delay();Delay();
p=Hanzi10;/*指针指向文本数组的首地址*/
Hanz();/*写文本程序*/
Delay();Delay();Delay();
p=Hanzi11;/*指针指向文本数组的首地址*/
Hanz();/*写文本程序*/
Delay();Delay();Delay();
p=Hanzi12;/*指针指向文本数组的首地址*/
Hanz();/*写文本程序*/
Delay();Delay();Delay();
p=Hanzi1;/*指针指向文本数组的首地址*/
Hanz();/*写文本程序*/
Delay();
p=Hanzi12;/*指针指向文本数组的首地址*/
Hanz();/*写文本程序*/
Delay();
p=Hanzi1;/*指针指向文本数组的首地址*/
Hanz();/*写文本程序*/
Delay();
p=Hanzi12;/*指针指向文本数组的首地址*/
Hanz();/*写文本程序*/
Delay();Delay();Delay();
goto loop;
}
/********************写3位指令,100********************/
void WCOM() /*写3位指令,100*/
{
uchar data i=0x80;
uchar data j;
for(j=0;j<3;j++)
{
P1=i;
R_W=0;/*致低*/
D_I=Bt;/*送入最高位*/
R_W=1;/*致高*/
i=i<<1;/*循环左移*/
}
}
/********************写9位指令********************/
void WCOM1(uchar d)
{
uchar data i,j;
i=d;
for(j=0;j<9;j++)
{
P1=i;
R_W=0;/*致低*/
D_I=Bt;/*送入最高位*/
R_W=1;/*致高*/
i=i<<1;/*循环左移*/
}
}
/********************写3位指令,101********************/
void WCOM2()
{
uchar data i=0xa0;
uchar data j;
for(j=0;j<3;j++)
{
P1=i;
D_I=Bt;
R_W=0;
R_W=1;
i=i<<1;
}
}
/********************写6位地址指令********************/
void WCOM3()
{
uchar data i=0x00;/*地址为0x0000*/
uchar data j;
for(j=0;j<6;j++)
{
P1=i;
D_I=Bt;
R_W=0;
R_W=1;
i=i<<1;
}
}
/********************连续写数据指令********************/
void WCOM4(uchar d)
{
uchar data i,j;
i=d;
for(j=0;j<8;j++)
{
P1=i;
R_W=0;
D_I=Bt1;/*送入最低位*/
// R_W=0;
R_W=1;
i=i>>1;/*循环右移*/
}
}
/********************初始化子程序********************/
void Imim()
{
Delay();
// E=0;
R_W=1;
// E=1;
WCOM();
WCOM1(0x02);/*关显示*/
WCOM1(0X01);/*开系统震荡器*/
WCOM1(0x18);/*开系统时钟源*/
WCOM1(0x29);/*占空比1/3,4选择*/
WCOM1(0x03);/*开显示*/
// E=0;
// E=1;
Clear();
}
/********************延时子程序********************/
void Delay()
{
uchar data i,j;
for(i=0;i<100;i++)
for(j=0;j<255;j++);
}
/********************写文本子程序********************/
void Hanz1()
{
wbyte=*p;
WCOM4(wbyte);
p=p+1; /*对应数组下一位*/
}
/********************写文本程序********************/
//void Hanz()
//{
// uchar data i;
// E=1;
// WCOM2();
// WCOM3();
// for(i=0;i<12;i++)
// {
// Hanz1();
// }
// E=0;
//}
/********************清屏程序********************/
void Clear()
{
uchar data i;
// E=1;
// WCOM2();
// WCOM3();
for(i=0;i<9;i++)
{
wbyte=*p1;
WCOM4(wbyte);
p1=p1+1;
}
// E=0;
}
/********************清屏程序********************/
void Hanz()
{
uchar data i;
// E=1;
// WCOM2();
// WCOM3();
for(i=0;i<4;i++)
{
wbyte=*p;
WCOM4(wbyte);
p=p+1;
}
// E=0;
}
更改
#include<reg51.h>
#include<stdio.h>
#include<absacc.h>
#define uchar unsigned char
uchar *p,*p1;/*建立数组指针*/
uchar data i;
uchar data wbyte;
sbit Bt=P1^7; /*p1口的最高位*/
sbit Bt1=P1^0;/*p1口的最低位*/
sbit E=P3^2;/*片选信号,低电平有效*/
sbit R_W=P3^0;/*读写选择信号*/
sbit D_I=P3^1;/*数据指令选择信号*/
#define dlcd XBYTE[0x0000]/*定义送数据的地址*/
char code Hanzi[4]= /*文本数组*/
{
0xff,0Xff,0Xff,0X81,
};
char code Hanzi1[4]= /*清屏数组*/
{
0xff,0xff,0xff,0xff,
};
/**************************************************/
void WCom();/*写3位指令,100*/
void WCom1(uchar);/*写9位指令*/
void WCom2(uchar);/*写3位指令,101*/
void WCom3(uchar);/*写6位地址指令*/
void WCom4(uchar);/*连续写数据指令*/
void Imim();/*初始化*/
void Delay();/*延时*/
void Hanz();/*写文本*/
void Clear();/*清屏*/
/********************主程序********************/
void main()
{
Delay();
p1=Hanzi1;/*指针指向清屏数组的首地址*/
//Hanz();/*写文本程序*/
//Delay();Delay();//Delay();
loop:
Imim();
p=Hanzi;/*指针指向文本数组的首地址*/
Hanz();/*写文本程序*/
Delay();Delay();Delay();//Delay();Delay();Delay();Delay();Delay();Delay();
goto loop;
}
/********************写3位指令,100********************/
void WCOM() /*写3位指令,100*/
{
uchar data i=0x80;
uchar data j;
for(j=0;j<3;j++)
{
P1=i;
R_W=0;/*致低*/
D_I=Bt;/*送入最高位*/
R_W=1;/*致高*/
i=i<<1;/*循环左移*/
}
}
/********************写9位指令********************/
void WCOM1(uchar d)
{
uchar data i,j;
i=d;
for(j=0;j<9;j++)
{
P1=i;
R_W=0;/*致低*/
D_I=Bt;/*送入最高位*/
R_W=1;/*致高*/
i=i<<1;/*循环左移*/
}
}
/********************写3位指令,101********************/
void WCOM2()
{
uchar data i=0xa0;
uchar data j;
for(j=0;j<3;j++)
{
P1=i;
D_I=Bt;
R_W=0;
R_W=1;
i=i<<1;
}
}
/********************写6位地址指令********************/
void WCOM3()
{
uchar data i=0x00;/*地址为0x0000*/
uchar data j;
for(j=0;j<6;j++)
{
P1=i;
D_I=Bt;
R_W=0;
R_W=1;
i=i<<1;
}
}
/********************连续写数据指令********************/
void WCOM4(uchar d)
{
uchar data i,j;
i=d;
for(j=0;j<8;j++)
{
P1=i;
//R_W=0;
D_I=Bt1;/*送入最低位*/
R_W=0;
R_W=1;
i=i>>1;/*循环右移*/
}
}
/********************初始化子程序********************/
void Imim()
{
Delay();
E=1;
R_W=1;
E=0;
WCOM();
WCOM1(0x02);/*关显示*/
WCOM1(0X01);/*开系统震荡器*/
WCOM1(0x18);/*开系统时钟源*/
WCOM1(0x29);/*占空比1/3,4选择*/
WCOM1(0x03);/*开显示*/
E=1;
// E=1;
Clear();
}
/********************延时子程序********************/
void Delay()
{
uchar data i,j;
for(i=0;i<100;i++)
for(j=0;j<255;j++);
}
/********************写文本子程序********************/
void Hanz1()
{
wbyte=*p;
WCOM4(wbyte);
p=p+1; /*对应数组下一位*/
}
/********************写文本程序********************/
void Hanz()
{
uchar data i;
E=0;
WCOM2();
WCOM3();
for(i=0;i<4;i++)
{
Hanz1();
}
E=1;
}
/********************清屏程序********************/
void Clear()
{
uchar data i;
E=0;
WCOM2();
WCOM3();
for(i=0;i<4;i++)
{
wbyte=*p1;
WCOM4(wbyte);
p1=p1+1;
}
E=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -