【嵌入式成长7】STC89C51数码管|共阴/共阳原理,74HC245、74HC595级联、动态扫描、定时器中断刷新实战
一、数码管基础简介数码管可以理解为8个LED封装在一起7段笔画a‑g加上小数点dp。点亮对应段LED就可以显示数字、部分字母。数码管分两大类共阴极、共阳极。类型公共端接法点亮逻辑共阴极全部LED阴极接GND段引脚输出高电平点亮笔画共阳极全部LED阳极接VCC段引脚输出低电平点亮笔画本教程实验硬件使用共阴极数码管。共阴极段码表十六进制显示字符二进制点亮段0x3F000111111abcdef0x06100000110bc0x5B201011011abdeg0x4F301001111abcdg0x66401100110bcfg0x6D501101101acdfg0x7D601111101acdefg0x07700000111abc0x7F801111111abcdefg0x6F901101111abcdfg0x77A01110111abcefg0x7CB01111100cdefg0x39C00111001adef0x5ED01011110bcdeg0x79E01111001adefg0x71F01110001aefg0x00熄灭00000000全部熄灭二、单片机驱动数码管两大问题问题1IO口驱动电流不足51单片机IO拉电流能力弱约1mA直接驱动数码管亮度很低。解决方案三极管放大多路数码管会需要大量分立元件布线繁琐。使用74HC245双向缓冲芯片增强输出驱动电流最高可达7.8mA。74HC245简要说明DIR方向引脚接VCCA输入→B输出。OE#输出使能低电平有效直接接GND一直使能。A0‑A7接单片机IOB0‑B7接数码管a‑dp段脚。简单单数码管代码P2口经过74HC245驱动共阴极数码管#include reg52.h void main(void) { P2 0x06; //输出段码显示数字1 while(1); }循环0‑9静态显示示例#include reg52.h unsigned char seg_table[]{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void delay_ms(unsigned int xms) //12MHz { unsigned int i, j; for(ixms;i0;i--) { for(j124;j0;j--); } } void main(void) { unsigned char num; while(1) { for(num0;num10;num) { P2 seg_table[num]; delay_ms(500); } } }问题2IO引脚数量不够直接并行驱动多位数码管每增加一位就要占用8根IOIO资源消耗巨大。解决方案74HC595串行转并行移位寄存器。只用3根IO就可以输出8路并行信号芯片支持级联驱动多位数码管。三、74HC595芯片详解关键引脚引脚名称功能14DS串行数据输入11SHCP移位寄存器时钟上升沿移位12STCP锁存寄存器时钟上升沿锁存输出13OE#输出使能低电平有效硬件直接拉低10MR#主复位硬件拉高禁止复位1‑7、15Q0‑Q7并行输出9Q7S串行级联输出接到下一片595的DS工作流程SHCP上升沿把DS引脚数据移入移位寄存器全部8bit移位完成STCP上升沿把移位寄存器数据锁存输出到Q0‑Q7。单块74HC595基础代码引脚定义DS → P0^3STCP → P0^4SHCP → P0^5#include reg52.h sbit ds_pin P0^3; sbit stcp_pin P0^4; sbit shcp_pin P0^5; //共阴极段码表 unsigned char seg_table[]{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //向74HC595发送1字节 void hc595_send_byte(unsigned char byte) { unsigned char i; for(i0;i8;i) { if(byte 0x80) ds_pin 1; else ds_pin 0; shcp_pin 0; shcp_pin 1; //移位时钟上升沿 byte 1; } stcp_pin 0; stcp_pin 1; //锁存上升沿 } void main(void) { while(1) { hc595_send_byte(seg_table[0]); //显示数字0 } }四、74HC595级联驱动两位数码管动态扫描硬件方案两片74HC595级联第一片输出段选数据a‑dp笔画第二片输出位选选择哪一个数码管点亮Q7S级联输出接到后一片DS引脚先发段码再发位选码。人眼视觉暂留原理快速轮流点亮每一位数码管肉眼看上去多位同时亮。注意简单while循环里面用delay做动态扫描一旦主循环有耗时任务数码管就会严重频闪。轮询动态扫描代码阻塞版#include reg52.h sbit ds_pin P0^3; sbit stcp_pin P0^4; sbit shcp_pin P0^5; unsigned char seg_table[]{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void hc595_send_byte(unsigned char byte) { unsigned char i; for(i0;i8;i) { if(byte 0x80) ds_pin 1; else ds_pin 0; shcp_pin 0; shcp_pin 1; byte 1; } } //seg段码addr位号0/1 void hc595_display(unsigned char seg,unsigned char addr) { hc595_send_byte(seg); if(addr 0) hc595_send_byte(0xFE); //选中第0位 else if(addr 1) hc595_send_byte(0xFD); //选中第1位 stcp_pin 0; stcp_pin 1; } void delay_ms(unsigned int xms) { unsigned int i,j; for(ixms;i0;i--) for(j124;j0;j--); } void main(void) { while(1) { hc595_display(seg_table[0],0); //第一位显示0 delay_ms(1); hc595_display(seg_table[3],1); //第二位显示3 delay_ms(1); } }五、进阶定时器中断实现数码管动态扫描推荐工程写法问题上面阻塞版动态扫描依赖delay延时如果主循环执行按键、传感器读取等耗时业务数码管就会频闪。✅解决把数码管扫描放到定时器中断里面执行定时自动刷新不受主循环业务代码影响。逻辑定时器每隔1‑2ms进一次中断每次只点亮1位数码管中断内部切换扫描下标。#include reg52.h sbit ds_pin P0^3; sbit stcp_pin P0^4; sbit shcp_pin P0^5; //共阴极段码 unsigned char seg_table[]{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char disp_buf[2] {0,3}; //显示缓存两位数码管显示数字0、3 unsigned char scan_idx 0; //扫描下标 void hc595_send_byte(unsigned char byte) { unsigned char i; for(i0;i8;i) { if(byte 0x80) ds_pin 1; else ds_pin 0; shcp_pin 0; shcp_pin 1; byte 1; } } //定时器0初始化1ms中断 11.0592M #define TIM_1MS (65536-922) void Timer0_Init(void) { TMOD | 0x01; TH0 TIM_1MS 8; TL0 TIM_1MS; ET0 1; EA 1; TR0 1; } //定时器中断执行数码管动态扫描 void Timer0_ISR(void) interrupt 1 { TH0 TIM_1MS 8; TL0 TIM_1MS; if(scan_idx 0) { hc595_send_byte(seg_table[disp_buf[0]]); hc595_send_byte(0xFE); stcp_pin 0; stcp_pin 1; scan_idx 1; } else { hc595_send_byte(seg_table[disp_buf[1]]); hc595_send_byte(0xFD); stcp_pin 0; stcp_pin 1; scan_idx 0; } } void main(void) { Timer0_Init(); while(1) { //此处可以自由写其他业务按键、传感器读取不会干扰数码管显示 } }六、开发踩坑总结区分共阴极、共阳极两者段码表完全不一样段码写反数码管乱码。51单片机IO拉电流弱直接驱动数码管亮度不足需要74HC245或者三极管驱动。74HC595级联先发段选数据再发位选数据Q7S接到下一级DS引脚。简单whiledelay动态扫描主循环有耗时任务会出现频闪产品项目优先定时器中断刷新数码管。动态扫描刷新频率建议50‑100Hz人眼无明显闪烁中断间隔1‑2ms比较合适。MR#复位引脚、OE#使能引脚硬件电平要正确否则595无输出。七、本章小结数码管本质多个LED组合分清共阴极、共阳极掌握段码表。74HC245用来增强IO驱动电流解决51拉电流不足。74HC595串行转并行少量IO扩展多路输出支持级联节省单片机IO资源。动态扫描利用人眼视觉暂留快速轮询点亮每一位数码管。工程推荐定时器中断做数码管刷新主循环不受阻塞兼容按键、传感器等其他业务。

