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;

}

}

相关推荐
小雪崩4 小时前
嵌入式学习 day49:ARM基础
嵌入式硬件·学习
晊晌_h4 小时前
嵌入式从0到精通——51单片机(四)| DS18B20
51单片机·ds18b20
田径他爸来了4 小时前
嵌入式学习第38天——裸机imx6ull(uart接口;配置波特率为115200,8位数据位,无校验,一位停止位)
嵌入式硬件·学习
索端阳5 小时前
从时序到代码:51单片机驱动DS18B20温度传感器的深度复盘
51单片机
女神下凡5 小时前
带NPU的电脑 和不带NPU的电脑 在使用上有什么不样
arm开发·单片机·pcm
smartpi_ai5 小时前
CI-73T 的三个串口怎么分?下载口固定的引脚账本、词条 150 条的“词数“口径与硬 PWM 控舵机的性能边界
单片机·嵌入式硬件·语音识别
艾芯微科技5 小时前
ESDUNL24VC1 单向 ESD 静电保护二极管参数、电路设计与 PCB 防护布局
网络·单片机·嵌入式硬件·集成测试·51单片机
Kuakewei8885 小时前
OVP/OCP过压过流保护芯片设计指南:过压关断、限流与短路保护
嵌入式硬件
佳児素花痴╮5 小时前
STM32(中断)
stm32·单片机·嵌入式硬件
ZLG_zhiyuan7 小时前
示波器探头选型指南:5大分类,3步正确适配(附避坑清单)
单片机·嵌入式硬件