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

我们就不讲底层原理了,直接看,我们可以看到板子上有 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,不按是1if (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;//然后每次乘以2LEDNum=LEDNum*2;}}}
}

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

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

  1. 按键控制LED定时点亮c语言,单片机定时中断循环点亮LED灯,我有个51单片机的实验,要求51单片机的P1口外接发光二极管依。...

    网友问答: #include #include #define uchar unsigned char#define uint unsigned intsbit ds=P2^2;sbit dula=P ...

  2. STC89C52单片机 点亮LED灯

    点亮LED灯 一.什么是LED LED全称为半导体发光二极管,采用半导体材料制成的,以直接将电能转化为光能,电号转换成光信号的发光器件:其特点是功耗低.高亮度.色彩艳丽.坑振动.寿命长(正常发光8-1 ...

  3. 51单片机点亮LED灯以及实现2盏LED灯的交替闪烁

    点亮LED灯,根据单片机原理图 将LED灯1和LED灯2介入单片机的口设为低电平即可 代码如下: #include "reg52.h" sbit led1= P3^7; void ...

  4. 51单片机点亮LED和使用定时器中断控制蜂鸣器发声

      初学51单片机第一个实验一般都是以点亮LED灯开始,以下是使用Proteus仿真软件的实验效果.   实验需要仿真仪器:   示波器.LED.电压表.蜂鸣器.AT89C51 实验电路图: 实验代码 ...

  5. 51单片机,点亮LED灯和闪烁

    1.关键字sfr与sbit的区别 sfr是定义寄存器的字节地址,sbit是定义可位寻址的位地址 例如:sfr P1 =0x90; sbit A = P1^0 sbit B = P1^1; 2. 单片机 ...

  6. 51单片机--点亮LED灯和流水灯

    文章目录 前言 LED模块的原理 点亮一个LED灯 LED灯的闪烁 LED流水灯 前言 大家好,这里是诡异森林.我使用的是普中科技的A2的51开发板,适合新手入门.用到的应用是Keil5和Stc-is ...

  7. 单片机--点亮LED灯

    目录 1.LED是什么 2. 点亮LED 2.1 点亮P0.0 2.2 实现流水灯 2.3 同时点亮和熄灭D1~D8 2.4 花式流水灯 1.LED是什么 LED是发光二极管,是一种半导体固体发光器件 ...

  8. 2021-08-29国信长天单片机点亮LED灯

    题目:单元训练01:LED指示灯的基本控制,首次让8路LED指示灯闪烁3遍然后熄灭,接着依次点亮LED指示灯,最后依次熄灭指示灯,程序循环实现上述功能. 需使用到: #include"reg ...

  9. 51单片机led灯闪烁程序C语言,51单片机控制led灯闪烁程序

    Keil 写程序的过程,建立工程-->保存工程-->建立文件-->添加文件到工程-->编写程序-->编译-->下载程序. #include sbit LED = P ...

最新文章

  1. 尼克的任务 dp 洛谷1280
  2. SQL Server报“GUID应包含带4个短划线的32位数”
  3. java标识符与关键字_4、Java标识符和关键字
  4. 1027. Colors in Mars
  5. 什么是现代通用计算机的轴型,大学计算机基础(版)各章节习题+答案.doc
  6. XML内部DTD约束 Day24
  7. win7升级win10正式版_win7告退在即,如何升级到win10?
  8. Java十六进制浮点文字
  9. check GPU mem size on condor
  10. 浅析微信支付:1前篇大纲
  11. Mac下载配置aria2和baidudl
  12. Git 本地分支关联远程分支
  13. dex2jar java 1.8_dex2jar最新版下载-dex2jar下载 2.0官方版--pc6下载站
  14. [每日一题]128:四则运算(小米OJ)表达式求值
  15. Ps的一些小知识,还有快捷键
  16. 高等数学学习笔记——第七十六讲——直角坐标系下二重积分的计算
  17. 回顾一年的IT学习历程与大学生活
  18. 解决Docker镜像缺少字体的问题
  19. 在线生成安卓APP图标
  20. STM32F4开发板硬件平台简介

热门文章

  1. 【虚幻引擎】UE4 Spline(样条线)
  2. java版企业电子招投标系统源代码之了解电子招标投标全流程
  3. python 安装matplotlib error:could not find a version that satisfies the requirement xxx
  4. FFplay暂停分析
  5. PostgreSQL pg中 lpad函数使用
  6. 北理工嵩天Python语言程序设计笔记(8 文件和数据格式化)
  7. python爬取B站up主全部视频封面
  8. 湖南大学数字电路与逻辑设计实验(含CPU设计)
  9. Instagram 爱好者必备:如何使用Inscarry浏览器扩展插件批量下载博主内容(照片视频)
  10. 灵魂拷问!Linux 命令 su 和 sudo 的区别?