4-1 静态数码管显示(SDCC + Notepad++ + STC-ISP/普中ISP)

8段数码管

数码管, 又称LED数码管, 是由八段发光 二极管(LED)封装在一起组成"8"字型的器件,外加一个小数点,引脚遵循就近原则连接。

以3,8接低电平的共阴极数码管,且数码管显示6举例,就是让B和DP为0,其他位都是1。

DP G F E D C B A 数值
0 1 1 1 1 1 0 1 6

4位8段数码管

12、9、8、6用于处理某个数码管亮,其余引脚用于控制显示什么数值。比如只让8所属的DIG3亮,其他的熄灭,显示数字6。如果这时让9所属的DIG2亮,那么他也只能显示6。如果修改数字,其余亮的数码管也会是一样的数字。

如果想显示多个数字,比如DIG2显示5,DIG3显示6,那就只让DIG2显示5其余都灭,然后很快的切换DIG3显示6其余都灭。靠人眼的视觉残留,就能显示5和6了。这就是多位数码管的动态扫描显示。

2个4位8段数码管

开发板用的就是这种数码管。其中P22-P24这3个引脚控制8个数码管的亮灭,P00-P07这8个引脚控制单个数码管的显示。

138译码器

通过控制P22-P24,来控制Y0-Y7也就是LED1到LED8的某位显示低电平,则该位置的数码管显示。

注意:理论上,如果不用 138 译码器,直接用 IO 口控制位选,确实可以让两个数码管同时亮,并且显示相同的数字。但74HC138/74LS138 是低电平有效输出,正常工作状态下同一时刻只能有一个输出为 低电平 0,其余全部为 高电平 1。

P24 (C) P23 (B) P22 (A) 对应输出
0 0 0 Y0(LED1)
0 0 1 Y1(LED2)
0 1 0 Y2(LED3)
0 1 1 Y3(LED4)
1 0 0 Y4(LED5)
1 0 1 Y5(LED6)
1 1 0 Y6(LED7)
1 1 1 Y7(LED8)

让第三个数码管显示6

sdcc -mmcs51 --model-small --iram-size 256 --xram-size 0 --code-size 8192 .\41_static_digital_tube.c

c 复制代码
#include <mcs51/8051.h>

void main(void)
{
    P2_4 = 1;
    P2_3 = 0;
    P2_2 = 1;
    
    P0 = 0x7D;    // 0111 1101 
    
    while(1) {
        
    }
}

效果展示

相关推荐
xunyan62349 小时前
3-1 独立按键控制LED亮灭(SDCC + Notepad++ + STC-ISP/普中ISP)
单片机·嵌入式硬件·接口隔离原则
kyle~2 天前
实时系统通信抖动(Jitter)
计算机视觉·机器人·接口隔离原则·传感器
xunyan62342 天前
3-1 独立按键控制LED状态(SDCC + Notepad++ + STC-ISP/普中ISP)
notepad++·接口隔离原则
xunyan62342 天前
3-3 独立按键控制LED显示二进制(SDCC + Notepad++ + STC-ISP/普中ISP)
接口隔离原则
xunyan62343 天前
51 单片机LED流水灯(SDCC + Notepad++ + STC-ISP/普中ISP)
单片机·嵌入式硬件·接口隔离原则
雪雪爱冲浪4 天前
2026 年网络爬虫领域的Puppeteer vs. Playwright
爬虫·网络协议·测试工具·接口隔离原则
DolitD7 天前
3D应用多实例并发中的GPU隔离技术路径分析
容器·gru·接口隔离原则
xunyan62347 天前
51 单片机LED闪烁(SDCC + Notepad++ + STC-ISP/普中ISP)
单片机·notepad++·接口隔离原则
运维行者_8 天前
PHP性能监控怎么做?从响应时间到慢函数的6个关键指标
运维·服务器·开发语言·网络·支持向量机·php·接口隔离原则