请问C51怎么实现通过定义一个按键,每按一次按键,数码管的值增加1,求C程序参考下!谢啦!

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit key = P1^0; //定义P1.0口为按键
uchar count = 0; //计数值
uchar code display[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07 };//数组定义
//delay()//
void delay(uint x)
{
while(x--);
}
///main()/
void main()
{
while(1)
{
if(key==0)
delay(1000);
if(key==0)
{
while(!key);
{
count++;
P1=display[count++%8];
delay(5000);

}
}
}
}
这样子写对吗?怎么实现不了?求高手

第1个回答  2010-12-24
可以将按键接在一个IO引脚上,按键的另一端要接地或者接高电平。用一个if语句判断引脚的电平,比如P3_0通过一个按键接到地。程序可以如下:
if(P3_0==0) //检测到按键按下
{ delay(); //加一个延时函数,是为了消除按键抖动 例如for(i=0;i<1000;i++);
if(P3_0==0) //按键确实按下
{ while(!P3_0); //等待按键弹起
delay();
} shuzhi++; //这个是数码管显示值变量
第2个回答  2010-12-27
你的这一句
P1=display[count++%8];
改为: P1=display[count];
就对了呀。

还有,你得加上
if(count>7) count=0;本回答被网友采纳
相似回答