51单片机之按键扫描

51单片机之按键扫描

描述:KEIL5编程,AT89C52单片机通过按键输入控制数码管显示该按键数值。

硬件:

电路仿真图(未运行)

电路仿真(运行)

程序:

按键扫描:控制每一行低电平,然后按下按键判断按键按下的行数以及按键列数,最后算出值。

#include <REGX52.H>

unsigned int Timer_Cnt = 0;

unsigned char code Digital_buff\[\]={

0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,0x80 ,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};

unsigned int Key_Num = 0; //°´¼üÊýÖµ

unsigned int Key_Flag = 0; //°´¼ü±êÖ¾Î>>

sbit key_row1 = P1^0;

sbit key_row2 = P1^1;

sbit key_row3 = P1^2;

sbit key_row4 = P1^3;

sbit key_col1 = P1^4;

sbit key_col2 = P1^5;

sbit key_col3 = P1^6;

sbit key_col4 = P1^7;

void Key_Scan()//°´¼üË¢ÐÂ

{

static unsigned char i=0;

++i;

i %= 4;

switch(i)//Ë¢ÐÂÐÐ

{

case 0:key_row1 = 0;key_row2 = 1;key_row3 = 1;key_row4 = 1;break;

case 1:key_row1 = 1;key_row2 = 0;key_row3 = 1;key_row4 = 1;break;

case 2:key_row1 = 1;key_row2 = 1;key_row3 = 0;key_row4 = 1;break;

case 3:key_row1 = 1;key_row2 = 1;key_row3 = 1;key_row4 = 0;break;

default:break;

}

if((key_col4 == 0)&&(Key_Flag == 0))//ÒÀ´ÎÅжϰ´¼üÊÇ·ñ°´ÏÂ

{

Key_Num = i*4;

Key_Flag = 1;

}

else if((key_col3 == 0)&&(Key_Flag == 0))

{

Key_Num = (i*4)+1;

Key_Flag = 1;

}

else if((key_col2 == 0)&&(Key_Flag == 0))

{

Key_Num = (i*4)+2;

Key_Flag = 1;

}

else if((key_col1 == 0)&&(Key_Flag == 0))

{

Key_Num = (i*4)+3;

Key_Flag = 1;

}//È·¶¨°´¼ü̧Æð

else if((key_col4 == 1||key_col3 == 1||key_col2 == 1||key_col1 == 1)&&Key_Flag == 1)

{

Key_Flag = 0;

}

}

void main()

{

P2 = Digital_buff0;

while(1)

{

Key_Scan();

P2 = Digital_buffKey_Num;

}

}

相关推荐
深圳市恒锐丰科技杨生12 小时前
EG1125 准谐振原边反馈 CC‑CV 功率开关|屹晶 EGmicro
嵌入式硬件·硬件工程
iCxhust12 小时前
51单片机电力载波应用开发(七)广播通讯
c语言·开发语言·单片机·嵌入式硬件·51单片机
深圳市恒锐丰科技杨生12 小时前
EG4005 微波 / 红外感应信号处理芯片|屹晶 EGmicro
嵌入式硬件·硬件工程
Brilliantwxx13 小时前
【STM32】基础定时器 TIM 详解:从极简原理到寄存器全解析
stm32·单片机·嵌入式硬件·mcu
DS小龙哥13 小时前
从呼吸心率到离床报警:60G雷达睡眠仪全栈开发实录(硬件+MQTT+小程序)DIY一台全功能睡眠监护仪
stm32·单片机·嵌入式硬件·物联网·小程序·智能家居
lhbweilai14 小时前
深挖FreeRTOS内核实现(二)
c语言·汇编·stm32·单片机
黑妹天下第一乖14 小时前
第 05 讲:阿加犀 AidCV 图像处理加速与 OpenCV 一致开发实战
开发语言·图像处理·人工智能·嵌入式硬件·数码相机·opencv·计算机视觉
这个人很懒676714 小时前
【无标题】
单片机·嵌入式硬件
ebiobiz14 小时前
Zig 工具链编译 STM32 开发指南
驱动开发·stm32·嵌入式硬件
国科安芯14 小时前
卫星推进与轨道维持系统中脉冲调制控制器的精确时序与抗辐射可靠性研究
嵌入式硬件·抗辐射·卫星姿轨控·as32x601·在轨服务