相关新闻

初识linux(day 06)

初识linux(day 06)

今天介绍的有以下五个内容: 1.printf 的缓冲区问题 2.静态库的创建和使用 3.共享库的创建和使用 4.静态库与共享库的区别 5.各种命令,库等文件的标准存放位置一,printf 的缓冲区问题 printf ( )的输出原理:将需要打印在屏幕上的东…

2026/8/26 14:50:38 阅读更多 →
dede php做网站?别被忽悠了!网页和网站差个十万八千里

dede php做网站?别被忽悠了!网页和网站差个十万八千里

对很多人而言, 对于网页究竟是什么, 一下子就处于那种完全摸不着头脑好似丈二和尚一般的状态。那网页到底是什么? 是效果图? 是代码? 是编程? 我表示 , 网页其实是它们融合而成的综合体 , 它里面的任何单独一项 , 都没办法称其为完整的情况。要是想要学会网页相关知识 , 那…

2026/8/26 15:56:41 阅读更多 →
2026-08-24:检查相邻数字差。用go语言,给定一个纯数字字符串,你需要检查其中任意两个紧挨着的数字,它们数值上的差距是否都不会超过 2。 如果整串数字中所有相邻位置都满足这个条件,就返回“是”

2026-08-24:检查相邻数字差。用go语言,给定一个纯数字字符串,你需要检查其中任意两个紧挨着的数字,它们数值上的差距是否都不会超过 2。 如果整串数字中所有相邻位置都满足这个条件,就返回“是”

