吃豆芽菜的张飞飞 2023-06-08 15:33 采纳率: 50%
浏览 108
已结题

stc89c52实现以下程序

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

img

  • 写回答

6条回答 默认 最新

  • 梦幻编织者 2023-06-08 17:37
    关注
    获得1.50元问题酬金
    
    #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函数来显示四个数字。由于循环比较多,因此需要设置一些延时来控制数码管的刷新速度。

    评论

报告相同问题?

问题事件

  • 系统已结题 6月16日
  • 修改了问题 6月8日
  • 修改了问题 6月8日
  • 赞助了问题酬金15元 6月8日
  • 展开全部