当前位置: 首页 > news >正文

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)、符号(.)。
  • 特点:

    1. 自发光、亮度高,特别适合环境亮度低的场合使用。

    2. 牢固,不怕冲击。


4、数码管结构与原理

  1. 数码管结构

    • LED显示器(数码管)系发光器件的一种。常用的LED发光器件有两类:数码管和点阵。
    • 数码管内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的亮暗组合成字符。根据内部发光二极管的接线形式可分为共阴极和共阳极两种。
    • 使用时,共阴极数码管公共端接地,共阳极数码管公共端接电源。每段发光二极管需5~10mA的驱动电流才能正常发光,一般需加限流电阻控制电流的大小。
  2. 数码管原理

    • LED数码管的a~g七个发光二极管。加正电压的发光,加零电压的不能发光,不同亮暗的组合就能形成不同的字型,这种组合称为字型码。共阳极和共阴极的字型码是不同的。

      在这里插入图片描述


5、数码管驱动电路

  • 要驱动1个四位数码管常见的有以下几种数码管驱动电路(本电路是使用:共阴极数码管):

    1. 使用12个IO口
    2. P2.4-P2.7驱动位选,IO口直接驱动位选
    3. 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

      | 字符 |  h   |  g   |  f   |  e   |  d   |  c   |  b   |  a   | 十六进制 |
| :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | :------: |
|  1   |  0   |  0   |  0   |  0   |  0   |  1   |  1   |  0   |   0x06   |
|  2.  |  1   |  1   |  0   |  1   |  1   |  0   |  1   |  1   |   0xdb   |
|  3   |  0   |  1   |  0   |  0   |  1   |  1   |  1   |  1   |   0x4f   |
|  4   |  0   |  1   |  1   |  0   |  0   |  1   |  1   |  0   |   0x66   |

方式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、显示器及其接口 单片机系统中常用的显示器有&#xff1a; 发光二极管LED&#xff08;Light Emitting Diode&#xff09;显示器、液晶LCD&#xff08;Liquid Crystal Display&#xff09;显示器、CRT显…...

案例精选 | 河北省某检察院安全运营中异构日志数据融合的实践探索

河北省某检察院是当地重要的法律监督机构&#xff0c;肩负着维护法律尊严和社会公平正义的重要职责。该机构依法独立行使检察权&#xff0c;负责对犯罪行为提起公诉&#xff0c;并监督整个诉讼过程&#xff0c;同时积极参与社会治理&#xff0c;保护公民权益&#xff0c;推动法…...

clickhouse自增id的处理

msyql 中创建数据表的时候可以通过AUTO_INCREMENT 来实现&#xff0c;clickhouse中可以通过其他方式来处理 一、 默认值 创建表时可以实用默认值&#xff0c;该列值可以自动递增。如下所示 CREATE TABLE my_table ( id UInt32 DEFAULT IDENTITY(AUTO_INCREMENT), name Strin…...

国内读新加坡公立大学在职博士是一种怎样的体验?还中文授课

国内读新加坡公立大学在职博士是一种怎样的体验&#xff1f;还中文授课 在国内享受国际化教育体系&#xff0c;这样的优势无论在学术和职业发展上&#xff0c;还是在个人综合素质和拓宽国际视野方面&#xff0c;都是无法抗拒的诱惑。当下这所新加坡公立大学就给了国内在职人员…...

linux 配置core

在Linux系统中&#xff0c;当一个程序崩溃时&#xff0c;系统可以生成一个名为"core dump"的文件。这个文件包含了程序崩溃时的内存映像&#xff0c;可以用来调试和确定程序崩溃的原因。生成core dump文件的功能是由内核配置的&#xff0c;可以通过多种方式来控制这个…...

postcss-loader运行报错

解决方案&#xff1a; 1、检查postcss和postcss-cssloader相关依赖 npm list postcss postcss-loader 2、原因&#xff1a; 你的依赖中存在 PostCSS 的版本冲突&#xff1a; 3、结局方案&#xff1a; 升级整个工具链到新版本&#xff08;推荐&#xff09;&#xff1a; npm…...

智能存储解决方案:探索 TDengine 的多级存储功能

在当今数据驱动的时代&#xff0c;如何高效地存储和管理海量数据已成为企业面临的一大挑战。为了应对这一需求&#xff0c;TDengine Enterprise 不仅支持使用对象存储&#xff08;S3&#xff09;&#xff0c;还早已引入了独特的多级存储功能。这一功能不仅能够降低存储成本&…...

Vue 3 中Pinia状态管理库的使用方法总结

Pinia 是 Vue 3 的状态管理库&#xff0c;旨在替代 Vuex&#xff0c;提供更简洁和更灵活的 API。以下是如何在 Vue 3 项目中使用 Pinia 的详细步骤。 1. 安装 Pinia 首先&#xff0c;你需要在你的 Vue 3 项目中安装 Pinia。你可以使用 npm 或 yarn 进行安装&#xff1a; npm…...

