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

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

QQ登錄

只需一步,快速開始

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

如何將無源蜂鳴器加入單片機(jī)流水燈程序中?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:817205 發(fā)表于 2020-9-20 09:32 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
各位大佬好,這幾天剛開始學(xué)習(xí)單片機(jī)。學(xué)完流水燈后,有一個(gè)蜂鳴器的學(xué)習(xí)。但是用的蜂鳴器是有源的。而我自己買的開發(fā)板的無源的,導(dǎo)致一開始都不會(huì)響。后來查閱資料后,才知道無源的需要一定的變化周期才行,于是,我就寫了一個(gè)單獨(dú)的蜂鳴器單片機(jī)程序:
#include<reg52.h>
#define u16  unsigned int        
sbit beep=P1^5;
void delay(u16);
void delay(u16 i)
{
        while(i--);
}
void main()
{
        
        while(1)
        {
        beep=~beep;
        delay(60);
        }
}
現(xiàn)在是會(huì)響了,但是我要如何把這個(gè)加入到我的流水燈程序中呢。下面是我流水燈的程序:

#include<reg52.h>
#include <intrins.h>
#define uint  unsigned int
#define uchar unsigned char
uchar temp;
void delay(uint);  
void main()
{
        temp=0xfe;
        P2=temp;
        while(1)
        {
        temp=_crol_(temp,1);
        delay(180);
        P2=temp;
        }
}
void delay(uint z)
{
        uint X,Y;
         for (X=200;X>0;X--)
        {         for (Y=z;Y>0;Y--)
             {
                 };
         };
}

我自己也試著加了,但是蜂鳴器要么沒聲音了,要么就響一下,要么就是很輕,還請(qǐng)各位大佬指點(diǎn)指點(diǎn)啊


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

使用道具 舉報(bào)

沙發(fā)
ID:213173 發(fā)表于 2020-9-20 14:28 | 只看該作者
寫一個(gè)蜂鳴器函數(shù)加進(jìn)去
#include<reg52.h>
#include <intrins.h>
#define uint  unsigned int
#define uchar unsigned char
sbit beep=P1^5;
uchar temp;
void delay(uint);  
void buzzer(uint);

void main()
{
        temp=0xfe;
        P2=temp;
        buzzer(1000);
        delay(760);
        while(1)
        {
                temp=_crol_(temp,1);
                P2=temp;
                buzzer(1000);//0.24s
                delay(760);  //0.76s
        }
}
void delay(uint z)
{
        uint X,Y;
        for(X=z;X>0;X--)
                for(Y=123;Y>0;Y--);
}
void buzzer(uint x)//0.24ms半周期蜂鳴器子程序
{
        uchar t;
        while(x--)
        {       
                beep=~beep;                                        //蜂鳴器諧振頻率2048Hz
                for(t=0;t<28;t++);                //0.24ms半周期=2083Hz
        }                                                       
        beep=1;//高電平停止       
}
回復(fù)

使用道具 舉報(bào)

