#include <reg52.h> // 包含单片机头文件

unsigned char code table[] = { // 数码管显示表 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71 };

void delay(unsigned int); // 延时函数

void main() { unsigned int i, j; // 定义计数器 while (1) { // 循环执行 for (i = 0; i < 24; i++) { // 显示小时数 P0 = table[i / 10]; // 显示十位数 P2 = 0xfe; // 选择第一位数码管 delay(5); // 延时 P0 = table[i % 10]; // 显示个位数 P2 = 0xfd; // 选择第二位数码管 delay(5); // 延时 for (j = 0; j < 60; j++) { // 显示分钟数 P0 = table[j / 10]; // 显示十位数 P2 = 0xfb; // 选择第三位数码管 delay(5); // 延时 P0 = table[j % 10]; // 显示个位数 P2 = 0xf7; // 选择第四位数码管 delay(5); // 延时 } } } }

void delay(unsigned int time) { // 延时函数 unsigned int i, j; for (i = 0; i < time; i++) { for (j = 0; j < 125; j++) { ; } } }

说明:

该程序通过循环嵌套实现了显示小时和分钟的功能。其中,'table' 数组存储了数码管显示表,'delay' 函数实现了延时功能,'P0' 和 'P2' 分别控制数码管的数据和地址。在循环中,首先通过 'for' 循环显示小时数的十位和个位,然后通过嵌套的 'for' 循环显示分钟数的十位和个位,最后再次进入外层循环。程序可以通过修改循环次数和延时时间来调整显示效果。


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

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