动态数码管显示实验

2023-05-16

文章目录

    • 摘要
    • 实验器件简介
    • 实验原理
    • 硬件电路图
    • 硬件电路连线
    • 实验代码
    • 实验结果
    • 思考以及注意事项
    • 实验视频教程
    • 资源分享

摘要

本实验采用了普中科技的51单片机开发板
本实验以静态数码管显示实验为基础
https://blog.csdn.net/weixin_41995541/article/details/89392804
通过动态扫描方式静态显示八个数据

实验器件简介

  • 74HC573
    • 八进制三态非反转透明锁存器
    • 功能表
      573
  • 74HC138
    • 三通道输入、八通道输出的译码器,也称3-8译码器
    • 管脚说明
      138
    • 真值表
      138

实验原理

数码管静态显示:必须接一个8位数据线来保持显示的字形码。
动态显示的特点:

  • 将所有的数码管的段选线并联在一起

  • 位选线控制是哪一位数码管被选中

  • 选亮数码管采用动态扫描方式显示

    • 即轮流向各位数码管送出字形码和相应的位选线
    • 利用发光二极管的余晖效应和人眼的视觉暂留作用
    • 使人感觉好像所有数码管同时在显示

-动态数码管的亮度要比静态显示的亮度差一些,所以限流电阻要略小

硬件电路图

完整电路图查看资源分享4–开发板原理图
动态数码管电路图
MCU
138译码器

硬件电路连线

参照上面的原理图连接:

  • MCU的JP10接74HC573的J12
  • MCU的JP11接74HC138的J6
    连线1
  • 开发板已经用跳线帽连接好
    连线2

实验代码


/**********************************************************/
//晶振频率	: 12.0MHz
//文件名		: main.c
//功能说明	: 七段LED动态数码管显示实验
//制作    	: https://blog.csdn.net/weixin_41995541
//技术支持	: QQ:2116447359
//变更记录	: 2019.04.19
//变更内容	: 
//说明		:
/**********************************************************/
#include <reg51.h>

#define	u8		unsigned char
#define LED_8	P0
void DelayMS(u8 i);

//编码前提条件:
//1.共阳极数码管
//2.各段数码管按顺时针排列
//3.a是高位,h(即dp)是低位
u8 code segmentCode[23]={0xFF,   						//无显示
	0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x09,  //0~9
	0x11,0xC1,0x63,0x85,0x61,0x71,  					//A~F
	0x91,0xE3,0x13,0x31,0x83,0xD1						//H,L,N,P,U,h
};  
//动态数码管采用共阴型七段数码管 所以编码需要按位取反
//加code把数组存放在Flash ROM中否则在RAM中

void main()
{
	u8 i;											
	while(1)
	{
		for(i=0;i<8;i++)
		{
			P2 = i;
			//共阴型数码管需要将共阳型数码管的编码按位取反
			LED_8 = ~segmentCode[i+1];  //按位取反
			DelayMS(1);   
			LED_8= 0x00;
		}
		//二次实验( 只用了P0进行实验 )所用代码
		//LED_8 = 0x60;
		//LED_8 = 0x71;
		//LED_8 = 0xE2;
		//LED_8 = 0xF3;
	}
}

void DelayMS(u8 i)
{
	//大约 1ms
	u8 j=100;
	while(i--)
	{
		while(j--);  
	}
}


实验结果

  1. 一次实验
    //注释代码DelayMS(1);
    实验1成功但亮度太低
    实验结果1
    //注释代码LED_8 = 0x00;
    实验2成功
    实验结果2
    //注释代码
    //DelayMS(1);
    //LED_8= 0x00;
    实验3失败
    实验结果3
  2. 二次实验
    只用了P0进行实验,让位选和段选同时进行
    重新进行编码
    编码0
    实验成功
    实验结果4
    只用了P0进行实验,让位选和段选同时进行
    重新进行编码
    编码
    实验失败,第一位有问题
    实验结果5

思考以及注意事项

  1. 注意接线,弄清楚高位和低位的对应位置
  2. 重点
    • 重影消影问题
    • 因为位选P2口和段选P0口并不是在同一时间赋值导致存在时差,量的累积最后达到质变(看见重影)
    • 所以需要通过代码 P0=0x00; 将段选清零(无显示)
    • 从一次实验实验2结果可以看出实际上只要有代码DelayMS(1); 延时一毫秒
    • 实验就可以成功,亮度也很亮,但实际上这个位选和段选依然存在时差
    • 这个也有量的累积最后达到质变,但是相对于延时显示的1ms来说太短了,人眼无法捕捉
    • 所以没得重影
  3. 动态扫描,最后显示出来的是静态画面。显然很耗费CPU,但是节约硬件资源,8个数码管只需要两个IO口
  4. 如果是静态方式的话,需要8个IO口来保持显示的数据,很耗硬件资源
  5. 可以用switch和case语句来专门指定每位数码管显示的字符
