51单片机教程(八)- 数码管的静态显示
1、项目分析
- 使用数码管显示指定的字符、数字和符号。
2、技术准备
1、显示器及其接口
- 单片机系统中常用的显示器有:
- 发光二极管LED(Light Emitting Diode)显示器、液晶LCD(Liquid Crystal Display)显示器、CRT显示器等。
- LED、LCD显示器有两种显示结构:
- 段显示(7段、米字型等)
- 点阵显示(5×8、8×8点阵等)
2、数码管实物
-
数码管是一种半导体发光器件,其基本单元是发光二极管。

3、数码管特点
-
可显示内容
- 数字、小数点(0-9)和部分英文字符(A、C、E、F、L)、符号(.)。
-
特点:
-
自发光、亮度高,特别适合环境亮度低的场合使用。
-
牢固,不怕冲击。
-
4、数码管结构与原理
-
数码管结构
- LED显示器(数码管)系发光器件的一种。常用的LED发光器件有两类:数码管和点阵。
- 数码管内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的亮暗组合成字符。根据内部发光二极管的接线形式可分为共阴极和共阳极两种。
- 使用时,共阴极数码管公共端接地,共阳极数码管公共端接电源。每段发光二极管需5~10mA的驱动电流才能正常发光,一般需加限流电阻控制电流的大小。
-
数码管原理
-
LED数码管的a~g七个发光二极管。加正电压的发光,加零电压的不能发光,不同亮暗的组合就能形成不同的字型,这种组合称为字型码。共阳极和共阴极的字型码是不同的。

-
5、数码管驱动电路
-
要驱动1个四位数码管常见的有以下几种数码管驱动电路(本电路是使用:共阴极数码管):
- 使用12个IO口
- P2.4-P2.7驱动位选,IO口直接驱动位选
- P0驱动段选,IO口直接驱动段选

6、数码管显示分析
-
LED数码管的结构:共阳与共阴

-
显示设置
- 设置位选,设置 P2.4 - P2.7 对应位为高电平,即可选择第1 ~ 4 位数码管工作
- 设置段选:设置 P0.0 - P0.7 对应位为高电平,即可控制显示的字符、数字内容
3、项目实施
实验1 第1位数码管显示字符:b
/************************************
*实验名:数码管静态显示
*实验效果:第一个数码管显示字符“b”
************************************/
-
分析

方式1:单独设置
```c
#include <reg52.h>#define par P0sbit pos1 = P2^4;
sbit pos2 = P2^5;
sbit pos3 = P2^6;
sbit pos4 = P2^7;void main()
{pos1 = 1;pos2 = 0;pos3 = 0;pos4 = 0;par = 0x7C;while (1);
}
```
方式2:整体设置
```c
#include <reg52.h>#define par P0
#define pos P2 void main()
{pos = 0x18;par = 0x7C;while (1);
}
```
实验2 4位数码管显示数值:12.34
-
实验需求
- 让四位数码管显示 12.34
-
实验分析:
-
第1位数码管显示 1,第2位数码管显示 2. ,第3位数码管显示 3,第4位数码管显示 4

-
方式1:逐位设置
#include <reg52.h>void delay(unsigned int t);void main3(){while(1){// 第1个数码管显示:1P2 = 0x18;P0 = 0x06;delay(100);// 第2个数码管显示:2.P2 = 0x28;P0 = 0xdb;delay(100);// 第3个数码管显示:3P2 = 0x48;P0 = 0x4f;delay(100);// 第4个数码管显示:4P2 = 0x88;P0 = 0x66;delay(100);}}// 延迟函数void delay(unsigned int t){while(t--);}
方式2:遍历数组设置
```c
#include <reg52.h>// 定义位选:P2 表示设置数码管的位数
#define wei P2// 定义段选:P0 表示设置要显示的内容
#define duan P0// 定义数组:分别存储位选或段选的值
unsigned int wValue[] = {0x18,0x28,0x48,0x88};
unsigned int dValue[] = {0x06,0xdb,0x4f,0x66};void delays(unsigned int i);void main()
{ unsigned int idx;while(1){for(idx =0; idx<4; idx++){// 第idx位显示P2 = wValue[idx];P0 = dValue[idx];delays(50);}}
}void delays(unsigned int i)
{while(--i);
}
```
方式3:左移+数组遍历
```c
#include <reg52.h>void delays(unsigned int t);unsigned int dValue[] = {0x06, 0xdb, 0x4f, 0x66};void main()
{unsigned int idx;while(1){for(idx=0; idx<4; idx++){// 第idx个数码管显示:1 2. 3 4P2 = 0x10 << idx | 0x08;P0 = dValue[idx];delays(100);}}
}// 延迟函数
void delays(unsigned int t)
{while(t--);
}```
- 说明
- 在位选切换时,需要增加扫描延时,延迟时间太长会闪烁,太短则会造成重影。
- 在位选切换时,需要增加扫描延时,延迟时间太长会闪烁,太短则会造成重影。
实验3 选择对应的位显示内容
-
需求
- 选择指定的位显示指定的内容
-
分析

