找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2739|回复: 7
打印 上一主题 下一主题
收起左侧

如何用一个自锁开关实现控制小灯亮灭?

[复制链接]
跳转到指定楼层
楼主
ID:659566 发表于 2019-12-9 14:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:150776 发表于 2019-12-10 07:46 来自手机 | 只看该作者
电源→开关→灯
回复

使用道具 举报

板凳
ID:592807 发表于 2019-12-10 08:47 | 只看该作者
两个开关,一个放在干路一个放支路,支路开关触动灯亮自锁一直亮,要关闭了断开干路开关
回复

使用道具 举报

地板
ID:660636 发表于 2019-12-10 15:17 | 只看该作者
小伙子,开关串接在你灯的回路就可以了。
回复

使用道具 举报

5#
ID:7485 发表于 2019-12-10 17:52 | 只看该作者
黄youhui 发表于 2019-12-10 08:47
两个开关,一个放在干路一个放支路,支路开关触动灯亮自锁一直亮,要关闭了断开干路开关

楼主说的是“自锁开关”,这样的开关是“按一下通,再按一下断”。不需要两个开关。
回复

使用道具 举报

6#
ID:660858 发表于 2019-12-10 18:32 | 只看该作者
#include<reg52.h> //包含头文件,一般情况不需要改动, //头文件包含特殊功能寄存器的定义  sbit KEY_A=P3^3;  //定义按键输入端口   sbit LED=P2^0;// LED   /*------------------------------------------------                                         函数声明 ------------------------------------------------*/ void DelayMs(unsigned char t);  //函数声明  /*------------------------------------------------                                         主函数 ------------------------------------------------*/ void main (void) {                  KEY_A=1; //按键输入端口电平置高                  while (1)         //主循环         {                  if(!KEY_A)  //如果检测到低电平,说明按键按下                 {                         DelayMs(10); //延时去抖,一般10-20ms                         if(!KEY_A)     //再次确认按键是否按下,没有按下则退出                         {                                 while(!KEY_A);//如果确认按下按键等待按键释放,没有释放则一直等待                                 {                                         LED = ~LED;                                  }                         }                 }               /*------------------------------------------------ mS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振12M,精确延时请使用汇编 ------------------------------------------------*/ void DelayMs(unsigned char t) {                  while(t--)         {                 //大致延时1mS                 DelayUs2x(245);                 DelayUs2x(245);         } }
回复

使用道具 举报

7#
ID:660858 发表于 2019-12-10 18:35 | 只看该作者
#include<reg52.h> //包含头文件,一般情况不需要改动,
//头文件包含特殊功能寄存器的定义

sbit KEY_A=P3^3;  //定义按键输入端口
sbit LED=P2^0;// LED


/*------------------------------------------------
                                        函数声明
------------------------------------------------*/
void DelayMs(unsigned char t);  //函数声明

/*------------------------------------------------
                                        主函数
------------------------------------------------*/
void main (void)
{
        
        KEY_A=1; //按键输入端口电平置高
        while (1)         //主循环
        {

                if(!KEY_A)  //如果检测到低电平,说明按键按下
                {
                        DelayMs(10); //延时去抖,一般10-20ms
                        if(!KEY_A)     //再次确认按键是否按下,没有按下则退出
                        {
                                while(!KEY_A);//如果确认按下按键等待按键释放,没有释放则一直等待
                                {
                                        LED = ~LED;

                                }
                        }
                }

/*------------------------------------------------
mS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0~255 这里使用晶振12M,精确延时请使用汇编
------------------------------------------------*/
void DelayMs(unsigned char t)
{
        
        while(t--)
        {
                //大致延时1mS
                DelayUs2x(245);
                DelayUs2x(245);
        }
}
回复

使用道具 举报

8#
ID:621225 发表于 2019-12-11 11:13 | 只看该作者
继电器是不是老土了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表