如何使用单片机点亮LED灯,并使用按键控制[51单片机]

news2024/11/29 4:00:18

首先先看一下我的板子,如果我们板子不相同,可能操作也不太相同

我们就不讲底层原理了,直接看,我们可以看到板子上有 8个LED灯

 

那这个8个LED用什么来控制呢,我们先看底层的线路图,所有的LEDD都连接到了P2带后缀的接口上,那么只需要操作这几个接口的高低电频,就可以让他亮起来,0是亮1是不亮

 而这几个接口对应着二进制数字,比如我输入11111110,注意这里是8位数字,对应着板子上的8个灯,只有最后一位是0,那么就只有最后一位会亮,但是板子他不识别2进制代码,我们要转换为16进制代码

 例如就刚刚的11111110,转换为2进制就是FE,因为F是1111,E是1110,两个加起来就对了

上代码

#include <REGX52.H>
void main(){
	
		//我是重复执行
		while(1){
				//我是注释,0x代表他是16进制
				P2=0xFE;
					
	}
}

 结果:

接下来我们需要用按键来控制,那其实按键也是靠正低电平来区分

按键模块

 

我们可以看见按键模块是连接在p3.多少的位置,那如果你要控制p31的按键那么就要去找p3.1,要控制p32的按键,就要去找p3.2

 那接下来我们来控制灯光,我们还要一种新的办法来控制灯,不用一直写二进制来找灯的位置,而是通过选中某个灯来决定,还是这张图,例如我们要控制p20的灯,那么就去单片机核心去找他连接的位置,我们可以看见p20连接的是p2.0,那么我们就可以对他进行控制

上代码:

这段代码很简单,就是按下的时候就亮,不按就不亮。

#include <REGX52.H>
void main(){
	
		while(1){
            //判断是否被按下,按下是0,不按是1
			if (P3_1==0){
					
			    //如果按下就让他亮
				P2_0=0;
			}else{//否则,就等于是1,就不亮

			    P2_0=1;
			}
				
					
	}
}

接下来我们要通过按键来控制,例如按下一次我们依次让灯亮起来,那其实按照我们之前给他设定二进制的值的时候,他的数值就是,11111110,11111101,这样依次往前变化,他就能实现了,关键我们要怎么去处理这件事情

>>> int('00000001',2)
1
>>> int('00000010',2)
2
>>>  int('00000100',2)
 
SyntaxError: unexpected indent
>>> int('00000100',2)
4
>>> int('00001000',2)
8
>>> int('00010000',2)
16

可以看到这个代码,2进制的数字是不是也每次向前动了一位,不过动的是1,但是1是不亮啊,0才是亮,所以最后我们可以对他们进行取反,0取反就是1,所以00000001,取反就是11111110,那么就可以完成了,再看他们的十进制数字的规律,每次都是乘以2,那么我们是不是可以用十进制的数字来解决这道题,(这里会有些绕,需要大家理解,或者直接看代码)

#include <REGX52.H>
#include <stdio.h>
void Delay1ms(unsigned int xms)     //这是一个延时器,不用管他,每次调用延时
{
    unsigned char i, j;
    while(xms){
        i = 11;
        j = 190;
        do
        {
            while (--j);
        } while (--i);
        xms--;
    }
    
}


void main(){
    unsigned char LEDNum=1;//设置一个变量
    
    {
        while(1){
            //判断是否按下
            if (P3_1==0){
                //延时2o毫秒
                Delay1ms(20);
                

                while(P3_1==0);
                Delay1ms(20);
                
                //重要看这里,我们将值取反
                P2=~LEDNum;
                //然后每次乘以2
                LEDNum=LEDNum*2;
                
            }
            
        }
    }
}

这样我们每次按下按键就会依次点亮

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

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

相关文章

云原生技术中的容器技术有哪些?

文章目录 云原生技术中的容器技术有哪些1、云原生的含义2、容器的含义3、云原生的技术的基石&#xff1a;容器技术4、容器技术有哪些? 结语 云原生技术中的容器技术有哪些 在现今的安全行业中云原生安全技术中的容器安全技术有哪些呢&#xff0c;很多用户都不知道具体的含义以…

Linux程序设计之UDP通信

1.UDP通信是不可靠的、无连接的通信&#xff0c;客户端只需要服务器端的地址信息即可与之进行通信。UDP通信的基本流程如下&#xff1a; 2.利用UDP实现服务器端与客户端的通信如下&#xff1a; /*UDP通信*/ //服务端#include <stdio.h> #include <string.h> #incl…

低造价形状记忆合金相变温度DSC热分析替代技术:帕尔贴热电装置和电阻温度测量

摘要&#xff1a;形状记忆合金&#xff08;SMA&#xff09;是一种先进的金属材料&#xff0c;其物理和机械性能本质上依赖于温度。为了快速和低成本的实现SMA相变温度和热滞后性能的测试表征&#xff0c;基于更灵敏的电阻温度依赖关系&#xff0c;本文提出了采用帕尔贴TEC加热制…

论文学习笔记:ViT Vision Transformer An Image is worth 16X16 words

论文阅读&#xff1a;ViT Vision Transformer An Image is worth 16X16 words 今天介绍的是 Transformer 在视觉领域的一篇非常重要的论文&#xff0c;Vision Transformer&#xff0c;这篇文章发表在 2021 ICLR 的会议上。长久以来 CNN 一直是 CV 领域最主流的模型&#xff0c…

从零开始:开发一款应用程序的完整流程技巧

在数字化快速发展的现在&#xff0c;开发一款应用程序已经不是一件困难的事情。低代码应用开发平台的诞生更是让应用开发变成一项人人都能快速掌握的技能。之前&#xff0c;我们使用Java、C语言等传统的语言技术进行应用开发&#xff0c;来满足企业的业务应用需求。但是&#x…

rm / -rf指令的作用是?

学习Linux 指令&#xff0c;它是操作系统的前端&#xff0c;学好这部分内容一方面可以帮助你应对工作场景&#xff0c;另一方面可以让你在学习操作系统底层知识前&#xff0c;对 Linux 有一个大概的了解。 学习 Linux 指令之前&#xff0c;先来说一下什么是 Shell&#xff1f;S…

使用FFMPEG加载外挂字幕小记

ffmpeg版本&#xff1a; FFMEPEG 4.4 继上一篇简易播放器实现后&#xff0c;优化过程中&#xff0c;加载外挂字幕小记的过程和遇到的坑记录如下&#xff1a; 视频字幕分为三种。 内嵌字幕&#xff0c;字幕与视频图像合二为一&#xff0c;成为视频帧的一部分。 内封字幕&…

Python浪漫520表白代码

目录 前言 表白界面 跳动的爱心 漂浮的爱心 满屏表白代码 前言 520是每年的5月20日&#xff0c;因数字“520”与“我爱你”发音相似而被许多年轻人用作表达爱意的节日。这个节日起源于中国互联网文化&#xff0c;逐渐传递到其他国家和地区。在这一天&#xff0c;情侣们通…

C++:深入理解C++11新特性:Chapter3:左值和右值

Chapter3&#xff1a;左值和右值 1. 将右值绑定到 左值2. 将右值绑定到 常量左值引用3. 将右值绑定到右值引用总结&#xff1a;5. 左值&#xff0c;右值和右值引用6. 引用类型可以引用的值 在C语言中&#xff0c;我们常常会提起左值&#xff08;lvalue&#xff09;,右值&#x…

数组--part 5--螺旋矩阵(力扣59/54)(剑指offer 29)

文章目录 基本算法思想leetcode 59 螺旋矩阵 IIleetcode 54 螺旋矩阵剑指Offer 29 顺时针打印矩阵 基本算法思想 建议先去把题目看了&#xff0c;再来思考相关的代码。 错误的想法&#xff1a;实际上这种题型并不存在算法&#xff0c;只涉及到模拟&#xff0c;但是模拟难度并…

【51单片机】外部中断

&#x1f38a;专栏【51单片机】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【Love Story】 &#x1f970;大一同学小吉&#xff0c;欢迎并且感谢大家指出我的问题&#x1f970; 目录 &#x1f354;原理 &#x1f354;注意管…

未来的数字签名方案:Dilithium、FALCON 和 SPHINCS+

1. 引言 当前的数字签名方案主要有&#xff1a; RSAECDSAEdDSA&#xff1a;已废弃DSA&#xff0c;将EdDSA纳入FIPS 186。 这些数字签名方案都不可抗量子攻击。为此&#xff0c;需要新的量子强健的签名方案&#xff0c;NIST引入了3种新的PQC数字签名标准化方案&#xff1a; …

软考A计划-真题-分类精讲汇总-第八章(面向对象)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…

【CSS基础】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 一、CSS是什么&#xff1f; 语法规范 引入方…

基于matlab使用主动声纳系统进行水下目标检测

一、前言 此示例演示如何模拟具有两个目标的主动单基地声纳方案。声纳系统由各向同性投影仪阵列和单个水听器元件组成。投影仪阵列呈球形。反向散射信号由水听器接收。接收到的信号包括直接和多路径贡献。 二、水下环境 在浅水环境中&#xff0c;声源和目标之间存在多个传播路径…

网络工程师常用命令排行榜,Ping就在这一行

大家好&#xff0c;我是老杨。 如果问你&#xff0c;你在日常工作中用的最频繁的命令是哪个&#xff0c;你下意识的第一反应是什么。 年前&#xff0c;我做了个不完全统计&#xff0c;大概有100多位粉丝参与的问卷调查&#xff0c; 调查每一位网工在解决网络故障时使用最多的…

[PCIE703]FPGA实时处理器-XCKU060+ARM(华为海思视频处理器-HI3531DV200)高性能综合视频图像处理平台设计资料及原理图分享

板卡概述 PCIE703是自主研制的一款基于PCIE总线架构的高性能综合视频图像处理平台&#xff0c;该平台采用Xilinx的高性能Kintex UltraScale系列FPGA加上华为海思的高性能视频处理器来实现。 华为海思的HI3531DV200是一款集成了ARM A53四核处理器性能强大的神经网络引擎&#x…

基于matlab编程的线性规划整数解问题求解

背景&#xff1a; 自己读研期间曾经用matlab做过一些小项目和实验&#xff0c;自己的毕业论文实验仿真也是用的matlab&#xff0c;最近打算更换电脑&#xff0c;在翻阅电脑磁盘的时候找到了一些和matlab相关的代码和文档&#xff0c;简单整理和分享一下。 说明&#xff1a; …

Dubbo——微服务框架(单体式->分布式->微服务)

是什么&#xff1f; Dubbo是阿里巴巴开源的基于Java的高性能RPC&#xff08;一种远程调用&#xff09;分布式服务框架&#xff0c;致力于提供高性能和透明化的RPC远程服务调用方案&#xff0c;以及SOA服务治理方案&#xff0c;它提供了三大核心能力&#xff1a;面向接口的远程…

别让你的云端“瘫痪”——教你如何优化云平台性能测试

目录 引言 目的 测试指标 系统性能指标 资源指标 中间件指标 数据库指标 稳定性指标 批量处理指标 可扩展性指标 可靠性指标 性能测试的过程 测试计划 性能测试项目检测与控制 测试分析 测试设计 测试执行 测试完成 性能分析 性能分析的前提 性能分析的流…