自己做用 80c51单片机 开发的一个闹钟 其中一个功能有问题 望各位前辈指点,特别是亲爱的“版主dirtwillfly
”
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,
};
//-----中间变量 检测是否有按键------
uchar sum;
//----------------------------------
//----uchar函数变量---------
uchar temp;
//uchar flag;
//--------------------------
//-------存贮数组-----------
uchar number[4];
//---------按下四次------------
sbit dula=P2^6;
sbit wela=P2^7;
uchar keyscan(); //矩阵键盘检测函数 来源郭天祥视频
void delay(); //延时函数 用于动态显示
void display(uchar a,uchar b,uchar x,uchar y); //动态显示
void main()
{
sum=keyscan();
while(sum==0)
{
sum=keyscan();
}
number[0]=sum-1;
sum=keyscan();
while(sum==0)
{
sum=keyscan();
}
number[1]=sum-1;
sum=keyscan();
while(sum==0)
{
sum=keyscan();
}
number[2]=sum-1;
sum=keyscan();
while(sum==0)
{
sum=keyscan();
}
number[3]=sum-1;
display(number[0],number[1],number[2],number[3]);
}
问题在于 main函数里面的 四次 调取 keyscan() 我本意是想 按四次矩键 然后先存到数组里面 然后利用动态显示 在数码管上面显示出闹钟时间(时间格式为xx:xx)
烧录进去以后 有时候按四次 有时候按了两次就显示了 有重复的。。。。 (keyscan函数没有按键时返回值为0) |