51单片机入门_10_数码管动态显示(数字的使用;简单动态显示;指定值的数码管动态显示)

接上篇的数码管静态显示,以下是接上篇介绍到的动态显示的原理。
动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示

文章目录

  • 1. 数码管简单动态显示
  • 2. 数组的定义与引用
  • 3. 实现指定值的数码管动态显示

1. 数码管简单动态显示

按照上面提到的原理,可以设计得到如下代码:

#include <reg52.h>
#include <intrins.h>

#define unit unsigned int
#define uchar unsigned char


sbit DU = P2^6; //数码管段选
sbit WE = P2^7; //数码管位选

//毫秒级延时函数定义
void delay(uint z)
{
	uint x,y;
	for(x = z; x>0;x--)
		for(y=114;y>0;y--);

}

void main() //main函数自身就会循环
{
	//动态扫描就需要循环显示,因此需要写到循环中
	while(1)
	{
	   //第一位数码管
	   P0 = 0xFF; //清楚断码
	   WE = 1; //打开位选锁存器
	   P0=0xFE;	//1111 1110
	   WE = 0; //锁存位选数据
	   
	   DU = 1;//打开段选锁存器
	   P0=0xFD;//1111 1101
	   DU = 0; //段选锁存,锁存段选数据
	   dely(5);

	   //第二位数码管
	   P0 = 0xFF; //清楚断码	   
	   WE = 1;//打开位选锁存器
	   P0=0xFD;	 //1111 1101
	   WE = 0; //锁存位选数据
  
	   DU = 1;//打开段选锁存器
	   P0=0x5B;	 //0101 1011
	   DU = 0; //段选锁存,锁存段选数据
	   dely(5);
	}

}

在这里插入图片描述
数码管通常用来显示程序运行之后的结果,我们通常是给数码管赋一个值,然后将其进行显示,可以将其写为一个函数,此处需要使用到数组

2. 数组的定义与引用

数组是一组有序数据的集合,数组中每一个数据都是同一数据类型。数组中的元素可以用数组名和下标来唯一确定。
数组的一般格式定义如下:
数据类型 数组名[常量表达式]={元素表} ;
例如:

unsigned char tabel[3]={0x3F, 0x06, 0x5B, };
P0= tabel[0];//P0此时的值为0x3F

3. 实现指定值的数码管动态显示

回到前面的目的:给数码管赋一个值,然后将其进行显示

具体代码如下:

#include <reg52.h>
#include <intrins.h>

#define uint unsigned int
#define uchar unsigned char

//共阴数码管段选表0-9
//code关键字存到ROM区;不加的话会存储到data区,也就是RAM区;
//RAM区在执行过程中是可以被修改的,ROM区不可以被修改,此处不希望后期被修改
//code区容量大8K,data区只有512个字节
uchar code table[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x76,0x38,0x40,0x00};

sbit DU = P2^6; //数码管段选
sbit WE = P2^7; //数码管位选

//毫秒级延时函数定义
void delay(uint z)
{
	uint x,y;
	for(x = z; x>0;x--)
		for(y=114;y>0;y--);

}

//形参i表示显示的数字
void disoplay(uchar i)
{
	   uchar bai,shi,ge;
	   bai = i / 100;
	   shi = i%100/10;
	   ge = i%10;

	   //第一位数码管
	   P0 = 0xFF; //清楚断码
	   WE = 1; //打开位选锁存器
	   P0=0xFE;	//1111 1110
	   WE = 0; //锁存位选数据
	   
	   DU = 1;//打开段选锁存器
	   P0=table[bai];
	   DU = 0; //段选锁存,锁存段选数据
	   delay(5);

	   //第二位数码管
	   P0 = 0xFF; //清楚断码	   
	   WE = 1;//打开位选锁存器
	   P0=0xFD;	 //1111 1101
	   WE = 0; //锁存位选数据
  
	   DU = 1;//打开段选锁存器
	   P0=table[shi];
	   DU = 0; //段选锁存,锁存段选数据
	   delay(5);

	   //第三位数码管
	   P0 = 0xFF; //清楚断码	   
	   WE = 1;//位选锁存器
	   P0=0xFB;	 //1111 1101
	   WE = 0; //锁存位选数据
  
	   DU = 1;//打开段选锁存器
	   P0=table[ge];
	   DU = 0; //段选锁存,锁存段选数据
	   delay(5);

}

