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

📄 ps2_study.c

📁 基于ps/2接口协议的键盘学习机,采用128*64LCD显示,使用单片机为,mega16
💻 C
📖 第 1 页 / 共 2 页
字号:
	{
	  flag_y=1;
	  flag_cout++;
	 key_i=1;
	}
	if((data_key[key_i-1]==0x1a)&(flag_w==1))///z
	{
	  flag_z=1;
	  flag_cout++;
	 key_i=1;
	}
	
    }
	
}

#pragma interrupt_handler usart_receive:12
void usart_receive(void)
{
 unsigned int temp;
 temp=UDR;
 data_key[key_i]=temp;
 if(data_key[1]==0xf0)
 {
   key_i++;
   key();
   
 }
 else
 {
   key_i=1;
 }
 
}


void read_char(void)
{
  /*LCD_clear();
  LCD_China(2,0,ni,0);
  LCD_China(23,0,de,0);
  LCD_China(44,0,de,0);
  LCD_China(2,0,fen,1);*/
  //LCD_China(2,0,shi,0);
  
  ;
}
/*void mouse(void)
{
  char i=0,flag;
  if(flag_1==1)
  {
  while (i!=64)
 {
  LCD_write_command(0Xc0 | i, 0);
  Delaynus(100);
  i++;
 }
 }
}*/
/////////////////////////////////////////////
void Get_num(void)
{ 
  unsigned char p,temp;
  { 
   temp=rig*4;
   p=temp%10;
   LCD_char(39,0,data_num[p],1);
   
   if(temp>=10)
   {
   temp=temp/10;
   p=temp%10;
   LCD_char(30,0,data_num[p],1);
   if(temp>=10)
   {
   temp=temp/10;
   p=temp%10;
   LCD_char(21,0,data_num[p],1);
   }
   }
  }
   
}
///////////////////////////////////////////////
void score(void)
{
  unsigned  int result=0,temp;
  unsigned char p;
  if(flag_score==1)
  {
  flag_error=1;
  flag_over=1;
  LCD_clear();
  result=(flag_ms+1000*flag_ts)/60;
  //LCD_China(0,2,shi2,0);
  //LCD_China(17,2,jian,0);
  if(result!=0)
  {
  result=(flag_cout*1000)/result;
  temp=result;
  p=temp%10;
  LCD_char(9,2,data_num[p],1);
  if(temp>=10)
   {
   temp=temp/10;
   p=temp%10;
   LCD_char(0,2,data_num[p],1);
   if(temp>=10)
   {
   temp=temp/10;
   p=temp%10;
   LCD_char(54,2,data_num[p],0);
   }
   }
   }
   else{LCD_char(9,2,data_num[0],1);}
  Get_num();
  LCD_China(0,0,ni,0);
  LCD_China(16,0,de,0);
  LCD_China(32,0,de2,0);
  LCD_China(48,0,fen,0);
  LCD_China(0,0,mao_hao,1);
  LCD_China(48,0,fen,1);
  LCD_China(0,2,su,0);
  LCD_China(16,2,du,0);
  LCD_China(35,2,mao_hao,0);
  LCD_China(16,2,zi,1);
  LCD_char(35,2,gang,1);
  LCD_China(48,2,fen,1);
  return_last(6);
  flag_ts=0;
  flag_cout=0;
  flag_ms=0;
  flag_time0=0;
  TCNT0=0X38;
  flag_score=0;
  }
}

void charge_station(void)
{
   if((x_station==63)&(y_station==2)&(LR==0))
    {
	 LR=1;
	 x_station=0;
	}
	if((x_station==63)&(y_station==2)&(LR==1))
    {
	 LR=0;
	 y_station=y_station+4;
	 x_station=0;
	}
	if((x_station==63)&(y_station==6)&(LR==0))
	{
	 x_station=0;
	 LR=1;
	}
}

void del_key(void)
{
   
  if((flag_del==1)&(flag_w==1))
  { 
    
    if((x_station==0)&(y_station==2)&(LR==1))
     {
	  x_station=63;
	  LR=0;
     }
	 if((x_station==0)&(y_station==6)&(LR==0))
     {
      y_station=y_station-4;
	  x_station=63;
	  LR=1;
     }
    if((x_station==0)&(y_station==6)&(LR==1))
     {
	  x_station=63;
	  LR=0;
     }
   
   x_station=x_station-9;
   LCD_char(x_station,y_station,del,LR);
   if(flag_rig==1)
   {
     rig--;
   }
   flag_del=0; 
 }
   /*if((x_station<=0) &(y_station==2) &(LR==0))
   {
	x_station=0;
	y_station=2;
	rig=0;
   }*/
  
  }
