【51单片机】动态数码管

0、前言
参考:
普中51单片机开发攻略–A2.pdf
在这里插入图片描述

1、数码管介绍

上一章我们主要是介绍一位数码管的内部结构及控制原理。下面我们再来介 绍下多位数码管及动态显示原理的相关知识。

1.1 多位数码管简介

在这里插入图片描述

2、74HC245 和 74HC138 芯片介绍

在这里插入图片描述

2.1 74HC245 芯片简介

在这里插入图片描述
在这里插入图片描述

2.2 74HC138 芯片简介

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、硬件设计

在这里插入图片描述
在这里插入图片描述

4、软件设计

本章所要实现的功能是:控制动态数码管从左至右显示数字 0-7。

为了正规点,工程弄个正规文件夹:
https://blog.csdn.net/qq_43625266/article/details/122095932

在这里插入图片描述

main.c

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

typedef unsigned int u16; //对数据类型进行声明定义 
typedef unsigned char u8; 
sbit LSA=P2^2; 
sbit LSB=P2^3; 
sbit LSC=P2^4; 

u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};// 显 示 0~F 的值 
/*************** * 函 数 名 : delay * 函数功能 : 延时函数,i=1 时,大约延时 10us **************/ 

/*************** * 函 数 名 : DigDisplay * 函数功能 : 数码管动态扫描函数,循环扫描 8 个数码管显示 **************/ 
void DigDisplay() { u8 i; for(i=0;i<8;i++) { switch(i) //位选,选择点亮的数码管, 
	{ case(0): 
			LSA=1;LSB=1;LSC=1; break;//显示第 0 位 
		case(1): 
			LSA=0;LSB=1;LSC=1; break;//显示第 1 位 
		case(2): 
			LSA=1;LSB=0;LSC=1; break;//显示第 2 位 
		case(3):
			LSA=0;LSB=0;LSC=1; break;//显示第 3 位 
		case(4): 
			LSA=1;LSB=1;LSC=0; break;//显示第 4 位 
		case(5): 
			LSA=0;LSB=1;LSC=0; break;//显示第 5 位 
		case(6): 
			LSA=1;LSB=0;LSC=0; break;//显示第 6 位 
		case(7): 
			LSA=0;LSB=0;LSC=0; break;//显示第 7 位 
	} 
	P0=smgduan[i];//发送段码 
	delayms(1); //间隔一段时间扫描 
	P0=0x00;//消隐 
	} 
} 
/************ * 函 数 名 : main * 函数功能 : 主函数 *输 入 :无 *输 出 :无*********************/ 
void main() 
	{ 
		while(1) 
		{ 
			DigDisplay(); //数码管显示函数 
			} 
	}

delayms.c

#include "delayms.h"

void delayms(unsigned int xms) //delay x ms
{
	unsigned int x,y;
	for(x=xms;x>0;x--)
		for(y=124;y>0;y--);
}

delayms.h

#ifndef _DELAYMS_h_
#define _DELAYMS_h_

void delayms(unsigned int xms); //delay x ms

#endif

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

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

相关文章

Flink入门教程

使用flink时需要提前准备好scala环境 一、创建maven项目 二、添加pom依赖 <properties><scala.version>2.11.12</scala.version></properties><dependency><groupId>org.scala-lang</groupId><artifactId>scala-library<…

探索指针的奇妙世界,程序中的魔法箭头(上)

目录 一.指针是什么二.指针和指针类型1.指针加减整数2.指针的解引用 三.野指针1.野指针形成的原因&#xff08;1&#xff09;指针未初始化指针越界访问 2.如何规避野指针&#xff08;1&#xff09;指针初始化&#xff08;2&#xff09;小心指针越界&#xff08;3&#xff09;指…

用Python实现Excel中的Vlookup功能

目录 一、引言 二、准备工作 三、实现Vlookup功能 1、导入pandas库 2、准备数据 3、实现Vlookup功能 4、处理结果 5、保存结果 四、完整代码示例 五、注意事项 六、总结 一、引言 在Excel中&#xff0c;Vlookup是一个非常实用的函数&#xff0c;它可以帮助我们在表…

014-信息打点-JS架构框架识别泄漏提取API接口枚举FUZZ爬虫插件项目

014-信息打点-JS架构&框架识别&泄漏提取&API接口枚举&FUZZ爬虫&插件项目 #知识点&#xff1a; 1、JS前端架构-识别&分析 2、JS前端架构-开发框架分析 3、JS前端架构-打包器分析 4、JS前端架构-提取&FUZZ 解决&#xff1a; 1、如何从表现中的JS提取…

1.11马原

同一性是事物存在和发展的前提&#xff0c;一方的发展以另一方的发展为条件 同一性使矛盾双方相互吸收有利于自身的因素&#xff0c;在相互作用中各自得到发展 是事物发展根本规律&#xff0c;唯物辩证法的实质和核心 揭示了事物普遍联系的根本内容和变化发展的内在动力 是贯…

VIM工程的编译 / VI的快捷键记录

文章目录 VIM工程的编译 / VI的快捷键记录概述笔记工程的编译工程的编译 - 命令行vim工程的编译 - GUI版vim备注VIM的帮助文件位置VIM官方教程vim 常用快捷键启动vi时, 指定要编辑哪个文件正常模式光标的移动退出不保存 退出保存只保存不退出另存到指定文件移动到行首移动到行尾…

Java面试汇总——jvm篇