劫持微信聊天记录并分析还原 —— 访问数据库并查看聊天记录(五)

本工具设计的初衷是用来获取微信账号的相关信息并解析PC版微信的数据库。程序以 Python 语言开发&#xff0c;可读取、解密、还原微信数据库并帮助用户查看聊天记录&#xff0c;还可以将其聊天记录导出为csv、html等格式用于AI训练&#xff0c;自动回复或备份等等作用。下面我们…...

vue3+vite 前端打包不缓存配置

最近遇到前端部署后浏览器得清缓存才能出现最新页面效果得问题 所以…按以下方式配置完打包就没啥问题了&#xff0c;原理很简单就是加个时间戳 /* 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_

编译正常&#xff0c;运行报错&#xff1a;cannot locate symbol _ZTVNSt6__ndk119basic_ostringstreamIcNS_ 简单记录&#xff1a; 1、编译ffmpeg so库&#xff0c;编译正常&#xff1b; 2、AndroidStudio建立项目&#xff0c;引用so库&#xff0c;编译正常&#xff0c;运行…...

SwiftUI开发教程系列 - 第4章:数据与状态管理

在 SwiftUI 中,数据与视图的绑定可以自动响应数据变化,实时更新 UI。SwiftUI 提供了多种数据管理方式,包括 @State、@Binding、@ObservedObject 和 @EnvironmentObject 等属性包装器。本章将逐一介绍这些属性包装器的用途及其最佳实践。 4.1 使用 @State 进行本地状态管理 …...

API接口:助力汽车管理与安全应用

随着汽车行业的飞速发展&#xff0c;越来越多的汽车管理技术被应用到交通安全和智慧交通系统中。在这一过程中&#xff0c;API接口起到了至关重要的作用。通过API接口&#xff0c;我们可以实现诸如车主身份验核、车辆信息查询等功能&#xff0c;从而为汽车智慧交通发展与安全应…...

聊一聊在字节跳动做项目质量改进的经验

引言 那一年&#xff0c;我刚毕业一年多&#xff0c;在第一家公司依然到了成长瓶颈期&#xff0c;一是不愿意频繁出差&#xff08;做乙方的无奈&#xff09;&#xff1b;二是疲于每天重复的手工测试&#xff08;团队缺乏技术氛围&#xff09;&#xff0c;技术上难有突破的机会…...

CSS基础概念:什么是 CSS ? CSS 的组成

什么是 CSS&#xff1f; CSS&#xff08;层叠样式表&#xff0c;Cascading Style Sheets&#xff09;是一种用于控制网页外观的样式表语言。通过定义样式规则&#xff0c;CSS 可以指定 HTML 页面中各个元素的显示方式&#xff0c;包括颜色、布局、字体、间距等。 与 HTML 专注…...

鸿蒙next版开发:ArkTS组件自定义事件分发详解

在HarmonyOS 5.0中&#xff0c;ArkTS提供了灵活的自定义事件分发机制&#xff0c;允许开发者对组件的事件进行细粒度的控制。自定义事件分发对于实现复杂的用户界面交互和提升用户体验至关重要。本文将详细解读如何在ArkTS中实现自定义事件分发&#xff0c;并提供示例代码进行说…...

计算机图形学论文 | 多边形中的点可见性快速算法

&#x1f98c;&#x1f98c;&#x1f98c;读论文 &#x1f428;&#x1f428;摘要 针对点的可见性计算这一计算几何中的基础问题&#xff0c;提出一种支持任意查询点的可见多边形快速计算的基于多边形Voronoi图的点可见性算法。以与Voronoi骨架路径对应的Voronoi通道概念&…...

程序员输入问题

题目描述 程序员输入程序出现差错时&#xff0c;可以采取以下的补救措施&#xff1a;按错了一个键时&#xff0c;可以补按一个退格符“#”&#xff0c;以表示前一个字符无效&#xff1b;发现当前一行有错&#xff0c;可以按一个退行符“”&#xff0c;以表示“”与它之前的字符…...

雨晨 23H2 Windows 11 企业版 IE VCDX 适度 22631.4445 (VIP有限开放版本)

雨晨 23H2 Windows 11 企业版 IE VCDX 适度 22631.4445 &#xff08;VIP有限开放版本&#xff09; 文 件: 雨晨 23H2 Windows 11 企业版 适度 22631.4445 install.wim 提 取 码: ZZLR 大 小: 2824999564 字节 修改时间: 2024年11月9日, 星期六, 05:33:05 MD5 : 9C88…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...

JVM 内存结构 详解

内存结构 运行时数据区&#xff1a; Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器&#xff1a; ​ 线程私有&#xff0c;程序控制流的指示器&#xff0c;分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...

十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建

【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...

API网关Kong的鉴权与限流:高并发场景下的核心实践

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中&#xff0c;API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关&#xff0c;Kong凭借其插件化架构…...