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

文章目录

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


前言

在嵌入式系统的世界中,单片机扮演着至关重要的角色。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, // ?? 00Xf9, // ?? 10Xa4, // ?? 20Xb0, // ?? 30X99, // ?? 40X92, // ?? 5
};void show(unsigned char digit)
{P2 = num[digit]; // ????????????P2??
}

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

unsigned char num[6] = {0xC0, // ?? 00Xf9, // ?? 10Xa4, // ?? 20Xb0, // ?? 30X99, // ?? 40X92, // ?? 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, // ?? 00Xf9, // ?? 10Xa4, // ?? 20Xb0, // ?? 30X99, // ?? 40X92, // ?? 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); // ????1while(1){Choose(ix);show(ix);ix++;ix%=6;delay(10);}
}

总结

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

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

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

相关文章

js或ts中对象如何循环遍历获取名字和值

数组循环有多种方法&#xff0c;但是对象循环还是会遇到一些问题 分开获取key或value let names{name:kaka,age:12}获取key值代码&#xff1a; Object.keys(names).forEach(name>{console.log(name) })结果&#xff1a; 获取value值代码&#xff1a; Object.values(name…

多地高温持续“热力”爆表 约克VRF中央空调带你清凉舒爽一夏

“出门5分钟&#xff0c;流汗2小时”,夏季高温天气&#xff0c;怎一个“热”字了得&#xff1f;6月以来&#xff0c;我国多地迎来高温“炙烤”&#xff0c;全国出现40℃以上高温的范围持续增加&#xff0c;随着中央气象台高温预警持续拉响&#xff0c;人们都很纳闷&#xff1a;…

Android 大话binder通信

戳蓝字“牛晓伟”关注我哦&#xff01; 用心坚持输出易读、有趣、有深度、高质量、体系化的技术文章 由于 Android 大话binder通信(上) 和 Android 大话binder通信(下) 分为两篇阅读体验不好&#xff0c;顾合并为一篇。 本文摘要 用故事的方式把binder通信的整个过程都描述…

TFMath Caculator:一个简单的Java AWT计算器

目录 背景&#xff1a; 代码展示: 代码解析: 输出结果: 总结: 背景&#xff1a; 使用Java AWT(Abstract Window Toolkit)库创建的简单计算器应用-TFMath Calculator。这个计算器允许用户输入两个数字&#xff0c;点击号按钮后&#xff0c;计算器会计算这两个数字的和&…

计算机网络之OSI七层体系结构

目录 1.物理层 1.1物理层组成 1.2物理层功能 1.3物理层服务 1.4物理层标准 1.5物理层接口 2.数据链路层 2.1基于物理层的问题 2.2数据链路层功能 2.3数据链路层服务 2.4数据链路层协议 3.网络层 3.1基于DL层的问题 3.2网络层功能 3.3网络层服务 3.4网络层协议 …

怎么加快音频播放速度?加快音频播放器的四种方法介绍

怎么加快音频播放速度&#xff1f;许多音乐爱好者对各种类型的歌曲充满了热情&#xff0c;这些歌曲节奏轻快或者缓慢不一&#xff0c;但通常默认的播放速度都是一倍速。有时候&#xff0c;一些旋律悠扬的曲子可能听起来有些慢&#xff0c;这时候一些朋友可能想要尝试加快节奏&a…

鸿蒙开发 之 健康App案例

1.项目介绍 该项目是记录用户日常饮食情况&#xff0c;以及针对不同食物摄入营养不同会有对应的营养摄入情况和日常运动消耗情况&#xff0c;用户可以自己添加食品以及对应的热量。 1.1登陆页 1.2饮食统计页 1.3 食物列表页 2.登陆页 2.1自定义弹框 import preferences from oh…

IP地址查询和代理服务器:双重保护隐私

随着网络应用的日益普及&#xff0c;我们的个人信息和数据安全面临前所未有的挑战。在此背景下&#xff0c;IP地址查询和代理服务器成为保护个人隐私和网络安全的两大关键工具。本文将从IP地址查询的原理和应用出发&#xff0c;深入剖析代理服务器在网络隐私保护中的作用&#…

AI视频教程下载-数据分析中的提示工程:Python、Pandas、ChatGPT

