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();  }}

总结

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

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

相关文章

计算机毕业设计 乡村生活垃圾管理系统的设计与实现 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

Java接口与继承:构建灵活系统的基石

在Java编程语言中&#xff0c;接口&#xff08;Interface&#xff09;是一种定义方法规范的类型&#xff0c;它是一种特殊的抽象类&#xff0c;可以被类实现&#xff08;Implement&#xff09;或被其他接口继承&#xff08;Extend&#xff09;。接口是Java实现多态和模块化设计…

无人机之控制距离篇

无人机的控制距离是一个复杂且多变的概念&#xff0c;它受到多种因素的共同影响。以下是对无人机控制距离及其影响因素的详细分析&#xff1a; 一、无人机控制距离的定义 无人机控制距离指的是遥控器和接收机之间的最远传输距离。这个距离决定了无人机在操作者控制下能够飞行的…

前端实战:使用JS和Canvas实现运算图形验证码(uniapp、微信小程序同样可用)

图形验证码是网站安全防护的重要组成部分&#xff0c;能有效防止自动化脚本进行恶意操作&#xff0c;如何实现一个简单的运算图形验证码&#xff1f;本文封装了一个简单的js类&#xff0c;可以用于生成简单但安全的图形验证码。它支持自定义验证码样式&#xff0c;包括字体大小…

HarmonyOS使用LocationButton获取地理位置

LocationButton LocationKit getAddressesFromLocation方法 步骤&#xff1a; 整合 LocationButton并获取经纬度通过 LocationKit 将经纬度转为地址信息将地址信息渲染到页面上处理异常情况&#xff08;闪退&#xff09; LocationButton({ icon: LocationIconStyle.LINE…

828华为云征文|Flexus云服务器X实例部署宝塔运维面板

本次华为云Flexus云服务器X实例部署宝塔运维面板教学&#xff0c;这次是推陈出新啊 之前的云耀云服务器L实例已经很不错了&#xff0c;大力赞叹华为云的 同时感谢华为云提供优惠卷&#xff0c;只能说白嫖真是太棒了 华为云近期正在筹办华为云828企业节活动&#xff0c;90款免…

JAVA与Python谁更适合后端?

Java和Python各有优势&#xff0c;选择哪种语言应根据项目的具体需求和团队的实际情况来决定。 小型团队或原型开发&#xff1a;如果项目规模小、需求变动频繁&#xff0c;或者需要快速开发产品原型&#xff0c;建议使用Python。大型项目或企业级应用&#xff1a;如果项目规模…

java 集合详解

简介要介绍 Java 集合&#xff0c;也叫作容器&#xff0c;主要是由两大接口派生而来&#xff1a;一个是 Collection接口&#xff0c;主要用于存放单一元素&#xff1b;另一个是 Map 接口&#xff0c;主要用于存放键值对。 Collection接口有三个子主要的子接口&#xff1a;Lis…

设计模式-依赖注入

在软件开发中&#xff0c;我们经常遇到这样的情况&#xff1a; 一个类依赖于另一个类或者服务来完成某些功能。然而&#xff0c;硬编码的依赖关系会导致代码耦合度过高&#xff0c;难以测试和维护。为了解决这个问题&#xff0c;我们引入了一种设计模式——依赖注入&#xff0…

探索学习Python的最佳开发环境和编辑器

Python&#xff0c;作为目前最受欢迎的编程语言之一&#xff0c;因其简洁明了的语法和强大的功能性而备受开发者喜爱。无论是数据科学、机器学习、Web开发还是自动化脚本&#xff0c;Python都有着广泛的应用。选择合适的开发环境和编辑器对于提高编程效率和学习体验至关重要。 …

ArcGIS Pro SDK (十六)公共设施网络 1 网络管理

ArcGIS Pro SDK (十六)公共设施网络 1 网络管理 文章目录 ArcGIS Pro SDK (十六)公共设施网络 1 网络管理1 获取公共设施网络1.1 从表中获取公共设施网络1.2 从图层获取公共设施网络2 元素2.1 从元素中获取行3 编辑关联3.1 创建公共设施网络关联3.2 在单个编辑操作中创建公…

Parallels Desktop 20破解版(Mac虚拟机) v20.0.0 for Mac 最新商业版(支持M系列)

Parallels Desktop 20是一款目前功能最强大灵活度最高的虚拟机软件&#xff0c;可运行数千种 Windows 应用程序&#xff0c;如 Microsoft Office、Internet Explorer、Access、Quicken、QuickBooks、Visual Studio&#xff0c;甚至支持对图像要求较高的游戏和 CAD 项目&#xf…

渗透测试综合靶场 DC-2 通关详解

一、准备阶段 准备工具如Kali Linux&#xff0c;下载并设置DC-2靶场机。确保攻击机和靶机在同一网络段&#xff0c;通常设置为桥接模式或NAT模式。 1.1 靶机描述 Much like DC-1, DC-2 is another purposely built vulnerable lab for the purpose of gaining experience in …

python毕业设计作品:python手机数码商城系统毕业设计源代码作品和开题报告(Django框架)

博主介绍&#xff1a;黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者&#xff0c;CSDN博客专家&#xff0c;在线教育专家&#xff0c;CSDN钻石讲师&#xff1b;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程&#xff…

Web 创建设计

Web 创建设计 Web 创建设计是一个涉及多个方面的过程,它包括网站的视觉设计、用户界面设计、用户体验设计、前端开发以及后端开发等。本文将详细介绍这些方面,并探讨如何创建一个既美观又实用的网站。 1. 视觉设计 视觉设计是网站创建设计的第一步,它决定了网站的外观和感…

Explain执行计划

Explain执行计划 explain可以帮助开发人员分析SQL问题&#xff0c;explain用于显示MySQL如何使用SQL执行计划&#xff0c;可以帮助开发人员写出更优化的查询语句。使用方法就是在查询语句前加上explain关键字。 执行添加上explain关键字的语句可以看到一个列表&#xff1a; 其…

算法知识点———并查集

并查集是一种用于管理元素所属集合的数据结构&#xff0c;实现为一个森林&#xff0c;其中每棵树表示一个集合&#xff0c;树中的节点表示对应集合中的元素。并查集支持两种操作&#xff1a; 合并&#xff08;Union&#xff09;&#xff1a;合并两个元素所属集合&#xff08;合…

828华为云征文 | 华为云Flexusx与Docker技术融合,打造个性化WizNote服务

前言 华为云Flexus X实例携手Docker技术&#xff0c;创新融合打造高效个性化WizNote服务。华为云Flexus X实例的柔性算力与Docker的容器化优势相结合&#xff0c;实现资源灵活配置与性能优化&#xff0c;助力企业轻松构建稳定、高效的云端笔记平台。828华为云企业上云节特惠来袭…

如何在创建数据库时预定义表结构:以图书管理系统的例子说明

示例 假设要为一个图书管理系统创建数据库&#xff0c;可以预先定义如下的表结构&#xff1a; 书籍表&#xff08;Books&#xff09; book_id (INT, 主键)title (VARCHAR)author (VARCHAR)publication_year (YEAR) 作者表&#xff08;Authors&#xff09; author_id (INT, 主键…

项目实战 (11)---搜索进度

目录 背景 相关技术 需要解决的问题 查询进度实时展示 描述 代码 python 后端 html JS 运行效果 查询逻辑结合 描述 代码 运行效果 总结与问题 背景 通过前面1-10,视频搜索系统的前后端及视频录入功能已经可以正常使用。但是我们清楚随着视频量的增加及客户搜…