u8 i;
while(1)
{
	for(i=0;i<8;i++)
	{
		switch(i)
		{
			case 0 :
				LED_8 = ~segmentCode[6]; //显示数字 5
				break;
			case 1 :
				LED_8 = ~segmentCode[10]; //显示数字 9
				break;
			case 2 :
				LED_8 = ~segmentCode[11]; //显示数字 A
				break;
			case 3 :
				LED_8 = ~segmentCode[14]; //显示数字 d
				break;
			case 4 :
				LED_8 = ~segmentCode[12]; //显示数字 b
				break;
			case 5 :
				LED_8 = ~segmentCode[13]; //显示数字 C
				break;
			case 6 :
				LED_8 = ~segmentCode[16]; //显示数字 F
				break;
			case 7 :
				LED_8 = ~segmentCode[15]; //显示数字 E
				break;
			case 8 :
				LED_8 = ~segmentCode[18]; //显示数字 H
				break;
		}
		//消影处理
		DelayMS(1);   
		LED_8= 0x00;
	}
}

实验视频教程

推荐视频:https://www.bilibili.com/video/av32132894/?p=25

资源分享

003-普中51单片机开发板教程+参考资料
链接:https://pan.baidu.com/s/1SHARpgOLFtkY0gQXOGLx7g 提取码:yqjq
复制这段内容后打开百度网盘手机App,操作更方便哦

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

动态数码管显示实验 的相关文章

  • gcc/g++编译选项&动态/静态库

    1 gcc g 43 43 编译选项 amp 动态 静态库
  • 外围设备对飞控的作用

    以下是我对外围设备的理解 xff08 如果理解有误 xff0c 请大佬们指正 xff09 桨叶 xff08 必须 xff09 xff1a 动力装置 电机 必须 xff1a 为无人机提供动力输出 电调ESC 必须 xff1a 电子调速器 控制
  • 飞控外围设备选型的注意事项

    合适的选型 xff08 如电机 43 桨叶 43 电池 xff09 可以兼顾无人机的航时和稳定性 xff0c 可将航时和稳定性发挥到极致 桨叶 xff1a 螺距和长度 桨叶的选择会影响无人机的航时和稳定性 xff0c 选的好航时和稳定性可以
  • STM32CubeMX学习笔记——FreeRTOS_任务创建与删除

    STM32CubeMX学习笔记 FreeRTOS 任务创建与删除 Github简介任务创建可视化创建方式代码创建方式 任务删除 Github https github com HaHaHaHaHaGe Planof2019 half tre
  • 关于串口发送的几个标志位

    首先了解STM32串口发送数据的简单过程 xff0c 如下图所示 发送 xff1a 软件将数据写到USARTx gt DR里面 xff0c 硬件自动把USARTx gt DR里面的数据并行转移到 发送移位寄存器 xff0c 然后硬件自动将发
  • TCP三步握手,以及相关问题

    三次握手是 TCP 连接的建立过程 在握手之前 xff0c 主动打开连接的客户端结束 CLOSE 阶段 xff0c 被动打开的服务器也结束 CLOSE 阶段 xff0c 并进入 LISTEN 阶段 随后进入三次握手阶段 xff1a 首先客户
  • HTTP digest认证

    HTTP的basic认证是通过明文来传输用户名和密码 xff0c 安全性不够 xff0c 因此HTTP又推出了摘要认证的方式来验证用户名和密码 流程和Basic认证差不多 1 浏览器访问服务端受保护的资源 xff0c 服务端返回401 同时
  • SLAM【十】回环检测

    SLAM 十 回环检测 回环检测的作用及意义作用意义 回环检测方法准确率和召回率词袋模型 字典字典的结构字典的创建相似度计算相似度评分的处理关键帧的处理检测之后的验证 参考 回环检测的作用及意义 作用 问题 xff1a 为了解决整个SLAM
  • ubuntu下切换默认python版本

    ubuntu下切换默认python版本 以 root 身份登录 xff0c 首先罗列出所有可用的python 替代版本信息如果出现以上所示的错误信息 xff0c 则表示 Python 的替代版本尚未被update alternatives
  • AVL分析飞机气动特性

    AVL xff0c 全称为Athena Vortex Lattice xff0c 是MIT的Mark Drela教授开发的一个气动分析程序 程序最初由Harold Youngren 1988年为MIT Athena TODOR航空软件集编写
  • ros_arduino_bridge+arduino+l298n控制编码电机(Arduino uno)

    踩了许多坑 xff0c 看了许多教程 xff0c 终于成功用ros arduino桥的方法实现了对电机的控制 xff0c 希望大家能通过我的教训少走一些弯路 注 xff1a 本教程的所有代码可以进入我主页下载 step1 ubuntu下安装
  • 典型TI LaunchPad 比较

    型号主芯片主频资源尺寸支持软件参考价格MSP EXP432P401R MSP432P401R 48MHz 256KB Flash 64KB RAM 32KB ROM 9 5cm 5 85cm Keil Energia CCS 199 EK
  • 关于反序列异常问题

    异常显示序列号不一致 xff0c 序列化和反序列化受serialVersionUID序列号控制 xff0c 异常原因 xff1a 对象序列化时忘了写显式序列号 xff0c 然后再反序列化才重写的序列号 xff0c 也就是 序列化和反序列化的
  • ros消息和服务error:The manifest (with format version 2) must not contain the following tags: run_depend

    在按ROS入门教程 xff08 点击打开链接 xff09 行进过程中到了执行 rosmsg show beginner tutorials Num 命令时 xff0c 出现提示 The manifest with format versio
  • 【Vue + ElementUI】el-progress 各类常用场景(自动计算percentage,format自定义显示文字)

    效果图 xff1a 1 当前数据结构 progressList planNum 150 计划数量 completeNum 80 完成数量 planNum 70 completeNum 70 planNum 70 completeNum 90
  • 音乐播放器的一些思路

  • Arduino笔记实验(初级阶段)—Keypad小键盘

    Arduino笔记实验 初级阶段 Keypad小键盘 文章目录 Arduino笔记实验 初级阶段 Keypad小键盘前言一 电路图二 集成库方案 Keypad 三方集成库代码实验效果展示 三 基于Arduino原生方案4 4按键膜结构图代码
  • Arduino笔记实验(初级阶段)—火焰传感器+有源蜂鸣器实验

    Arduino笔记实验 初级阶段 火焰传感器 43 有源蜂鸣器实验 文章目录 Arduino笔记实验 初级阶段 火焰传感器 43 有源蜂鸣器实验前言一 电路图二 火焰传感器 4引脚 有源蜂鸣器代码实验效果展示 三 火焰传感器火焰传感器模块示
  • Arduino笔记实验(初级阶段)—DHT11温湿度传感器

    Arduino笔记实验 初级阶段 DHT11温湿度传感器 文章目录 Arduino笔记实验 初级阶段 DHT11温湿度传感器前言一 电路图二 DHT11温湿度传感器实验代码实验效果展示 三 DHT11温湿度传感器实验总结 前言 自学笔记 x
  • C语言笔记-26-网络-UDP网络编程

    C语言笔记 26 网络 UDP网络编程 文章目录 C语言笔记 26 网络 UDP网络编程前言一 UDP编程模型概括三 UDP编程模型代码UDP服务端UDP客户端 总结 前言 自学笔记 xff0c 没有历史知识铺垫 xff08 省略百度部分

