51单片机——静态数码管实验,小白讲解

news2024/11/27 2:24:40

数码管介绍:

数码管是一种半导体发光器件,其基本单元是发光二极管。数码管也称LED数码管,不同行业人士对数码管的称呼不一样,其实都是同样的产品。数码管按段数可分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二级管单元,也就是多一个小数点(DP),这个小数点可以更精确的表示数码管想要显示的内容;按能显示多少个(8)1 位、 2 位、 3 位、 4 位、 5 位、 6 位、7 位等数码管。按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管.

共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不良。

公阴数码管是指将所有发光二极管的阴极连接到一起形成共阴极(COM)的数码管,共阴数码管在应用时应将公共极 COM 接到地线 GND 上,当某一字段发光 二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相 应字段就不亮。

数码管显示原理:

不管将几位数码管连在一起,数码管的显示原理都是一样的,都是靠点亮内 部的发光二极管来发光,下面我们就来讲解一个数码管是如何亮起来的。数码管 内部电路如下图所示:
从上图可看出,一位数码管的引脚是 10 个,显示一个 8 字需要 7 个小段, 另外还有一个小数点,所以其内部一共有 8 个小的发光二极管,最后还有一个 公共端,多数生产商为了封装统一,单位数码管都封装 10 个引脚,其中第 3 和 第 8 引脚是连接在一起的。而它们的公共端又可分为共阳极和共阴极,图中间 为共阳极内部原理图,右图为共阴极内部原理图。
共阳极数码管更为常用,为什么呢? 这是因为数码管的非公共端往往 接在 IC 芯片的 I/O 上,而 IC 芯片的驱动能力往往是比较小的,如果采用共阴极 数码管,它的驱动端在非公共端, 就有可能受限于 IC 芯片输出电流不够而显示 昏暗,要外加上拉电阻或者是增加三极管加大驱动能力。但是 IC 芯片的灌电流, 即输入电流范围比较大。所以使用共阳极数码管的好处是:将驱动数码管的工作 交到公共端(一般接驱动电源),加大驱动电源的功率自然要比加大 IC 芯片 I/O 口的驱动电流简单许多。另一方面,这样也能减轻主芯片的负担。
如图上图:比如共阴数码管数字 0 显示:其二进制是:0011 1111,转16进制0x3f,如果是共阳数码管,换取反后为:1100 0000, 转换成 16 进制即为 0XC0。其他段码依此类推。该段码数据由来,电路图 P0.0对应的是a,P0.7对应是小数点,那a 段作为 最低位,b 段作为次低位,其他按顺序类推,(小数点)dp 段为最高位,共 8 位,正好和 51 单片机的一组端口数一样,因此可以直接使用某一组端口控制数码管的段选 数据口,比如 P0 口。下面是数码管表,0----F
共阴数码管表
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d,

0         1       2         3      4        5
0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c,
6          7        8       9      A        B
0x39, 0x5e, 0x79, 0x71, 0x00,
C          D       E       F      无显示

 共阳数码管表

0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92,

0           1        2        3        4        5
0x82, 0xF8, 0x80, 0x90, 0x88, 0x83,
6          7        8        9        A       B
0xC6, 0xA1, 0x86, 0x8E, 0xFF,
C          D        E       F      无显示
数码管静态显示原理
静态显示的特点是每个数码管的段选必须接一个 8 位数据线来保持显示的字形码。当送 入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优 点是占用 CPU 时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较 高,比如使用 4 个静态数码管,那么就得 32 个 IO 来控制,这对 51 单片机来说 是无法承受的,正因为如此才会有动态显示。
动态显示的特点是将所有数码管的段选线并联在一起,由位选线控制是哪一 位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位 数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人 的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。

 硬件设计:

开发板上的静态数码管模块电路如下图所示:

