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

QQ登錄

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

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

51單片機(jī)怎么實(shí)現(xiàn)蜂鳴器和數(shù)顯管同時(shí)工作?

  [復(fù)制鏈接]
回帖獎(jiǎng)勵(lì) 50 黑幣 回復(fù)本帖可獲得 50 黑幣獎(jiǎng)勵(lì)! 每人限 1 次(中獎(jiǎng)概率 50%)
ID:417679 發(fā)表于 2018-11-6 08:09 | 顯示全部樓層 |閱讀模式
如何用51單片機(jī)實(shí)現(xiàn)數(shù)顯管和蜂鳴器一起工作
回復(fù)

使用道具 舉報(bào)

ID:1 發(fā)表于 2018-11-7 00:57 | 顯示全部樓層

回帖獎(jiǎng)勵(lì) +50 黑幣

回復(fù)

使用道具 舉報(bào)

ID:89515 發(fā)表于 2018-11-6 09:42 | 顯示全部樓層
有源蜂鳴器還是無(wú)源蜂鳴器,只是簡(jiǎn)單的發(fā)出一種頻率嗎?一直響,還是間歇響?
回復(fù)

使用道具 舉報(bào)

ID:421526 發(fā)表于 2018-11-6 10:11 | 顯示全部樓層
將蜂鳴器使能引腳與數(shù)顯管的使能引腳一起置位就好了
回復(fù)

使用道具 舉報(bào)

ID:421569 發(fā)表于 2018-11-6 10:56 | 顯示全部樓層
數(shù)碼管與蜂鳴器連接起來(lái)
回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2018-11-6 13:03 | 顯示全部樓層
好好按排一下,輪流處理兩者,時(shí)間足夠。
回復(fù)

使用道具 舉報(bào)

ID:277550 發(fā)表于 2018-11-6 13:03 | 顯示全部樓層

如果是無(wú)源的,還有浪費(fèi)一點(diǎn)的做法,就是另外用一個(gè)MCU來(lái)發(fā)聲。
回復(fù)

使用道具 舉報(bào)

ID:386762 發(fā)表于 2018-11-6 13:55 | 顯示全部樓層
程序都可以實(shí)現(xiàn)呀
回復(fù)

使用道具 舉報(bào)

ID:354498 發(fā)表于 2018-11-6 14:39 | 顯示全部樓層
你在這指的是功率上怎么解決還是指電路怎么實(shí)現(xiàn)或者軟件怎么寫(xiě)呢?前兩者的話(huà)用三極管驅(qū)動(dòng)蜂鳴器,用鎖存器控制數(shù)顯再找相關(guān)應(yīng)用電路就很好解決,至于程序的話(huà)可以百度一下相關(guān)例程,移植組合一下就行了
回復(fù)

使用道具 舉報(bào)

ID:421165 發(fā)表于 2018-11-6 15:26 來(lái)自觸屏版 | 顯示全部樓層
引腳接好
回復(fù)

使用道具 舉報(bào)

ID:421836 發(fā)表于 2018-11-6 16:46 | 顯示全部樓層
數(shù)碼管與蜂鳴器連接起來(lái),用三極管驅(qū)動(dòng)蜂鳴器,用鎖存器控制數(shù)顯再找相關(guān)應(yīng)用電路就很好解決
回復(fù)

使用道具 舉報(bào)

ID:421836 發(fā)表于 2018-11-6 16:47 | 顯示全部樓層
蜂鳴器使能引腳與數(shù)顯管 相連接
加上程序代碼可以實(shí)現(xiàn)
回復(fù)

使用道具 舉報(bào)

ID:421859 發(fā)表于 2018-11-6 17:02 | 顯示全部樓層
使用定時(shí)器來(lái)控制蜂鳴器的開(kāi)啟和關(guān)閉
回復(fù)

使用道具 舉報(bào)

ID:421859 發(fā)表于 2018-11-6 17:03 | 顯示全部樓層
使用定時(shí)器來(lái)控制蜂鳴器的開(kāi)啟和關(guān)閉
回復(fù)

使用道具 舉報(bào)