随机推荐

  • C++笔记-6-c++静态与单例

    C 43 43 笔记 6 c 43 43 静态与单例 文章目录 C 43 43 笔记 6 c 43 43 静态与单例前言一 静态静态成员变量静态成员函数 二 单例饿汉式懒汉式 总结 前言 自学笔记 xff0c 没有历史知识铺垫 xff08
  • C++笔记-4-c++类与继承

    C 43 43 笔记 4 c 43 43 类与继承 文章目录 C 43 43 笔记 4 c 43 43 类与继承前言一 类 Class 构造 析构函数拷贝构造和拷贝赋值 二 继承总结 前言 自学笔记 xff0c 没有历史知识铺垫 xff08
  • C++笔记-5-c++成员变量、函数指针

    C 43 43 笔记 5 c 43 43 成员变量 函数指针 文章目录 C 43 43 笔记 5 c 43 43 成员变量 函数指针前言一 成员变量指针二 成员函数指针总结 前言 自学笔记 xff0c 没有历史知识铺垫 xff08 省略百度
  • Qt实现的计算器

    写在前边 xff1a 这篇文章只是来带着大家一起实现一个基于Qt的计算器 中间会出现很多概念 xff0c 我们不做拓展介绍 xff0c 大家只要知道怎么用就好 xff0c 如果有需要我们后续再详细的对每个模块解析 1 首先介绍一下Qt xf
  • 【vue-element-admin笔记】

    vue element admin项目 xff08 1 xff09 一 使用步骤1 引入库2 出现问题 总结 一 使用步骤 1 引入库 代码如下 xff08 示例 xff09 xff1a git clone https span class
  • 无人机从零到一(组装、校准到起飞)

    一 组装 xff08 螺旋桨可以最后装 xff09 机械结构配置 xff1a 名称型号飞控Pixhawk 2 4 8 xff08 带安全开关 xff0c 蜂鸣器 xff0c 还买了减震板 xff09 螺旋桨8045 ABS xff08 33
  • C++11的多线程线程参数传递,指针与引用

    void foo std this thread sleep for std chrono seconds 1 int main std thread t std cout lt lt 34 before starting joinable
  • 学习(二):I2C、SPI、UART、CAN的特点与区别

    官网教程链接 xff1a https ardupilot org dev docs code overview sensor drivers html I2C 一个主机 xff0c 允许多个从机一种相对简单的通信协议 xff0c 适合短距离
  • C++ Qt 两字节相加(和)的校验位

    函数名称 xff1a checkSum 函数功能 xff1a 校验位 帧头 43 数据段按2字节累加和 若数据段个数为奇数 xff0c 则累加和时在数据段后方补1个字节0x00 函数参数 xff1a QByteArray 帧头 43 数据段
  • 考研复习C++基础问答题(六)

    1 C 43 43 中存储类有哪些 xff1f 存储类定义 C 43 43 程序中变量 函数的范围 xff08 可见性 xff09 和生命周期 这些说明符放置在它们所修饰的类型之前 下面列出 C 43 43 程序中可用的存储类 xff1a
  • STM32CubeMX编辑规范(02)

    STM32CubeMX编辑规范 目录 STM32CubeMX编辑规范前言一 代码编写范围二 项目结构三 单独外设配置四 代码生成设置五 高级设置 前言 采用STM32CubeMX的编辑规范可以更好的在不同的芯片上移植 xff0c 修改外设可
  • 机器人局部避障的动态窗口法DWA (dynamic window approach)-matlab代码修改及动态障碍物避障效果

    具体效果视频 xff1a DWA动态障碍物 哔哩哔哩 https b23 tv pQp6ne 一 源码及问题 最初的源码链接https blog csdn net heyijia0327 article details 44983551 改
  • QQ可以用十六进制登录哦

    又到装逼 时刻了 平常人登QQ是这样的 xff1a 如果我告诉你 xff1a 还可以这样登录 xff0c 你信吗 xff1f 显然我成功了 xff0c 你呢 xff1f 想知道如何快速把QQ号转换为十六进制吗 xff1f 评论里告诉你 xf
  • Keil C51详细安装教程(最新版)

    Keil C51 0x00 说在前面0x01 资源获取0x02 软件安装0x03 还有一步 xff08 重要 xff09 0x04 小问题 0x00 说在前面 x1f4e2 Keil 5常用的分两个版本 xff0c C51和MDK C51用
  • Java学习之JavaWeb篇

    图床路径 Kuang JavaWeb Java Web 1 基本概念 web开发 web xff0c 网页的意思 xff0c www baidu com静态web html xff0c css提供给所有人看的数据 xff0c 始终不会变化
  • Typora自动上传图片到Gitee图床

    Typora自动上传图片到Gitee图床 序言 思路 Gitee作为免费的图床 xff0c Typora作为最好用的blog博客笔记软件 xff0c 通过PicGo软件配置将Typora中的图片自动保存到Gitee图床 xff0c 获得云端
  • 关于百度OCR和EasyOCR的研究记录

    现行方案 xff1a 迅捷OCR软件 采用迅捷OCR文字识别软件 xff0c 购买了一年的期限 操作需要使用pyautogui来操作软件进行操作 xff0c 现在也可以使用USB鼠键模块KM3来真实模拟鼠标键盘的操作 xff0c 可信度更高
  • qt打开项目,只有pro文件其它文件消失:-1: error: msvc-version.conf loaded but QMAKE_MSC_VER isn‘t set

    之前在电脑打开开发的项目 xff0c 突然今天打开突然只有pro文件其它文件消失了 xff0c 在文件管理器里面找也都还有 打开项目只剩下蓝色框里面的 网上查了一些资料 xff0c 发现是开发程序事qt的版本不同所导致 解决方法 点开项目
  • 表格中重复项设置一级和二级序号排序

    摘要 xff1a 一级分类存在重复项 xff0c 需要排序 xff0c 二级分类也存在重复项 xff0c 也需要排序 xff0c 相同一级分类中的二级分类需要重新从一开始排序 xff08 重点和难点 xff09 先来看看效果 xff1a 公
  • 动态数码管显示实验

    文章目录 摘要实验器件简介实验原理硬件电路图硬件电路连线实验代码实验结果思考以及注意事项实验视频教程资源分享 摘要 本实验采用了普中科技的51单片机开发板 本实验以静态数码管显示实验为基础 https blog csdn net weixi