/我想做一个矩阵按键数字化显示系统设置一组范围然后超出所按范围蜂鸣器就会滴滴的响还包括了流水灯但是程序与功能对不上,麻烦各位帮忙找找错/
你期望的功能大概知道了,虽然有点模糊,而你的代码的问题很明显,就是还没写。
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit beep=P2^3;
sbit DU = P2^6;
sbit WE = P2^7;
uchar num;
uchar KeyValue = 20;
uchar temp;
uchar code tabel[]= {
//0 1 2 3 4 5 6 7 8
0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F,
//9 A B C D E F H L
0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71, 0x76, 0x38,
//n u - ??
0x37, 0x3E, 0x40, 0x00 };
void delay(uint z)
{
uint x,y;
for(x = z; x > 0; x--)
for(y = 114; y > 0 ; y--);
}
void KeyScan()
{
if(KeyValue<3||KeyValue>0)
{
delay(10);
if(KeyValue<3||KeyValue>0)
{
while(KeyValue<3||KeyValue>0)
{
//beep = ~beep;
delay(100);
}
}
}
P3 = 0XF0;
if(P3 != 0XF0)
{
delay(10);
if(P3 != 0XF0)
{
switch(P3)
{
case 0xe0: KeyValue = 0; break;
case 0xd0: KeyValue = 1; break;
case 0xb0: KeyValue = 2; break;
case 0x70: KeyValue = 3; break;
}
P3 = 0X0F;
switch(P3)
{
case 0x0e: KeyValue = KeyValue; break;//??????
case 0x0d: KeyValue = KeyValue + 4; break;//??????
case 0x0b: KeyValue = KeyValue + 8; break;//??????
case 0x07: KeyValue = KeyValue + 12; break;//??????
}
while(P3 != 0X0F);
}
}
P3 = 0XFF;
if(P3 != 0XFF)
{
delay(10);//????10ms
if(P3 != 0XFF)
{
switch(P3) //????????
{
case 0xfe: KeyValue = 16; break;//S2???
case 0xfd: KeyValue = 17; break;//S3???
case 0xfb: KeyValue = 18; break;//S4???
case 0xf7: KeyValue = 19; break;//S5???
}
while(P3 != 0XFF);//????
}
}
}
void main()//main???????
{
WE = 1;//???????
P0 = 0XFE; //1111 1110
WE = 0;//??????
temp=0;
DU = 1;//???????
while(1)
{
temp = 0xf0;//
P1 = temp; //1111 0000 ??4?LED
delay(100);//?????
temp = _crol_(temp, 1);//????
P1 = temp;
//beep = ~beep;// ????????
delay(100);
KeyScan();//20???????
P0 = tabel[KeyValue];//?????
}
}
麻烦在评论区的代码找找错