落寞小 2021-03-22 17:12 采纳率: 0%
浏览 323

#include <REGX52.H> unsigned char Nixietable[]=

#include <REGX52.H> unsigned char Nixietable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; void Delay(unsigned char xms) { unsigned char i, j; while(xms--) { i = 2; j = 199; do { while (--j); } while (--i); } } void Nixie(unsigned char Location,Number) { switch(Location) { case 1:P2_4=1;P2_3=1;P2_2=1;break; case 2:P2_4=1;P2_3=1;P2_2=0;break; case 3:P2_4=1;P2_3=0;P2_2=1;break; case 4:P2_4=1;P2_3=0;P2_2=0;break; case 5:P2_4=0;P2_3=1;P2_2=1;break; case 6:P2_4=0;P2_3=1;P2_2=0;break; case 7:P2_4=0;P2_3=0;P2_2=1;break; case 8:P2_4=0;P2_3=0;P2_2=0;break; } P0=Nixietable[Number]; Delay(1); } void main() { unsigned char number=0,num; while(1) { if(P3_1=0) { Delay(20); while(P3_1==0); Delay(20); number++; if(number>=10) number=0; num=number; } Nixie(1,num); } } 这是51的码想用K1控制1号位数值从0到9的增加,但不知道为什么K1按下之后没有反应求解
  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2024-07-23 23:21
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题出在if语句的条件判断上,应该使用双等号“==”用来判断是否相等,而不是单等号“=”用于赋值操作。所以代码中的if语句应该改为if(P3_1==0)。 同时,为了确保K1按下时只有一次数字增加的操作,需要在K1按下之后加入延时操作,以避免连续触发数字增加操作。 另外,由于K1的状态是按下才能执行操作,应该在while循环中进行判断,并在K1松开后才能执行数字增加操作。代码中的num=number;应该放在if语句内部。 下面是修正后的代码示例:
    #include <REGX52.H>
    unsigned char Nixietable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
    void Delay(unsigned char xms)
    {
        unsigned char i, j;
        while(xms--)
        {
            i = 2;
            j = 199;
            do
            {
                while (--j);
            }
            while (--i);
        }
    }
    void Nixie(unsigned char Location, unsigned char Number)
    {
        switch(Location)
        {
            case 1: P2_4=1; P2_3=1; P2_2=1; break;
            case 2: P2_4=1; P2_3=1; P2_2=0; break;
            case 3: P2_4=1; P2_3=0; P2_2=1; break;
            case 4: P2_4=1; P2_3=0; P2_2=0; break;
            case 5: P2_4=0; P2_3=1; P2_2=1; break;
            case 6: P2_4=0; P2_3=1; P2_2=0; break;
            case 7: P2_4=0; P2_3=0; P2_2=1; break;
            case 8: P2_4=0; P2_3=0; P2_2=0; break;
        }
        P0 = Nixietable[Number];
        Delay(1);
    }
    void main()
    {
        unsigned char number = 0, num;
        while(1)
        {
            if(P3_1 == 0)
            {
                Delay(20);
                while(P3_1 == 0);
                Delay(20);
                number++;
                if(number >= 10)
                    number = 0;
                num = number;
            }
            Nixie(1, num);
        }
    }
    
    评论

报告相同问题?