void main() //main函数自身就会循环
{
	//动态扫描就需要循环显示,因此需要写到循环中
	while(1)
	{
	 	display(236);
	}

}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/972097.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mybatis使用typeHandler实现类型转换

使用mybatis作为操作数据库的orm框架&#xff0c;操作基本数据类型时可以通过内置的类型处理器完成java数据类型和数据库类型的转换&#xff0c;但是对于扩展的数据类型要实现与数据库类型的转换就需要自定义类型转换器完成&#xff0c;比如某个实体类型存储到数据库&#xff0…

瑞萨RA-T系列芯片ADCGPT功能模块的配合使用

在马达或电源工程中&#xff0c;往往需要采集多路AD信号&#xff0c;且这些信号的优先级和采样时机不相同。本篇介绍在使用RA-T系列芯片建立马达或电源工程时&#xff0c;如何根据需求来设置主要功能模块ADC&GPT&#xff0c;包括采样通道打包和分组&#xff0c;GPT触发启动…

最新智能优化算法:牛优化( Ox Optimizer,OX)算法求解经典23个函数测试集,MATLAB代码

一、牛优化算法 牛优化&#xff08; OX Optimizer&#xff0c;OX&#xff09;算法由 AhmadK.AlHwaitat 与 andHussamN.Fakhouri于2024年提出&#xff0c;该算法的设计灵感来源于公牛的行为特性。公牛以其巨大的力量而闻名&#xff0c;能够承载沉重的负担并进行远距离运输。这种…

【linux】在 Linux 服务器上部署 DeepSeek-r1:70b 并通过 Windows 远程可视化使用

【linux】在 Linux 服务器上部署 DeepSeek-r1:70b 并通过 Windows 远程可视化使用 文章目录 【linux】在 Linux 服务器上部署 DeepSeek-r1:70b 并通过 Windows 远程可视化使用个人配置详情一、安装ollama二、下载deepseek版本模型三、在 Linux 服务器上配置 Ollama 以允许远程访…

【Linux网络编程】应用层协议HTTP(请求方法,状态码,重定向,cookie,session)

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;Linux网络编程 &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 ​ Linux网络编程笔记&#xff1a; https://blog.cs…

Chrome多开终极形态解锁!「窗口管理工具+IP隔离插件

Web3项目多开&#xff0c;继ads指纹浏览器钱包被盗后&#xff0c;更多人采用原生chrome浏览器&#xff0c;当然对于新手&#xff0c;指纹浏览器每月成本也是一笔不小开支&#xff0c;今天逛Github发现了这样一个解决方案&#xff0c;作者开发了窗口管理工具IP隔离插件&#xff…

Canal同步MySQL增量数据

引言 在现在的系统开发中&#xff0c;为了提高查询效率 , 以及搜索的精准度, 会大量的使用 redis 、memcache 等 nosql 系统的数据库 , 以及 solr 、 elasticsearch 类似的全文检索服务。 那么这个时候, 就又有一个问题需要我们来考虑, 就是数据同步的问题, 如何将实时变化的…

MacOS 15.3 卸载系统内置软件

1、关闭系统完整性&#xff08;SIP&#xff09; 进入恢复模式(recovery) 如果您使用的是黑苹果或者白苹果&#xff0c;可以选择 重启按住CommandR 进入&#xff0c;如果是M系列芯片&#xff0c;长按开机键&#xff0c;进入硬盘选择界面进入。 我是MacMini M4芯片&#xff0c;关…

【核心算法篇七】《DeepSeek异常检测:孤立森林与AutoEncoder对比》

