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;

}

}

相关推荐
少卿.55514 分钟前
wokwi搭建仿真超声波雷达测距判断(保姆级教学)
单片机·嵌入式硬件·arduino
C++ 老炮儿的技术栈1 小时前
机器人的坐标,像 XYZ 的坐标值,是用单精度浮点还是用双精度浮点?
c语言·c++·人工智能·单片机·c
深圳老胡1 小时前
STM32C562RET6 外部中断详解:从 EXTI 原理到 GPIO 外部中断实战
笔记·stm32·单片机·代码规范·1024程序员节
威嵌神州1 小时前
一台加固平板,能替掉几台现场设备?
嵌入式硬件·fpga开发·电脑·平板
编码追梦人1 小时前
ESP-IDF 实战:用 ESP32-C3 打造超低功耗 LoRa 无线传感器节点(深度睡眠 + OTA 全解析)
嵌入式硬件·lora·设计规范·esp-idf·esp32-c3·低功耗设计
编码追梦人1 小时前
基于 ESP32-S3 的便携式多参数环境监护仪设计:从硬件选型到 FreeRTOS 多任务落地
数据库·单片机·嵌入式硬件·mongodb·esp32·freertos·低功耗设计
wuyk55513 小时前
防逆向基础:在量产固件中关闭调试接口并设置读保护(RDP)的正确姿势
stm32·单片机·嵌入式硬件·性能优化·重构
zhangrelay16 小时前
单片机原理与接口技术-2026融合版-从MEGA2560-ESP32与Wokwi到ROS2-Lyrical与具身智能栈
单片机·嵌入式硬件
lhbweilai17 小时前
分析FreeRTOS内核对象API的源码实现(八)
c语言·开发语言·stm32·单片机
艾络迅Acceleronix17 小时前
环境监测终端:STM32+EG800Z AT+ 艾络迅平台实战|多传感器采集联动全流程
c语言·stm32·单片机·嵌入式硬件·物联网·1024程序员节