当前位置: 首页 > news >正文

51单片机应用开发---二进制、十六进制与单片机寄存器之间的关系(跑马灯、流水灯实例)

实现目标

1、掌握二进制与十六进制之间的转换

2、掌握单片机寄存器与二进制、十六进制之间的转换

3、掌握单片机驱动跑马灯、流水灯的原理


一、二进制与十六进制之间的转换

1、二进制

二进制(binary),  是在数学和数字电路中以2为基数的记数系统,是以2为基数代表系统的二进位制。这一系统中,通常用两个不同的符号0(代表零)和1(代表一)来表示 。

2、十六进制

十六进制(简写为hex或下标16)是一种基数为16的计数系统,是一种逢16进1的进位制。通常用数字0、1、2、3、4、5、6、7、8、9和字母A、B、C、D、E、F(a、b、c、d、e、f)表示,其中:A~F表示10~15,这些称作十六进制数字。单片机开发中用0x或0X 表示

3.常用四种进制对照表

4.二进制转十六进制的转换方法

对一个多位二进制数,可先取出其后四位,转为一位十六进制数。对剩下的部分以同样方法进行转换,直到该串只剩下最后四位,就转换完毕。若是最后串的长度不足四位且不为零时,在串的前面加‘0’补齐位数,再进行转换,如图所示: 

实例1:

二进制:   0101        0011

十六进制:  5              3

如上图二进制0101转换到十六进制后为5,为什么是5呢?这个时候就用到8421法则了,详细如下:

0    1    0    1            0   0   1    1

x     x    x    x            x   x    x    x

8     4    2   1            8   4    2   1

=    =    =    =           =   =    =   =

0    4    0     1           0    0   2   1

0+4+0+1 = 5           0+0+2+1 = 3

注:图中的”x“代表乘法的乘号

由上图计算可得知:

二进制0101转换到十六进制后为5,二进制0011转换到十六进制后为3

额外的知识点:四个二进制的数    =   一位的十六进制的数

5.十六进制转二进制的转换方法

十六进制:  B            7

二进制:   1011        0111

用到8421法则,详细如下:

         B                        7

         11                      7

     8+2+1                4+ 2+1 

1     0    1   1            0   1    1   1

由上图计算可得知:

十六进制B转换二进制 1011,十六进制7转换二进制0111

额外的知识点: 一位的十六进制的数   =  四个二进制的数 

二、单片机寄存器与二进制十六进制的关系

1.单片机P2寄存器与管脚

P2寄存器
  P27P26  P25P24  P23P22  P21P20
    1/0    1/0    1/0    1/0    1/0    1/0    1/0    1/0

2.P2操作实例

由上面原理图可知,单片机管脚输出低电平时,LED点亮。现在要让LED5-LED8 亮,LED1-LED4灭,可将要点亮的管脚置0(低电平),灭的管脚置1(高电平),如下表格所示:

  P27P26  P25P24  P23P22  P21P20
00001111

P2 = 0x0f;       //  0000   1111   0X0f    LED5-LED8 亮,LED1-LED4灭

3.跑马灯实例

3.1 管脚、寄存器、LED状态对照表

跑马灯原理分析
LED灯LED8LED7LED6LED5LED4LED3LED2LED1P2寄存器值
对应管脚  P27P26  P25P24  P23P22  P21P20
灯状态1111111100xfe
延时500ms
灯状态2111111010xfd
延时500ms
灯状态3111110110xfb
延时500ms
灯状态4111101110xf7
延时500ms
灯状态5111011110xef
延时500ms
灯状态6110111110xdf
延时500ms
灯状态7101111110xbf
延时500ms
灯状态8011111110x7f
延时500ms
灯状态9111111110xff
延时500ms

 3.2 对应程序

(1)延时函数软件自动生成