大家好,今天我们来深入探讨一下《DeepSeek异常检测:孤立森林与AutoEncoder对比》这篇技术博客。我们将从核心内容、原理、应用场景等多个方面进行详细解析,力求让大家对这两种异常检测方法有一个全面而深入的理解。 一、引言 在数据科学和机器学习领域,异常检测(Anomaly…

Ubuntu24.04无脑安装docker(含图例)

centos系统请看这篇 Linux安装Docker教程&#xff08;详解&#xff09; 一. ubuntu更换软件源 请看这篇&#xff1a;Ubuntu24.04更新国内源 二. docker安装 卸载老版docker(可忽略) sudo apt-get remove docker docker-engine docker.io containerd runc更新软件库 sudo a…

thingboard告警信息格式美化

原始报警json内容&#xff1a; { "severity": "CRITICAL","acknowledged": false,"cleared": false,"assigneeId": null,"startTs": 1739801102349,"endTs": 1739801102349,"ackTs": 0,&quo…

✨2.快速了解HTML5的标签类型

✨✨HTML5 的标签类型丰富多样&#xff0c;每种类型都有其独特的功能和用途&#xff0c;以下是一些常见的 HTML5 标签类型介绍&#xff1a; &#x1f98b;结构标签 &#x1faad;<html>&#xff1a;它是 HTML 文档的根标签&#xff0c;所有其他标签都包含在这个标签内&am…

day12_调度和可视化

文章目录 day12_调度和可视化一、任务调度1、开启进程2、登入UI界面3、配置租户4、创建项目5、创建工作流5.1 HiveSQL部署&#xff08;掌握&#xff09;5.2 SparkDSL部署&#xff08;掌握&#xff09;5.3 SparkSQL部署&#xff08;熟悉&#xff09;5.4 SeaTunnel部署&#xff0…

使用nvm管理node.js版本,方便vue2,vue3开发

在Vue项目开发过程中&#xff0c;我们常常会遇到同时维护Vue2和Vue3项目的情况。由于不同版本的Vue对Node.js 版本的要求有所差异&#xff0c;这就使得Node.js 版本管理成为了一个关键问题。NVM&#xff08;Node Version Manager&#xff09;作为一款强大的Node.js 版本管理工具…

Java8适配的markdown转换html工具(FlexMark)

坐标地址&#xff1a; <dependency><groupId>com.vladsch.flexmark</groupId><artifactId>flexmark-all</artifactId><version>0.60.0</version> </dependency> 工具类代码&#xff1a; import com.vladsch.flexmark.ext.tab…

Qt开发①Qt的概念+发展+优点+应用+使用

目录 1. Qt的概念和发展 1.1 Qt的概念 1.2 Qt 的发展史&#xff1a; 1.3 Qt 的版本 2. Qt 的优点和应用 2.1 Qt 的优点&#xff1a; 2.2 Qt 的应用场景 2.3 Qt 的应用案例 3. 搭建 Qt 开发环境 3.1 Qt 的开发工具 3.2 Qt SDK 的下载和安装 3.3 Qt 环境变量配置和使…

vscode插件开发

准备 安装开发依赖 npm install -g yo generator-code 安装后&#xff0c;运行命令 yo code 运行 打开项目&#xff0c; 点击 vscode 调式 按 F5 或点击调试运行按钮 会打开一个新窗口&#xff0c;在新窗口按快捷键 CtrlShiftP &#xff0c;搜索 Hello World 选择执行 右下角出…

自制简单的图片查看器(python)

图片格式&#xff1a;支持常见的图片格式&#xff08;JPG、PNG、BMP、GIF&#xff09;。 import os import tkinter as tk from tkinter import filedialog, messagebox from PIL import Image, ImageTkclass ImageViewer:def __init__(self, root):self.root rootself.root.…

嵌入式 lwip http server makefsdata

背景&#xff1a; 基于君正X2000 MCU Freertoslwip架构 实现HTTP server服务&#xff0c;MCU作为HTTP服务器通过网口进行数据包的传输&#xff0c;提供网页服务。其中设计到LWIP提供的工具makefsdata&#xff0c;常用于将文件或目录结构转换为适合嵌入到固件中的二进制格式。 …

架构设计系列(三):架构模式

一、概述 关于移动应用开发中常见的架构模式&#xff0c;这些模式是为了克服早期模式的局限性而引入。常见的 架构模式有&#xff1a; MVC, MVP, MVVM, MVVM-C, and VIPER 二、MVC, MVP, MVVM, MVVM-C, and VIPER架构模式 MVC、MVP、MVVM、MVVM-C 和 VIPER 是移动应用开发中…