-
实现
#include <reg52.h>#define uint unsigned int// 定义位选:P2 表示设置数码管的位数#define pos P2// 定义段选:P0 表示设置要显示的内容#define par P0// 定义显示字符:0-9 C D E F Luint parValue[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x39, 0x79, 0x71};// 函数声明void delay_s(unsigned int i);void smgShow(uint postion, uint letter);void main(){uint idx;while(1){// 函数测试for(idx=1; idx<17; idx++){smgShow(4, idx);delay_s(90000);}}}/*** 指定对应位的数码管显示对应的内容** @param postion 第几位数码管* @param letter 要显示的字符内容** @return 无*/void smgShow(uint postion, uint letter){if((postion > 0 && postion < 5) && (letter > 0 && letter < 14)){switch(postion){case 1:pos = 0x18;par = parValue[letter-1];break;case 2:pos = 0x28;par = parValue[letter-1];break;case 3:pos = 0x48;par = parValue[letter-1];break;case 4:pos = 0x88;par = parValue[letter-1];break;}}}/*** 延迟函数:让CPU重复执行从指定的值一直减到0** @param i 初值** @return 无*/void delay_s(uint i){while(--i);}
相关文章:
51单片机教程(八)- 数码管的静态显示
1、项目分析 使用数码管显示指定的字符、数字和符号。 2、技术准备 1、显示器及其接口 单片机系统中常用的显示器有: 发光二极管LED(Light Emitting Diode)显示器、液晶LCD(Liquid Crystal Display)显示器、CRT显…...
案例精选 | 河北省某检察院安全运营中异构日志数据融合的实践探索
河北省某检察院是当地重要的法律监督机构,肩负着维护法律尊严和社会公平正义的重要职责。该机构依法独立行使检察权,负责对犯罪行为提起公诉,并监督整个诉讼过程,同时积极参与社会治理,保护公民权益,推动法…...
clickhouse自增id的处理
msyql 中创建数据表的时候可以通过AUTO_INCREMENT 来实现,clickhouse中可以通过其他方式来处理 一、 默认值 创建表时可以实用默认值,该列值可以自动递增。如下所示 CREATE TABLE my_table ( id UInt32 DEFAULT IDENTITY(AUTO_INCREMENT), name Strin…...
国内读新加坡公立大学在职博士是一种怎样的体验?还中文授课
国内读新加坡公立大学在职博士是一种怎样的体验?还中文授课 在国内享受国际化教育体系,这样的优势无论在学术和职业发展上,还是在个人综合素质和拓宽国际视野方面,都是无法抗拒的诱惑。当下这所新加坡公立大学就给了国内在职人员…...
linux 配置core
在Linux系统中,当一个程序崩溃时,系统可以生成一个名为"core dump"的文件。这个文件包含了程序崩溃时的内存映像,可以用来调试和确定程序崩溃的原因。生成core dump文件的功能是由内核配置的,可以通过多种方式来控制这个…...
postcss-loader运行报错
解决方案: 1、检查postcss和postcss-cssloader相关依赖 npm list postcss postcss-loader 2、原因: 你的依赖中存在 PostCSS 的版本冲突: 3、结局方案: 升级整个工具链到新版本(推荐): npm…...
智能存储解决方案:探索 TDengine 的多级存储功能
在当今数据驱动的时代,如何高效地存储和管理海量数据已成为企业面临的一大挑战。为了应对这一需求,TDengine Enterprise 不仅支持使用对象存储(S3),还早已引入了独特的多级存储功能。这一功能不仅能够降低存储成本&…...
Vue 3 中Pinia状态管理库的使用方法总结
Pinia 是 Vue 3 的状态管理库,旨在替代 Vuex,提供更简洁和更灵活的 API。以下是如何在 Vue 3 项目中使用 Pinia 的详细步骤。 1. 安装 Pinia 首先,你需要在你的 Vue 3 项目中安装 Pinia。你可以使用 npm 或 yarn 进行安装: npm…...
劫持微信聊天记录并分析还原 —— 访问数据库并查看聊天记录(五)
本工具设计的初衷是用来获取微信账号的相关信息并解析PC版微信的数据库。程序以 Python 语言开发,可读取、解密、还原微信数据库并帮助用户查看聊天记录,还可以将其聊天记录导出为csv、html等格式用于AI训练,自动回复或备份等等作用。下面我们…...
vue3+vite 前端打包不缓存配置
最近遇到前端部署后浏览器得清缓存才能出现最新页面效果得问题 所以…按以下方式配置完打包就没啥问题了,原理很简单就是加个时间戳 /* eslint-disable no-undef */ import {defineConfig, loadEnv} from vite import path from path import createVitePlugins from…...
Dinky控制台:利用SSE技术实现实时日志监控与操作
1、前置知识 1.1 Dinky介绍 实时即未来,Dinky 为 Apache Flink 而生,让 Flink SQL 纵享丝滑。 Dinky 是一个开箱即用、易扩展,以 Apache Flink 为基础,连接 OLAP 和数据湖等众多框架的一站式实时计算平台,致力于流批一体和湖仓一体的探索与实践。 致力于简化Flink任务开…...
cannot locate symbol _ZTVNSt6__ndk119basic_ostringstreamIcNS_
编译正常,运行报错:cannot locate symbol _ZTVNSt6__ndk119basic_ostringstreamIcNS_ 简单记录: 1、编译ffmpeg so库,编译正常; 2、AndroidStudio建立项目,引用so库,编译正常,运行…...
SwiftUI开发教程系列 - 第4章:数据与状态管理
在 SwiftUI 中,数据与视图的绑定可以自动响应数据变化,实时更新 UI。SwiftUI 提供了多种数据管理方式,包括 @State、@Binding、@ObservedObject 和 @EnvironmentObject 等属性包装器。本章将逐一介绍这些属性包装器的用途及其最佳实践。 4.1 使用 @State 进行本地状态管理 …...
API接口:助力汽车管理与安全应用
随着汽车行业的飞速发展,越来越多的汽车管理技术被应用到交通安全和智慧交通系统中。在这一过程中,API接口起到了至关重要的作用。通过API接口,我们可以实现诸如车主身份验核、车辆信息查询等功能,从而为汽车智慧交通发展与安全应…...
聊一聊在字节跳动做项目质量改进的经验
引言 那一年,我刚毕业一年多,在第一家公司依然到了成长瓶颈期,一是不愿意频繁出差(做乙方的无奈);二是疲于每天重复的手工测试(团队缺乏技术氛围),技术上难有突破的机会…...
CSS基础概念:什么是 CSS ? CSS 的组成
什么是 CSS? CSS(层叠样式表,Cascading Style Sheets)是一种用于控制网页外观的样式表语言。通过定义样式规则,CSS 可以指定 HTML 页面中各个元素的显示方式,包括颜色、布局、字体、间距等。 与 HTML 专注…...
鸿蒙next版开发:ArkTS组件自定义事件分发详解
在HarmonyOS 5.0中,ArkTS提供了灵活的自定义事件分发机制,允许开发者对组件的事件进行细粒度的控制。自定义事件分发对于实现复杂的用户界面交互和提升用户体验至关重要。本文将详细解读如何在ArkTS中实现自定义事件分发,并提供示例代码进行说…...
计算机图形学论文 | 多边形中的点可见性快速算法
🦌🦌🦌读论文 🐨🐨摘要 针对点的可见性计算这一计算几何中的基础问题,提出一种支持任意查询点的可见多边形快速计算的基于多边形Voronoi图的点可见性算法。以与Voronoi骨架路径对应的Voronoi通道概念&…...
程序员输入问题
题目描述 程序员输入程序出现差错时,可以采取以下的补救措施:按错了一个键时,可以补按一个退格符“#”,以表示前一个字符无效;发现当前一行有错,可以按一个退行符“”,以表示“”与它之前的字符…...
雨晨 23H2 Windows 11 企业版 IE VCDX 适度 22631.4445 (VIP有限开放版本)
雨晨 23H2 Windows 11 企业版 IE VCDX 适度 22631.4445 (VIP有限开放版本) 文 件: 雨晨 23H2 Windows 11 企业版 适度 22631.4445 install.wim 提 取 码: ZZLR 大 小: 2824999564 字节 修改时间: 2024年11月9日, 星期六, 05:33:05 MD5 : 9C88…...
OpenClaw技能扩展:基于GLM-4.7-Flash实现Markdown自动整理
OpenClaw技能扩展:基于GLM-4.7-Flash实现Markdown自动整理 1. 为什么需要自动化文档管理 作为一个长期使用Markdown记录技术笔记的开发者,我的文档库已经积累了超过2000个文件。每当需要查找某个知识点时,总要在混乱的文件夹结构和随意命名…...
Mist:macOS固件与安装程序下载管理终极指南
Mist:macOS固件与安装程序下载管理终极指南 【免费下载链接】Mist A Mac utility that automatically downloads macOS Firmwares / Installers. 项目地址: https://gitcode.com/GitHub_Trending/mis/Mist Mist是一款专为macOS设计的自动化工具,能…...
Spring Authorization Server Redis缓存优化:构建高性能分布式授权服务的架构设计与性能调优指南
Spring Authorization Server Redis缓存优化:构建高性能分布式授权服务的架构设计与性能调优指南 【免费下载链接】spring-authorization-server Spring Authorization Server 项目地址: https://gitcode.com/gh_mirrors/sp/spring-authorization-server 在现…...
在macOS上利用PyInstaller为Windows生成exe文件的3种实用方法
1. 为什么macOS不能直接生成Windows的exe文件? 很多刚开始接触Python打包的开发者都会遇到一个头疼的问题:明明在macOS上写好的脚本,用PyInstaller打包后却不能在Windows电脑上运行。这其实和PyInstaller的工作原理有关——它需要访问目标平…...
模型微调加持:百川2-13B+OpenClaw定制化个人助手实践
模型微调加持:百川2-13BOpenClaw定制化个人助手实践 1. 为什么需要定制化个人助手? 去年我尝试用现成大模型搭建自动化助手时,发现一个尴尬现象:当我让AI帮我整理会议纪要时,它总把技术术语解释得像科普读物…...
Qwen2-VL-2B-Instruct模型压缩实战:使用量化工具减小部署体积与加速推理
Qwen2-VL-2B-Instruct模型压缩实战:使用量化工具减小部署体积与加速推理 最近在折腾一个边缘设备上的视觉项目,用上了Qwen2-VL-2B-Instruct这个多模态模型。模型效果确实不错,但原始大小接近8GB,推理速度也慢,在资源有…...
Pixel Dream Workshop 对比测试:不同采样器与模型版本的出图效果
Pixel Dream Workshop 对比测试:不同采样器与模型版本的出图效果 1. 测试背景与目的 在AI绘画领域,采样器和模型版本的选择直接影响最终生成效果。本次测试旨在通过严谨的对比实验,帮助用户理解Pixel Dream Workshop中不同参数组合的实际表…...
Go Context 取消信号机制剖析
Go Context 取消信号机制剖析 在Go语言中,Context是控制并发任务生命周期的重要工具,其取消信号机制尤其关键。通过Context,开发者可以优雅地终止协程、释放资源,避免资源泄漏和无效计算。本文将深入剖析Go Context的取消信号机制…...
Linux终极生态指南:5个实战技巧打造高效开源工作流
Linux终极生态指南:5个实战技巧打造高效开源工作流 【免费下载链接】awesome-linux :penguin: A list of awesome projects and resources that make Linux even more awesome. :penguin: 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-linux Linux生…...
雪女-斗罗大陆-造相Z-Turbo生成图像的后期处理流水线:从降噪到超分
雪女-斗罗大陆-造相Z-Turbo生成图像的后期处理流水线:从降噪到超分 最近用造相Z-Turbo这类模型生成动漫角色图,比如《斗罗大陆》里的雪女,效果确实挺惊艳的。但不知道你有没有发现,直接生成的图片有时候会有些小瑕疵,…...
