大概就是在矩阵键盘输入4个数字到数码管上,然后数字再按照一定的规律进行动态变化。
可有偿代写,难度不大,stc89c52的板子

大概就是在矩阵键盘输入4个数字到数码管上,然后数字再按照一定的规律进行动态变化。
可有偿代写,难度不大,stc89c52的板子

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit D1 = P2^0;
sbit D2 = P2^1;
sbit D3 = P2^2;
sbit D4 = P2^3;
uchar code num[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};
void delay(uint x)
{
uint i, j;
for(i=x; i>0; i--)
for(j=110; j>0; j--);
}
void display(uchar i, uchar n)
{
switch(i)
{
case 1:
D1 = 0; D2 = 1; D3 = 1; D4 = 1;
P0 = num[n%10];
break;
case 2:
D1 = 1; D2 = 0; D3 = 1; D4 = 1;
P0 = num[n/10%10];
break;
case 3:
D1 = 1; D2 = 1; D3 = 0; D4 = 1;
P0 = num[n/100%10];
break;
case 4:
D1 = 1; D2 = 1; D3 = 1; D4 = 0;
P0 = num[n/1000%10];
break;
default:
break;
}
}
void main()
{
uchar i, j, k, l, n1, n2, n3, n4;
P0 = 0;
while(1)
{
for(i=1; i<=4; i++)
{
for(j=0; j<10; j++)
{
for(k=0; k<10; k++)
{
for(l=0; l<10; l++)
{
n1 = num[j];
n2 = num[k];
n3 = num[l];
n4 = num[j];
display(1, n1);
delay(2);
display(2, n2);
delay(2);
display(3, n3);
delay(2);
display(4, n4);
delay(2);
}
}
}
}
}
}
这里使用了一个数组num来存储数字0到9的七段码值。在display函数中,根据传入的参数i来选择哪个数码管进行显示,根据传入的参数n来选择显示哪个数字。在main函数中,使用四层循环来遍历所有的数字组合,每次调用display函数来显示四个数字。由于循环比较多,因此需要设置一些延时来控制数码管的刷新速度。