📄 kaiji.c
字号:
#include "absacc.h"
#include "stdarg.h"
#include "reg52.h"
#include "intrins.h"
#include "math.h"
#include "stdio.h"
#include "zimo.h"
#include "t6963c.h"
#define p1 P1
#define ulong unsigned long
#define uint unsigned int
#define uchar unsigned char
uchar xx[]={48,49,50,51,52,53,54,55,56,57};
uchar buf=-1,jj=6,ii=0;
uchar pass[]={6,6,6,6,6,6};
uchar passbuf[]={0,0,0,0,0,0};
/************************************************/
/* 键盘程序*/
/************************************************/
uchar keyget()
{
uchar scancode,tmpcode;
{
scancode = 0xfe;
while((scancode&0x10)!=0)
{
p1=scancode;
if((p1&0xf0)!=0xf0)
{
tmpcode =(p1&0xf0)|0x0f;
return((~scancode)+(~tmpcode));
}
else scancode = (scancode<<1)|0x01;
}
}
return(0);
}
/************************************************/
/* 键盘产生及键值判断 */
/************************************************/
void getdata()interrupt 0 using 0
{
uchar key;
if(p1!=0xf0)
shortdelay(500);
if(p1!=0xf0)
{key=keyget();
switch(key)
{
case 0x11:buf=7;break;
case 0x21:buf=4;break;
case 0x41:buf=1;break;
case 0x12:buf=8;break;
case 0x22:buf=5;break;
case 0x42:buf=2;break;
case 0x82:buf=0;break;
case 0x14:buf=9;break;
case 0x24:buf=6;break;
case 0x44:buf=3;break;
case 0x81:buf=0x0f;break;
case 0x84:buf=0x0a;break;
case 0x18:buf=0;break;
case 0x28:buf=0;break;
case 0x48:buf=0;break;
case 0x88:buf=0;break;
default:break;
}
jj++;
jj++;
passbuf[ii]=buf;
ii++;
p1=0xf0;}
}
void main(void)
{
uchar x=0;
unsigned char i,j,k=1;
EA=1;
EX0=1;
p1=0xf0; //查询键盘用
{ shortdelay(1200);
fnLCMInit(); //初始化画面
cls(0);
cursor(0,0);
cls(1);
for(i=120;i>0;i--)
{Linexy(i,0,i,64,0);
Linexy(240-i,0,240-i,64,0);
}
Linexy(0,0,0,64,0);
for(i=65;i<=85;i++)
{dispchar(8,1,i);
dispchar(10,1,i+1);
dispchar(12,1,i+2);
dispchar(14,1,i+3);
dispchar(16,1,151-i);
dispchar(18,1,152-i);
dispchar(20,1,153-i);
dispchar(12,2,150-i);
dispchar(14,2,154-i);
shortdelay(500);}
dispchar(8,1,87);
dispchar(10,1,69);
dispchar(12,1,76);
dispchar(14,1,67);
dispchar(16,1,79);
dispchar(18,1,77);
dispchar(20,1,69);
dispchar(12,2,71);
dispchar(14,2,79);
shortdelay(6000);
for(i=0;i<32;i++)
dispchar(i,3,62);
cls(0);
for(i=0;i<4;i++)
{for(x=60;x<=180;x=x+4)
{Linexy(60,36,180,36,8); // 横线
Linexy(60,44,180,44,8); // 横线
Linexy(60,36,60,44,8); // 竖线
Linexy(180,36,180,44,8); // 竖线
Linexy(x,37,x,43,8);
Linexy(x+2,37,x+2,43,8);
Linexy(x+4,37,x+4,43,8);
Linexy(x+6,37,x+6,43,8);
Linexy(x+8,37,x+8,43,8);
Linexy(x,37,x,43,0);
Linexy(x+2,37,x+2,43,0);
Linexy(186,37,186,43,0);
Linexy(184,37,184,43,0);
Linexy(188,37,188,43,0);
if(x==60)
dprintf(9,1,"start . ");
if(x==88)
dprintf(9,1,"start ..");
if(x==120)
dprintf(9,1,"start ...");
if(x==152)
dprintf(9,1,"start ....");
}
}
cls(0);
for(x=0;x<29;x++) //人头滑动
{ shortdelay(500);
dprintf(x-2,3,"欢迎使用");
dprintf(x-3,3," ");
for(i=x*8-8;i<x*8;i++)
Linexy(i,0,i,30,0);
disppic(img0,x,0);
}
cls(0);
i=0;
do
{dprintf(4,0,"请输入密码:"); //密码输入界面
Linexy(65,46,150,46,8);// 横线
dispchar(jj,2,xx[buf]);
if(ii==6)
{jj=6;
ii=0;
buf=-1;
for(j=0;j<6;j++)
{if(pass[j]!=passbuf[j])
break;
; }
if(j==6)
{cls(0);
dprintf(4,0,"密码正确!");
shortdelay(2000);
k=0; }
else
{cls(0);
dprintf(4,0,"密码错误!");// 返回重新输入
i++;
if(i==3)
{ dprintf(12,0,"密码锁启动"); //三次不对自动关机
dprintf(10,1,"即将关机!");
shortdelay(2000);
cls(0);
dprintf(13,1,"B");
shortdelay(2000);
dprintf(15,1,"y");
shortdelay(2000);
dprintf(17,1,"e");
shortdelay(2000);
dprintf(19,1,"!");
shortdelay(2000);
for(i=0;i<=120;i++) //拉屏关闭
{ Linexy(i,0,i,64,8); // 竖线
Linexy(240-i,0,240-i,64,8); //竖线
}
while(1)
cls(0); } //
shortdelay(2000);
dprintf(4,0,"请重新输入:");
shortdelay(2000);
}
}
}
while(k);
for(x=60;x<=170;x=x+1) //第三画面 画进度条
{dprintf(4,0,"正在加载个人设置……");
Linexy(60,36,180,36,8); // 横线
Linexy(60,44,180,44,8); // 横线
Linexy(60,36,60,44,8); // 竖线
Linexy(180,36,180,44,8); // 竖线
Linexy(x,38,x+10,38,8);
Linexy(x,40,x+10,40,8);
Linexy(x,42,x+10,42,8);
Linexy(x,39,x+10,39,8);
Linexy(x,41,x+10,41,8);
shortdelay(10);}
}
cls(0);
dprintf(0,2,"请输入提示语:");
shortdelay(4000);
dprintf(15,2,"老");
shortdelay(4000);
dprintf(17,2,"板");
shortdelay(4000);
dprintf(19,2,"是");
shortdelay(4000);
dprintf(21,2,"傻");
shortdelay(4000);
dprintf(23,2,"吊");
shortdelay(4000);
for(x=202,i=57;x<=208,i<=64;i++,x++) //画叉号
{Linexy(201,56,x,i,8);
shortdelay(500);}
for(x=201,i=64;x<=209,i>=56;x++,i--)
{Linexy(200,64,x,i,8);
shortdelay(500);}
shortdelay(2000);
cls(0);
dprintf(8,1,"提示错误");
dprintf(7,2,"请重新输入!");
shortdelay(2000);
cls(0);
dprintf(0,2,"请输入提示语:");
shortdelay(4000);
dprintf(15,2,"小");
shortdelay(4000);
dprintf(17,2,"强");
shortdelay(4000);
dprintf(19,2,"是");
shortdelay(4000);
dprintf(21,2,"傻");
shortdelay(4000);
dprintf(23,2,"吊");
shortdelay(4000);
for(x=203,i=58;x<=205,i<=60;i++,x++) //画对号
{Linexy(202,57,x,i,8);
shortdelay(500);}
for(x=206,i=60;x<=211,i>=55;x++,i--)
{Linexy(205,61,x,i,8);
shortdelay(500);}
shortdelay(2000);
cls(0);
dprintf(8,2,"提示正确!");
shortdelay(2000);
cls(0);
while(1)
{disppic(img1,6,10);
disppic(img2,6,10);
disppic(img3,6,10);
disppic(img4,6,10);
disppic(img5,6,10);
disppic(img6,6,10);
disppic(img7,6,10);
disppic(img8,6,10);
disppic(img9,6,10);
disppic(img10,6,10);
disppic(img11,6,10);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -