找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2594|回复: 4
打印 上一主题 下一主题
收起左侧

4*4矩阵按键《行列反转法》扫描依次显示0-f

[复制链接]
跳转到指定楼层
楼主
数码管采用共阴数码管;
proteus电路接法如下:




程序如下:
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();
        }
}

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:66287 发表于 2019-5-10 08:35 | 只看该作者
这根本就不是行列反转法,是标准的逐行扫描。
抄别人的东东,也要看看。
版主浪费了50黑币
回复

使用道具 举报

板凳
ID:531603 发表于 2019-5-26 11:03 | 只看该作者
我请你看看接法,谢谢
回复

使用道具 举报

地板
ID:701002 发表于 2020-3-2 10:53 | 只看该作者
有没有文件直接使用的
回复

使用道具 举报

5#
ID:407089 发表于 2020-3-2 11:47 | 只看该作者
只能说太繁琐,算法其实很简单。
http://www.51hei.com/bbs/dpj-136958-1.html
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表