sa770 2024-10-20 16:40 采纳率: 0%
浏览 1

请问这个代码应该怎样修改吖


#include <reg51.h>
unsigned char NixieTable[]={0X5B,0X4F};
void delay(unsigned int xms)
{
   unsigned char i,j;
     while(xms--);
    {
        i=2;
      j=239;
        do 
            { 
                while(--j);
            }while(--i);
     }
 }
void Nixie(unsigned char Location,Number)
{
    switch(Location)
    {
        case 1 :P3=0XEF;//1110 1111
        case 2 :P3=0XDF;//1101 1111
        case 3 :P3=0XBF;//1011 1111
        case 4 :P3=0X7F;//0111 1111
    }
    P0=NixieTable[Number];
}
    
void main()
{
    while(1);
 {
    Nixie(1,2);
    Nixie(2,3); 
    }

  • 写回答

1条回答 默认 最新

  • 无疆76 2024-10-20 16:41
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    您的代码中有一些需要改进的地方。以下是我为您修改的代码:

    首先,我们需要明确每个函数的职责。从您的代码中,我假设NixieTable是用于存储显示数字的编码,而Nixie函数是用于控制特定位置的数码管显示特定数字。因此,我会先调整这些函数。另外,delay函数似乎是用来产生延迟的,我会保持它不变。最后,在main函数中,我们需要添加逻辑来周期性地调用这些函数以更新数码管的显示。以下是我为您修改的代码:

    #include <reg51.h>
    
    unsigned char NixieTable[] = {0X5B, 0X4F}; // 假设这是数字编码的数组
    
    void delay(unsigned int xms) // 用于产生延迟的函数
    {
        unsigned char i, j;
        while (xms--) {
            i = 2;
            j = 239;
            do {
                while (--j);
            } while (--i);
        }
    }
    
    void Nixie(unsigned char location, unsigned char number) // 控制数码管显示的函数
    {
        switch (location) { // 根据位置设置不同的端口值
            case 1: P3 = 0XEF; break; // 这里应该每个case后面都有break语句来避免执行其他未匹配到的代码块
            case 2: P3 = 0XDF; break;
            case 3: P3 = 0xBF; break;
            case 4: P3 = 0X7F; break;
            default: break; // 添加默认情况来处理未匹配的情况(可选)
        }
        P0 = NixieTable[number]; // 设置数码管显示的数字编码
    }
    
    void main() // 主函数,包含主循环来周期性地更新数码管显示
    {
        while (1) { // 主循环,用于周期性地调用函数更新数码管显示
            Nixie(1, 0); // 更新第一个数码管的显示(假设数字编码从0开始)并添加延迟来观察效果
            delay(100); // 添加延迟来观察效果,可以根据实际需要调整这个值
            Nixie(2, 1); // 更新第二个数码管的显示并添加延迟来观察效果
            delay(100); // 同上
            // 可以根据需要添加更多的数码管控制代码或其他逻辑操作等...
        }
    }
    

    注意:在实际应用中,您需要确保硬件接口(如P0和P3端口)与您的硬件连接正确,并且确保数码管驱动电路正确连接和配置。此外,我假设数字编码从NixieTable的索引为0开始表示数字的第一个编码。如果不是这样,您可能需要相应地调整代码中的索引值。

    评论

报告相同问题?

问题事件

  • 创建了问题 10月20日