资源简介
用有限状态机思想实现矩阵按键扫描,初学者做实验可参考,写的很好,51单片机矩阵按键控制实验51单片机矩阵按键控制实验51单片机矩阵按键控制实验
代码片段和文件信息
// 尝试利用有限状态机思想完成行列矩阵键盘的扫描。
#include
#define uchar unsigned char
#define uint unsigned int
#define key_state0 0 //状态0,此时无按键按下
#define key_state1 1 //状态1,此时处于确定按键是否按下
#define key_state2 2 //状态2,此时判断按键是否释放
sbit dula = P2 ^ 6;
sbit wela = P2 ^ 7;
code uchar codenum[] = {
0x3f 0x06 0x5b 0x4f
0x66 0x6d 0x7d 0x07
0x7f 0x6f 0x77 0x7c
0x39 0x5e 0x79 0x71
0x00};
uint flag = 0; //按键扫描标志,每中断一次,扫描一次
void Display_init()
{
P0 = 0x00; //将所有的位选打开,所有数码管同时亮,
wela = 1;
wela = 0;
P0 = 0x00; //将段选关闭,也就是刚开始的时候数码管都不亮
dula = 1;
dula = 0;
}
void Display(uchar num1)
{
dula = 1;
P0 = codenum[num1];
dula = 0;
}
uchar Keyscan()
{
uchar key_state; //状态指示
uchar key_value; //键值返回
uchar key_temp;
uchar key1 key2;
P3 = 0xf0;
key1 = P3;
key1 = P3 & 0xf0; //确定哪一行的按键按下
P3 = 0x0f;
key2 = P3;
key2 = P3 & 0x0f; //确定哪一列的按键按下
key_temp = key1 | key2; //确定按键位置
switch (key_state) //检测当前状态
{
case key_state0: //之前无按键被按下
if (key_temp != 0xff) //说明有按键按下或者抖动
{
key_state = key_state1; //转换为状态1,然后去判断是否真的按下
}
break;
case key_state1: //状态1,说明之前已经有按键按下或者抖动
if (key_temp == 0xff) //全为高电平,说明是抖动
{
key_state = key_state0; //返回到状态1,
}
else //确实有按键被按下
{
switch (key_temp) //当确定按键按下后,列举所有的按键情况
{
case 0xee:
key_value = 0;
break;
case 0xde:
key_value = 1;
break;
case 0xbe:
key_value = 2;
break;
case 0x7e:
key_valu
- 上一篇:AdressBook.zip
- 下一篇:用混合遗传算法求解物流配送路径优化问题的研究
相关资源
- 单总线两个DS18B20温度传感器程序及其
- 单片机外扩ROM外扩27C64的Proteus仿真
- proteus仿真max7219的使用方法
- 单片机的外文文献与翻译.2018_03_16
- 单片机PWM调速程序
- 基于AVR单片机的汽车空调控制系统资
- N76E003串口0、串口1中断程序模板
- stc15xxxx单片机RFID RC 522 读写卡程序可
- 按键数码管显示
- 基于tm4c1294单片机的打地鼠设计,M4的
- 基于单片机的智能电子钟设计
- 基于单片机的曼彻斯特编码程序
- 51单片机通过GSM模块发送短信控制LE
- 1602+矩阵键盘可输入任意数字0~999999
- 基于单片机的智能电子遥控车位锁设
- proteus中51单片机控制交通灯的仿真
- 60S2单片机驱动DS18B20温度传感器C程序
- 一看就懂的51单片机RS232串口程序
- 基于STC12C5A16S2单片机电子水平仪设计
- 实验三 开关控制警报器.DSN
- 单片机课程设计数字电压表,有软件
- 51单片机控制两个LED灯分别闪烁
- 基于AT89C52单片机的光功率计的设计
- 基于51单片机的信号发生器-完整电路
- 基于AT89S52单片机的多模式带音乐跑马
- 单片机 实现多路任意延时的一种方法
- 单片机控制多个电机程序
- 51单片机ADC0809测电压12864显示程序
- 51单片机超声波测距1602显示
- 51单片机16x16点阵程序
评论
共有 条评论