新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)驅(qū)動(dòng)無(wú)源蜂鳴器

        51單片機(jī)驅(qū)動(dòng)無(wú)源蜂鳴器

        作者: 時(shí)間:2016-12-01 來(lái)源:網(wǎng)絡(luò) 收藏
        在學(xué)習(xí)過(guò)程中遇到如下例題:8個(gè)發(fā)光管由上至下間隔1s流動(dòng),其中每個(gè)管亮500ms,滅500ms,亮?xí)r蜂鳴器響,滅時(shí)關(guān)閉蜂鳴器,一直重復(fù)下去。
        流水燈的程序相對(duì)我個(gè)人來(lái)說(shuō)比較簡(jiǎn)單,但是蜂鳴器有些難度,正常給I/0口一個(gè)信號(hào),蜂鳴器既然不響,后經(jīng)查證是無(wú)源蜂鳴器

        無(wú)源的蜂鳴器,就要通過(guò)IO口輸出振蕩信號(hào)來(lái)驅(qū)動(dòng)蜂鳴器

        本文引用地址:http://www.104case.com/article/201612/324157.htm
        蜂鳴器簡(jiǎn)介:蜂鳴器根據(jù)結(jié)構(gòu)不同分為壓電式蜂鳴器和電磁式蜂鳴器;而兩種蜂鳴器又分為有源蜂鳴器和無(wú)源蜂鳴器,這里的源特指振蕩源;有源蜂鳴器直接加電就可以響起,無(wú)源蜂鳴器需要我們給提供振蕩源。理想的振蕩源為一定頻率的方波。
        由于系統(tǒng)采用了無(wú)源蜂鳴器,所以需要我們通過(guò)編程來(lái)控制I/0口的翻轉(zhuǎn)來(lái)產(chǎn)生一定頻率的方波信號(hào)。本文采用默認(rèn)頻率0.5KHZ的標(biāo)準(zhǔn)方波。可以算出周期T = 2ms脈寬t = 1ms,因此我們可以通過(guò)簡(jiǎn)單的延時(shí)函數(shù)延時(shí)1ms。然后控制P3.7口的電平高低產(chǎn)生0.5KHZ的方波信號(hào);
        本程序只是通過(guò)簡(jiǎn)單延時(shí)達(dá)到驅(qū)動(dòng)蜂鳴器的效果。
        #include
        sbit buzzer = P1^5;
        void delayms(unsigned int xms)//延時(shí)函數(shù),延時(shí)xms
        {
        unsigned int i , j;
        for(i = 0; i < xms; i++)
        for(j = 0; j < 110; j++);
        }
        void fengming()//蜂鳴函數(shù),脈寬t = 1ms周期T = 2ms頻率f = 0.5khz實(shí)際發(fā)現(xiàn)延時(shí)1ms的時(shí)候效果最好
        {
        buzzer = 0; //給P1.5口送低電平
        delayms(1);//延時(shí)1ms
        buzzer = 1;//給P1.5口送高電平
        delayms(1);//延時(shí)1ms
        }

        如果去掉delay(1);那么你的蜂鳴器控制端狀態(tài)大約在2us左右翻轉(zhuǎn)一次(晶振12M,12T單片機(jī)),這個(gè)時(shí)間對(duì)于驅(qū)動(dòng)電路和蜂鳴器來(lái)講都是很短的,可以通俗的理解成他們沒反應(yīng)過(guò)來(lái),還沒到最響的時(shí)候就被關(guān)掉了,加上延時(shí)之后顯然可以讓它到達(dá)峰值,所以就能聽到更響。
        void main()
        {
        while(1)
        {
        fengming();
        }
        }



        #include
        #define uint unsigned int
        #define uchar unsigned char
        sbit buzzer=P1^5;
        sbit D1=P1^0;
        void delay(uint z)//延時(shí)1ms
        {
        uint x,y;
        for(x=z;x>0;x--)
        {
        for(y=0;y<114;y++)
        {
        }
        }
        }
        fasheng() //發(fā)聲子程序
        {
        unsigned int a,x;
        for (a=0;a<456;a++)
        {
        buzzer=!buzzer;
        for (x=0;x<45;x++); //45為蜂鳴器發(fā)聲頻率
        }
        }
        void main()
        {
        while (1)
        {
        D1=0;
        fasheng();
        D1=1;
        delay(200);
        }
        }


        評(píng)論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 大理市| 汨罗市| 青川县| 广西| 兴山县| 嫩江县| 芦山县| 桓台县| 吉安县| 保靖县| 噶尔县| 察隅县| 林周县| 荔波县| 青川县| 平潭县| 肇州县| 黔西| 清苑县| 玛曲县| 奉节县| 响水县| 凤城市| 凤山市| 桂东县| 抚顺市| 龙胜| 莒南县| 镇赉县| 板桥市| 钟祥市| 华亭县| 福建省| 上林县| 徐汇区| 镇江市| 佛山市| 中江县| 壤塘县| 安乡县| 宜章县|