Prompt Engineering for Data Analysis Python, Pandas, ChatGPT ChatGPT与Python&#xff1a;无需编程。借助ChatGPT、Python、Pandas及提示工程进行数据分析与数据可视化 "利用Python、Pandas和ChatGPT进行数据分析的提示工程"是一门开创性的课程&#xff0c;它通…

SpringBoot(二)SpringBoot多环境配置

Spring框架常用注解简单介绍 SpringMVC常用注解简单介绍 SpringBoot&#xff08;一&#xff09;创建一个简单的SpringBoot工程 SpringBoot&#xff08;二&#xff09;SpringBoot多环境配置 SpringBoot&#xff08;三&#xff09;SpringBoot整合MyBatis SpringBoot&#xff08;四…

vue-advanced-chat 聊天控件的使用

测试代码&#xff1a;https://github.com/robinfoxnan/vue-advanced-chat-test0 控件源码&#xff1a;https://github.com/advanced-chat/vue-advanced-chat 先上个效果图&#xff1a; 这个控件就是专门为聊天而设计的&#xff0c;但是也有一些不足&#xff1a; 1&#xf…

Python学习笔记26:进阶篇(十五)常见标准库使用之性能测试cProfile模块学习使用

前言 本文是根据python官方教程中标准库模块的介绍&#xff0c;自己查询资料并整理&#xff0c;编写代码示例做出的学习笔记。 根据模块知识&#xff0c;一次讲解单个或者多个模块的内容。 教程链接&#xff1a;https://docs.python.org/zh-cn/3/tutorial/index.html 本文主要…

.net core 的 winform 的 浏览器控件 WebView2

在.NET Core WinForms应用程序中&#xff0c;没有直接的“浏览器控件”&#xff0c;因为WinForms不支持像WebBrowser控件那样的功能。但是&#xff0c;你可以使用WebView2控件&#xff0c;它是一个基于Chromium的浏览器内核&#xff0c;可以在WinForms应用程序中嵌入Web内容。 …

R语言 | 使用ggplot绘制柱状图,在柱子中显示数值和显著性

原文链接&#xff1a;使用ggplot绘制柱状图&#xff0c;在柱子中显示数值和显著性 本期教程 获得本期教程示例数据&#xff0c;后台回复关键词&#xff1a;20240628。&#xff08;PS&#xff1a;在社群中&#xff0c;可获得往期和未来教程所有数据和代码&#xff09; 往期教程…

搭建ASPP:多尺度信息提取网络

文章目录 介绍代码实现 介绍 ASPP&#xff08;Atrous Spatial Pyramid Pooling&#xff09;&#xff0c;空洞空间卷积池化金字塔。简单理解就是个至尊版池化层&#xff0c;其目的与普通的池化层一致&#xff0c;尽可能地去提取特征。ASPP 的结构如下&#xff1a; 如图所示&…

十二、Yocto集成ROS2 app程序(package)

文章目录 Yocto集成ROS2 app程序1. 添加一个ros2 package应用程序2. 添加bb文件集成app应用程序 Yocto集成ROS2 app程序 本篇文章为基于raspberrypi 4B单板的yocto实战系列的第十二篇文章&#xff1a; 一、yocto 编译raspberrypi 4B并启动 二、yocto 集成ros2(基于raspberrypi…

GuLi商城-前端启动命令npm run dev

由于这里配置了dev&#xff0c;所以启动命令是npm run dev

柯桥在职学历提升|专科本科之自考本科哪些专业不考数学

一、管理类专业 这类专业综合性和理论性比较强&#xff0c;除了涉及到管理学相关的理论知识外&#xff0c;还有相应的专业知识&#xff0c;目前比较典型的专业有&#xff1a;行政管理、人力资源管理、工商管理&#xff08;现代企业管理&#xff09;、工商管理&#xff08;商务管…

高通410-linux棒子设置网络驱动

1.首先打开设备管理器 2.看到其他设备下的RNDIS&#xff0c;右键更新驱动程序 3.点击浏览我的电脑… 最后一个

Linux操作系统--软件包管理(保姆级教程)

RPM软件包的管理 大多数linux的发行版本都是某种打包系统。软件包可以用来发布应用软件&#xff0c;有时还可以发布配置文件。他们比传统结构的.tar和.gz存档文件有几个优势。如它们能让安装过程尽可能成为不可分割的原子操作。 软件包的安装程序会备份它们改动过的文件。如果…