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

📄 超级io扫描.c

📁 74hc164键盘显示 红外控制DS1302 超级IO扫描 12864+遥控解码 1602+定时器 LCD1602+自定义图形
💻 C
字号:
#include<reg5122.h>

unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴  
                            
sbit CLK1=P2^0;
sbit DAT1=P2^1;
sbit CLK2=P3^6;
sbit DAT2=P3^7;
sbit xuan2=P2^2;
sbit xuan1=P3^4;

sbit k1=P1^0;
sbit k2=P1^1;
sbit k3=P1^2;
sbit k4=P1^3;
sbit k5=P1^4;


unsigned char k=0;
void delay(int t)
{
  unsigned char i;
  for(;t>0;t--)
  for(i=0;i<125;i++);
}

void sendchar(unsigned char kdate)
{
  unsigned char i,date;
  i=8;
  do
  {
   date=kdate&1;
   kdate=kdate>>1;
   DAT1=date;
   CLK1=0;       //上升沿脉冲触发移位
   CLK1=1;
  }while(--i!=0);
}

unsigned char keyscan(void)
{
  // static keynumber=0 ;
   unsigned char temp,i,x,temp2,y;
   P1=P1&0xff;     //***11111初始化
   temp=P1&0x1f;  //00011111
   if(temp!=0x1f)  //有键按下
     return ~temp;
   else
   { 
     x=1;
     for(i=0;i<5;i++)
	 {
	   temp2=P1&(~x);
	   P1=temp2;
	   delay(1);
	   y=(P1&0x1f)&temp2;
	   if(y!=temp2)
	     return y+i; 
       if(i<5)
	     x=x<<1;
	 }
   }
   return 0;
}
	 
	   

   
//	 return keynumber;
/*}*/

void display(long int shu,unsigned char wei)
{
  unsigned char i;
  int s;
  DAT2=0;
  for(i=0;i<wei;i++)
  {
    CLK2=0;
	CLK2=1;
	DAT2=1;
    s=shu%10;
	sendchar(table[s]);
	shu=shu/10;
	delay(4); 
    P3_0=0; 
    P3_0=1;	
  } 
  for(i=wei;i<9;i++)  //位清零
  {
    CLK2=0;
	CLK2=1;
  }  
}

void main(void)
{ 
  unsigned char keynumber=0,i=0,j=0;    
  while(1)
  {  
    if(i==10)
     {	   
  	   i=0;
       keynumber= keyscan();
	   if(keynumber!=0)
	   j=keynumber;
	 }
	 i++;
	 display(j,8);    
     //delay(1);
	    
  }
}
   /* 12345678 */

⌨️ 快捷键说明

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