📄 v9.c
字号:
#include "reg51.h"
#include "math.h"
#include "intrins.h"
#include "absacc.h"
#define uchar unsigned char
//sbit elcd=P2^7;
sbit rs=P3^0;
sbit rw=P3^1;
sbit elcd=P3^2;
sbit cs1=P3^3;
sbit cs2=P3^4;
sbit rst=P3^5;
#define datalcd P1 //p0口
#define getdata DBYTE[0x30]
//#define getdata1 XBYTE[0x3000]
#define dispon 0x3f //显示on
#define dispoff 0x3e //显示off
#define lcdbusy 0x80 //LCD忙判断
#define dispfirst 0xc0 //显示起始行
uchar cbyte;
void lcdinit(void);
void delay(uchar);
//void busy(void);
//void lcdbusyR(void);
void clr_screen(void);
void writedata(uchar);
//uchar readdata();
void writecmd(uchar);
//void Set_XY(uchar,uchar);
uchar code guang[]={
0x00,0x00,0xFC,0x44,0x54,0x54,0x7C,0x55,
0xD6,0x54,0x7C,0x54,0x54,0x44,0x44,0x00,
0x80,0x60,0x1F,0x80,0x9F,0x55,0x35,0x15,
0x1F,0x15,0x15,0x35,0x5F,0x80,0x00,0x00
};
uchar code dong[]={
0x00,0x08,0xE8,0xA8,0xA8,0xA8,0xA8,0xFF,
0xA8,0xA8,0xA8,0xA8,0xE8,0x0C,0x08,0x00,
0x00,0x40,0x23,0x12,0x0A,0x06,0x02,0xFF,
0x02,0x06,0x0A,0x12,0x23,0x60,0x20,0x00
};
uchar code you[]={
0x04,0x04,0x04,0x84,0xE4,0x3C,0x27,0x24,
0x24,0x24,0x24,0xF4,0x24,0x06,0x04,0x00,
0x04,0x02,0x01,0x00,0xFF,0x09,0x09,0x09,
0x09,0x49,0x89,0x7F,0x00,0x00,0x00,0x00
};
uchar code xian[]={
0x00,0xFE,0x02,0x22,0xDA,0x06,0x00,0xFE,
0x92,0x92,0x92,0x92,0xFF,0x02,0x00,0x00,
0x00,0xFF,0x08,0x10,0x08,0x07,0x00,0xFF,
0x42,0x24,0x08,0x14,0x22,0x61,0x20,0x00
};
uchar code gong[]={
0x00,0x00,0x80,0x40,0x30,0x0C,0x00,0xC0,
0x07,0x1A,0x20,0x40,0x80,0x80,0x80,0x00,
0x01,0x01,0x20,0x70,0x28,0x24,0x23,0x20,
0x20,0x28,0x30,0x60,0x00,0x01,0x00,0x00
};
uchar code si[]={
0x10,0x10,0x92,0x92,0x92,0x92,0x92,0x92,
0xD2,0x9A,0x12,0x02,0xFF,0x02,0x00,0x00,
0x00,0x00,0x3F,0x10,0x10,0x10,0x10,0x10,
0x3F,0x00,0x40,0x80,0x7F,0x00,0x00,0x00
};
void main()
{
elcd=0;
lcdinit();
while(1)
{
uchar n;
uchar i;
for(i=63;i>0;i--)
{
writecmd(dispfirst+i);
writecmd(0xb8);//第一页
delay(100);
writecmd(0x40); //设置列地址,第一列
cs1=1;cs2=0;
for(n=0;n<16;n++)
{
writedata(guang[n]);
delay(100);
}
writecmd(0xb9);//第二页
delay(100);
writecmd(0x40); //设置列地址,第一列
cs1=1;cs2=0;
for(n=16;n<32;n++)
{
writedata(guang[n]);
delay(100);
}
writecmd(0xb8);//第一页
delay(100);
writecmd(0x50); //设置列地址,第17列
cs1=1;cs2=0;
for(n=0;n<16;n++)
{
writedata(dong[n]);
delay(100);
}
writecmd(0xb9);//第二页
delay(100);
writecmd(0x50); //设置列地址,第17列
cs1=1;cs2=0;
for(n=16;n<32;n++)
{
writedata(dong[n]);
delay(100);
}
writecmd(0xb8);//第一页
delay(100);
writecmd(0x60); //设置列地址,第33列
cs1=1;cs2=0;
for(n=0;n<16;n++)
{
writedata(you[n]);
delay(100);
}
writecmd(0xb9);//第二页
delay(100);
writecmd(0x60); //设置列地址,第33列
cs1=1;cs2=0;
for(n=16;n<32;n++)
{
writedata(you[n]);
delay(100);
}
writecmd(0xb8);//第一页
delay(100);
writecmd(0x70); //设置列地址,第49列
cs1=1;cs2=0;
for(n=0;n<16;n++)
{
writedata(xian[n]);
delay(100);
}
writecmd(0xb9);//第二页
delay(100);
writecmd(0x70); //设置列地址,第49列
cs1=1;cs2=0;
for(n=16;n<32;n++)
{
writedata(xian[n]);
delay(100);
}
writecmd(0xb8);//第一页
delay(100);
writecmd(0x40); //设置列地址,第一列
cs1=0;cs2=1;
for(n=0;n<16;n++)
{
writedata(gong[n]);
delay(100);
}
writecmd(0xb9);//第二页
delay(100);
writecmd(0x40); //设置列地址,第一列
cs1=0;cs2=1;
for(n=16;n<32;n++)
{
writedata(gong[n]);
delay(100);
}
writecmd(0xb8);//第一页
delay(100);
writecmd(0x50); //设置列地址,第17列
cs1=0;cs2=1;
for(n=0;n<16;n++)
{
writedata(si[n]);
delay(100);
}
writecmd(0xb9);//第二页
delay(100);
writecmd(0x50); //设置列地址,第17列
cs1=0;cs2=1;
for(n=16;n<32;n++)
{
writedata(si[n]);
delay(100);
}
}
}
}
/*
void busy(void)
{
P1=0xff;
while(1)
{
cs1=1;cs2=1;
elcd=0;
rs=0;
rw=1;
elcd=1;
if(P1<0x80)break;
elcd=0;
}
elcd=0;
}
/*
void lcdbusyR(void)
{ /*
datalcd=0xff;
cs1=0;cs2=1;
rw=1;
rs=0;//elcd=0;
_nop_();
elcd=1;
_nop_();_nop_();
//elcd=0;
getdata=datalcd;
while(datalcd&lcdbusy);
elcd=0;
//
P0=0xff;
//rs=0;rw=1;
}
*/
void delay(uchar MS)
{
while(MS!=0)MS--;
}
void writecmd(uchar Reg_Code)
{
cs1=1;cs2=1;
elcd=0;
rs=0;
rw=0;
datalcd=Reg_Code;
// elcd=0;
// delay(10);
elcd=1;
// delay(10);
elcd=0;
}
void writedata(uchar Disp_Data)
{
rs=1;
rw=0;
elcd=0;
datalcd=Disp_Data;
// elcd=0;
// delay(10);
elcd=1;
// delay(10);
elcd=0;
}
/*
uchar readdata()
{
uchar Disp_Data;
rs=1;
rw=1;
// datalcd=0xff;
elcd=1;
delay(5);
Disp_Data=datalcd;
elcd=0;
//读第二次,第一次为虚读
elcd=0;
rs=1;
rw=1;
// datalcd=0xf0;
elcd=1;
delay(10);
Disp_Data=datalcd;
elcd=0;
return Disp_Data;
}
*/
void clr_screen()
{
uchar j,k;
for(k=0;k<8;k++){
writecmd(0xb8+k);
writecmd(0x40);
for(j=0;j<64;j++)
{writedata(0x00);
delay(1000);}
}
}
void lcdinit(void)
{
rst=0;
delay(1000);
rst=1;
_nop_();
_nop_();
//cs1=1;cs2=1;
cbyte=dispon;
writecmd(cbyte);
//delay(10);
cbyte=dispfirst; //显示起始行
writecmd(cbyte);
//delay(10);
cs1=1;cs2=1;
clr_screen();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -