#图1:单位数码管显示7

c
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
// 定义锁存器控制引脚
sbit LE = P2^7; // 74HC573的锁存使能端
// ?????????
uchar code seg_code[] = {
0x3F, // 0
0x06, // 1
0x5B, // 2
0x4F, // 3
0x66, // 4
0x6D, // 5
0x7D, // 6
0x07, // 7
0x7F, // 8
0x6F // 9
};
void delay(uint ms) {
uint i, j;
for(i = ms; i > 0; i--)
for(j = 110; j > 0; j--);
}
void display_one() {
P0 = seg_code[7]; // 发送0的段码
LE = 1; // 锁存数据
delay(5); // 稳定信号
LE = 0; // 关闭锁存(可选)
}
void main() {
while(1) {
display_one(); // 显示数0
}
}
#图2:单位数码管轮播0-9

c
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
// 共阴极数码管段码表
uchar code seg_code[] = {
0x3F, // 0
0x06, // 1
0x5B, // 2
0x4F, // 3
0x66, // 4
0x6D, // 5
0x7D, // 6
0x07, // 7
0x7F, // 8
0x6F // 9
};
// 延时函数
void delay(uint ms) {
uint i, j;
for(i = ms; i > 0; i--)
for(j = 110; j > 0; j--);
}
// 数码管展示函数
void display_digit(uchar digit) {
P0 = seg_code[digit]; // 发送数字对应的段码
//dula = 1; // 锁存数据(可选)
delay(5); // 稳定信号
//dula = 0; // 关闭锁存(可选)
}
void main() {
uchar digit;
while(1) {
for(digit = 0; digit < 10; digit++) { // 轮流显示0到9
display_digit(digit); // 显示当前数字
delay(500); // 适当延时,以便观察每个数字
}
}
}
#图3:6位数码管显示9

c
#include<reg52.h> // 头文件
// 定义锁存器控制引脚
sbit dula=P2^4; // 锁存器U2(段选)
sbit wela=P1^6; // 锁存器U2(位选)
// 主函数
void main()
{
// 1.位选控制
wela=1; // 打开位选
P0=0xc0; //
wela=0; // 关闭位选
// 2.段选控制
dula=1; // 打开段选
P0=0x6f; // 数码管显示"9" 0110 1111
dula=0; // 关闭段选
// 3.保持
while(1);
}