【蓝桥杯单片机入门记录】静态数码管

目录

一、数码管概述

(1)认识数码管

(2)数码管的工作原理

(3)LED数码管驱动方式-静态显示

二、数码管电路图

三、静态数码管显示例程

(1)例程1:数码管显示某一位(某一杠)。以点亮8段数码管最上面的横杠为例。

(2)例程2:数码管的8个段依次点亮(其他保持熄灭)

(3)例程3:数码管显示某一个数值。(本例以点亮8段数码管显示数组“1”为例)

(4)例程4:数码管依次显示0-9、-、全部熄灭,显示间隔为500MS;


一、数码管概述

(1)认识数码管

led数码管(LED Segment Displays)由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。这些段分别由字母a,b,cdefq,dp来表示:

(2)数码管的工作原理

当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的字样了。如:显示一个“2”字,那么应当是a亮b亮g亮e亮d亮f不亮c不亮dp不亮。小尺寸数码管的显示笔画常用一个发光二极管组成,而大尺寸的数码管由二个或多个发光二极管组成。发光二极管的阳极连接到一起连接到电源正极的称为共阳数码管,发光二极管的阴极连接到一起连接到电源负极的称为共阴数码管。常用LED数码管显示的数字和字符是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。(蓝桥杯单片机上使用的是:两个四位一体的共阳极数码管

(3)LED数码管驱动方式-静态显示

  • LED数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据LED数码管的驱动方式的不同,可以分为静态式和动态式两类。
  • 静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/0端口多,如驱动5个数码管静态显示则需要5x8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。

二、数码管电路图

(非实际,便于理解版本)

三、静态数码管显示例程

(1)例程1:数码管显示某一位(某一杠)。以点亮8段数码管最上面的横杠为例。

//头文件声明区域
#include <STC15F2K60S2.H>//程序主体
void main()
{P2 = 0XA0;P0 = OX00;P2 = 0X80;P0 = 0XFF;//初始化程序P2 = 0XC0;P0 = 0X01;P2 = 0XFF;P0 = 0XFF;//打开第一个数码管程序P0 = 0XFE;//1111 1110while(1);}

(2)例程2:数码管的8个段依次点亮(其他保持熄灭)

//头文件声明区域
#include <STC15F2K60S2.H>
#include<intrins.h>
//变量声明区域
unsigned char SEG = 0;//函数定义区域
void Delay(unsigned int time)		//@11.0592MHz
{unsigned char i, j;while(time--){_nop_();i = 2;j = 199;do{while (--j);} while (--i);}}}
void SEG_Left(void)
{for(SEG = 0;SEG < 8;SEG++){P0 = ~(0x01<<i);Delay(500);}}//程序主体
void main()
{P2 = 0XA0;P0 = OX00;P2 = 0X80;P0 = 0XFF;//初始化程序P2 = 0XC0;P0 = 0X01;P2 = 0XFF;P0 = 0XFF;//打开第一个数码管程序while(1){SEG_Left();}}

(3)例程3:数码管显示某一个数值。(本例以点亮8段数码管显示数组“1”为例)

//头文件声明区域
#include <STC15F2K60S2.H>//程序主体
void main()
{P2 = 0XA0;P0 = OX00;P2 = 0X80;P0 = 0XFF;//初始化程序P2 = 0XC0;P0 = 0X01;P2 = 0XFF;P0 = 0XFF;//打开第一个数码管程序P0 = 0XF9;while(1);}

(4)例程4:数码管依次显示0-9、-、全部熄灭,显示间隔为500MS;

#include <STC15F2K60S2.H>void main()
{P2 = 0XA0;P0 = OX00;P2 = 0X80;P0 = 0XFF;//初始化程序P2 = 0XC0;P0 = 0X01;P2 = 0XFF;P0 = 0XFF;//打开第一个数码管程序while(1){P0 = 0XC0; Delay(500);//0P0 = 0XF9; Delay(500);//1P0 = 0XA4; Delay(500);//2P0 = 0XB0; Delay(500);//3P0 = 0X99; Delay(500);//4P0 = 0X92; Delay(500);//5P0 = 0X82; Delay(500);//6P0 = 0XF8; Delay(500);//7P0 = 0X80; Delay(500);//8P0 = 0X90; Delay(500);//9P0 = 0XBF; Delay(500);//-P0 = 0XFF; Delay(500);//全部熄灭}}

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

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

相关文章

vue、thinkphp实现腾讯云对象存储COS图片上传

环境&#xff1a; thinkphp6 vue2 vant2.12 composer安装qcloud-sts-sdk composer require qcloud_sts/qcloud-sts-sdk获取COS临时id、key的sts接口 <?php declare (strict_types 1);namespace app\index\controller; use QCloud\COSSTS\Sts;class CosController {//h…

如何为PostgreSQL设置自增主键?

在 PostgreSQL 中&#xff0c;自增主键通常是通过使用 SERIAL 类型或在新版本中使用 IDENTITY 列来实现的。 1. 使用 SERIAL 类型 SERIAL 是一个自动增加的整数&#xff0c;常用于主键。当插入新的行时&#xff0c;PostgreSQL 会自动为这个列生成一个新的值。   例如 CREAT…

PYQT5-自定义事件

from PyQt5.QtCore import QEvent, QObject from PyQt5.QtWidgets import QApplication import sys# 自定义事件类 class CustomEvent(QEvent):# PYQT5 预留给用户自定义事件类型的起点为 QEvent.User1000custom_event_type QEvent.registerEventType()# 也可以这样写# custom…

2024.2.22

P1162 #include<map> #include<vector> #include<iostream> #include<math.h> #include<algorithm> #include<string> using namespace std; const int N 1020; int n; int g[N][N];//标记数组 int a[N][N];//储存数组 int dx[] { -1…

webstorm光标变成方块解决办法_webstorm光标变粗不能换行

webstorms光标变了 键盘上的insert是切换的快捷键&#xff0c;敲insert就可以来回切换了

回顾 | Java面向对象 多态篇

多态是面向对象编程中的一个重要概念&#xff0c;它允许不同的对象对同一消息做出不同的响应。 通过多态&#xff0c;可以通过父类或接口定义的引用变量来操作子类或实现类的对象&#xff0c;从而实现同一方法在不同对象上的不同行为。 在Java中&#xff0c;多态性主要通过继…

双通道并行网络,想用哪个网络用哪个,MATLAB代码

本期可谓是宝藏篇&#xff01;学会本期的思想&#xff0c;帮助你分分钟找到创新点&#xff0c;且不与别人重复&#xff01; 本期采用MATLAB代码&#xff0c;实现一种“基于格拉姆角场与并行CNN的故障诊断方法”。该方法的具体实现可以参考文献&#xff1a; [1]李宗源,陈谦,钱…

React native更改包名后,启动app的activity包名不生效问题

这篇文章本不算记录的&#xff0c;因为实际开发中&#xff0c;类似这种小问题会有很多很多&#xff0c;因为导致问题的原因千奇百怪&#xff0c;解决方案也不尽相同&#xff0c;所以也都没有记录。 但今天看到我10年写的问题解决小文章&#xff0c;被网友收藏了&#xff0c; 感…

普中51单片机学习(EEPROM)

EEPROM IIC串行总线的组成及工作原理 I2C总线的数据传送 数据位的有效性规定 I2C总线进行数据传送时&#xff0c;时钟信号为高电平期间&#xff0c;数据线上的数据必须保持稳定&#xff0c;只有在时钟线上的信号为低电平期间&#xff0c;数据线上的高电平或低电平状态才允许…

分享WebGL物体三维建模

界面效果 代码结构 模型素材类似CT (Computed Tomography)&#xff0c;即电子计算机断层扫描&#xff0c;它是利用精确准直的X线束、γ射线、超声波等&#xff0c;与灵敏度极高的探测器一同围绕物体的某一部位作一个接一个的断面扫描。 坐标系统 渲染流程 渲染流程是个将之前准…

Sora:OpenAI引领AI视频新时代

Sora - 探索AI视频模型的无限可能 随着人工智能技术的飞速发展&#xff0c;AI视频模型已成为科技领域的新热点。而在这个浪潮中&#xff0c;OpenAI推出的首个AI视频模型Sora&#xff0c;以其卓越的性能和前瞻性的技术&#xff0c;引领着AI视频领域的创新发展。让我们将一起探讨…

C++(12) 模板类、模板继承(严格模式和自由模式)

文章目录 模版类1. 模版类2. 模版参数限制3. 模版继承3.1 严格模式3.2 自由模式 4. 模版类的模版函数5. 返回值类型带有模版 模版类 1. 模版类 #include <iostream>using namespace std;/* 当前 Person 类型&#xff0c;声明了连个模版分别对应NameType 模版类型&#…

C++ array容器用法详解

array 容器是 C++ 11 标准中新增的序列容器,简单地理解,它就是在 C++ 普通数组的基础上,添加了一些成员函数和全局函数。在使用上,它比普通数组更安全(原因后续会讲),且效率并没有因此变差。 和其它容器不同,array 容器的大小是固定的,无法动态的扩展或收缩,这也就意…

【SpringCloud】使用 Spring Cloud Alibaba 之 Sentinel 实现微服务的限流、降级、熔断

目录 一、Sentinel 介绍1.1 什么是 Sentinel1.2 Sentinel 特性1.3 限流、降级与熔断的区别 二、实战演示2.1 下载启动 Sentinel 控制台2.2 后端微服务接入 Sentinel 控制台2.2.1 引入 Sentinel 依赖2.2.2 添加 Sentinel 连接配置 2.3 使用 Sentinel 进行流控&#xff08;含限流…

SLAM ORB-SLAM2(19)特征点三角化

SLAM ORB-SLAM2(19)特征点三角化 1. 前言2. 初始化参数3. 计算投影矩阵4. 恢复三维点4.1. 计算推导4.2. Triangulate5. 检查三维点5.1. 检查三维点的深度值和视差角5.2. 检查空间点的重投影误差6. 最后处理1. 前言 在 《SLAM ORB-SLAM2(12)估算运动并初始地图点》 中了解到…

如何将cocos2d-x js打包部署到ios上 Mac M1系统

项目环境 cocos2d-x 3.13 xcode 12 mac m1 big sur 先找到你的项目 使用xcode软件打开上面这个文件 打开后应该是这个样子 执行编译运行就好了 可能会碰到的错误 在xcode11版本以上都会有这个错误&#xff0c;这是因为iOS11废弃了system。 将上面代码修改为 #if (CC_TARGE…

Java 面向对象进阶 16 接口的细节:成员特点和接口的各种关系(黑马)

成员变量默认修饰符是public static final的原因是&#xff1a; Java中接口中成员变量默认修饰符是public static final的原因是为了确保接口的成员变量都是公共的、静态的和不可修改的。 - public修饰符确保了接口的成员变量可以在任何地方被访问到。 - static修饰符使得接口…

vue-利用属性(v-if)控制表单(el-form-item)显示/隐藏

表单控制属性 v-if 示例&#xff1a; 通过switch组件作为开关&#xff0c;控制表单的显示与隐藏 <el-form-item label"创建数据集"><el-switch v-model"selectFormVisible"></el-switch></el-form-item><el-form-item label&…

Redis篇----第七篇

系列文章目录 文章目录 系列文章目录前言一、Redis 的回收策略(淘汰策略)?二、为什么 edis 需要把所有数据放到内存中?三、Redis 的同步机制了解么?四、Pipeline 有什么好处,为什么要用 pipeline?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍…

crontab history查看命令的执行时间

crontab crontab学习网站&#xff08;19. crontab 定时任务 — Linux Tools Quick Tutorial&#xff09; 例子 今天实际工作里用到的&#xff08;已经进行了防信息泄露处理 比如我现在希望每周三上午10:00之行一个php脚本 --gpt生成 00 10 * * 3 cd /home/user/project/r…