#include <reg51.h>

//定义端口 #define SEG P0 #define DIG P1

//定义函数 void delay(unsigned int i); void display(unsigned int n); void main(void);

//延时函数 void delay(unsigned int i) { while (i--); }

//数码管显示函数 void display(unsigned int n) { SEG = n; delay(1000); //延时1秒 }

//主函数 void main(void) { unsigned int hour, minute, second;

while (1) {  //循环显示时间
    for (hour = 0; hour < 24; hour++) {  //小时数循环
        for (minute = 0; minute < 60; minute++) {  //分钟数循环
            for (second = 0; second < 60; second++) {  //秒数循环
                DIG = 0x01;  //第1位数码管
                display(hour / 10);
                DIG = 0x02;  //第2位数码管
                display(hour % 10);
                DIG = 0x04;  //第3位数码管
                display(minute / 10);
                DIG = 0x08;  //第4位数码管
                display(minute % 10);
            }
        }
    }
}

}

在这个代码中,我们使用了三个循环来显示时间,分别是小时数循环、分钟数循环和秒数循环。在每个循环中,我们使用了display()函数来控制数码管的显示,其中SEG是数码管的段选择端口,DIG是数码管的位选端口。在每次循环中,我们使用了DIG来控制数码管的第几位被选中,然后再调用display()函数来显示对应的数字。最后,我们在main()函数中使用了一个无限循环while(1)来不断地显示时间。


原文地址: https://www.cveoy.top/t/topic/l3aA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录