目录 JVM的组成&#xff1a; 1、JVM 概述(⭐⭐⭐⭐) 1.1 JVM是什么&#xff1f; 1.2 JVM由哪些部分组成&#xff0c;运行流程是什么&#xff1f; 2、什么是程序计数器&#xff1f;(⭐⭐⭐⭐) 3、介绍一下Java的堆(⭐⭐⭐⭐) 4、虚拟机栈(⭐⭐⭐⭐) 4.1 什么是虚拟机栈&…

【开源】基于JAVA语言的软件学院思政案例库系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统管理员2.2 普通教师 三、系统展示四、核心代码4.1 查询思政案例4.2 审核思政案例4.3 查询思政课程4.4 思政案例点赞4.5 新增思政案例评语 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的软件学…

2024最新:optee系统开发精讲 - 课程介绍

&#xff08;本课程中如有涉及代码或硬件架构&#xff0c;则对应的版本号&#xff1a;TF-A 2.80&#xff0c;optee 3.20, Linux Kernel 6.3&#xff0c;armv8.79.0的aarch64&#xff09; &#xff08;注意&#xff1a; 该课程没有PPT&#xff0c;该课程是对照代码讲解的&#x…

六、Netty核心模块组件

目录 6.1 BootStrap&#xff0c;ServerBootStrap6.2 Future&#xff0c;ChannelFuture6.3 Channel6.4 Selector6.5 ChannelHandler 以及其实现类6.6 Pipeline 和 ChannelPipeline6.7 ChannelHandlerContext6.8 ChannelOption6.9 EventLoopGroup和其实现类 NioEventLoopGroup6.1…

力扣 第 122 场双周赛 解题报告 | 珂学家 | 脑筋急转弯 + 滑窗反悔堆

前言 整体评价 倒开差点崩盘&#xff0c;T4这个反悔堆写吐了&#xff0c;T3往众数上去猜了&#xff0c;幸好case良心。 T1. 将数组分成最小总代价的子数组 I 思路: 取 nums[1:] 的最小2个值 可以部分排序&#xff0c;这样更快捷 class Solution {public int minimumCost(in…

WorkPlus:构建高效协作的企业即时通讯解决方案

在现代企业中&#xff0c;高效沟通是实现协作和改善工作效率的关键。而企业即时通讯工具成为了推进沟通的利器。作为一款高质量的企业即时通讯解决方案&#xff0c;WorkPlus以其卓越的性能和独特的功能&#xff0c;助力企业构建高效协作的新格局。 为什么选择WorkPlus作为企业即…

一文读懂「RAG,Retrieval-Augmented Generation」检索增强生成

Retrieval-Augmented Generation&#xff08;RAG&#xff09;作为机器学习和自然语言处理领域的一大创新&#xff0c;不仅代表了技术的进步&#xff0c;更在实际应用中展示了其惊人的潜力。 RAG结合了检索&#xff08;Retrieval&#xff09;和生成&#xff08;Generation&#…

windows Server 退域操作

要将运行Windows Server 2003的域控制器从Active Directory环境中退出&#xff08;降级&#xff09;&#xff0c;您需要按照以下步骤操作&#xff1a; ### 步骤1&#xff1a;转移角色与功能 - 如果这台服务器拥有任何活动目录角色&#xff0c;如FSMO&#xff08; Flexible Sin…

AI教我学编程之C#类的实例化与访问修饰符

前言 在这篇文章中&#xff0c;我将带大家深入了解C#编程语言的核心概念&#xff0c;包括类的实例化、访问修饰符的应用&#xff0c;以及C#中不同数据类型的默认值。我会通过逐步分析和具体实例&#xff0c;详细解释如何在C#中正确创建和操作对象&#xff0c;并探讨如何通过访…

设计模式——装饰者模式

更多内容&#xff0c;前往 IT-BLOG 现实生活中常常需要给某类产品动态增加新的功能&#xff0c;如&#xff1a;给面条各种调味品。在软件开发过程中&#xff0c;有时想用一些现存的组件。这些组件可能只是完成一些核心功能。但在不改变其架构的情况下&#xff0c;可以动态地扩展…

Java毕业设计-基于jsp+servlet的大学生学业规划咨询服务平台管理系统-第84期

获取源码资料&#xff0c;请移步从戎源码网&#xff1a;从戎源码网_专业的计算机毕业设计网站 项目介绍 基于jspservlet的大学生学业规划咨询服务平台管理系统&#xff1a;前端 jsp、jquery、ajax&#xff0c;后端 servlet、jdbc&#xff0c;角色分为管理员、学生&#xff1b…

C++ :命名空间域

目录 冲突与命名&#xff1a; 举个例子&#xff1a; 全局与局部&#xff1a; 域作用限定符&#xff1a; 命名空间域&#xff1a; 冲突与命名&#xff1a; 在C语言中&#xff0c;我们通常会使用stdlib.h 而stdlib.h 本质上是一个函数的库&#xff0c;在程序中使用的大多数…

C++(14)——string的模拟实现

前几篇文章中介绍了关于以及其相关函数的使用&#xff0c;为了更清楚的了解这些函数的作用&#xff0c;本篇文章通过模拟实现的方式来加深对于函数作用原理的理解。 目录 1. String的整体框架&#xff1a; 1.1 成员变量&#xff1a; 1.2 构造函数&#xff1a; 1.3 析构函数…

第十一站:多态练习ODU

实现动态切换 ODU.h #pragma once #include <iostream> using namespace std; #define ODU_TYPE_311_FLAG "311" #define ODU_TYPE_335_FLAG "335" enum class ODU_TYPE {ODU_TYPE_311,ODU_TYPE_335,ODU_TYPE_UNKNOW };class ODU{ public:ODU();//发…