📄 lcd19264.h
字号:
#ifndef LCD19264_H
#define LCD19264_H
#include <reg52.H>
#include <absacc.h>
#include <string.h>
#include <intrins.h>
#include <math.h>
#include "mdefine.h"
#include "Ziku.h"
/*忙判别*/
void lcd_busy(void)
{
di=0;rw=1;LCDDataPort=0xff;
while (1)
{
en=1;
if (LCDDataPort<0x80) break;
en=0;
}
en=0;
}
/*设置xy*/
void set_xy(unsigned char x,unsigned char y)
{ y=y%192;
if (y<64)
{
cs1=0;
cs2=1;
cs3=1;
}
else if(y<128)
{
cs1=1;
cs2=0;
cs3=1;
}
else
{
cs1=1;
cs2=1;
cs3=0;
}
lcd_busy();
di=0;
rw=0;
LCDDataPort=0xb8|x; //设置页地址
en=1;
en=0;
lcd_busy();
di=0;
rw=0;
y=y%64;
LCDDataPort=0x40|y; //设置列地址
en=1;
en=0;
LCDDataPort=0xff;
}
/*写显示数据*/
void lw(unsigned char x,unsigned char y,unsigned char dd)
{
set_xy(x,y);
lcd_busy();
di=1;
rw=0;
LCDDataPort=dd;
en=1;
en=0;
LCDDataPort=0xff;
}
/*显示初始化*/
void lcd_init()
{
unsigned char x,y;
en=0;
di=0;
rw=0;
cs1=1;
cs2=1;
cs3=1;
cs1=0; //开左屏显示
LCDDataPort=0x3f;
en=1;
en=0;
cs1=1; //开中屏显示
cs2=0;
cs3=1;
en=1;
LCDDataPort=0x3f;
en=0;
cs1=1; //开右屏显示
cs2=1;
cs3=0;
en=1;
LCDDataPort=0x3f;
en=0;
cs1=0; //设置左半屏起始行为0行
cs2=1;
cs3=1;
lcd_busy();
di=0;
rw=0;
LCDDataPort=0xc0;
en=1;
en=0;
cs1=1; //设置中屏起始行为0行
cs2=0;
cs3=1;
lcd_busy();
di=0;
rw=0;
LCDDataPort=0xc0;
en=1;
en=0;
cs1=1; //设置右半屏起始行为0行
cs2=1;
cs3=0;
lcd_busy();
di=0;
rw=0;
LCDDataPort=0xc0;
en=1;
en=0;
for (x=0;x<8;x++) //全屏清零
{
for (y=0;y<192;y++)
lw(x,y,0x00);
}
}
//显示汉字,fb==1:反白显示,16*16点阵
void dh(unsigned char x,unsigned char y,unsigned char n,unsigned char fb)
{
unsigned char i,bb,dd;
for (bb=0;bb<2;bb++)
{
for (i=0;i<16;i++)
{
dd=hz[i+16*bb+n*32];
if (fb)
dd=~dd;
lw(x,y,dd);
y=y++;
}
x=x++;
y=y-16;
}
}
//显示字符,fb==1:反白显示,16*8点阵
void df(unsigned char x,unsigned char y,unsigned char n,unsigned char fb)
{
unsigned char i,bb,dd;
for (bb=0;bb<2;bb++)
{
for (i=0;i<8;i++)
{
dd=zf[i+8*bb+n*16];
if (fb)
dd=~dd;
lw(x,y,dd);
y=y++;
}
x=x++;
y=y-8;
}
}
//8*8点阵显示,fb==1:反白显示
void dxz(uchar x,uchar y,uchar n,uchar fb)
{
unsigned char i,bb,dd;
for (bb=0;bb<1;bb++)
{
for (i=0;i<8;i++)
{
dd=xz[i+8*bb+n*8];
if (fb)
dd=~dd;
lw(x,y,dd);
y=y++;
}
x=x++;
y=y-8;
}
}
//8*16 电池图形点阵,fb==1:反白显示
void dtx(uchar x,uchar y,uchar n,uchar fb)
{
unsigned char i,bb,dd;
for (bb=0;bb<1;bb++)
{
for (i=0;i<16;i++)
{
dd=tu[i+16*bb+n*16];
if (fb)
dd=~dd;
lw(x,y,dd);
y=y++;
}
x=x++;
y=y-8;
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -