久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4979|回復(fù): 9
收起左側(cè)

單片機(jī)按鍵控制無源蜂鳴器,求老師指點(diǎn)

[復(fù)制鏈接]
ID:379175 發(fā)表于 2018-8-14 05:56 | 顯示全部樓層 |閱讀模式
這編程只是控制按鍵,按下蜂鳴器發(fā)聲,松開停止發(fā)聲。怎么能實(shí)現(xiàn)按一下發(fā)聲,再按一下停止。

#include "reg52.h"               
typedef unsigned int u16;         
typedef unsigned char u8;
sbit SPK=P1^5;
sbit k4=P3^3;
void delay(u16 i)
{
        while(i--);        
}
void anjian()
{
if(k4==0)
  {
   delay(100);
   SPK=0;
   delay(100);
   SPK=1;
  }        
else
    {
     SPK=1;
    }
}
void main()
{
while(1)
{
anjian();
}
}

回復(fù)

使用道具 舉報(bào)

ID:386027 發(fā)表于 2018-8-14 09:18 | 顯示全部樓層
#include "reg52.h"               
typedef unsigned int u16;         
typedef unsigned char u8;
sbit SPK=P1^5;
sbit k4=P3^3;
u16 a;
void delay(u16 i)
{
        while(i--);        
}
void anjian()
{
if(k4==0||a==0)
{
   delay(100);
   SPK=0;
   a=1;
  }         
if(key4==0||a==1)
{
   delay(100);
   SPK=1;
   a=0;
}
void main()
{
while(1)
{
anjian();
}
}
回復(fù)

使用道具 舉報(bào)

ID:84765 發(fā)表于 2018-8-14 09:36 | 顯示全部樓層
這編程只是控制按鍵,按下蜂鳴器發(fā)聲,松開停止發(fā)聲。怎么能實(shí)現(xiàn)按一下發(fā)聲,再按一下停止。
#include "reg52.h"               
typedef unsigned int u16;         
typedef unsigned char u8;
u16 a=0;//計(jì)數(shù)
sbit SPK=P1^5;
sbit k4=P3^3;
void delay(u16 i)
{
         while(i--);        
}
void anjian()
{
if(k4==0)
   {
   while(!k4);
   a++;
   delay(50);
   }   
    if(a==0)//計(jì)數(shù)a=0時(shí)蜂鳴器不響
     {
       SPK=1;
     }

    if(a==1)//計(jì)數(shù)a=1時(shí)蜂鳴器響
     {
    delay(100);
    SPK=0;
    delay(100);
    SPK=1;
     }

    if(a==2)//計(jì)數(shù)a=2 a賦值0 蜂鳴器不響
     {
      SPK=1;
      a=0;
     }   
}
void main()
{
while(1)
{
anjian();
}
}
回復(fù)

使用道具 舉報(bào)

ID:295874 發(fā)表于 2018-8-14 10:01 | 顯示全部樓層
增加關(guān)于按鍵次數(shù)的計(jì)數(shù)器,計(jì)數(shù)器為1,蜂鳴器發(fā)聲音,計(jì)數(shù)器為2,停止發(fā)聲。
回復(fù)

使用道具 舉報(bào)

ID:382454 發(fā)表于 2018-8-14 11:32 | 顯示全部樓層
用定時(shí)器做成方波發(fā)生器,之后編寫一個(gè)按鍵控制TR0=~TR0取反即可。
也就是按一下鍵,取反一下定時(shí)器的開啟或關(guān)閉。這不就是按一下,停止,再按一下工作么。
回復(fù)

使用道具 舉報(bào)

ID:221865 發(fā)表于 2018-8-14 20:02 | 顯示全部樓層
用一個(gè)標(biāo)志位就可以了,當(dāng)按鍵按下的時(shí)候,標(biāo)志位取反,需考慮按鍵抖動(dòng)。
回復(fù)

使用道具 舉報(bào)

ID:386397 發(fā)表于 2018-8-15 09:16 | 顯示全部樓層
在關(guān)閉蜂鳴器后,對按鍵進(jìn)行復(fù)位操作,關(guān)閉按鍵影響就可以了
回復(fù)

使用道具 舉報(bào)

ID:379175 發(fā)表于 2018-8-16 12:25 | 顯示全部樓層
zq25315513966 發(fā)表于 2018-8-14 09:18
#include "reg52.h"               
typedef unsigned int u16;         
typedef unsigned char u8;

你這是不是控制有源蜂鳴器的。
回復(fù)

使用道具 舉報(bào)

ID:274129 發(fā)表于 2018-8-16 17:26 | 顯示全部樓層
無源蜂鳴器加一個(gè)脈沖就可以了
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2018-8-16 21:02 | 顯示全部樓層
給你一個(gè)按鍵控制無源蜂鳴器驅(qū)動(dòng)程序參考
#include "reg52.h"               
typedef unsigned int u16;         
typedef unsigned char u8;
sbit Buzzer=P1^5;
sbit key=P3^3;
bit sign=0;
/*
void delay(u16 i)
{
        while(i--);        
}*/
void Timer0Init()        //250微秒@12.000MHz
{
        TMOD= 0x02;                //設(shè)置定時(shí)器模式
        TL0 = 0x06;                //設(shè)置定時(shí)初值
        TH0 = 0x06;                //設(shè)置定時(shí)重載值
        TR0 = 1;                        //定時(shí)器0開始計(jì)時(shí)
        EA=1;                                //開總中斷
        ET0=1;                        //開定時(shí)器0中斷
}

void anjian()
{
        static bit key_lock=0;//按鍵自鎖標(biāo)志
        static u8 count=0;//消抖計(jì)數(shù)變量               
        if(!key)
        {
                if((count++>=100)&&(key_lock==0))
                {
                        key_lock=1;                        //按鍵自鎖標(biāo)志置1
                        sign=~sign;                        //蜂鳴器使能標(biāo)志取反
                }
        }        
        else
        {
                key_lock=0;                                //按鍵自鎖標(biāo)志清0
                count=0;                                        //消抖計(jì)數(shù)清0
        }
}
void main()
{
        Timer0Init();
        while(1)
        {
                anjian();
        }
}
void timer0() interrupt 1
{
        if(sign==1)                //蜂鳴器使能
                Buzzer=~Buzzer;//2KHz方波
        else Buzzer=1;//蜂鳴器復(fù)位
}
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美一区二区三区在线视频 | 国产999精品久久久久久 | 免费色网址 | 日韩欧美中文字幕在线观看 | 欧洲亚洲视频 | 亚洲欧美日韩久久 | 91美女视频| 毛片免费观看 | 国产中文字幕av | 成人一区在线观看 | 欧美日韩一区精品 | 91亚洲国产成人精品一区二三 | 亚洲欧美一区二区三区情侣bbw | 一区二区三区国产精品 | 久久99深爱久久99精品 | 成人久久久久久久久 | 99热精品久久| 日本视频一区二区三区 | 欧美国产精品 | 久久精品一区二区三区四区 | 自拍偷拍精品 | 午夜精品久久久久久久久久久久久 | 欧美 日韩 国产 成人 在线 91 | 一级黄色片在线免费观看 | 亚洲欧美久久 | 91福利电影在线观看 | 黄色国产视频 | 91成人 | 日韩中文一区二区三区 | 中文字幕亚洲精品 | 欧美一二区| 欧美一级大片 | 国产农村妇女精品一二区 | 精品一区二区三区在线观看国产 | 亚洲成人免费在线观看 | 国产精品高潮呻吟久久 | 黄免费观看 | 午夜成人在线视频 | 日本不卡在线视频 | 国产精品99久久久久久久久久久久 | 国产特一级黄色片 |