上图电路实际上是动态数码管电路,使用的是 2 个四位一体的共阴数码管组 成,即 8 位数码管的段选数据 a-dp 全部并联一起引出,每位数码管的位选即公 共端引出,前面我们也说了,虽然开发板上没有单个的静态数码管,但依然可以 在动态数码管电路中使用其中一个来学习静态数码管显示。本实验使用 SMG1 最 左边那个数码管作为静态数码管,因为单片机 IO 口外部都增加了外部上拉电阻, 因此 P22、P23、P24 引脚默认就是高电平,根据 38 译码器输出特点,此时 Y7 脚(LED8)输出有效,即低电平。而数码管的段选 a-dp 连接在 74HC245 驱动芯 片输出口,由 P0 端口控制。所以只要控制 P0 口输出高电平,SMG1 最左边那个 数码管默认就可以显示。此处暂时不去理会 38 译码器的工作原理,后面动态数 码管实验会专门介绍。74HC245 作为驱动芯片使用,目的是让数码管能获得更大的电流,为防止因电流过大烧坏数码管,在 74HC245 芯片输出管脚又串联了 2 个 4 位的 100 欧排阻后连接数码管段码 a-dp 脚。
/********************************************************************
实验现象:下载程序后“数码管模块”最左边数码管显示数字 0
******************/
#include "reg52.h"
typedef unsigned int u16; //对系统默认数据类型进行重定义
typedef unsigned char u8;
#define SMG_A_DP_PORT P0 //使用宏定义数码管段码口
//gsma_code全局变量数组储存共阴极数码管显示 0~F 的段码数据
u8 gsmg_code[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//0x3f显示0二进制就是0011 1111
/********************************************************************
***********
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
38译码器,默认显示是LED8,详细看动态数码管显示
SMG_A_DP_PORT=gsmg_code[0];将gsmg_code[0]数组第 1 个数据赋值给SMG_A_DP_PORT(P0)端口
数组的上标0,对应下标1,所以这个[0]就是第一个数据
*********************************************************************
SMG_A_DP_PORT=gsmg_code[0];有两种写法,意思一样第一种是如下:
SMG_A_DP_PORT=gsmg_code[0]执行完进入while()循环,因为while(1)就一直是真,
while循环又是空语句,一直在while循环里面执行,又没有别的条件执行,所有就一直
显示数字0,达到常亮的效果
void main()
{
    SMG_A_DP_PORT=gsmg_code[0];//将数组第 1 个数据赋值给数码管段选口
    while(1)
    {
       
    }
}

第二种写法是如下:
进入while()循环,因为while(1)就一直是真,SMG_A_DP_PORT=gsmg_code[0]这条语句就
重复的执行,所有就一直显示数字0,达到常亮的效果
**********/
void main()
{
    
    while(1)
    {
        SMG_A_DP_PORT=gsmg_code[0];//将数组第 1 个数据赋值给数码管段选口
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

中国计算机大会CNCC【笔记】

中国计算机大会CNCC【笔记】前言推荐中国计算机大会CNCCCNCC 青年精英思想秀主题:当呼吸化为空气——物联网安全云原生一站式数据管理与服务 : 构建云计算数据平台生态计算产业未来应用场景与创新方向展望用开源打造云原生数据库的生态系统CCF 优博的培养与成长最后…

华为HI第二款车,阿维塔11的智能化有什么特点?

作者 | 德新 编辑 | 于婷阿维塔11,这款车不用过多介绍,长安 x 宁德 x 华为 3家联合打造。外观独特,在宝马17年的顶尖设计师Nader Faghihzadeh主导的设计;用料也很足,90度 - 116度的电池,34.99万的起售价&am…

利用 ALV 实现增删改查系列之一:让 ALV 报表进入可编辑状态试读版

在 CSDN 和我的知识星球里有朋友向我提出同样的问题,询问如何在 ALV 里实现增删改查操作。 虽然需求只有一句话,但是这个需求背后涉及到的知识点不少,因此笔者会通过几篇文章的篇幅,来介绍这个需求的详细实现步骤。 本文先解决第…

【Linux学习】之访问命令行

【Linux学习】之访问命令行 文章目录【Linux学习】之访问命令行一、基础知识二、练习1.使用 date 命令来显示当前的日期和时间。2.以12小时制显示当前时间(例如,11:42:11AM)。3. 查看/home/student/zcat 的文件类型,是否被人读取?4.使用wc命令和 Bash 快…

看过来,2022最后一期大咖说-大厂可观测来啦~

可观测性的应用创新与落地研讨会 「UGeek大咖说-大厂可观测」 最后一期 活动时间:2022/12/21 15:00 — 17:30 活动平台:线上网络直播间 主办单位:优维科技 内容介绍 白驹过隙,转眼就到了2022年末啦~ 「UGeek大咖说-大厂可观…

A. Tower(暴力 + 看数据范围)

Problem - A - Codeforces 彭教授建造了n个不同高度的积木塔。第i座塔的高度为ai。 寿教授不喜欢这些塔,因为它们的高度是任意的。他决定首先精确地移除其中的m个,然后执行以下一些(或不执行)操作。 选择一座塔,将其…

MongoDB——Java Client API(Spring Data MongoDB)

[TOC](MongoDB——Java Client API(Spring Data MongoDB)) MongoDB——Java Client API(Spring Data MongoDB) 关于文档注解 由于mongoDB使用是BSON进行存储,Java则是类与对象的概念,所以设计了一套注解用于标注 Document 范围:类 作用&…

表的增删查改基本查询(where-group by-having)

文章目录表的操作表的创建修改表属性(轻易不要改)数据类型分类类型测试表的增删查改增加插入insert插入否则更新替换Retrieve(检索)查找selectwhere条件语句的添加姓孙的和孙某where语句无法使用别名的问题?语文成绩&g…

OAK相机depthai最全上手教程

编辑:OAK中国 首发:oakchina.cn 喜欢的话,请多多👍⭐️✍ 内容可能会不定期更新,官网内容都是最新的,请查看首发地址链接。 ▌前言 Hello,大家好,这里是OAK中国,我是助手…

一种数据驱动的自动驾驶汽车前馈补偿器优化方法(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 一个可靠的控制器对于自动驾驶汽车的安全和平稳操纵的执行至关重要。控制器必须对外部干扰(如路面、天气、风况等&…

javaweb文件下载案例

html代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body> <a href"./img/1.jpg">图片</a> <!--这个下载效果是download实…

pikachu靶场越权漏洞实战

今天继续给大家介绍渗透测试相关知识&#xff0c;本文主要内容是pikachu靶场越权漏洞实战。 免责声明&#xff1a; 本文所介绍的内容仅做学习交流使用&#xff0c;严禁利用文中技术进行非法行为&#xff0c;否则造成一切严重后果自负&#xff01; 再次强调&#xff1a;严禁对未…

01背包问题以及有关题目

一、01背包问题详解 确定dp数组以及下标的含义 使用二维数组 dp[i] [j] 表示从下标为[0-i]的物品里任意取&#xff0c;放进容量为j的背包&#xff0c;价值总和最大是多少。 确定递推公式 dp数组的初始化 首先从dp[i][j] 的定义出发&#xff0c;如果背包容量j为0的话&#…

kobject应用实例--在/sys下创建设备的属性节点

本文讲解如何利用内核提供的接口&#xff0c;在/sys下创建设备的属性节点&#xff0c;实现属性的读写接口。 1、主要数据结构 一、kobject --> 目录&#xff1b;kobj_type --> 属性文件 使用到的内核数据结构如下&#xff1a; struct kobject {const char *name;…

1996-2020年31省主要农业机械年末拥有量相关数据

1996-2020年31省主要农业机械年末拥有量 1、时间&#xff1a;1996-2020年 2、范围&#xff1a;包括全国31省 3、指标包括&#xff1a; 农用机械总动力&#xff08;万千瓦&#xff09;、大中型拖拉机&#xff08;台&#xff09;、小型拖拉机&#xff08;台&#xff09;、大中…

jsp+ssm计算机毕业设计本科毕业设计过程管理系统【附源码】

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; JSPSSM mybatis Maven等等组成&#xff0c;B/S模式 Mave…

如何识别网络应用层协议?

能够标识出 Internet上每个流所使用的应用层协议是一系列网络应用的前提和基础。然而随着网络的高速化和协议的复杂化&#xff0c;传统的基于端 口识别应用层协议的算法已经不够准确&#xff0c;因此各种新的协议识别算法成为研究热点 。 本篇文章将重点介绍协议识别问题的几个…

第三章、前端知识(测试基础)---HM

文章目录一、web前端三大核心技术二、HTML基础1. HTML简介1.1 什么是HTML&#xff1f;1.2 HTML标签1.2.1 HTML单标签和双标签&#xff1a;1.3 HTML属性2. HTML标签骨架3. 基本的HTML标签3.1 HTML标题3.2 HTML段落3.3 HTML超链接3.4 HTML图片3.5 HTML空格和回车3.6 布局标签4、H…

【水果识别】苹果质量检测及分级系统(带面板)【含GUI Matlab源码 1613期】

⛄一、简介 1 案例背景 目前&#xff0c;苹果的分级主要靠人工完成&#xff0c;该方法存在主观误差大、效率低和苹果易造成二次损伤等问题。随着机器视觉技术的快速发展&#xff0c; 图像处理在水果质量检测方面也取得了深入进展。 试验拟通过采集视野内苹果图&#xff0c; 综…

ssm+Vue计算机毕业设计校园学生体温管理系统(程序+LW文档)

ssmVue计算机毕业设计校园学生体温管理系统&#xff08;程序LW文档&#xff09; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项…