2026-08-24:检查相邻数字差。用go语言,给定一个纯数字字符串,你需要检查其中任意两个紧挨着的数字,它们数值上的差距是否都不会超过 2。 如果整串数字中所有相邻位置都满足这个条件,就返回“是”(true&…

2026/8/25 14:27:18 阅读更多 →

最新新闻

第06篇-工具系统

第06篇-工具系统

【OpenClaw 从入门到精通】第 6 篇:工具系统 — Agent 的能力边界 本系列定位:零基础入门,从安装配置到高级架构全覆盖。无论你是开发者、运维工程师、还是技术爱好者,本系列带你彻底掌握 OpenClaw。 本篇你将学到 OpenClaw 工具…

2026/8/26 17:34:07 阅读更多 →
豪车模拟器

豪车模拟器

🚗 工具简介许多车迷和短视频创作者都渴望体验豪华品牌车辆的手机控车交互界面,但实车体验门槛较高。为此,一款名为“豪车模拟器”的纯本地UI仿真工具应运而生。它能在手机端高度还原奔驰、路虎、奥迪等主流豪华车型的车主App页面&#xff0c…

2026/8/26 17:34:07 阅读更多 →
Winform/Sunny.UI的DataGridView数据展示、uiPagination分页

Winform/Sunny.UI的DataGridView数据展示、uiPagination分页

一:准备1:数据库CREATE DATABASE lwq; --创建数据库 USE lwq; --使用数据库 --创建表 CREATE TABLE diviceinfo (id INT IDENTITY(1,1) NOT NULL, -- 主键diviceName NVARCHAR(100) NOT NULL, -- 设备名称status TINYINT NO…

2026/8/26 17:34:07 阅读更多 →
第08篇-Workspace与上下文文件

第08篇-Workspace与上下文文件

【OpenClaw 从入门到精通】第 8 篇:Workspace 与上下文文件 本系列定位:零基础入门,从安装配置到高级架构全覆盖。无论你是开发者、运维工程师、还是技术爱好者,本系列带你彻底掌握 OpenClaw。 本篇你将学到 Workspace 概念与目录…

2026/8/26 17:34:07 阅读更多 →
第10篇-通道架构与Telegram配置

第10篇-通道架构与Telegram配置

【OpenClaw 从入门到精通】第 10 篇:通道架构概览与 Telegram 配置 本系列定位:零基础入门,从安装配置到高级架构全覆盖。无论你是开发者、运维工程师、还是技术爱好者,本系列带你彻底掌握 OpenClaw。 本篇你将学到 OpenClaw 25 …

2026/8/26 17:34:07 阅读更多 →
把浏览器搬进 Agent 沙箱:Lexmount 在 CubeSandbox 上的一线实战

把浏览器搬进 Agent 沙箱:Lexmount 在 CubeSandbox 上的一线实战

作者|Lexmount 揽岳智能全栈工程师 熊袖璋编者按| Agent 浏览器运行时是一个"复合工作负载"。它对AI Agent沙箱的运行有四个核心层面的硬需求:出站网络能否连到真实互联网、批量拉起时的启动时序稳不稳、每个沙箱的运行时状态能否…

2026/8/26 17:33:06 阅读更多 →

日新闻

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 0:00:40 阅读更多 →
《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》索引目录: 《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在上篇文章中,主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是: 关于FileGroup 如果你的系统是用Raid设备直接存…

2026/8/26 1:18:18 阅读更多 →
政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体已经从概念试点阶段,转入了政务服务的常态化落地应用;在实际使用过程中,它能自主理解办事需求、辅助完成填报申报、开展材料预审,并联动多个系统协同作业,真正嵌入到政务办理的全流程当中。但在落地推进过…

2026/8/26 1:18:18 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/26 14:45:33 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/25 3:38:18 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/26 14:46:37 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/26 3:50:20 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/25 10:31:12 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/26 1:24:05 阅读更多 →