////////////////////////////////////////////////////
void wirte_char(void)
{
  
  if((x_station>=36) &(y_station==6) &(LR==1))
   {
    TCCR0=0x00;
    flag_error=1;                                                                                            
	flag_over=1;
   }
   //////////////1///////////////////
  if(flag_error==0)
  {
  if((flag_c==1)&(flag_w==1)&(wed1==1))
  {
   LCD_char(x_station,y_station,c,LR);
    if((x_station==0)&(y_station==2)&(LR==0))
    {
      rig++;
	  flag_rig=1;
    }
	else{flag_rig=0;}
   x_station=x_station+9;
   
   flag_c=0;
  }
  //////////////////////z///////////////
  if((flag_z==1)&(flag_w==1)&(wed1==2))
  {
   LCD_char(x_station,y_station,z,LR);
    if((x_station==0)&(y_station==2)&(LR==0))
    {
      rig++;
	  flag_rig=1;
    }
	else{flag_rig=0;}
   x_station=x_station+9;
   
   flag_z=0;
  }
  //////////////b/////////////////////
  if((flag_b==1)&(flag_w==1))
  {
   LCD_char(x_station,y_station,b,LR);
    if((x_station==9)&(y_station==2)&(LR==0))
    {
      rig++;
	  flag_rig=1;
    } 
	else{flag_rig=0;}
   x_station=x_station+9;
   flag_b=0;
  }
 ///////////////c//////////////////////////
  if((flag_f==1)&(flag_w==1)&(wed1==1))
  {
   LCD_char(x_station,y_station,f,LR);
    if((x_station==18)&(y_station==2)&(LR==0))
    {
      rig++;
	  flag_rig=1;
    } 
	else{flag_rig=0;}
   x_station=x_station+9;
   flag_f=0;
  }
  //////////////////////s/////////
    if((flag_s==1)&(flag_w==1)&(wed1==2))
  {
   LCD_char(x_station,y_station,s,LR);
    if((x_station==18)&(y_station==2)&(LR==0))
    {
      rig++;
	  flag_rig=1;
    } 
	else{flag_rig=0;}
   x_station=x_station+9;
   flag_s=0;
  }
  ////////////////4///////////////////////
  if((flag_d==1)&(flag_w==1))
  {
   LCD_char(x_station,y_station,d,LR);
    if((x_station==27)&(y_station==2)&(LR==0))
    {
      rig++;
	  flag_rig=1;
    } 
	else{flag_rig=0;}
   x_station=x_station+9;
   flag_d=0;
  }
  ///////////////////////////////////////
  if((flag_e==1)&(flag_w==1))
  {
   LCD_char(x_station,y_station,e,LR);
    if((x_station==36)&(y_station==2)&(LR==0))
    {
      rig++;
	  flag_rig=1;
    } 
	else{flag_rig=0;}
   x_station=x_station+9;
   flag_e=0;
  }
  ///////////////a///////////////////////
  if((flag_a==1)&(flag_w==1)&(wed1==1))
  {
   LCD_char(x_station,y_station,a,LR);
    if((x_station==45)&(y_station==2)&(LR==0))
    {
      rig++;
	  flag_rig=1;
    } 
	else{flag_rig=0;}
   x_station=x_station+9;
   flag_a=0;
  }
  ///////////////////n///////////////////
  if((flag_n==1)&(flag_w==1)&(wed1==2))
  {
   LCD_char(x_station,y_station,n,LR);
    if((x_station==45)&(y_station==2)&(LR==0))
    {
      rig++;
	  flag_rig=1;
    } 
	else{flag_rig=0;}
   x_station=x_station+9;
   flag_n=0;
  }
  ////////////////g/////////////////////
  if((flag_g==1)&(flag_w==1))
  {
   LCD_char(x_station,y_station,g,LR);
    if((x_station==54)&(y_station==2)&(LR==0))
    {
      rig++;
	  flag_rig=1;
    } 
	else{flag_rig=0;}
   x_station=x_station+9;
   flag_g=0;
  }
  //////////////////v1///////////////////
   if((flag_v==1)&(flag_w==1)&(wed1==1))
  {
   LCD_char(x_station,y_station,v,LR);
    if((x_station==0)&(y_station==6)&(LR==0))
    {
      rig++;
	  flag_rig=1;
    } 
	else{flag_rig=0;}
   x_station=x_station+9;
   flag_v=0;
  }
  //////////////////o///////////////////
   if((flag_o==1)&(flag_w==1)&(wed1==2))
  {
   LCD_char(x_station,y_station,o,LR);
    if((x_station==0)&(y_station==6)&(LR==0))
    {
      rig++;
	  flag_rig=1;
    } 
	else{flag_rig=0;}
   x_station=x_station+9;
   flag_o=0;
  }
  ////////////////i/////////////////////
  if((flag_i==1)&(flag_w==1))
  {
   LCD_char(x_station,y_station,i,LR);
    if((x_station==9)&(y_station==6)&(LR==0))
    {
      rig++;
	  flag_rig=1;
    } 
	else{flag_rig=0;}
   x_station=x_station+9;
   flag_i=0;
  }
  ////////////////j/////////////////////
  if((flag_j==1)&(flag_w==1))
  {
   LCD_char(x_station,y_station,j,LR);
    if((x_station==18)&(y_station==6)&(LR==0))
    {
      rig++;
	  flag_rig=1;
    } 
	else{flag_rig=0;}
   x_station=x_station+9;
   flag_j=0;
  }
  ///////////////h1////////////////////
  if((flag_h==1)&(flag_w==1)&(wed1==1))
  {
   LCD_char(x_station,y_station,h,LR);
    if((x_station==27)&(y_station==6)&(LR==0))
    {
      rig++;
	  flag_rig=1;
    } 
	else{flag_rig=0;}
   x_station=x_station+9;
   flag_h=0;
  }
  ///////////////v////////////////////
  if((flag_v==1)&(flag_w==1)&(wed1==2))
  {
   LCD_char(x_station,y_station,v,LR);
    if((x_station==27)&(y_station==6)&(LR==0))
    {
      rig++;
	  flag_rig=1;
    } 
	else{flag_rig=0;}
   x_station=x_station+9;
   flag_v=0;
  }
  ///////////////////////////////////
  if((flag_l==1)&(flag_w==1))
  {
   LCD_char(x_station,y_station,l,LR);
    if((x_station==36)&(y_station==6)&(LR==0))
    {
      rig++;
	  flag_rig=1;
    } 
	else{flag_rig=0;}
   x_station=x_station+9;
   flag_l=0;
  }
  ///////////////o/////////////////////
  if((flag_o==1)&(flag_w==1)&(wed1==1))
  {
   LCD_char(x_station,y_station,o,LR);
    if((x_station==45)&(y_station==6)&(LR==0))
    {
      rig++;
	  flag_rig=1;
    } 
	else{flag_rig=0;}
   x_station=x_station+9;
   flag_o=0;
  }
  ////////////////////////f//////////
  if((flag_f==1)&(flag_w==1)&(wed1==2))
  {
   LCD_char(x_station,y_station,f,LR);
    if((x_station==45)&(y_station==6)&(LR==0))
    {
      rig++;
	  flag_rig=1;
    } 
	else{flag_rig=0;}
   x_station=x_station+9;
   flag_f=0;
  }
  /////////////////////////////////////
  if((flag_m==1)&(flag_w==1))
  {
   LCD_char(x_station,y_station,m,LR);
    if((x_station==54)&(y_station==6)&(LR==0))
    {
      rig++;
	  flag_rig=1;
    } 
	else{flag_rig=0;}
   x_station=x_station+9;
   flag_m=0;
  }
  /////////////n1////////////////
  if((flag_n==1)&(flag_w==1)&(wed1==1))
  {
   LCD_char(x_station,y_station,n,LR);
    if((x_station==0)&(y_station==2)&(LR==1))
    {
      rig++;
	  flag_rig=1;
    } 
	else{flag_rig=0;}
   x_station=x_station+9;
   flag_n=0;
  }
  /////////////h2/////////////////
  if((flag_h==1)&(flag_w==1)&(wed1==2))
  {
   LCD_char(x_station,y_station,h,LR);
    if((x_station==0)&(y_station==2)&(LR==1))
    {
      rig++;
	  flag_rig=1;
    } 
	else{flag_rig=0;}
   x_station=x_station+9;
   flag_h=0;
  }
  /////////////////////p/////////////////////
  if((flag_p==1)&(flag_w==1))
  {
   LCD_char(x_station,y_station,p,LR);
    if((x_station==9)&(y_station==2)&(LR==1))
    {
      rig++;
	  flag_rig=1;
    } 
	else{flag_rig=0;}
   x_station=x_station+9;
   flag_p=0;
  }
  ////////////////////q////////////////////
  if((flag_q==1)&(flag_w==1))
  {
   LCD_char(x_station,y_station,q,LR);
    if((x_station==18)&(y_station==2)&(LR==1))
    {
      rig++;
	  flag_rig=1;
    } 
	else{flag_rig=0;}
   x_station=x_station+9;
   flag_q=0;
  }
  //////////////////////r/////////////
  if((flag_r==1)&(flag_w==1))
  {
   LCD_char(x_station,y_station,r,LR);
    if((x_station==27)&(y_station==2)&(LR==1))
    {
      rig++;
	  flag_rig=1;
    } 
	else{flag_rig=0;}
   x_station=x_station+9;
   flag_r=0;
  }
  ////////////////////k1////////////////////
  if((flag_k==1)&(flag_w==1)&(wed1==1))
  {
   LCD_char(x_station,y_station,k,LR);
    if((x_station==36)&(y_station==2)&(LR==1))
    {
      rig++;
	  flag_rig=1;
    } 
	else{flag_rig=0;}
   x_station=x_station+9;
   flag_k=0;
  }
  ////////////////////c2////////////////////
  if((flag_c==1)&(flag_w==1)&(wed1==2))
  {
   LCD_char(x_station,y_station,c,LR);
    if((x_station==36)&(y_station==2)&(LR==1))
    {
      rig++;
	  flag_rig=1;
    } 
	else{flag_rig=0;}
   x_station=x_station+9;
   flag_c=0;
  }
  /////////////////////t////////////////
  if((flag_t==1)&(flag_w==1))
  {
   LCD_char(x_station,y_station,t,LR);
    if((x_station==45)&(y_station==2)&(LR==1))
    {
      rig++;
	  flag_rig=1;
    } 
	else{flag_rig=0;}
   x_station=x_station+9;
   flag_t=0;
  }
  ///////////////////////u////////////////
  if((flag_u==1)&(flag_w==1))
  {
   LCD_char(x_station,y_station,u,LR);
    if((x_station==54)&(y_station==2)&(LR==1))
    {
      rig++;
	  flag_rig=1;
    } 
	else{flag_rig=0;}
   x_station=x_station+9;
   flag_u=0;
  }
  ///////////////////////s2/////////////
  if((flag_s==1)&(flag_w==1)&(wed1==1))
  {
   LCD_char(x_station,y_station,s,LR);
    if((x_station==0)&(y_station==6)&(LR==1))
    {
      rig++;
	  flag_rig=1;
    } 
	else{flag_rig=0;}
   x_station=x_station+9;
   flag_s=0;
  }
  ////////////////////////k2/////////////
  if((flag_k==1)&(flag_w==1)&(wed1==2))
  {
   LCD_char(x_station,y_station,k,LR);
    if((x_station==0)&(y_station==6)&(LR==1))
    {
      rig++;
	  flag_rig=1;
    } 
	else{flag_rig=0;}
   x_station=x_station+9;
   flag_k=0;
  }
  /////////////////////w/////////////////
  if((flag_ww==1)&(flag_w==1))
  {
   LCD_char(x_station,y_station,w,LR);
    if((x_station==9)&(y_station==6)&(LR==1))
    {
      rig++;
	  flag_rig=1;
    } 
	else{flag_rig=0;}
   x_station=x_station+9;
   flag_ww=0;
  }
  /////////////////////x/////////////////
  if((flag_x==1)&(flag_w==1))
  {
   LCD_char(x_station,y_station,x,LR);
    if((x_station==18)&(y_station==6)&(LR==1))
    {
      rig++;
	  flag_rig=1;
    } 
	else{flag_rig=0;}
   x_station=x_station+9;
   flag_x=0;
  }
  /////////////////////y////////////////
  if((flag_y==1)&(flag_w==1))
  {
   LCD_char(x_station,y_station,y,LR);
    if((x_station==27)&(y_station==6)&(LR==1))
    {
      rig++;
	  flag_rig=1;
    } 
	else{flag_rig=0;}
   x_station=x_station+9;
   flag_y=0;
  }
  ///////////////////////a//////////////////
  if((flag_a==1)&(flag_w==1)&(wed1==2))
  {
   LCD_char(x_station,y_station,a,LR);
   x_station=x_station+9;
   flag_a=0;
  }
  ///////////////////////z//////////////////
  if((flag_z==1)&(flag_w==1)&(wed1==1))
  {
   LCD_char(x_station,y_station,z,LR);
   x_station=x_station+9;
   flag_z=0;
  }
  //////////////////////////////////////
  ///////////////////////////////////////
  charge_station();
   
   }

  /////////////////////////////////////////////////
	
  }

void main()
{
  
  usart_init();
  time0_init();
  LED_ini();
   LCD_clear();
   //SEI();
 
  LCD_write_command(0xc0, 0);//初始化x,y地址
  LCD_write_command(0xc0, 1);//初始化x,y地址
  Meu_ini();
  //char_display();
  //LCD_pic(0,0,pic2,0);
  LCD_China(0,0,kai,0);
  LCD_China(17,0,shi,0);
  LCD_China(33,0,qing3,0);
  LCD_China(49,0,an,0);
  LCD_char(20,0,EE,1);
  LCD_char(28,0,n,1);
  LCD_char(36,0,t,1);
  LCD_char(44,0,ee,1);
  LCD_char(52,0,r,1);
  ////////////////////////////////
  return_last(4);
   SEI();
  while(1)
  {
   // mouse();
	
	wirte_char();
	score();
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -