必威体育Betway必威体育官网
当前位置:首页 > IT技术

51单片机矩阵键盘响应程序

时间:2019-05-29 20:41:03来源:IT技术作者:seo实验室小编阅读:68次「手机版」
 

矩阵键盘程序

51单片机矩阵键盘响应程序

#include <reg51.h>

// P0端口接LED

// P0端口接数码管

// P3端口接矩阵键盘

#define LED P0

#define KEY P3

#define DIG P0

unsigned char GetKey(void);

void delay10ms(void);

// 独立数码管的段码表

unsigned char val[16] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e};

void main(void)

{

unsigned char key = 0;

while (1)

{

key = GetKey();

if (key != 0)

{

DIG = val[key];

}

}

}

unsigned char GetKey(void)

{

unsigned char hang = 0, lie = 0;

unsigned char keyvalue = 0;

// 第1回合第1步

KEY = 0x0f; // 从IO口输出,写IO口

if (KEY != 0x0f)// 从IO口输入,读IO口

{

// 读出的不是0x0f说明有按键被按下

// 第1回合第2步:读出端口从读出值来判断是哪一行

delay10ms();

// 第一回合中算出行号

switch (KEY)

{

case 0x0e:hang = 1; break;

case 0x0d: hang = 2; break;

case 0x0b: hang = 3; break;

case 0x07: hang = 4; break;

default: break;

}

// 第2回合第1步

KEY = 0xf0;

if (KEY != 0xf0)

{

switch (KEY)

{

case 0xe0:lie = 1; break;

case 0xd0: lie = 2; break;

case 0xb0: lie = 3; break;

case 0x70: lie = 4; break;

default: break;

}

// 经过2个回合后hang和lie都知道了,然后根据hang和lie去计算键值即可

keyvalue = (hang - 1) * 4 + lie;

return keyvalue;

}

}

return 0;

}

void delay10ms(void)   //误差 0us

{

unsigned char a,b,c;

for(c=5;c>0;c--)

for(b=4;b>0;b--)

    for(a=248;a>0;a--);

}

相关阅读

51单片机串口通讯UART

1、串行通信的的基本知识 在实际的工业生产,或者生活中,计算机的CPU要与外部的设备之间进行信息的交流,数据的交换,所有的这些信息交

用51单片机做一个简单加法器

在做完流水灯后就可以尝试做一个结合数码管和按键结合的简单加法器我所用的是sct89c51单片机此单片机有3个数码管,可以通过2个key

新概念51单片机C语言教程:入门、提高、开发、拓展全攻

链接:https://pan.baidu.com/s/1QQDPWRZgpVvVNYl8Jv5Veg 密码:k5cc 本书为完整版,以下为内容截图:

基于80C51单片机——中断小结

最近看了一下80C51单片机的中断部分的实验,做一些笔记,方便以后学习查找。 首先说一下什么是中断吧,中断是指CPU在执行当前程序的

基于AT89C51单片机 的音乐盒(十分简单)

#include<reg51.h>   //包含51单片机寄存器定义的头文件sbit sound=P1^6;    //蜂鸣unsigned int C;     //储存定时器的定

分享到:

栏目导航

推荐阅读

热门阅读