找回密码
 立即注册

QQ登录

只需一步,快速开始

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

请教51单片机嗡鸣器程序问题

[复制链接]
跳转到指定楼层
楼主
ID:680011 发表于 2021-10-11 21:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想在程序中添加嗡鸣器,也就是按一下按键,嗡鸣器响一声的,这个嗡鸣器程序怎么写?
#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);//函数声明
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;//释放则执行需要的程序
                        break;
                 }
                   }
           }
                if(!k2)                 //K2按键指令
             DelayMs(10);
               if(!k2)
             {
                 while(!k2)
                   {
                 k2=0;
                 k1=1;        
                 k3=1;
                 LED2=0;
                 LED1=1;
                 LED3=1;
                {
                     led0=0;//释放则执行需要的程序
                          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;//释放则执行需要的程序
                            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--)
{
     //大致延时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;//释放则执行需要的程序
                          //for(i=0;i>0;i--)  
                        //        for(j=0;j>0;j--);         
}  

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:624769 发表于 2021-10-11 23:03 | 只看该作者
先确定有源蜂鸣器,还是无源蜂鸣器,有源的话,就和控制LED灯亮一下一样的操作。
无源的话,需要翻转IO口来操作。
回复

使用道具 举报

板凳
ID:752974 发表于 2021-10-12 16:32 | 只看该作者
市场上常用的蜂鸣器使用很简单,用一个三极管驱动,和LED一样操作即可。
回复

使用道具 举报

地板
ID:514901 发表于 2021-10-13 09:17 | 只看该作者
按照你的要求,建议使用有源蜂鸣器比较好,记得要加驱动电路,一般是三极管,其控制方法跟LED一样的,无源蜂鸣器就复杂一点,需要给他一个特定频率的脉冲才会响
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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