⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 师姐全部程序wsy.c

📁 cgnal c8051f020 4*6键盘 4*8 液晶显示 大容量存储
💻 C
📖 第 1 页 / 共 5 页
字号:
        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 + -