单片机控制数码管显示时间代码 - 8051 & C语言
#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 著作权归作者所有。请勿转载和采集!