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;

}

}

相关推荐
Hall_IC3 小时前
STM32F407VGT6产线急需?粤科源兴现货库存随时调拨,保障交期不延误
stm32·单片机·嵌入式硬件
Wxinxiaozhang3 小时前
GD32L235 更换外部晶振(8M → 16M)导致 MCU 无法启动的原因分析与解决方法
单片机·嵌入式硬件
嵌入式ZYXC3 小时前
第8章:PCB Layout基础与实物打样——把你的设计变成一块真正的板子
stm32·单片机·嵌入式硬件·物联网
zlinear数据采集卡3 小时前
模拟输入限流保护电路深度解析:从理论原理到ZLinear采集卡的实战设计
c语言·单片机·嵌入式硬件·fpga开发·自动化
踏着七彩祥云的小丑3 小时前
嵌入式测试学习第 27 天:网络基础:IP、子网掩码、TCP/UDP基础
单片机·嵌入式硬件
三佛科技-134163842125 小时前
PL3380 (PL338X系列)输出5V100MA非隔离AC-DC降压恒压输出芯片典型应用电路 与LP2601对比
单片机·嵌入式硬件·物联网·智能家居·pcb工艺
DS小龙哥5 小时前
基于STM32设计的物联网智能插座
stm32·嵌入式硬件·物联网
全球通史12 小时前
Keil 配置 MSPM0G3507 开发环境避坑:SysConfig、msp.h 和 driverlib.a 报错完整解决记录
stm32·单片机·嵌入式硬件
secondyoung14 小时前
Cortex-R52学习:MPU内存保护机制
arm开发·单片机·学习·arm·mpu
iCxhust15 小时前
C# 命令行指令 查看二进制文件
开发语言·单片机·嵌入式硬件·c#·proteus·微机原理·8088单板机