📄 师姐全部程序wsy.c
字号:
wr_lcd (0,addr);
wr_lcd(1,0x33);
break;
case 4:
wr_lcd (0,addr);
wr_lcd(1,0x34);
break;
case 5:
wr_lcd (0,addr);
wr_lcd(1,0x35);
break;
case 6:
wr_lcd (0,addr);
wr_lcd(1,0x36);
break;
case 7:
wr_lcd (0,addr);
wr_lcd(1,0x37);
break;
case 8:
wr_lcd (0,addr);
wr_lcd(1,0x38);
break;
case 9:
wr_lcd (0,addr);
wr_lcd(1,0x39);
break;
case 10:
wr_lcd (0,addr);
wr_lcd(1,0x41);
break;
case 11:
wr_lcd (0,addr);
wr_lcd(1,0x42);
break;
case 12:
wr_lcd(0, addr);
wr_lcd(1,0x43);
break;
case 13:
wr_lcd (0,addr);
wr_lcd(1,0x44);
break;
case 14 :
wr_lcd (0,addr);
wr_lcd(1,0x45);
break;
case 15:
wr_lcd (0,addr);
wr_lcd(1,0x46);
break;
default :
break ;
}
}
/////在上一条语句指定的单元,显示另一个数字/////
void num1_disp(uchar t)
{
wr_lcd (0,0x30);
switch(t)
{
case 0x00:
wr_lcd(1,0x30);
break;
case 0x01:
wr_lcd(1,0x31);
break;
case 0x02:
wr_lcd(1,0x32);
break;
case 0x03:
wr_lcd(1,0x33);
break;
case 0x04:
wr_lcd(1,0x34);
break;
case 0x05:
wr_lcd(1,0x35);
break;
case 0x06:
wr_lcd(1,0x36);
break;
case 0x07:
wr_lcd(1,0x37);
break;
case 0x08:
wr_lcd(1,0x38);;
break;
case 0x09:
wr_lcd(1,0x39);
break;
case 10:
wr_lcd(1,0x41);
break;
case 11:
wr_lcd(1,0x42);
break;
case 12:
wr_lcd(1,0x43);
break;
case 13:
wr_lcd(1,0x44);
break;
case 14 :
wr_lcd(1,0x45);
break;
case 15:
wr_lcd(1,0x46);
break;
default :
break ;
}
}
//--------------清DDRAM-----------------//
void clrram (void)
{
wr_lcd (0,0x30);
wr_lcd (0,0x01);
}
////显示卡号///////
void card_disp(void)
{
uchar i,w,s,addr;
addr=0x8b;
display("卡号: ",0x88);
for(i=0;i,i<5;i++)
{
w=gc_cad[i]>>4;
s=gc_cad[i]&0x0f;
num_disp(w,addr++);
num1_disp(s);
}
}
//现示姓名////
void name_disp(void)
{
uchar i,k=0;
uchar code a[10]={0x18,0x01,0x0f,0x66,0x7d,0x0b,0x00,0xbd,0xb7,0xb9};
for(i=0;i<5;i++)
{
if(gc_cad[i]==a[i])
{k+=1;
point1++;}
}
if(k==5)
{
display("姓名:王军 ",0x98);
}
else
{
for(i=0;i<5;i++)
{
if(gc_cad[i]==a[i+5])
{k+=1;
point1++;}
}
if(k==5)
{
display("姓名:刘志国 ",0x98);
}
}
}
//功能:EM读卡
//出口:正确返回1,错误返回0 ,gc_cad[8] 存储读到的卡号
uchar readcad()
{ unsigned char k=0,i=0;
EA=0;
if(!i_txct)
{ if(!i_txct)
{ gc_crc8=0;
i_scio=1;
for(k=0;k<8;k++) //8位数据
{ shu=0;
for(i=0;i<8;i++)
{ i_scio=0;
Timer0_us(40); //40
shu=shu>>1;
if(i_txct)
{shu=shu|0x80;
}
i_scio=1;
Timer0_us(40); //40
} //end of for(i=0;i<8;i++)
gc_crc8=crc8[gc_crc8^shu];
gc_cad[k]=shu;
}//end of for(k=0;k<8;k++)
i_scio=0; //校验码
Timer0_us(27); //27u
i_scio=1;
Timer0_us(27); //27u
shu=0;
for(i=0;i<8;i++) //crc8
{ i_scio=0;
Timer0_us(40); //40u
shu=shu>>1;
if(i_txct)
{ shu=shu|0x80;
}
i_scio=1;
Timer0_us(40); //40u
}//end of for(i=0;i<8;i++)
i_scio=0; //配合读卡模块
Timer0_us(27); //27u
i_scio=1;
if(shu==gc_crc8)
{EA=1;
card_disp();
//name_disp();
return (1);
}//end of if(shu==gc_crc8)
} //end of if(!i_txct)
} //end of if(!i_txct)
EA=1;
return(0);
}
/////从ds12887里面读取日期和星期/////
void dateread(void)
{
uchar w,s;
cs_12887;
nop();
nop();
B_12887=0x06 ;
read_time[0]=YEAR;
w=YEAR/10;
s=YEAR%10;
P4|=0x07;
num_disp(w,0x81);
num1_disp(s);
nop();
nop();
cs_12887;
read_time[1]=MON;
w=MON/10;
s=MON%10;
P4|=0x07;
num_disp(w,0x83);
num1_disp(s);
nop();
nop();
cs_12887;
read_time[2]=DAY;
w=DAY/10;
s=DAY%10;
P4|=0x07;
num_disp(w,0x85);
num1_disp(s);
nop();
nop();
cs_12887;
read_time[6]=WEEK;
w=WEEK%10;
num_disp(w,0x92);
nop();
nop();
P4|=0x07; //释放时钟芯片,未选中任何芯片;
}
//读取12887的时间////
void timeread(void)
{
uchar w,s;
cs_12887;
nop();
nop();
B_12887=0x06 ;
read_time[3]=HOU;
w=HOU/10;
s=HOU%10;
P4|=0x07;
num_disp(w,0x89);
num1_disp(s);
nop();
nop();
cs_12887;
read_time[4]=MIN;
w=MIN/10;
s=MIN%10;
P4|=0x07;
num_disp(w,0x8b);
num1_disp(s);
nop();
nop();
cs_12887;
read_time[5]=SEC;
w=SEC/10;
s=SEC%10;
P4|=0x07;
num_disp(w,0x8d);
num1_disp(s);
nop();
nop();
P4|=0x07; //释放时钟芯片,未选中任何芯片;
}
////////////往12887里面写键盘所修改的时间////////////////
write_12887()
{
cs_12887; //选中DS12887
nop();
nop();
B_12887=0x86 ; //禁止时间更新 时标BCD码,24小时时制,禁止夏令时
nop();
nop();
YEAR=key_time[0];
nop();
nop();
MON=key_time[1];
nop();
nop();
DAY=key_time[2];
nop();
nop();
HOU=key_time[3];
nop();
nop();
MIN=key_time[4];
nop();
nop();
SEC=key_time[5];
nop();
nop();
WEEK=key_time[6];
nop();
nop();
A_12887=0X20 ; //允许读时标寄存器(UIP=0),晶体振荡器开启,并允许时钟运行
P4|=0x07; //释放时钟芯片,未选中任何芯片
nop();
nop();
}
///////////////用键盘修改时间/////////////////
time_change()
{
uchar keynumber1[7];
if(keytimes1==0)
{
display("请输入日期时间: ",0x88) ;
//请输入
}
if(keyon_flag1)
{
if((clrlcd_flag==0)&(esc_flag==0)&(chaxun_flag==0)&(enter_flag==0))
{
if(keytimes1<=15)
{
switch(keytimes1)
{
case 0 :
keytimes1++; //第一次为空操作,因为是时间按键产生的keyonflag
break ;
case 1 :
num_disp(keynumber,0x98);
key_time[0]=keynumber*10 ;
keytimes1++;
keynumber1[0]=keynumber;
break ;
case 2 :
num_disp(keynumber1[0],0x98);
num1_disp(keynumber);
key_time[0]=key_time[0]+keynumber;
keytimes1++;
break ;
case 3 :
num_disp(keynumber,0x99);
key_time[1]=keynumber*10 ;
keytimes1++;
keynumber1[1]=keynumber;
break ;
case 4 :
num_disp(keynumber1[1],0x99);
num1_disp(keynumber);
key_time[1]=key_time[1]+keynumber;
keytimes1++;
break ;
case 5 :
num_disp(keynumber,0x9a);
key_time[2]=keynumber*10 ;
keytimes1++;
keynumber1[2]=keynumber;
break ;
case 6 :
num_disp(keynumber1[2],0x9a);
num1_disp(keynumber);
key_time[2]=key_time[2]+keynumber;
keytimes1++;
break ;
case 7 :
num_disp(keynumber,0x9b);
key_time[3]=keynumber*10;
keytimes1++;
keynumber1[3]=keynumber;
break ;
case 8 :
num_disp(keynumber1[3],0x9b);
num1_disp(keynumber);
key_time[3]=key_time[3]+keynumber;
keytimes1++;
break ;
case 9 :
num_disp(keynumber,0x9c);
key_time[4]=keynumber*10 ;
keytimes1++;
keynumber1[4]=keynumber;
break ;
case 10 :
num_disp(keynumber1[4],0x9c);
num1_disp(keynumber);
key_time[4]=key_time[4]+keynumber;
keytimes1++;
break ;
case 11 :
num_disp(keynumber,0x9d);
key_time[5]=keynumber*10 ;
keytimes1++;
keynumber1[5]=keynumber;
break ;
case 12 :
num_disp(keynumber1[5],0x9d);
num1_disp(keynumber);
key_time[5]=key_time[5]+keynumber;
keytimes1++;
break ;
case 13 :
num_disp(keynumber,0x9e);
key_time[6]=keynumber*10 ;
keytimes1++;
keynumber1[6]=keynumber;
break ;
case 14 :
num_disp(keynumber1[6],0x9e);
num1_disp(keynumber);
key_time[6]=key_time[6]+keynumber;
keytimes1++;
break ;
case 15 :
keytimes1++;
break ;
default :
break ;
} //end of swithc(keytimes1)
} //end of if(keytimes1<=11)
} //end of if((clrlcd_flag==0)&(callon_flag==0))
if(clrlcd_flag)
{
if(keytimes1>=15)
{
num_disp(keynumber1[6],0x9e);
num_disp2(" ");
keytimes1=14 ;
key_time[6]&=0xf0;
} //end of clrlcd_flag
else
{
if(keytimes1<=1)
{
keytimes1=1 ;
}
else
{
switch(--keytimes1)
{
case 13:
num_disp1(" ",0x9e);
key_time[6]=0;
break;
case 12:
num_disp(keynumber1[5],0x9d);
num_disp2(" ");
key_time[5]&=0xf0;
break;
case 11:
num_disp1(" ",0x9d);
key_time[5]=0;
break;
case 10:
num_disp(keynumber1[4],0x9c);
num_disp2(" ");
key_time[4]&=0xf0;
break;
case 9:
num_disp1(" ",0x9c);
key_time[4]=0;
break;
case 8:
num_disp(keynumber1[3],0x9b);
num_disp2(" ");
key_time[3]&=0xf0;
break;
case 7:
num_disp1(" ",0x9b);
key_time[3]=0;
break;
case 6:
num_disp(keynumber1[2],0x9a);
num_disp2(" ");
key_time[2]&=0xf0;
break;
case 5:
num_disp1(" ",0x9a);
key_time[2]=0;
break;
case 4:
num_disp(keynumber1[1],0x99);
num_disp2(" ");
key_time[1]&=0xf0;
break;
case 3:
num_disp1(" ",0x99);
key_time[1]=0;
break;
case 2:
num_disp(keynumber1[0],0x98);
num_disp2(" ");
key_time[0]&=0xf0;
break;
case 1:
num_disp1(" ",0x98);
key_time[0]=0;
break;
default:
break;
}
}
}
keyon_flag1=0 ;
keyon_flag=0 ;
clrlcd_flag=0 ;
}//end of if(clrlcd_flag)
if(enter_flag==1)
{
//keynumber=0 ;
write_12887();
enter_flag=0 ;
timechange_flag=0 ;
//stardisp();
display(" 时 分 秒 ",0x88);
display(" ",0x98);
keytimes1=0 ;
}
keyon_flag=0 ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -