我从厂里面拿来了一个学习板(作为初学者,我用的是AT89C52单片机),这个学习板数码管位选是P0口,低电平有效,
段选是P2口,也是低电平有效。数码管对应的按键是一边是P2^2~P2^7,公共端接的是P3^3。怎么才能一边控制按键一边让数码管亮(程序不会写)。这是我的写的按键控制小灯的程序,可是控制数码管就不会了。
//LED小灯区别按键
//LED小灯区别按键
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp;
sbit key=P3^3; //按键公共端
void delay(uchar z) //延时函数
{
uint x,y;
for(x=70;x>0;x--)
for(y=z;y>0;y--);
}
void main()
{
while(1)
{
key=0; //按键公共端置0
temp=P2; //用按键扫描方法判断是否有按键按下
temp=temp&0xff;
while(temp!=0xff)
{
delay(5); //延时一段时间确认按键是否按下
temp=P2;
temp=temp&0xff;
while(temp!=0xff)
{
temp=P2;
switch(temp) //对应按下的不同按键,点亮不同的LED小灯
{
case 0x7f:P1=0x7f;break;
case 0xbf:P1=0xbf;break;
case 0xdf:P1=0xdf;break;
case 0xef:P1=0xef;break;
case 0xf7:P1=0xf7;break;
case 0xfb:P1=0xfb;break;
}
while(temp!=0xff) //消除按键松开时的抖动
{
temp=P2;
}
}
}
}
}
|