(2)跑马灯操作程序

    while(1)
    {
               P2 = 0xfe; //LED1亮
               Delay500ms();    
               P2 = 0xfd; //LED2亮
               Delay500ms();        
               P2 = 0xfb; //LED3亮
               Delay500ms();    
               P2 = 0xf7; //LED4亮
               Delay500ms();        
               P2 = 0xef; //LED5亮
               Delay500ms();    
               P2 = 0xdf; //LED6亮
               Delay500ms();        
               P2 = 0xbf; //LED7亮
               Delay500ms();    
               P2 = 0x7f; //LED8亮
               Delay500ms();  

                P2 = 0xff; //关闭8个LED
               Delay500ms();       
    }

(3)完整代码

#include <REGX52.H>sbit  LED1 = P2^0;
sbit  LED2 = P2^1;
sbit  LED3 = P2^2;
sbit  LED4 = P2^3;
sbit  LED5 = P2^4;
sbit  LED6 = P2^5;
sbit  LED7 = P2^6;
sbit  LED8 = P2^7;void Delay500ms()		//@11.0592MHz
{unsigned char i, j, k;i = 4;j = 129;k = 119;do{do{while (--k);} while (--j);} while (--i);
}void  main(){ while(1){P2 = 0xfe; //LED1亮Delay500ms();    P2 = 0xfd; //LED2亮-Delay500ms();        P2 = 0xfb; //LED3亮Delay500ms();    P2 = 0xf7; //LED4亮Delay500ms();        P2 = 0xef; //LED5亮Delay500ms();    P2 = 0xdf; //LED6亮Delay500ms();        P2 = 0xbf; //LED7亮Delay500ms();    P2 = 0x7f; //LED8亮Delay500ms();  P2 = 0xff; //关闭8个LEDDelay500ms();  }}

4.流水灯实例

4.1 管脚、寄存器、LED状态对照表

流水灯原理分析
LED灯LED8LED7LED6LED5LED4LED3LED2LED1P2寄存器值
对应管脚  P27P26  P25P24  P23P22  P21P20
灯状态1111111100xfe
延时500ms
灯状态2111111000xfc
延时500ms
灯状态3111110000xf8
延时500ms
灯状态4111100000xf0
延时500ms
灯状态5111000000xe0
延时500ms
灯状态6110000000xc0
延时500ms
灯状态7100000000x80
延时500ms
灯状态8000000000x00
延时500ms
灯状态9111111110xff
延时500ms

4.2 流水灯程序

#include <REGX52.H>sbit  LED1 = P2^0;
sbit  LED2 = P2^1;
sbit  LED3 = P2^2;
sbit  LED4 = P2^3;
sbit  LED5 = P2^4;
sbit  LED6 = P2^5;
sbit  LED7 = P2^6;
sbit  LED8 = P2^7;void Delay500ms()		//@11.0592MHz
{unsigned char i, j, k;i = 4;j = 129;k = 119;do{do{while (--k);} while (--j);} while (--i);
}void  main(){ while(1){P2 = 0xfe; //LED1亮Delay500ms();    P2 = 0xfc; //LED1亮,LED2亮-Delay500ms();        P2 = 0xf8; //LED1亮,LED2亮-,LED3亮Delay500ms();    P2 = 0xf0; //LED1亮,LED2亮-,LED3亮,LED4亮Delay500ms();        P2 = 0xe0; //LED1亮,LED2亮-,LED3亮,LED4亮,LED5亮Delay500ms();    P2 = 0xc0; //LED1亮,LED2亮-,LED3亮,LED4亮,LED5亮,LED6亮Delay500ms();        P2 = 0x80; //LED1亮,LED2亮-,LED3亮,LED4亮,LED5亮,LED6亮,LED7亮Delay500ms();    P2 = 0x00; //全亮Delay500ms();  P2 = 0xff; //关闭8个LEDDelay500ms();  }}

总结

相关文章:

51单片机应用开发---二进制、十六进制与单片机寄存器之间的关系(跑马灯、流水灯实例)

实现目标 1、掌握二进制与十六进制之间的转换 2、掌握单片机寄存器与二进制、十六进制之间的转换 3、掌握单片机驱动跑马灯、流水灯的原理 一、二进制与十六进制之间的转换 1、二进制 二进制&#xff08;binary&#xff09;&#xff0c; 是在数学和数字电路中以2为基数的…...

信息安全工程师(6)网络信息安全现状与问题

一、网络信息安全现状 威胁日益多样化&#xff1a;网络攻击手段不断翻新&#xff0c;从传统的病毒、木马、蠕虫等恶意软件&#xff0c;到勒索软件、钓鱼攻击、DDoS攻击、供应链攻击等&#xff0c;威胁形式多种多样。这些攻击不仅针对个人用户&#xff0c;还广泛影响企业、政府等…...

亚数TrustAsia亮相第十四届智慧城市与智能经济博览会,入围“2024数据要素创新应用优秀成果”!

智博会 2024年9月6日至8日&#xff0c;由宁波市人民政府、浙江省经济和信息化厅、中国信息通信研究院、中国电子信息行业联合会、中国电信、中国移动、中国联通主办的2024世界数字经济大会暨第十四届智慧城市与智能经济博览会&#xff08;以下简称“智博会”&#xff09;在宁波…...

Linux基础开发环境(git的使用)

1.账号注册 git 只是一个工具&#xff0c;要想实现便捷的代码管理&#xff0c;就需要借助第三方平台进行操作&#xff0c;当然第三平台也是基于git 开发的 github 与 gitee 代码托管平台有很多&#xff0c;这里我们首选 Github &#xff0c;理由很简单&#xff0c;全球开发者…...

VS Code终端命令执行后老是出现 __vsc_prompt_cmd_original: command not found

VS Code终端命令执行后老是出现 __vsc_prompt_cmd_original: command not found。 如下图&#xff08;vscode终端中&#xff09;&#xff1a; 解决方案&#xff1a; 1、vim ~/.bashrc 2、在~/.bashrc里面加入命令&#xff1a;unset PROMPT_COMMAND 3、source ~/.bashrc...

春天(Spring Spring Boot)

基本概念 春天 Spring 是用于开发 Java 应用程序的开源框架&#xff0c;为解决企业应用开发的复杂性而创建。 Spring 的基本设计思想是利用 IOC&#xff08;依赖注入&#xff09;和 AOP &#xff08;面向切面&#xff09;解耦应用组件&#xff0c;降低应用程序各组件之间的耦…...

Oracle EBS AP预付款行分配行剩余预付金额数据修复

系统环境 RDBMS : 12.1.0.2.0 Oracle Applications : 12.2.6 问题情况 AP预付款已验证和自动审批但是未过账已经AP付款但是又撤消付款并且未过账问题症状 AP预付款暂挂: AP预付款行金额(等于发票金额)与分配行金额不相等: 取消AP预付款提示如下:...

【鸿蒙】HarmonyOS NEXT星河入门到实战7-ArkTS语法进阶

目录 1、Class类 1.1 Class类 实例属性 1.2 Class类 构造函数 1.3 Class类 定义方法 1.4 静态属性 和 静态方法 1.5 继承 extends 和 super 关键字 1.6 instanceof 检测是否实例 1.7.修饰符(readonly、private、protected 、public) 1.7.1 readonly 1.7.2 Private …...

Java设计模式—面向对象设计原则(六) ----->合成复用原则(CRP) (完整详解,附有代码+案例)

文章目录 3.6 合成复用原则(CRP)3.6.1 概述3.6.2 案列 3.6 合成复用原则(CRP) 合成复用原则(CRP)&#xff1a;Composite Reuse Principle&#xff0c;CRP 又叫&#xff1a; 组合/聚合复用原则&#xff08;Composition/Aggregate Reuse Principle&#xff0c;CARP&#xff09;…...

java坏境搭建

目录 安装 步骤1 步骤2 步骤3 步骤4 环境变量 1、在桌面“计算机”或“此电脑”图标上右键&#xff0c;选择“属性”&#xff0c;进入控制面板的计算机系统页面后&#xff0c;点击“高级系统设置”&#xff0c;不同操作系统可能界面不同&#xff1a; 2、点击“环境变量”…...

C#中判断socket是否已断开的方法

代码如下&#xff1a; Socket s new Socket(..); if (s.Poll(-1, SelectMode.SelectRead)) {int nRead s.Receive();if (nRead 0){//socket连接已断开} }参考&#xff1a;C#中判断socket是否已断开的方法...

Python编程 - 异常处理与文件读写

目录 前言 一、异常处理 &#xff08;一&#xff09;关键字 &#xff08;二&#xff09;捕获多个异常 &#xff08;三&#xff09;自定义异常 &#xff08;四&#xff09;抛出异常 &#xff08;五&#xff09;总结 二、文件读写 &#xff08;一&#xff09;打开文件 &…...

【C++】c++ 11

目录 前言 列表初始化 std::initializer_list 右值引用和移动拷贝 左值和右值 左值引用和右值引用的区别 万能引用&#xff08;引用折叠&#xff09; 完美转发 默认成员函数控制 列表初始化 在C98中&#xff0c;标准允许使用花括号{}对数组或者结构体元素进行统一的列…...

uni-app 应用名称 跟随系统语言 改变

官方已确认BUG:&#xff1a;https://ask.dcloud.net.cn/question/164804 { "name" : "%app.name%",//这里随便写&#xff0c;配置了 locales,name 就不生效了 "appid" : "", "description" : "", "versi…...

【大模型实战篇】高质量数据过滤及一种BoostedBaggingFilter处理方法的介绍

1. 高质量数据过滤 1.1 背景介绍 数据质量对于大模型的训练至关重要&#xff0c;经常会听到一句话&#xff1a;数据决定模型的上限。模型的性能上限通常受到训练数据的质量限制。如果数据集不够好&#xff0c;模型可能无法学习到泛化的特征&#xff0c;导致其在新数据上的表…...

使用Python和Proxy302代理IP高效采集Bing图片

目录 项目背景一、项目准备环境配置 二、爬虫设计与实现爬虫设计思路目标网站分析数据获取流程 代码实现1. 初始化爬虫类&#xff08;BingImageSpider&#xff09;2. 创建存储文件夹3. 获取图像链接4. 下载图片5. 使用Proxy302代理IP6. 主运行函数 运行截图 三、总结 项目背景 …...

Python酷库之旅-第三方库Pandas(118)

目录 一、用法精讲 521、pandas.DataFrame.drop_duplicates方法 521-1、语法 521-2、参数 521-3、功能 521-4、返回值 521-5、说明 521-6、用法 521-6-1、数据准备 521-6-2、代码示例 521-6-3、结果输出 522、pandas.DataFrame.duplicated方法 522-1、语法 522-2…...

讨论人机交互研究中大语言模型的整合与伦理问题

概述 论文地址&#xff1a;https://arxiv.org/pdf/2403.19876.pdf 近年来&#xff0c;大规模语言模型发展迅速。它们给研究和教育领域带来了许多变化。这些模型也是对人机交互&#xff08;HCI&#xff09;研究过程的有力补充&#xff0c;可以分析定性和定量数据&#xff0c;再…...

OpenCV结构分析与形状描述符(23)确定一个点是否位于多边形内的函数pointPolygonTest()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 进行点在轮廓内的测试。 该函数确定点是在轮廓内、轮廓外&#xff0c;还是位于一条边上&#xff08;或与顶点重合&#xff09;。它返回正值&…...

GitLab CI_CD 从入门到实战笔记

第1章 认识GitLab CI/CD 1.3 GitLab CI/CD的几个基本概念 GitLab CI/CD由以下两部分构成。 &#xff08;1&#xff09;运行流水线的环境。它是由GitLab Runner提供的&#xff0c;这是一个由GitLab开发的开源软件包&#xff0c;要搭建GitLab CI/CD就必须安装它&#xff0c;因…...

微服务实战系列之玩转Docker(十五)

前言 博主的玩转Docker系列&#xff0c;今天正式开启第十五篇的征程&#xff01; 在过去的十四篇中&#xff0c;涉及的内容有知识、有原理、有工具、更有实践。当你打开每一篇文章时&#xff0c;均会获得一个特定主题的知识和技巧&#xff0c;助你在云原生的世界里&#xff0c…...

本地调试spark,访问kerberos鉴权的hdfs、hive

文章目录 准备连接hive的配置申请kerberos tgt在scala项目启动本地spark本地Jupyter Notebook启动pyspark 解决在wsl下进行开发、调试时&#xff0c;需要连接kerberos鉴权的hdfs、hive的问题 准备连接hive的配置 core-site.xml、hdfs-site.xml、yarn-site.xml、hive-site.xml复…...

Ubuntu 安装包下载(以20版本 阿里镜像站为例子)

Ubuntu安装包下载 上一篇文章写了一些国内常用的镜像站&#xff0c;这篇以阿里云镜像站Ubuntu20版本为例。 https://mirrors.aliyun.com/ubuntu-releases/ 1.点击自己想要下载的版本 2.点击以amd64.iso为结尾的文件&#xff0c;这个是安装文件&#xff0c;如果是桌面端&…...

会声会影Corel VideoStudio2025旗舰版最新中文旗舰版新功能讲解及使用会声会影使用教程

会声会影Corel VideoStudio2025旗舰版一款功能丰富的视频编辑软件。具有拖放式标题、转场、覆叠和滤镜&#xff0c;色彩分级、动态分屏视频和新增强的遮罩创建器&#xff0c;超越基本编辑&#xff0c;实现影院级效果。优化分屏剪辑功能&#xff0c;简化多时间轴编辑的工作流程&…...

【人工智能】OpenAI发布GPT-o1模型:推理能力的革命性突破,这将再次刷新编程领域的格局!

在人工智能领域&#xff0c;推理能力的提升一直是研究者们追求的目标。就在两天前&#xff0c;OpenAI正式发布了其首款具有推理能力的大语言模型——o1。这款模型的推出&#xff0c;不仅标志着AI技术的又一次飞跃&#xff0c;也为开发者和用户提供了全新的工具来解决复杂问题。…...

2024年TCGA基因表达数据下载(最新版)

文章目录 前言一、如何使用TCGA数据库获取公共数据?二、使用步骤1.点击Cohort Builder2.数据筛选3. Repository4.数据下载4.1 继续选择筛选条件4.2 添加cart并进入4.3 下载 总结 前言 TCGA 全称 The Cancer Genome Atlas &#xff0c;即癌症基因组图谱。它是一个大型的癌症研…...

1. 运动控制指令概要(omron 机器自动化控制器)

机器自动化控制器——第一章 运动控制指令概要 1-1 运动控制指令PLCopen运动控制用功能块运动控制指令概要▶ 运动控制指令的种类▶ 状态变化▶ 运动控制指令的启动和状态▶ 异常处理▶ 执行运动控制指令时输入变量的变更(指令重启)▶ 通过选择缓存模式执行指令多重启动▶ 通过…...

依赖注入(Dependency Injection)

依赖注入是一种设计原则&#xff0c;主要用于减少类之间的紧耦合度&#xff0c;通过将对象的选择和创建逻辑外包给一个容器来实现动态注入。 适用场景&#xff1a; 当需要将对象的生命周期管理和依赖关系外包给外部容器时&#xff08;如Spring DI容器&#xff09;。当应用程序…...

PHP环境搭建

PHP环境搭建教程 PHP 是一种流行的后端开发语言&#xff0c;用于构建动态网站和 Web 应用程序。在开发和部署 PHP 项目之前&#xff0c;您需要设置一个适当的 PHP 环境。本教程将帮助您在不同操作系统上快速搭建 PHP 环境。 1. 环境准备 1.1 操作系统 本教程将介绍在以下操作…...

小叶OJ 2716: 过河问题 ← 贪心算法

【题目来源】http://xiaoye.ac.cn/problem.php?id2716【题目描述】 有 n 个人要渡河&#xff0c;但只有一条小船&#xff0c;这条小船一次只能坐下最多两个人&#xff0c;并且只有一副船桨。每个人划船的速度不一样&#xff0c;如果两个人一起上船&#xff0c;由于重量变大&am…...