51单片机 c语言 按键和数码管显示

如何用按键按1数码管显示1再按0数码管显示10再按1数码管显示101就是如何显示0... 如何用按键按1数码管显示1再按0数码管显示10再按1数码管显示101 就是如何显示0 展开
 我来答
匿名用户
2013-08-22
展开全部
#include<reg51.h>
unsigned char led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void led_display(unsigned char  num);
unsigned char  key_scan();
sbit led1=P2^0;
sbit led2=P2^1;
void main()
{
unsigned char led_key;
P1=0;
while(1)
    {
led_key=key_scan();
led_display(led_key);
    }
}
void led_display(unsigned char  num)
{
unsigned char ten,single;
int delay;
ten=num/10;
single=num%10;
delay=100;
for(delay=200;delay>0;delay--)
{
P0=led[ten];
led1=0;   
led1=1;
P0=led[single];
led2=0;
led2=1;
}
}
 /////////////////////////////////////////
unsigned char key_scan(void)
{
unsigned char temp,key;
P1=0xfe;
temp=P1&0xf0;
if(temp!=0xf0)
    {
switch(temp)
        {
        case 0xe0: key=1;
            break;
        case 0xd0: key=2;
            break;
        case 0xb0: key=3;
            break;
        case 0x70: key=4;
        }
return key;
    }
P1=0xfd;
temp=P1&0xf0;
if(temp!=0xf0)
    {
switch(temp)
        {
        case 0xe0: key=5;
            break;
        case 0xd0: key=6;
            break;
        case 0xb0: key=7;
            break;
        case 0x70: key=8;
        }
return key;
    }

P1=0xfb;
temp=P1&0xf0;
if(temp!=0xf0)
    {
switch(temp)
        {
        case 0xe0: key=9;
            break;
        case 0xd0: key=10;
            break;
        case 0xb0: key=11;
            break;
        case 0x70: key=12;
        }
return key;
    }
P1=0xf7;
temp=P1&0xf0;
if(temp!=0xf0)
    {
switch(temp)
        {
        case 0xe0: key=13;
            break;
        case 0xd0: key=14;
            break;
        case 0xb0: key=15;
            break;
        case 0x70: key=16;
        }
return key;
    }
}

你好!很高兴为您解答!我有欢迎采纳!!以上传附件!!

追问
并不是我想要的结果哦
做而论道
高能答主

2013-08-23 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.1亿
展开全部
只有两个按键?
数码管有几个?共阴、共阳?

追问:我没学移位 请给个 【 每按键一次,移位一次}的编程 谢谢

下面的即是:

disp_buff [7] = disp_buff [6];
disp_buff [6] = disp_buff [5];
disp_buff [5] = disp_buff [4];
disp_buff [4] = disp_buff [3];
disp_buff [3] = disp_buff [2];
disp_buff [2] = disp_buff [1];
disp_buff [1] = disp_buff [0];
disp_buff [0] = key;

全部程序,可参考:

http://hi.baidu.com/do_sermon/item/65af71290819959eb6326365
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友87b23c2
2013-08-22
知道答主
回答量:11
采纳率:0%
帮助的人:8.3万
展开全部
12864液晶的要不要。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式