标题:
4*4矩阵按键《行列反转法》扫描依次显示0-f
[打印本页]
作者:
hualihushao
时间:
2019-5-9 21:44
标题:
4*4矩阵按键《行列反转法》扫描依次显示0-f
数码管采用共阴数码管;
proteus电路接法如下:
2.png
(52.94 KB, 下载次数: 54)
下载附件
2019-5-9 21:41 上传
程序如下:
void key_scan() //按键扫描函数
{
unsigned char code table[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
P2 = 0xf0; //列扫描
if(P2 != 0xf0)
{
delay(1000);
if(P2 != 0xf0)
{
P2 = 0xef;
// delay(10000);
if(P2 != 0xef) //第一行扫描
{
switch(P2)
{
case 0xee: P1 = 0x1f; P0 = table[0]; break;
case 0xed: P1 = 0x1f; P0 = table[4]; break;
case 0xeb: P1 = 0x1f; P0 = table[8]; break;
case 0xe7: P1 = 0x1f; P0 = table[12]; break;
}
}
P2 = 0xdf;
if(P2 != 0xdf)
{
switch(P2)
{
case 0xde: P1 = 0x1f; P0 = table[1]; break;
case 0xdd: P1 = 0x1f; P0 = table[5]; break;
case 0xdb: P1 = 0x1f; P0 = table[9]; break;
case 0xd7: P1 = 0x1f; P0 = table[13]; break;
}
}
P2 = 0xbf;
if(P2 != 0xbf)
{
switch(P2)
{
case 0xbe: P1 = 0x1f; P0 = table[2]; break;
case 0xbd: P1 = 0x1f; P0 = table[6]; break;
case 0xbb: P1 = 0x1f; P0 = table[10]; break;
case 0xb7: P1 = 0x1f; P0 = table[14]; break;
}
}
P2 = 0x7f;
if(P2 != 0x7f)
{
switch(P2)
{
case 0x7e: P1 = 0x1f; P0 = table[3]; break;
case 0x7d: P1 = 0x1f; P0 = table[7]; break;
case 0x7b: P1 = 0x1f; P0 = table[11]; break;
case 0x77: P1 = 0x1f; P0 = table[15 ]; break;
}
}
}
}
}
void main()
{
while(1)
{
key_scan();
}
}
作者:
bhjyqjs
时间:
2019-5-10 08:35
这根本就不是行列反转法,是标准的逐行扫描。
抄别人的东东,也要看看。
版主浪费了50黑币
作者:
hualihushao
时间:
2019-5-26 11:03
我请你看看接法,谢谢
作者:
huaxinfeng
时间:
2020-3-2 10:53
有没有文件直接使用的
作者:
brew9
时间:
2020-3-2 11:47
只能说太繁琐,算法其实很简单。
http://www.51hei.com/bbs/dpj-136958-1.html
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1