ID:421859 發(fā)表于 2018-11-6 17:04 | 顯示全部樓層
# include "reg52.h" # define u16 unsigned int  typedef unsigned char u8; sbit k1 = P3^1;     //  位定義 k1 sbit k2 = P3^0;     //  位定義 k2 sbit k3 = P3^2;        //  位定義 k3 sbit k4 = P3^3;        //  位定義 k4 sbit beep = P1^5;    //  定義P1^5為蜂鳴器 sbit a = P2^2;     //     sbit b = P2^3; sbit c = P2^4; u8 h,m; u8 code n[]={0x79,0x3e,0x3f,0x38}; // 顯示L o v  # define smg P0     //  宏定義 數(shù)碼管 u8 p=0, q=0;    void delay(u16 i)  //  延時(shí)函數(shù) { while (i--); } void love()    //  數(shù)碼管顯示LOVE  { u8 i=100;         while (i--)   //  該循環(huán)可以跳出 即可執(zhí)行其下程序 {   for(h=0;h<=7;h+=2)   {    switch (h)           //  位選,選擇點(diǎn)亮的數(shù)碼管,    {     case 0: a=0;b=0;c=0;break; //顯示第0位     case 2: a=0;b=1;c=0;break; //    2     case 4: a=0;b=0;c=1;break; //    4     case 6: a=0;b=1;c=1;break; //    6    }       m=h/2;              smg=n[m];         //  發(fā)送段碼    delay(100);   } } }     void sound()   //  蜂鳴器響 { u8 i=100; while (i--)     // 只要不是死循環(huán)(while(1))即可 {   beep=~beep;   delay(500); } } void key()            //  判斷哪個(gè)開(kāi)關(guān)按下 { if (k1==0)  //  開(kāi) {   delay(1000);  // 消抖   if (k1==0)     {    q=1;    }   while (!k1); } if (k2==0)   // 關(guān) {   delay(1000);  // 消抖   if (k2==0)     {    q=0;    }   while (!k2); } if (k3==0)    //  開(kāi) {   delay(1000);  // 消抖   if (k3==0)     {    p=1;    }   while (!k3); } if (k4==0)  //  關(guān) {   delay(1000);     if (k4==0)     {    p=0;    }   while (!k4); } } void main() { while (1) { key();   if (q == 1)  LOVE   {    love();    }   else    {    smg=0x00;   }      key();      if (p == 1)    {    sound();    }   else     {    beep = 1;   } } }
回復(fù)

使用道具 舉報(bào)

ID:421883 發(fā)表于 2018-11-6 17:42 | 顯示全部樓層
將蜂鳴器使能引腳與數(shù)顯管的使能引腳一起置位就好了
回復(fù)

使用道具 舉報(bào)

ID:115473 發(fā)表于 2018-11-6 17:49 | 顯示全部樓層
這兩個(gè)器件使能肯定要連接在一起。
回復(fù)

使用道具 舉報(bào)

ID:243982 發(fā)表于 2018-11-6 18:09 | 顯示全部樓層
樓上正解 新人學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

ID:413632 發(fā)表于 2018-11-6 18:41 | 顯示全部樓層
這個(gè)不難,只是可能你還沒(méi)寫(xiě)過(guò)這類(lèi)似程序,單片機(jī)運(yùn)行速度是很快的,所以單片機(jī)可以在很短的時(shí)間內(nèi)做很多事情,以至于讓你感覺(jué)這些事情是同時(shí)做的。你可以使用標(biāo)志位控制蜂鳴器,比如你想讓蜂鳴器發(fā)聲標(biāo)志位置1,關(guān)閉蜂鳴器置0;還可以使用定時(shí)器控制蜂鳴器發(fā)聲頻率。

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:396996 發(fā)表于 2018-11-6 19:20 | 顯示全部樓層
寫(xiě)在一個(gè)for循環(huán)里 for{數(shù)碼管=1 ;delay(2500);數(shù)碼管=0;delay(2500);beep=~beep;delay(1);}
回復(fù)

使用道具 舉報(bào)

ID:421986 發(fā)表于 2018-11-6 20:48 | 顯示全部樓層
三極管驅(qū)動(dòng)蜂鳴器,程序的話(huà)用輪流處理也ok
回復(fù)

使用道具 舉報(bào)

ID:421986 發(fā)表于 2018-11-6 21:07 | 顯示全部樓層
蜂鳴器最好還是用另外的供電?不要直接用引腳啊,接個(gè)三極管驅(qū)動(dòng)。
回復(fù)

使用道具 舉報(bào)

ID:422033 發(fā)表于 2018-11-6 21:45 | 顯示全部樓層
使用定時(shí)器來(lái)控制蜂鳴器的開(kāi)啟和關(guān)閉
回復(fù)

使用道具 舉報(bào)

ID:422033 發(fā)表于 2018-11-6 21:45 | 顯示全部樓層
使用定時(shí)器來(lái)控制蜂鳴器的開(kāi)啟和關(guān)閉
回復(fù)

使用道具 舉報(bào)

ID:422024 發(fā)表于 2018-11-6 21:45 | 顯示全部樓層
51沒(méi)有進(jìn)程的,也不能(微觀)同時(shí);(宏觀)是可以的,增大晶振,減少數(shù)據(jù)的時(shí)長(zhǎng)。
回復(fù)

使用道具 舉報(bào)

ID:420218 發(fā)表于 2018-11-7 11:49 | 顯示全部樓層
程序調(diào)試好可以實(shí)現(xiàn),MCU沒(méi)試過(guò),找機(jī)會(huì)試試
回復(fù)

使用道具 舉報(bào)

ID:421812 發(fā)表于 2018-11-7 15:12 | 顯示全部樓層
讓控制蜂鳴器的端口有效,也讓控制LED的端口有效.或者說(shuō)考慮為單片機(jī)驅(qū)動(dòng)不足,可添加三極管輔助驅(qū)動(dòng).
回復(fù)

使用道具 舉報(bào)

ID:420363 發(fā)表于 2018-11-7 18:45 | 顯示全部樓層
把他們的io口分別配置好吧
回復(fù)

使用道具 舉報(bào)

ID:419294 發(fā)表于 2018-11-8 13:00 | 顯示全部樓層
#include<reg51.h>

//--定義使用的IO--//
#define GPIO_DIG P0

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

//--定義全局變量--//
unsigned char code DIG_CODE[17]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的顯示碼
unsigned char DisplayData[8];
//用來(lái)存放要顯示的8位數(shù)的值

//--聲明全局函數(shù)--//
void DigDisplay(); //動(dòng)態(tài)顯示函數(shù)
/*******************************************************************************
* 函 數(shù) 名         : main
* 函數(shù)功能                   : 主函數(shù)
* 輸    入         : 無(wú)
* 輸    出         : 無(wú)
*******************************************************************************/
void main(void)
{
        unsigned char i;
        for(i=0;i<8;i++)
        {
                DisplayData[i]=DIG_CODE[i];       
        }
        while(1)
        {
                DigDisplay();
        }                               
}
/*******************************************************************************
* 函 數(shù) 名         : DigDisplay
* 函數(shù)功能                   : 使用數(shù)碼管顯示
* 輸    入         : 無(wú)
* 輸    出         : 無(wú)
*******************************************************************************/
void DigDisplay()
{
        unsigned char i;
        unsigned int j;
        for(i=0;i<8;i++)
        {
                switch(i)         //位選,選擇點(diǎn)亮的數(shù)碼管,
                {
                        case(0):
                                LSA=0;LSB=0;LSC=0; break;//顯示第0位
                        case(1):
                                LSA=1;LSB=0;LSC=0; break;//顯示第1位
                        case(2):
                                LSA=0;LSB=1;LSC=0; break;//顯示第2位
                        case(3):
                                LSA=1;LSB=1;LSC=0; break;//顯示第3位
                        case(4):
                                LSA=0;LSB=0;LSC=1; break;//顯示第4位
                        case(5):
                                LSA=1;LSB=0;LSC=1; break;//顯示第5位
                        case(6):
                                LSA=0;LSB=1;LSC=1; break;//顯示第6位
                        case(7):
                                LSA=1;LSB=1;LSC=1; break;//顯示第7位       
                }
                GPIO_DIG=DisplayData[i];//發(fā)送段碼
                j=10;                                                 //掃描間隔時(shí)間設(shè)定
                while(j--);       
                GPIO_DIG=0x00;//消隱
        }
}
回復(fù)

使用道具 舉報(bào)

ID:422973 發(fā)表于 2018-11-8 14:18 | 顯示全部樓層
數(shù)碼管與蜂鳴器連接起來(lái),就好了吧
回復(fù)

使用道具 舉報(bào)

ID:311157 發(fā)表于 2018-11-8 17:37 | 顯示全部樓層
你是說(shuō)兩者一起工作嗎?設(shè)定一個(gè)基礎(chǔ)時(shí)間,一個(gè)時(shí)間變量控制數(shù)碼管點(diǎn)亮,一個(gè)時(shí)間變量控制蜂鳴器。蜂鳴器隨數(shù)碼管變化而工作的話(huà),定時(shí)器中斷掃描數(shù)碼管,再設(shè)定標(biāo)志判斷蜂鳴器的狀工作態(tài)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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