51单片机矩阵键盘扫描程序

51单⽚机矩阵键盘扫描程序51单⽚机矩阵键盘扫描程序
萨纳克#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
sbit key1=P3^4;
uchar code table[]={//数码表
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0};
uchar code KEY_TABLE[]=//按键
{
0xEE,0xDE,0xBE,0x7E,
iphd0xED,0xDD,0xBD,0x7D,
0xEB,0xDB,0xBB,0x7B,
0xE7,0xD7,0xB7,0x77
};
uchar temp,i,key;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
牛头刨
uchar keyscan();
void display(uchar aa);
void main()
{
i=16;//初始化,单⽚机复位后数码管不显⽰
dula=1;
P0=0;
dula=0;
wela=1;
P0=0xc0;
wela=0;
while(1)
{
display(keyscan());
}注浆瓷器
}
void display(uchar aa)
{
dula=1;
P0=table[aa];
dula=0;
}
uchar keyscan()
{
//列扫描初值1111 0000变1110 0000则为第⼀列
P3 =0xF0;//⾏扫描初值0000 1111变0000 1110则为第⼀⾏
if(P3 !=0xF0)//⾏,列各四种变化对应了4*4=16键位,可通过按位或的⽅式得到
{//16个8位⼆进制数构成⼀个按键表
delay(5);//
if(P3 !=0xF0)隐私保护通话
{
temp = P3;
P3 =0x0F;//⼀旦按键处于按下状态P3⼝的电平将⽴即变化
key = temp | P3;//即此处的P3⼝将不为0x0f。
key = temp | P3;//即此处的P3⼝将不为0x0f。
for(i =0; i <16;++i)//查按键表的过程
空调节能器if(key == KEY_TABLE[i])
break;
}
}
return(i);//若松⼿按键释放"i"依然保持原值,即数码管会保持原来的值不熄灭。}

本文发布于:2024-09-21 22:20:02,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/329885.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:按键   数码管   扫描
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议