/*忙判别*/
void busy(void) {
//后读忙状态
uchar k;
k=40;
rs=0;wr=1;P1=0xff;
do
{e=1;ACC=P1;_nop_();e=0;k--;}
while (bflag==1&&k!=0);
}
/*
void busy0(void) {
cs1=0;
cs2=0;
busy();
}
*/
void busy1(void) {
//读忙状态01芯片
cs1=0;
cs2=1;
busy();
}
void busy2(void) {
//读忙状态10芯片
cs1=1;
cs2=0;
busy();
}
/*写指令*/
void wi(uchar x){
//写指令
rs=0;
wr=0;
P1=x;
e=1;
_nop_();
e=0;
}
//void wi0(uchar x){
//
busy0();
//
wi(x);
//
}
void wi1(uchar x){
busy1();
wi(x);
}
void wi2(uchar x){
busy2();
wi(x);
}
/*写数据*/
void wd(uchar x){
//写数据
rs=1;
wr=0;
P1=x;
e=1;
_nop_();
e=0;
}
void wd1(uchar x){
busy1();
wd(x);
}
void wd2(uchar x){
busy2();
wd(x);
}
//*设置X,Y地址,并写入指令*//
void setxy1(uchar x,uchar y)
{
x=0x40+x;
y=0xb8+y;
wi1=(x);
wi1=(y);
}
void setxy2(uchar x,uchar y)
{
x=0x40+x;
y=0xb8+y;
wi2=(x);
wi2=(y);
}
//*写入数据*//
void wdata(uchar x, uchar y,uchar d)
{
if(x<64)
{
setxy1(x,y);;
wd1(d);;
}
else
{
setxy2(x-64,y);
wd2(d);
}
}
//*显示汉字*//
void display_hz(uchar xx,uchar yy,uchar zz)
{
uchar i,dd;
for(i=0;i<16;i++)
{
dd=tu[i+zz*32];
wdata(xx,yy,dd);
dd=tu[i+16+zz*32];
wdata(xx,yy+1,dd);
}
}
/*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*/
/*延时*/
/*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*/
void dely(void){
uchar i;
for(i=0;i<255;i++)
{;}
}
void delay(uint x)
/*延时*/
{
uchar j;
if(aut==1){
while(x-->0)
{
for(j=0;j<255;j++)
{ if(key==0) {
aut=0;
dely();
while(key==0){;}
dely();
};
}
}
}
else{aut=0;
dely();
while(key==0){;}
dely();
while(key==1){;}
}
}
void disall(uchar da1,da2) {
uchar i,k;
for(i=0;i<8;i++) {
wi1(0x40);
wi1(0xb8+i); for(k=0;k<32;k++) {wd1(da1);wd1(da2);}
wi2(0x40);
wi2(0xb8+i); for(k=0;k<32;k++) {wd2(da1);wd2(da2);}
}
}
/*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*/
/*初始化屏幕,清屏*/
/*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*/
void retdis(void) {
wi1(0xc0);
wi1(0x3f);
wi2(0xc0);
wi2(0x3f);
disall(0x00,0x00);
}
/*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*/
//主程序
//显示图形
/*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*/
void main(void)
{
uchar n;
aut=1; dely();
P1=0xff;
P3=0xff;
retdis();
//复位程序
delay(200);
for(n=0;n<128;n++)
display_hz(n,0,n/16);
for(n=0;n<128;n++)
display_hz(n,2,n/16);
for(n=0;n<128;n++)
display_hz(n,4,n/16);
for(n=0;n<128;n++)
display_hz(n,6,n/16);
}