找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机矩阵数码管显示固定数值和对应键值

[复制链接]
跳转到指定楼层
楼主
ID:351822 发表于 2018-9-21 15:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<AT89X52.H>                  //包含AT89X52.H头文件          /*定义0~9,A~F十六个字符的字型码表*/
unsigned char table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
                                           0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};

void delay10ms(void)
{
        unsigned char i,j;
        for(i=20;i>0;i--)
                for(j=248;j>0;j--);
}

void delay()
{
        unsigned char i;
        for(i=0;i<255;i++);
}


unsigned char scan_key(void)
{
        unsigned char scan,col,rol,tmp;
        bit flag=0;
        scan=0xef;
        for(col=0;col<4;col++)
        {
                P0=scan;
                tmp=P0;
                switch(tmp&0x0f)
                {
                        case 0x0e:rol=0;flag=1;break;
                        case 0x0d:rol=1;flag=1;break;
                        case 0x0b:rol=2;flag=1;break;
                        case 0x07:rol=3;flag=1;break;
                }
                if(flag==1)
                break;
                scan=(scan<<1)+1;
        }
        while(tmp!=0x0f)
        {
                P0=0x0f;
                tmp=P0;
        }
        return(rol*4+col);
}


void scan()
{
        unsigned char tmp,key;
        while(tmp!=0x0f)
        {
               
       
                P1=table[0];
                P2=0xfe;
                delay();
                P2=0xff;
                P1=table[6];
                P2=0xfd;
                delay();
                P2=0xff;
               
        }       
}

void main()
{
        unsigned char tmp,key;
        P0=0x0f;
        while(1)
        {
                while(tmp==0x0f)
                {
                        P0=0x0f;
                        tmp=P0;
                }
                delay10ms();
            P0=0x0f;
                tmp=P0;
                if(tmp==0x0f)
                continue;
                key=scan_key();
                P1=table[key];
                P2=0xf7;
                delay();
                scan();                 
        }

}

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

使用道具 举报

沙发
ID:1 发表于 2018-9-21 17:25 | 只看该作者
补全原理图或者详细说明一下电路连接即可获得100+黑币
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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