找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机通过按键控制LED灯闪烁和蜂鸣器响应

[复制链接]
跳转到指定楼层
楼主
ID:930345 发表于 2021-6-6 12:46 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
学完了LED灯闪烁和蜂鸣器,想弄一个通过一个按键控制LED灯闪烁和蜂鸣器响的装置,简单的做一下类似于警车那个灯一样的,就是当按键按下的次数为单数时,LED灯进行闪烁和蜂鸣器进行间接一直响应,当按键按下的次数为双数时,LED灯和蜂鸣器停止工作。之前进行实验的时候,自己有弄过两个开关,一个控制蜂鸣器,一个控制LED灯,;弄的代码只能驱动蜂鸣器响和停,LED灯的灭和亮,不能进行闪烁,求指点
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:933720 发表于 2021-6-6 14:01 | 只看该作者
你选择的条件选完了吗?亮灭和闪烁可以分成三个方面的条件
回复

使用道具 举报

板凳
ID:94031 发表于 2021-6-6 14:02 | 只看该作者
一步步来,先实现能让LED灯闪烁,再加别的功能。
回复

使用道具 举报

地板
ID:930345 发表于 2021-6-6 14:07 来自手机 | 只看该作者
我已实现LED灯的闪烁,现在的下一步是想按键控制LED灯闪烁
回复

使用道具 举报

5#
ID:849913 发表于 2021-6-6 22:44 | 只看该作者
已经用开发板验证过 晶振12M  喇叭是无源的 声音高低和闪烁快慢 可以调节delay()ha函数
#include <reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit k=P3^0;           //按键
sbit led=P2^7;          //灯
sbit beep=P1^5;          //警笛
u8 a=0;
u16 b=0;
void delay(u16 i)          //延时
{
        while(i--);
}

void main()

{
        while(1)
        {
        a=0;
        if(k==0)
        {
                delay(100);
                if(k==0)
                {
                   a++;
                   while(!k);
                        while(1)
                        {
                               
                                b++;
                               
                                if(b>500)
                                {
                                 led=!led;
                                 b=0;
                                 
                                }
                                if(led==0)
                                 {
                                         beep=!beep;
                                        delay(100);       
                                 }
                                 else
                                 {
                                         delay(100);       
                                 }
                               
                                if(k==0)
                                {
                                  delay(100);
                                  if(k==0)
                                  {
                                        while(!k)
                                        a++;
                                        if(a>1)
                                        {
                                          led=1;
                                          break;
                                         }
                                         }

                       
                                }
                        }
                       
                }
        }
        }
}
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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