C51单片机LED显示二进制【核心代码详解】
文章目录
- 前言
- 一、位运算——按位取反
- 二、代码部分
- 1.实例代码
- 2.对核心代码P2=~i 的解释
- 总结
前言
51单片机独立按键实现LED显示二进制【代码详解】
——按位取反
——具体实现原理
提示:以下是本篇文章正文内容,下面案例可供参考
一、位运算——按位取反
按位取反,顾名思义, 按照 位 (bit)取反
二进制只有0和1,其中1代表 真 ,0 代表 假 。例如:二进制数 1001取反后为0110
1字节=8位,这次实验使用的是P2总线 (8位)
其中这8位默认八个1 ,高电平 ,点灯是低电位 0 点亮
二进制表示:1111 1111
二、代码部分
1.实例代码
#include <REGX52.H>void Delay(unsigned int xms)
{unsigned char i, j;while(xms--){i = 2;j = 239;do{while (--j);} while (--i);}
}void main()
{unsigned char i=0;while(1){if(P3_0==0) //如果K1按键按下{Delay(20); //延时消抖while(P3_1==0); //松手检测Delay(20); //延时消抖i++; //变量自增P2=~i; //变量取反输出给LED}}
}
2.对核心代码P2=~i 的解释
首先 这是对总线的操作,总线有八位,赋值一次便可以赋值到总线的8位 ,这里的八位可以理解成八个通道
Ps:本次实验使用P2总线 即:P2_0~P2_7 ,按键使用P3_1
按一次按键 执行一次i++;实现原理看代码
假设按了八次,分别对应 i的值
取反前: 1,2,3,4,5,6,7,8
取反后:-2,-3,-4,-5,-6,-7,-8,-9
对应的二进制值(取8位):
1111 1110,1111 1101,1111 1100,1111 1011,1111 1010,1111 1001,1111 1000,1111 0111
按八次,分别将这八个值,分别赋值给P2总线
单片机就会以这样的二进制顺序点亮LED
视频:
https://live.csdn.net/v/207479
总结
理解取反运算,理解给总线赋值。
C51单片机LED显示二进制【核心代码详解】相关推荐
- MeanTeacher文章解读+算法流程+核心代码详解
MeanTeacher 本博客仅做算法流程疏导,具体细节请参见原文 原文 原文链接点这里 Github 代码 Github代码点这里 解读 论文解读点这里 算法流程 代码详解 train_transf ...
- FixMatch文章解读+算法流程+核心代码详解
FixMatch 本博客仅做算法流程疏导,具体细节请参见原文 原文 查看原文点这里 Github代码 Github代码点这里 解读 FixMatch算法抓住了半监督算法的两个重要观点,第一个是一致性正 ...
- .Net 反射脱壳机代码核心代码详解
本文主要对 <.Net 反射脱壳机核心源代码 >一文代码的原理和使用进行详细介绍. 首先介绍一下代码主要流程: 入口函数 void DumpAssembly(Assembly ass,st ...
- 【锁相环系列3】QPSK解调之Costas锁相环去小频偏(重点环路滤波器参数设置和迭代核心代码详解)
关注公号[逆向通信猿]更精彩!!! 假设在QPSK信号解调中,完成匹配滤波.定时抽样后的星座如下所示 而画出基带信号部分点的星座图如下所示 由以上两幅图可以看出,基带信号中还存在微小的频偏,导致星座图 ...
- 深入浅出吃透多线程、线程池核心原理及代码详解
一.多线程详解 1.什么是线程 线程是一个操作系统概念.操作系统负责这个线程的创建.挂起.运行.阻塞和终结操作.而操作系统创建线程.切换线程状态.终结线程都要进行CPU调度--这是一个耗费时间和系统资 ...
- 51单片机串口通信发送以及接收代码详解1
#include <reg51.h> //实验现象:单片接收电脑发送的字符串,并发回给PC端的代码.//函数声明 void uart_init(void); void uart_seng_ ...
- 51单片机串口通信发送以及接收代码详解2
#include <reg51.h> //实验现象:在电脑端没按下发送的时候,单片一直给电脑发送aaa字符串: //实验现象:在电脑端按下发送的时候,结束字符串aaa的发送代码,执行单片接 ...
- Qt开发技术:QCharts(三)QCharts样条曲线图介绍、Demo以及代码详解
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/108022984 各位读者,知识无穷而人力有穷 ...
- socket 获取回传信息_Luat系列官方教程5:Socket代码详解
文章篇幅较长,代码部分建议横屏查看,或在PC端打开本文链接.文末依然为爱学习的你准备了专属福利~ TCP和UDP除了在Lua代码声明时有一些不同,其他地方完全一样,所以下面的代码将以TCP长连接的数据 ...
最新文章
- webpack-插件机制杂记
- 解决网页ICON图标无法显示的问题
- Halcon初学者知识 【11】自定义算子和应用实例
- 电商ERP vs.传统ERP,有何不一样?
- 两点定标法_一种两点校正红外热像仪的非均匀性的模块及方法
- C语言格式控制符/占位符 - C语言零基础入门教程
- JMeter性能测试工具简介
- Spring--事务处理编程
- PHP中 如何将二位数组按某一个或多个字段值(升序/降序)排序?数字索引被重置,关联索引保持不变...
- RCP之病人信息系统开发总结(4):MVC模式之View层—透视图
- python 读grid 数据_jqGrid获取到python返回的Json数据,未能显示到页面上,为毛???...
- Simple-RNN with Keras
- Python基础知识题库(带答案)
- 视频编辑 ae pr 区别
- ug12对计算机配置要求,ug12.0对电脑配置要求
- 密码强度正则表达式 – 必须包含大写字母,小写字母和数字,至少8个字符等...
- 手机二维码应用潜力无限
- Power bi 4.19 龙卷风图
- gocv拆分颜色通道
- GhostXP_SP3电脑装机终极版V9.7 (NTFS版)
热门文章
- linux命令dstat,dstat命令
- 淫思奇巧篇 之 Save Actions 替你摆平代码格式问题
- 使用fake_useragent报错:fake_useragent.errors.FakeUserAgentError: Maximum amount of retries reached
- 【STM32学习】(26)STM32实现舵机旋转并实现超声波检测
- Java毕业设计——> JSP+Servlet+C3P0+Mysql实现的网上蛋糕店
- DO447Ansible Tower的维护和常规管理--备份和修复
- 51单片机学习笔记-7LED点阵屏
- 数字逻辑实验——138译码器
- VOLO开源:首次在ImageNet上达到87.1%
- TFS 数据库表信息