📄 driver.c
字号:
#include<MABIAO.h>
#include<reg52.h>
#include<absacc.h>
#define disp_on 0x3f
#define disp_off 0x3e
#define page_0 0xb8
#define col_0 0x40
#define line_0 0xc0
#define cs XBYTE[0X8000]
#define wc XBYTE[0XA000]
#define wd XBYTE[0XA001]
#define bs XBYTE[0XA002]
#define uchar unsigned char
#define uint unsigned int
extern uchar flag1,zhi;
extern bit flag2;
bit flag3,flag4;
uchar wjs1,wjs2,le,p,js=1;
uchar a[3],b[3];
uint BAUD=9600;
void delay(uint j)
{
uint i;
for(i=0;i<j;i++);
}
void lcdbusy()
{
while((bs&0x80)!=0);
}
void write_command(uchar cmd)
{
lcdbusy();
wc=cmd;
}
void write_data(uchar dat)
{
lcdbusy();
wd=dat;
}
void lcd_init()
{
write_command(disp_off);
cs=0x30;
write_command(line_0);
write_command(page_0);
write_command(col_0);
write_command(disp_on);
delay(20);
}
void clr_scr()
{
uchar i,j;
cs=0x10;
for(i=0;i<8;i++)
{
write_command(page_0+i);
write_command(col_0);
for(j=0;j<64;j++)
write_data(0x00);
}
cs=0x20;
for(i=0;i<8;i++)
{
write_command(page_0+i);
write_command(col_0);
for(j=0;j<64;j++)
write_data(0x00);
}
}
void sz_disp(uchar page,uchar col,uchar *p)
{
uchar i,j;
for(i=0;i<2;i++)
{
write_command(page_0+page+i);
write_command(col_0+col);
for(j=0;j<8;j++)
write_data(*p++);
}
}
void hz_disp(uchar page,uchar col,uchar *p)
{
uchar i,j;
for(i=0;i<2;i++)
{
write_command(page_0+page+i);
write_command(col_0+col);
for(j=0;j<16;j++)
write_data(*p++);
}
}
void start_msg()
{
clr_scr();
delay(100);
cs=0x10;
hz_disp(0,0,jiantou);
sz_disp(0,16,&shuzi[16]);
hz_disp(0,32,hz);
hz_disp(0,48,&hz[32]);
sz_disp(2,16,&shuzi[32]);
hz_disp(2,32,&hz[32*4]);
hz_disp(2,48,&hz[32*5]);
sz_disp(4,16,&shuzi[48]);
hz_disp(4,32,&hz[32*9]);
hz_disp(4,48,&hz[32*10]);
cs=0x20;
hz_disp(0,0,&hz[32*2]);
hz_disp(0,16,&hz[32*3]);
hz_disp(2,0,&hz[32*6]);
hz_disp(2,16,&hz[32*7]);
hz_disp(2,32,&hz[32*8]);
hz_disp(4,0,&hz[32*11]);
hz_disp(4,16,&hz[32*12]);
}
void bxcsh()
{
unsigned i,j;
clr_scr();
cs=0x10;
for(i=0;i<8;i++)
{
write_command(page_0+i);
write_command(col_0);
for(j=0;j<64;j++)
write_data(boxin_img[i*128+j]);
}
cs=0x20;
for(i=0;i<8;i++)
{
write_command(page_0+i);
write_command(col_0);
for(j=64;j<128;j++)
write_data(boxin_img[i*128+j]);
}
}
void xuanze()
{
clr_scr();
cs=0x10;
hz_disp(0,0,jiantou);
sz_disp(0,16,&shuzi[16]);
sz_disp(0,32,&shuzi[16*9]);
sz_disp(0,40,&shuzi[16*6]);
sz_disp(0,48,shuzi);
sz_disp(0,56,shuzi);
sz_disp(2,16,&shuzi[16*2]);
sz_disp(2,32,&shuzi[16*4]);
sz_disp(2,40,&shuzi[16*8]);
sz_disp(2,48,shuzi);
sz_disp(2,56,shuzi);
sz_disp(4,16,&shuzi[16*3]);
sz_disp(4,32,&shuzi[16*2]);
sz_disp(4,40,&shuzi[16*4]);
sz_disp(4,48,shuzi);
sz_disp(4,56,shuzi);
}
void fuzhi()
{
clr_scr();
cs=0x10;
hz_disp(2,0,&hz[32*13]);
hz_disp(2,16,&hz[32*14]);
hz_disp(2,32,&hz[32*15]);
hz_disp(2,48,&hz[32*16]);
}
void zhixs()
{
uint i;
cs=0x20;
if(flag4==1)
{
flag4=0;
for(i=0;i<2;i++)
hz_disp(2,i*8,kongbai);
}
for(i=0;i<js;i++)
sz_disp(2,i*8,&shuzi[16*b[i]]);
}
void zhdcsh()
{
TMOD=0X22;
SCON=0X50;
IP=0X14;
TH1=(-11059200/12/32/BAUD);
TL1=TH1;
TR1=1;
TH0=(-200);
TL0=TH0;
EA=1;
ES=1;
ET0=1;
EX1=1;
IT1=1;
}
void ckcsh()
{
TR1=0;
TH1=(-11059200/12/32/BAUD);
TL1=TH1;
TR1=1;
}
void boxin()interrupt 1
{
uint i;
le++;
if(le==119)
le=0;
if(le<55)
{
uint i;
cs=0x10;
for(i=0;i<5;i++)
{
write_command(page_0+i);
write_command(col_0+9+le);
write_data(0x00);
}
write_command(page_0+4-zhi/51);
write_command(col_0+9+le);
write_data(c[zhi%51]);
}
else
{
cs=0x20;
for(i=0;i<5;i++)
{
write_command(page_0+i);
write_command(col_0+le-55);
write_data(0x00);
}
write_command(page_0+4-zhi/51);
write_command(col_0+le-55);
write_data(c[zhi%51]);
}
}
void shou()interrupt 4
{
uchar zcun;
int i;
if(RI==1)
{
RI=0;
zcun=SBUF;
if(zcun<='9'&&zcun>='0')
{
a[p]=zcun-'0';
p++;
}
else
{
zhi=0;
for(i=0;i<p;i++)
{
zhi=zhi*10+a[i];
b[i]=a[i];
a[i]=0;
}
js=p;
p=0;
flag4=1;
}
}
}
void xuanxiang()
{
if((flag2==1)&&(flag1==1))
{
cs=0x10;
if(wjs2==2)
{
wjs2=0;
hz_disp(4,0,kongbai);
hz_disp(0,0,jiantou);
}
else
{
hz_disp(2*wjs2,0,kongbai);
hz_disp(2*(wjs2+1),0,jiantou);
wjs2++;
}
}
if(flag2==0)
{
flag1++;
cs=0x10;
if(flag1==3)
{
flag1=0;
wjs1=0;
hz_disp(4,0,kongbai);
hz_disp(0,0,jiantou);
}
else
{
hz_disp(2*wjs1,0,kongbai);
hz_disp(2*(wjs1+1),0,jiantou);
wjs1++;
}
}
}
void queding()interrupt 2
{
if((flag2==1)&&(flag1==1))
{
if(wjs2==0)
BAUD=9600;
else if(wjs2==1)
BAUD=4800;
else if(wjs2==2)
BAUD=2400;
ckcsh();
flag1=0;
flag2=0;
wjs1=0;
wjs2=0;
start_msg();
}
else if(flag2==0)
{
flag2=!flag2;
if(flag1==0)
{
bxcsh();
TR0=1;
}
else if(flag1==1)
xuanze();
else
fuzhi();
}
else
{
TR0=0;
delay(100);
flag1=0;
flag2=0;
wjs1=0;
wjs2=0;
start_msg();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -