ms=0;
for(i=0;i<8;i++) {
jm_disp[i]=0x00; mima[i]=0x00; } }
/**************** k13按键功能函数 ******************/ void k13() {
if((ms==2&&y==3)&&v<6) { mima[v]=0x00; jm_disp[v]=0x40; v=v+1; }
if((ms==3&&y==3)&&v<8) {
mima[v]=0x00; jm_disp[v]=0x40; v=v+1; }
if((y==1||y==2)&&(ms==0&&lock<8)) {
y=2; w=1;
keyvalue=keyvalue-13; lock=lock+1; count=0; }
if((ms==1&&y==1)&&v<8) {
keyvalue=keyvalue-13; seg_disp[v]=sdm[keyvalue]; if(v==1||v==4) v=v+2; else v=v+1; } }
/**************** k14按键功能函数 ******************/ void k14() //确定按键 {
uint i,p,t=0,r=0; uchar j;
if((ms==2&&y==3)&&v==6)
31
{
j=0x00; for(i=0;i<6;i++) { At24c02Write(j,mima[i]); j=j+1; } for(i=0;i<8;i++) jm_disp[i]=0x00; v=0; ms=0; y=1; }
if((ms==3&&y==3)&&v==8) {
j=0x06; for(i=0;i<8;i++) { At24c02Write(j,mima[i]); j=j+1; } for(i=0;i<8;i++) jm_disp[i]=0x00; v=0; ms=0; y=1; }
if((y==2)&&(w==0)) ent=1;
if(ms==1&&y==1) { for(i=0;i<8;i++) { for(p=0;p<16;p++) { if(seg_disp[i]==sdm[p]) { if((i==0||i==3)||i==6) clk_value[t]=p*10; if((i==1||i==4)||i==7) { clk_value[t]=clk_value[t]+p; t=t+1; } } } } TR0=1; ms=0; v=0;
32
} }
/**************** k15按键功能函数 ******************/ void k15() //设置时间按键 {
if(ms==0&&y==1) {
TR0=0; ms=1; } }
/***************** 核对密码函数 *****************/ void open_lock() {
uint i,i1; uchar j;
if((y==2&&w==1)) {
if(v<8) {
mima[v]=keyvalue; jm_disp[v]=0x40; w=0; v=v+1; } }
if((ent==1)&&((lock==6)||(lock==8))) {
for(i=0;i 33 { seg=0x79; LSA=1; LSB=1; LSC=1; Delay1ms(3000); y=1; ent=0; v=0; lock=0; for(i1=0;i1<8;i1++) { jm_disp[i1]=0x00; mima[i1]=0x00; } return; } } if(lock==6) { OP=0; ms=4; y=1; v=0; lock=0; for(i1=0;i1<8;i1++) { jm_disp[i1]=0x00; mima[i1]=0x00; } } else { y=3; v=0; lock=0; for(i=0;i<8;i++) { jm_disp[i]=0x08; mima[i]=0x00; } } lock=0; } ent=0; } /******************** 24c02写数据函数 *********************/ void At24c02Write(unsigned char addr,unsigned char dat) { I2C_Start(); I2C_SendByte(0xa0, 1); //发送写器件地址 I2C_SendByte(addr, 1); //发送要写入内存地址 I2C_SendByte(dat, 0); //发送数据 I2C_Stop(); } 34 /******************** 24c02读数据函数 *********************/ unsigned char At24c02Read(unsigned char addr) { unsigned char num; I2C_Start(); } I2C_SendByte(0xa0, 1); //发送写器件地址 I2C_SendByte(addr, 1); //发送要读取的地址 I2C_Start(); I2C_SendByte(0xa1, 1); //发送读器件地址 num=I2C_ReadByte(); //读取数据 I2C_Stop(); return num; 35