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

📄 electric.c

📁 使用AT52单片机控制矩阵键盘
💻 C
字号:
#include <reg52.h>
#include <absacc.h>

#define N8155CMD    XBYTE[0x1000]	
#define PA     		XBYTE[0x1001]
#define PB     		XBYTE[0x1002]


sbit speaker=P1^4;	

void delay_MS(unsigned int count)//延时函数 延时=1ms*count
{
 unsigned int i,j;
 for(i=0;i<count;i++)
 for(j=0;j<120;j++);
} 

int keyscan(void)//键盘扫描函数,使用行列反转扫描法
{
  unsigned char cord_h,cord_l;//行列值
  N8155CMD=0x03;
  PA=0x00;            
  PB=0x0f; 
  cord_l=PB;
  N8155CMD=0x01;
  if(cord_l!=0x0f)    //先检测有无按键按下
   {                 
     delay_MS(5);      //去抖动干扰
     cord_l=PB;  		//读入列线值        
     if(cord_l!=0x0f)
       {
          
         cord_l|=0x00;
		 PA|=0xf0;
		 N8155CMD=0x00;
	     cord_h=PA&0xf0;  //读入行线值
         return(cord_l+cord_h);//键盘最后组合码值并返回
       }
    }
  else return(0xff);     //否则返回固定值0xff
}


void main()
	{
		TMOD=0x01; //定时器/计数器方式1
   		EA=1;      //允许中断
   		ET0=1;     //定时器/计数器0
   		TH0=0;     //设定初值
   		TL0=0;
   		TR0=1;     //开始定时
   		while(1);  
	 }


void Timer0_int() interrupt 1        //定时器0中断方式
{
 
	switch(keyscan())  //判断按键
          {
             case 0x7e:  TH0=64021/256;  TL0=64021%256; break; 
             case 0x7d:  TH0=64103/256;  TL0=64103%256; break; 
             case 0x7b:  TH0=64260/256;  TL0=64260%256; break; 
             case 0x77:  TH0=64400/256;  TL0=64400%256; break; 
             case 0xbe:  TH0=64522/256;  TL0=64522%256; break; 
             case 0xbd:  TH0=64620/256;  TL0=64620%256; break; 
             case 0xbb:  TH0=64684/256;  TL0=64684%256; break; 
             case 0xb7:  TH0=64777/256;  TL0=64777%256; break; 
             case 0xde:  TH0=64840/256;  TL0=64840%256; break;
             case 0xdd:  TH0=64898/256;  TL0=64898%256; break; 
             case 0xdb:  TH0=64968/256;  TL0=64968%256; break; 
             case 0xd7:  TH0=65030/256;  TL0=65030%256; break; 
             case 0xee:  TH0=65078/256;  TL0=65078%256; break; 
             case 0xed:  TH0=65110/256;  TL0=65110%256; break; 
             case 0xeb:  TH0=65157/256;  TL0=65157%256; break; 
             case 0xe7:  TH0=65178/256;  TL0=65178%256; break;
			 default:	ET0=0; speaker=0;
 	}
    speaker=!speaker;
  
}
		

⌨️ 快捷键说明

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