📄 复件 11111111111.c
字号:
#include <reg51.h>
#include <stdio.h>
#include <math.h>
#include <absacc.h>
#define LCMDW XBYTE[0xf3ff] /*定义数据口*/
#define LCMCW XBYTE[0xfbff] /*定义指令口*/
#define uint unsigned int
#define uchar unsigned char
sbit LED=P3^4;
uchar code hzcode[8][16]={0x00,0x40,0x37,0x10,0x83,0x60,0x2F,0x08, /*
清 代码为00*/
0x13,0x22,0xE3,0x22,0x23,0x22,0x22,0x22,
0x40,0x48,0xFC,0x40,0xF8,0x40,0xFE,0x08,
0xFC,0x08,0xF8,0x08,0xF8,0x08,0x28,0x10,
0x04,0x04,0x08,0x08,0x18,0x29,0x4A,0x08, /* 华 代码为01*/
0x09,0x01,0xFF,0x01,0x01,0x01,0x01,0x01,
0x40,0x48,0x58,0x60,0xC0,0x40,0x44,0x44,
0x3C,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,
0x01,0x01,0x01,0x01,0x01,0xFF,0x01,0x02, /* 大 代码为02*/
0x02,0x02,0x04,0x04,0x08,0x10,0x60,0x00,
0x00,0x00,0x00,0x00,0x04,0xFE,0x00,0x80,
0x80,0x40,0x40,0x20,0x10,0x0E,0x04,0x00,
0x22,0x11,0x11,0x00,0x7F,0x40,0x80,0x1F, /* 学 代码为03*/
0x00,0x01,0xFF,0x01,0x01,0x01,0x05,0x02,
0x08,0x08,0x10,0x20,0xFE,0x02,0x04,0xE0,
0x40,0x84,0xFE,0x00,0x00,0x00,0x00,0x00};
void fnChkST01(void) /*检查ST0和ST1的状态*/
{
uchar i;
for(i=16;i>0;i--)
{
if((LCMCW & 0x03)==0x03)
break;
}
}
void fnChkST3(void) /*检查ST3数据自动写的状态*/
{
uchar i;
for(i=16;i>0;i--)
{
if((LCMCW & 0x08)==0x08)
break;
}
}
void fnCmd0(uchar uCmd) /*一个命令写*/
{
fnChkST01();
LCMCW=uCmd;
}
void fnCmd1(uchar uCmd, uchar uPar1) /*一个命令和一个数据写*/
{
fnChkST01();
LCMDW=uPar1;
fnCmd0(uCmd);
}
void fnCmd2(uchar uCmd, uchar uPar1,uchar uPar2) /*一个命令和2个数据写*/
{
fnChkST01();
LCMDW=uPar1;
fnCmd1(uCmd,uPar2);
}
void cls_graph(void) /*清屏图形区*/
{
uchar i,j;
fnCmd2(0x24,0x00,0x20); /*set address pointer*/
fnCmd0(0xB0); /*data auto write */
for(i=0;i<128;i++)
{
for(j=0;j<30;j++)
{fnChkST3();
LCMDW=0x00;
}
}
fnCmd0(0xB2); /* end data auto write */
}
void cls_text(void) /*清屏文本区*/
{
uchar i,j;
fnCmd2(0x24,0x00,0x20); /*set address pointer*/
fnCmd0(0xB0); /*data auto write */
for(i=0;i<16;i++)
{
for(j=0;j<30;j++)
{
fnChkST3();
LCMDW=0x0F;
}
}
fnCmd0(0xB2); /* end data auto write */
}
void fnLCMInit(void)
{
fnCmd2(0x40,0x00,0x00);
fnCmd2(0x41,20,0x00);
fnCmd2(0x42,0x00,0x20);
fnCmd2(0x43,30,0x00);
fnCmd0(0xA0|0x01);
fnCmd0(0x80);
fnCmd0(0x90|0x0F);
}
void fnsetpos(uchar line,uchar lie) /*设定显示地址*/
{ uint ipos;
ipos=line*20+lie;
fnCmd2(0x24,ipos & 0xFF,ipos/256);
}
void fnshowHZ(uchar line,uchar lie ,uchar hzdaima) /*显示一个汉字 其中
hzdaima为汉字代码*/
{
uchar i;
uint startaddr;
startaddr=line*0x20+lie;
for(i=0;i<16;i++)
{
fnCmd2(0x24,startaddr & 0xff,startaddr/256); /*置显示地址*/
fnCmd1(0xc0,hzcode[hzdaima*2][i]); /*写左半部数据*/
fnCmd1(0xc4,hzcode[hzdaima*2+1][i]); /*写右半部数据*/
startaddr=startaddr+0x20; /*显示地址修正*/
}
}
main()
{
uchar code tab[11]=
{0x37,0x45,0x4c,0x43,0x4f,0x4d,0x45,0x00,0x39,0x4f,0x55}; /*显示Welcome You*/
LED=0;
fnLCMInit();
cls_text();
cls_graph();
for(; ;)
{ uint i;
uint Line;
uint Lie;
uchar HZDaim;
fnsetpos(0x00,0x00); /*显示Welcome You */
fnCmd0(0xB0);
for(i=0;i<11;i++)
{
fnChkST3();
LCMDW=tab[i];
}
fnCmd0(0xB2);
Line=0x0a; /*显示一个汉字 " 清 " */
Lie=0x17;
HZDaim=0x00;
fnshowHZ(Line,Lie, HZDaim);
LED=1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -