【51单片机入门】点亮数码管

news2024/12/28 17:35:44

文章目录

  • 前言
  • 仿真图
  • 如何去绘制一个数字
  • 示例代码
    • 选择某个数码管
    • 显示某个数字
  • 示例代码
  • 总结


前言

在嵌入式系统的世界中,单片机扮演着至关重要的角色。51单片机,作为最早的微控制器之一,至今仍被广泛应用在各种设备中。本文将介绍如何使用51单片机点亮数码管,这是每个学习单片机的初学者都必须掌握的基本技能。我们将通过实际的操作步骤,让你了解如何编程控制单片机,以驱动数码管显示数字或字符。


仿真图

搜索7seg即可,MPX+数字,其中数字为数码管的个数,CA为共阳,CC为共阴,我们这里使用共阳
在这里插入图片描述
电路图:
在这里插入图片描述

如何去绘制一个数字

下面就是单个数码管的图片,我们输入对应的高低电平给对应的led就可以点亮对应的led
在这里插入图片描述

在共阳数码管中,你需要输入0给led,即可点亮他
共阴就是反一下。

示例代码

选择某个数码管

共阳数码管当该引脚为高电平时,即选中了他,比如1输入高电平,就可以操作显示0这个数码管了
在这里插入图片描述

void Choose(unsigned char index)
{
    P1 = 0;
    P1 = (1 << index);
}

显示某个数字

unsigned char num[6] = {
  0xC0, // ?? 0
  0Xf9, // ?? 1
  0Xa4, // ?? 2
  0Xb0, // ?? 3
  0X99, // ?? 4
  0X92, // ?? 5
};

void show(unsigned char digit)
{
  P2 = num[digit]; // ????????????P2??
}

这段代码是用来驱动数码管显示数字的。首先,我们来看看这个数组num

unsigned char num[6] = {
  0xC0, // ?? 0
  0Xf9, // ?? 1
  0Xa4, // ?? 2
  0Xb0, // ?? 3
  0X99, // ?? 4
  0X92, // ?? 5
};

这个数组存储了6个16进制数,每个数对应一个数字(0到5)在数码管上的显示方式。这些数是通过设置数码管的各个段(一般为7段或8段)的亮灭来显示对应的数字。

然后,我们看看show函数:

void show(unsigned char digit)
{
  P2 = num[digit];
}

这个函数接收一个数字(0到5),然后将这个数字对应的数码管显示方式(也就是num数组中对应的那个数)赋值给P2。在这里,P2是一个端口,它连接着数码管。通过改变P2的值,我们就可以改变数码管的显示。

所以,这段代码之所以能点亮数码管,是因为它通过改变连接数码管的端口P2的值,来改变数码管的显示。

如果你想添加新的字符,可以看这张图,1为开,0为关,写出对应的二进制,然后转换为16进制,放到num中即可
在这里插入图片描述

示例代码

#include <regx52.h>

typedef unsigned char u8;

unsigned char num[10] = {
  0xC0, // ?? 0
  0Xf9, // ?? 1
  0Xa4, // ?? 2
  0Xb0, // ?? 3
  0X99, // ?? 4
  0X92, // ?? 5
};


void delay(unsigned int ms) {
    unsigned int i, j;
    for(i = ms; i > 0; i--)
        for(j = 120; j > 0; j--);
}

void Choose(unsigned char index)
{
    P1 = 0;
    P1 = (1 << index);
}

// ???????
void show(unsigned char digit)
{
  P2 = num[digit]; // ????????????P2??
}

char ix = 0;

void main()
{
	P0 = 0;
	Choose(1); // ????????
	show(1); // ????1
	
	
	while(1)
	{
		
		Choose(ix);
		show(ix);
		ix++;
		ix%=6;
		delay(10);
	}
}


总结

通过本文的学习,我们了解了如何使用51单片机来点亮数码管。这个过程虽然看似简单,但它涵盖了许多重要的概念,如I/O编程,寄存器操作,以及时序控制等。掌握了这些,你就已经迈出了成为一名嵌入式系统工程师的第一步。希望你能继续探索51单片机的更多功能,并将其应用到更复杂的项目中去。记住,每个伟大的发明都始于简单的想法,而最重要的是你已经开始了这个旅程。祝你学习愉快!

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

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

相关文章

FTP 文件传输协议:概念、工作原理;上传下载操作步骤

目录 FTP 概念 工作原理 匿名用户 授权用户 FTP软件包 匿名用户上传下载实验步骤 环境配置 下载 上传 wget 授权用户上传下载步骤 root用户登录FTP步骤 监听 设置端口号范围 修改用户家目录 匿名用户 授权用户 FTP 概念 FTP&#xff08;File Transfer Prot…

如何保护应用?可快速部署的WAF服务器分享

Web应用攻击是安全事件和数据泄露的主要原因。相关统计表明&#xff0c;超过四分之三的网络犯罪直指应用及其漏洞。为保护数量日益增长的应用安全&#xff0c;Web应用防火墙(WAF)因此而生。本文则聚焦于WAF服务器&#xff0c;了解它的性能与具体的实践应用。   新加坡网络安全…

鸿蒙HarmonyOS自定义组件开发和使用

自定义组件的介绍 在开发和使用自定义组件直接&#xff0c;我们需要了解什么是自定义组件&#xff1f; 在ArkUI中&#xff0c;UI显示的内容均为组件&#xff0c;由框架直接提供的称为系统组件&#xff0c;由开发者定义的称为自定义组件。在进行 UI 界面开发时&#xff0c;通常…

scatterlist的相关概念与实例分析

概念 scatterlist scatterlist用来描述一块内存&#xff0c;sg_table一般用于将物理不同大小的物理内存链接起来&#xff0c;一次性送给DMA控制器搬运 struct scatterlist {unsigned long page_link; //指示该内存块所在的页面unsigned int offset; //指示该内存块在页面中的…

CentOS7环境下DataX的安装、使用及问题解决

DataX概述 DataX 是阿里巴巴开源的一个异构数据源离线同步工具&#xff0c;致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。 为了解决异构数据源同步问题&#xff0c;DataX将复杂的网状的同步链路变…

SAP PP学习笔记24 - 生产订单(制造指图)的创建

上面两章讲了生产订单的元素。 SAP PP学习笔记22 - 生产订单&#xff08;制造指图&#xff09;的元素1-CSDN博客 SAP PP学习笔记23 - 生产订单&#xff08;制造指图&#xff09;的元素2 - 决济规则(结算规则)-CSDN博客 这一章讲生产订单的创建。比如 - 生产订单的流程&#…

端口扫描攻击检测及防御方案

端口扫描数据一旦落入坏人之手&#xff0c;可能会成为更大规模恶意活动的一部分。因此&#xff0c;了解如何检测和防御端口扫描攻击至关重要。 端口扫描用于确定网络上的端口是否开放以接收来自其他设备的数据包&#xff0c;这有助于网络安全团队加强防御。但恶意行为者也可以…

ETAS工具导入DEXT生成Dcm及Dem模块(一)

文章目录 前言Cfggen之前的修改ECU关联DcmDslConnectionDiagnostic ProtocolDiagnostic Ecu Instance PropsCommonContributionSetEvent修改communication channel总结前言 诊断模块开发一般是先设计诊断数据库,OEM会释放对应的诊断数据库,如.odx文件或.cdd文件。如果OEM没有…

博士最多8年?硕士6年清退?教育局可没这么说!

哈哈哈&#xff0c;教育部可没说过博士最多八年&#xff0c;教育部说的是 博士研究生教育的最长修业年限&#xff0c;一般为6-8年 并且 对于“因研究未结束而无法正常毕业的博士”&#xff0c;目前高校可以按规定统筹利用科研经费、学费收入、社会捐助等资金&#xff0c;设…

使用minio搭建oss

文章目录 1.minio安装1.拉取镜像2.启动容器3.开启端口1.9090端口2.9000端口 4.访问1.网址http://:9090/ 5.创建一个桶 2.minio文件服务基本环境搭建1.创建一个文件模块2.目录结构3.配置依赖3.application.yml 配置4.编写配置类MinioConfig.java&#xff0c;构建minioClient5.Fi…

【Python】已解决:Python正确安装文字识别库EasyOCR

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决&#xff1a;Python正确安装文字识别库EasyOCR 一、分析问题背景 在使用Python进行图像处理和文字识别时&#xff0c;EasyOCR是一个流行的库&#xff0c;它基于PyTorch&…

一大波客户感谢信来袭,感谢认可!

“自美的置业数据中台项目启动以来&#xff0c;贵公司实施团队与服务运营始终以专业、敬业、合作的态度扎根用户、服务用户、与用户共成长。在此&#xff0c;我司表示由衷的感谢&#xff01;” 这是携手美的置业以来&#xff0c;我们收到的第二封客户感谢信。 △ 以上为美的置…

Vue2组件传值(通信)的方式

1.父传后代 ( 后代拿到了父的数据 ) 1. 父组件引入子组件&#xff0c;绑定数据 <List :str1‘str1’></List> 子组件通过props来接收props:{str1:{type:String,default:}}***这种方式父传子很方便&#xff0c;但是父传给孙子辈分的组件就很麻烦&#xff08;父》子…

PerplexityAI与《连线》杂志纠纷事件深度分析

引言 最近&#xff0c;PerplexityAI&#xff0c;这家人工智能搜索领域的新秀公司&#xff0c;因被《连线》杂志指控剽窃内容和捏造事实而陷入困境。这起事件引发了广泛关注&#xff0c;也揭示了AI技术在信息检索和内容生成领域面临的一系列挑战。本文将对该事件进行详细分析&a…

《昇思25天学习打卡营第5天|onereal》

ShuffleNet网络介绍 ShuffleNetV1是旷视科技提出的一种计算高效的CNN模型&#xff0c;和MobileNet, SqueezeNet等一样主要应用在移动端&#xff0c;所以模型的设计目标就是利用有限的计算资源来达到最好的模型精度。ShuffleNetV1的设计核心是引入了两种操作&#xff1a;Pointw…

KVB外汇:澳元/美元、澳元/纽元、英镑/澳元的走势如何?

摘要 本文对近期澳元/美元、澳元/纽元、英镑/澳元的技术走势进行了详细分析。通过对关键支撑位和阻力位的分析&#xff0c;我们可以更好地理解澳元在不同货币对中的表现。随着全球经济形势的变化&#xff0c;各国央行的货币政策对外汇市场的影响也愈发明显。本文旨在帮助投资者…

centos7+离线安装nginx

1.提取rpm包 链接&#xff1a;https://pan.baidu.com/s/1qLNPubAD_qt59Pzws4nnog 提取码&#xff1a;0124 --来自百度网盘超级会员V3的分享 2.安装流程 rpm -ivh nginx-1.20.1-1.el7.ngx.x86_64.rpm 在使用 nginx 时&#xff0c;通常需要掌握一些基本的命令来管理其启动、查…

新能源行业必会基础知识-----电力市场概论笔记-----经济学基础

新能源行业知识体系-------主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/139946830 目录 1. 什么是市场2. 电力市场机制设计的基本要求 1. 什么是市场 经济学定义 市场是供需双方交易并决定商品价格和产量的机制市场可…

新学期必备,录取情况统计如何制作?

暑假即将开始&#xff0c;新学期离我们又近了一步&#xff0c;老师们是不是在为如何高效统计录取情况而头疼呢&#xff1f;别担心&#xff0c;分享一个超实用的小技巧——使用易查分小程序的新建填表功能&#xff0c;让你的录取统计工作变得简单又高效&#xff01; 打开易查分小…

汇总大语言模型LLM的评测基准数据集(BenchMarks)

文章目录 0. 引言1. 知识与语言理解1.1 MMLU1.2 ARC1.3 GLUE1.4 Natural Questions1.5 LAMBADA1.5 HellaSwag1.6 MultiNLI1.7 SuperGLUE1.8 TriviaQA1.9 WinoGrande1.10 SciQ 2. 推理能力2.1 GSM8K2.2 DROP2.3 CRASS2.4 RACE2.5 BBH2.6 AGIEval2.7 BoolQ 3. 多轮开放式对话3.1 …