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

📄 chengxu.c

📁 信号测量 实时显示 延时2秒 键盘扫描
💻 C
字号:
	#include <intrins.h> 
#include<reg51.h>
#include<absacc.h>
#define uchar unsigned char 
#define uint unsigned int 

sbit LED1= P1^0;
sbit LED2= P1^1;
sbit LED3= P1^2;
sbit LED4= P1^3;


void Delay(uint n)  //软件延时
{
  unsigned int i,j;

  for(i=0;i<n;i++)
  {
    for(j=0;j<100;j++);
  }

}
 void dingshiqijishi(void)//定时器秒计时
{TMOD|=0x01;    //定时器0,方式1
  TL0=0x0D8;	 //TL0定时器0低8位计数器
  TH0=0x0F0;	 //TH0定时器0高8位计数器
  TR0=1;         //定时器/计数器0启动位.TR0=1:开始计时或计数 TR0=1禁止计时或计数 
  ET0=1;         //定时器/计数器0中断使能
  EA=1;			 //全局中断使能
}

 void kongzhiLED1(void)  //LED1控制函数
{ P0=0x01;
  LED1=0;
  dingshiqijishi() ;
 LED1=1;
}

void kongzhiLED2(void)  //LED2控制函数
{ P0=0x02;
  LED2=0;
  dingshiqijishi();
 LED2=1;
}

void kongzhiLED3 (void) //LED3控制函数
{ P0=0x03;
  LED3=0;
 dingshiqijishi();
  LED3=1;
}

void kongzhiLED4 (void) //LED4控制函数
{ P0=0x04;
  LED4=0;
}

uchar key(void)//4x4键盘子程序-判断有键闭合后调用该子程序返回键值
//0x11,0x21,0x41,0x81
//0x12,0x22,0x42,0x82
//0x14,0x24,0x44,0x84
//0x18,0x28,0x48,0x88
{
 uchar hang,lie;
 P2=0xf0;
 if((P2&0xf0)!=0xff)//有键闭合,顺序执行,否则为干扰,返回“0”
 {
  hang=0xfe;//行扫初值
  while((hang&0x10)!=0)
  {
   P2=hang;
      if((P2&0xf0)!=0xf0)//判断健值
      {
       lie=((P2&0xf0)|0x0f);
       return((~hang)+(~lie));
            }
      else
      hang=(hang<<1)|0x01;
     }
  }
     return(0);
}


void push(void)//判断是否有键按下

{
   uint m,kpush;;
   P2=0xf0;
   while(1)
 {
  if ((kpush=P2&0x0f)!=0xff)
          {
             Delay(100) ;//延时
             m=key();//调用键值判断
       switch(m) {
    case 0x11: kongzhiLED1();//按键1按下LED1亮	  
    case 0x21: kongzhiLED2();//按键2按下LED2亮
    case 0x41: kongzhiLED3();//按键3按下LED3响
    case 0x81: kongzhiLED4();//按键4按下LED4响
     default:break ;
   }
    }
     }
}



void main() 
{ 

while(1)
	{ P0=0x00;
           LED4=1;
	  push(); 				//扫描键盘
         
	}

}
void intersvr0(void) interrupt 0 using 1  //定时器0中断服务程序
{
  static uint  cishu=0;	//中断次数

 cishu++;

  if( (cishu%20)==0 )	//每100ms中断一次,20次就是2000ms即为2s "%"为求余
  { LED1=LED2=LED3=LED4=1;
    cishu=0;
  }

}

⌨️ 快捷键说明

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