标题: 51单片机通过按键控制LED灯闪烁和蜂鸣器响应 [打印本页]

作者: 文西与不羁    时间: 2021-6-6 12:46
标题: 51单片机通过按键控制LED灯闪烁和蜂鸣器响应
学完了LED灯闪烁和蜂鸣器,想弄一个通过一个按键控制LED灯闪烁和蜂鸣器响的装置,简单的做一下类似于警车那个灯一样的,就是当按键按下的次数为单数时,LED灯进行闪烁和蜂鸣器进行间接一直响应,当按键按下的次数为双数时,LED灯和蜂鸣器停止工作。之前进行实验的时候,自己有弄过两个开关,一个控制蜂鸣器,一个控制LED灯,;弄的代码只能驱动蜂鸣器响和停,LED灯的灭和亮,不能进行闪烁,求指点
作者: YANGYANG999    时间: 2021-6-6 14:01
你选择的条件选完了吗?亮灭和闪烁可以分成三个方面的条件
作者: xuyaqi    时间: 2021-6-6 14:02
一步步来,先实现能让LED灯闪烁,再加别的功能。
作者: 文西与不羁    时间: 2021-6-6 14:07
我已实现LED灯的闪烁,现在的下一步是想按键控制LED灯闪烁
作者: 老董    时间: 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;
                                         }
                                         }

                       
                                }
                        }
                       
                }
        }
        }
}




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1