找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1426|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

請(qǐng)教51單片機(jī)嗡鳴器程序問(wèn)題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:680011 發(fā)表于 2021-10-11 21:16 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
我想在程序中添加嗡鳴器,也就是按一下按鍵,嗡鳴器響一聲的,這個(gè)嗡鳴器程序怎么寫(xiě)?
#include<reg52.h
#define uint unsigned int
uint i,j;
sbit led0=P1^3;
sbit k1=P1^1;
sbit k2=P3^7;
sbit k3=P3^3;
sbit LED1=P1^0;
sbit LED2=P3^6;
sbit LED3=P1^5;
void DelayUs2x(unsigned char t);//函數(shù)聲明
void DelayMs(unsigned char t);
void main()
{        
        EA=1;
        EX0=1;
        IT0=1;
        k2=1;
        k1=1;        
        k3=1;
        LED1=1;
        LED2=1;
        LED3=1;
        //led0=1;
        while(1)
        {
        
        if(!k1)         //K1按鍵指令
          DelayMs(10);
           if(!k1)
           {
                           
                 while(!k1)
                   {  

            k1=0;   
            k2=1;
                k3=1;
                LED1=0;
                LED2=1;
                LED3=1;
                 {
                   led0=0;//釋放則執(zhí)行需要的程序
                        break;
                 }
                   }
           }
                if(!k2)                 //K2按鍵指令
             DelayMs(10);
               if(!k2)
             {
                 while(!k2)
                   {
                 k2=0;
                 k1=1;        
                 k3=1;
                 LED2=0;
                 LED1=1;
                 LED3=1;
                {
                     led0=0;//釋放則執(zhí)行需要的程序
                          for(i=7000;i>0;i--)
                                for(j=220;j>0;j--);        
                     led0=1;
                      for(i=7000;i>0;i--)
                                for(j=220;j>0;j--);        
                            break;
                        }         
                   }
                 }
        if(!k3)          //K3按鍵指令
     DelayMs(10);
          if(!k3)
           {
                 while(!k3)
                   {
                k3=0;
                k1=1;   
                k2=1;
                LED3=0;
                LED1=1;
                LED2=1;
                    {
                            led0=0;//釋放則執(zhí)行需要的程序
                            for(i=7000;i>0;i--)
                                    for(j=220;j>0;j--);        
                        led0=1;
                            for(i=12000;i>0;i--)
                                    for(j=220;j>0;j--);        
                        break;
                        }                  
               }
           }
     }
}


void DelayUs2x(unsigned char t)
{   
while(--t);
}
void DelayMs(unsigned char t)
{

while(t--)
{
     //大致延時(shí)1mS
     DelayUs2x(245);
         DelayUs2x(245);
}
}
void K1(void) interrupt 0 using 1
{
        
        k1=1;
        k2=1;
        k3=1;
        LED1=1;
        LED2=1;
        LED3=1;        
    led0=1;//釋放則執(zhí)行需要的程序
                          //for(i=0;i>0;i--)  
                        //        for(j=0;j>0;j--);         
}  

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:624769 發(fā)表于 2021-10-11 23:03 | 只看該作者
先確定有源蜂鳴器,還是無(wú)源蜂鳴器,有源的話(huà),就和控制LED燈亮一下一樣的操作。
無(wú)源的話(huà),需要翻轉(zhuǎn)IO口來(lái)操作。
回復(fù)

使用道具 舉報(bào)

板凳
ID:752974 發(fā)表于 2021-10-12 16:32 | 只看該作者
市場(chǎng)上常用的蜂鳴器使用很簡(jiǎn)單,用一個(gè)三極管驅(qū)動(dòng),和LED一樣操作即可。
回復(fù)

使用道具 舉報(bào)

地板
ID:514901 發(fā)表于 2021-10-13 09:17 | 只看該作者
按照你的要求,建議使用有源蜂鳴器比較好,記得要加驅(qū)動(dòng)電路,一般是三極管,其控制方法跟LED一樣的,無(wú)源蜂鳴器就復(fù)雜一點(diǎn),需要給他一個(gè)特定頻率的脈沖才會(huì)響
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表