📄 7.c
字号:
#include <reg51.h>
#define uchar unsigned char
void delay_ms(uchar ms); // 延时毫秒@12M,ms最大值255
void display(); // 显示子程序
uchar code dis_code[10] = {0xc0,0xf9,0xa4,0xb0,0x99, //段码表
// 0 1 2 3 4 对应内容
0x92,0x82,0xf8,0x80,0x90};
// 5 6 7 8 9
uchar data dis_0 = 0; // 个位值
uchar data dis_1 = 0; // 十位值
uchar data dis_2 = 0; // 百位值
uchar data dis_3 = 0; // 千位值
void main()
{
P2 = 0x00; // 关所有数码管
while(1)
{
display(); // 调用显示子程序
dis_0++; // 个位值加1
if(dis_0 != 10) // 个位未到10则结束此次循环
continue;
dis_0 = 0; // 个位到10清零
dis_1++; // 十位值加1(个位到10的进位)
if(dis_1 != 10) // 十位未到10则结束此次循环
continue;
dis_1 = 0; // 十位到10清零
dis_2++; // 百位值加1(十位到10的进位)
if(dis_2 != 10) // 百位未到10则结束此次循环
continue;
dis_2 = 0; // 百位到10清零
dis_3++; // 千位值加1(百位到10的进位)
if(dis_3 != 10) // 千位未到10则结束此次循环
continue;
dis_3 = 0; // 千位到10清零
}
}
void display() // 显示子程序
{
uchar data i = 50; // 用于延长每四位数的显示时间
while(i--) // 直到i减为0
{
P0 = dis_code[dis_0]; // 取个位的段码
P2 = 0xf8; // 开个位显示(P2.7口控制个位数码管)
delay_ms(1); // 延时1ms使四位数码管动态显示时能看清
P2 = 0x00;
P0 = dis_code[dis_1]; // 取十位的段码
P2 = 0xf4; // 开十位显示(P2.6口控制十位数码管)
delay_ms(1); // 延时1ms作用同上
P2 = 0x00;
P0 = dis_code[dis_2]; // 取百位的段码
P2 = 0xf2; // 开百位显示(P2.5口控制十位数码管)
delay_ms(1); // 延时1ms作用同上
P2 = 0x00;
P0 = dis_code[dis_3]; // 取千位的段码
P2 = 0xf1; // 开千位显示(P2.4口控制十位数码管)
delay_ms(1);
P2 = 0x00; // 延时1ms作用同上
}
}
void delay_ms(uchar ms) // 延时毫秒@12M,ms最大值255
{
uchar i;
while(ms--)
for(i = 0; i < 124; i++);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -