0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

控制LED灯的亮灭的2种开关检测方案

454398 来源:博客园 作者:无悔这一生。 2020-09-24 11:13 次阅读

开关检测案例一:

具体电路图如下: K1--K4闭合,控制 D1—D4 亮灭

产生的问题:

1、关于 R8 R9 R7 R10 的阻值选择问题,倘若太大的话, 比如10K 不管开关断开还是闭合,好像都没什么用,电阻上部分电流被拉低,一直为低电平,虽然仿真对,但终究有问题

倘若选择一般大,则为灰色,表示电平不确定,最后不得已选择 20Ω 电阻,电平可以确定,开关闭合,电平拉低,那么实际电路中, 电阻的取值究竟怎样呢????

2、需要掌握 按位与 的用法

参加运算的两个数据,按二进制位进行“与”运算。

运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;

即:两位同时为“1”,结果才为“1”,否则为0

例如:3&5 即 0000 0011 & 0000 0101 = 0000 0001 因此,3&5的值得1。

参考程序如下以及电路图:

#include《reg52.h》

#include《intrins.h》

#define uchar8 unsigned char

#define uint16 unsigned int

#define LED P1

/*****************************/

// 函数名称: DelayMS( )

// 函数功能: 延时

// 入口函数: 延时毫秒

// 出口函数: 无

/************************* *******************/

void DelayMs(uint16 val)

{

uint16 i,j;

for( i=0;i《val;i++)

for(j=0;j《113;j++);

}

void main()

{

while(1)

{

uchar8 temp;

LED=0xff; // P1.1—P1.3 置1 高电平 ,LED熄灭 ,高四位默认高电平,作为输入

temp=P1&0xf0; // 读 P1口 ,并且屏蔽其低四位,送入temp

temp=temp》》4; // temp内容 右移四位,也就是说 P1口高4位状态移动至低四位 ,两者状态一样

LED=temp; // temp 的数据送 P1口输出

DelayMs(1000);

}

}

开关检测案例二:

参考程序代码:(目的: 通过 K1 K2 按键的组合00 01 10 11 来控制 LED 的灯的亮灭)

#include《reg52.h》

#include《intrins.h》

#define uchar8 unsigned char

#define uint16 unsigned int

#define LED P1

void main()

{

uchar8 state;

do

{

P2=0xff; // 设置 P2口输入

state=P2; // 读 P2口的状态,送入 state

state=state&0x03; // 屏蔽 高6位

switch(state)

{

case 0 : LED=0xFE;break; // 14 0x0e 1110

case 1: LED=0xFD;break; // 13 0x0d 1101

case 2: LED=0xFB;break; // 11 0x0b 1011

case 3: LED=0xF7;break; // 7 0x07 0111

}

}while(1);

}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电阻
    +关注

    关注

    86

    文章

    5521

    浏览量

    172167
  • 电路图
    +关注

    关注

    10347

    文章

    10721

    浏览量

    531010
  • led灯
    +关注

    关注

    22

    文章

    1592

    浏览量

    108067
收藏 人收藏

    评论

    相关推荐

    开关控制led

    各位大侠,求助,我是新手,关于一个开关控制led的问题,就是我按一下
    发表于 08-04 08:54

    请问一下怎样通过检测按键状态来控制LED

    什么是按键开关?按键开关由哪几部分组成?按键开关有哪些优势?怎样通过检测按键状态来控制LED
    发表于 07-06 07:06

    gpio是如何去控制led

    gpio是如何去控制led?如何去编写其主要代码程序?
    发表于 08-04 06:28

    如何通过检测按键状态来控制LED

    如何通过检测按键状态来控制LED
    发表于 10-28 09:06

    如何实现对LED控制

    #include***it led=P2^0;void delay()//延时函数,实现对LED
    发表于 11-23 08:14

    linux控制LED的方法

    对应nLED_1,nLED_2,nLED_4,所以代码里面操作GPF4-GPF6就可以控制LED
    发表于 12-16 06:12

    如何利用Stduino通过按键控制LED

    2020/01/06 星期一作者:Astilbe问题:如何利用Stduino通过按键控制LED。我们已经学习过怎么点亮一颗
    发表于 01-05 07:52

    怎样通过中断来实现开关控制LED

    怎样通过中断来实现开关控制LED呢?其控制
    发表于 01-20 07:21

    LED和亮度控制

    LED和亮度控制
    发表于 03-28 14:24 42次下载

    如何实现对LED控制的详细资料概述

    这节课,我们学习了通过MakerPanda-ONE主控板的数字端口实现对LED控制,了解LED
    发表于 07-23 08:00 7次下载

    EXTI:通过按键中断控制led

    介绍EXTI的使用方法及基本原理并且包括实验通过按键中断控制led
    发表于 11-23 18:06 27次下载
    EXTI:通过按键中断<b class='flag-5'>控制</b><b class='flag-5'>led</b><b class='flag-5'>灯</b><b class='flag-5'>亮</b><b class='flag-5'>灭</b>

    通过matter协议控制LED

    本文档旨在演示开关通过matter协议来做到对控制。视频不涉及前期环境的搭建。
    发表于 06-14 16:44 1603次阅读
    通过matter协议<b class='flag-5'>控制</b><b class='flag-5'>LED</b><b class='flag-5'>灯</b>的<b class='flag-5'>亮</b><b class='flag-5'>灭</b>

    使用串口控制LED

    我们知道串口通信可以让单片机和电脑进行数据交换。那么是否可以用串口来控制LED呢?当然是可以的。首先需要保证串口能正常通信,然后是连接
    的头像 发表于 10-11 11:45 1.4w次阅读

    基于51单片机的PWM控制LED设计资料源程序

    基于51单片机的PWM控制LED设计资料源程序
    发表于 04-27 15:09 22次下载

    stm32按键控制led

    stm32按键控制led  在嵌入式系统中,硬件按键常常被用作开关输入,
    的头像 发表于 09-02 17:05 1.1w次阅读