板凳
ID:155507 發(fā)表于 2020-9-20 17:08 | 只看該作者
給你改了一下試試。

  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #define uint  unsigned int
  4. #define uchar unsigned char
  5. #define u16  unsigned int        
  6. sbit beep=P1^5;
  7. uchar temp;
  8. void delay(uint);  

  9. void main()
  10. {
  11.         uint  Count=0;
  12.         temp=0xfe;
  13.         P2=temp;
  14.         while(1)
  15.         {       
  16.                 if(Count >= 180)
  17.                 {
  18.                         Count=0;
  19.                         temp=_crol_(temp,1);
  20.                 }
  21.                 P2=temp;
  22.                 Count++;
  23.                 beep=~beep;
  24.                 delay(1);
  25.         }
  26. }
  27. void delay(uint z)
  28. {
  29.         uint X, Y;
  30.         for (X=200;X>0;X--)
  31.         {
  32.                 for (Y=z;Y>0;Y--)
  33.                 {
  34.                 };
  35.         };
  36. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

地板
ID:817205 發(fā)表于 2020-9-21 08:33 | 只看該作者
wulin 發(fā)表于 2020-9-20 14:28
寫一個(gè)蜂鳴器函數(shù)加進(jìn)去
#include
#include

可以了,謝謝大佬。原來是有一個(gè)專門的函數(shù)呀。太謝謝了。
回復(fù)

使用道具 舉報(bào)

5#
ID:817205 發(fā)表于 2020-9-21 08:35 | 只看該作者
angmall 發(fā)表于 2020-9-20 17:08
給你改了一下試試。

試了,可以同時(shí)進(jìn)行了。太謝謝了。
回復(fù)

使用道具 舉報(bào)

6#
ID:817205 發(fā)表于 2020-9-21 09:15 | 只看該作者
wulin 發(fā)表于 2020-9-20 14:28
寫一個(gè)蜂鳴器函數(shù)加進(jìn)去
#include
#include

大佬,能給說說這一段里的時(shí)間是通過什么確定的嗎?為什么要叫0.24ms半周期。這一塊還不是很懂。
void buzzer(uint x)//0.24ms半周期蜂鳴器子程序
{
        uchar t;
        while(x--)
        {      
                beep=~beep;                                        //蜂鳴器諧振頻率2048Hz
                for(t=0;t<28;t++);                //0.24ms半周期=2083Hz
        }                                                      
        beep=1;//高電平停止      
}
回復(fù)

使用道具 舉報(bào)

7#
ID:213173 發(fā)表于 2020-9-21 11:50 | 只看該作者
51小菜鳥啊 發(fā)表于 2020-9-21 09:15
大佬,能給說說這一段里的時(shí)間是通過什么確定的嗎?為什么要叫0.24ms半周期。這一塊還不是很懂。
void b ...

這個(gè)程序就相當(dāng)于常用的延時(shí)函數(shù),只不過在while循環(huán)過程中把蜂鳴器端口不斷翻轉(zhuǎn)并延時(shí)一點(diǎn)時(shí)間。至于為什么取0.24ms半周期是因?yàn)槌R婋姶攀椒澍Q器規(guī)格書的諧振頻率2048Hz,在這個(gè)頻率附近可以獲得較佳音質(zhì)和最大聲壓(最響)。計(jì)算方式1/2048/2=0.000244140625秒。實(shí)際應(yīng)用不需要多么精確。參數(shù)x原則必須是偶數(shù),響多長(zhǎng)時(shí)間由參數(shù)x*0.24ms確定,為防止意外還是在最后寫beep=1;//高電平停止保險(xiǎn)些。
回復(fù)

使用道具 舉報(bào)

8#
ID:817205 發(fā)表于 2020-9-21 16:20 | 只看該作者
wulin 發(fā)表于 2020-9-21 11:50
這個(gè)程序就相當(dāng)于常用的延時(shí)函數(shù),只不過在while循環(huán)過程中把蜂鳴器端口不斷翻轉(zhuǎn)并延時(shí)一點(diǎn)時(shí)間。至于為 ...

恩,多謝!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91传媒在线观看 | 欧美一区2区三区4区公司 | 亚洲视频一区 | 国户精品久久久久久久久久久不卡 | 在线天堂免费中文字幕视频 | 国产伦精品一区二区三区精品视频 | 在线观看国产视频 | 免费一级毛片 | 久久中文字幕一区 | 精品福利在线 | 美女福利网站 | 欧美日韩在线一区二区 | 国产精品精品视频一区二区三区 | 成人在线免费视频 | 久久久久久国产精品 | 成人三级视频在线观看 | 看一级毛片视频 | 欧美在线一区二区三区 | av中文在线观看 | 亚洲欧美精品在线 | 精品国产91乱码一区二区三区 | 欧美在线综合 | 日韩网站在线观看 | 久久99精品久久久久蜜桃tv | 欧美一区二区三区在线视频 | 中国一级特黄真人毛片免费观看 | 国产免费a视频 | 天堂久久一区 | 免费国产视频 | 91精产国品一二三区 | 在线免费看黄 | 国产无套一区二区三区久久 | 久久国产精品一区 | av天天看 | 农夫在线精品视频免费观看 | 欧美二区在线 | 国产精品久久一区 | 亚洲精品日韩综合观看成人91 | 伊人超碰| 久久精品日产第一区二区三区 | 这里有精品 |