欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 51單片機怎么實現蜂鳴器和數顯管同時工作? [打印本頁]

作者: lilraymond    時間: 2018-11-6 08:09
標題: 51單片機怎么實現蜂鳴器和數顯管同時工作?
如何用51單片機實現數顯管和蜂鳴器一起工作

作者: mengzhixinheng    時間: 2018-11-6 09:42
有源蜂鳴器還是無源蜂鳴器,只是簡單的發出一種頻率嗎?一直響,還是間歇響?
作者: 付榮顏    時間: 2018-11-6 10:11
將蜂鳴器使能引腳與數顯管的使能引腳一起置位就好了

作者: zzzz1z    時間: 2018-11-6 10:56
數碼管與蜂鳴器連接起來
作者: yzwzfyz    時間: 2018-11-6 13:03
好好按排一下,輪流處理兩者,時間足夠。
作者: devcang    時間: 2018-11-6 13:03

如果是無源的,還有浪費一點的做法,就是另外用一個MCU來發聲。

作者: Jason_Jay    時間: 2018-11-6 13:55
程序都可以實現呀
作者: 老火靚TOM    時間: 2018-11-6 14:39
你在這指的是功率上怎么解決還是指電路怎么實現或者軟件怎么寫呢?前兩者的話用三極管驅動蜂鳴器,用鎖存器控制數顯再找相關應用電路就很好解決,至于程序的話可以百度一下相關例程,移植組合一下就行了
作者: 只是個無常    時間: 2018-11-6 15:26
引腳接好
作者: ljh961031    時間: 2018-11-6 16:46
數碼管與蜂鳴器連接起來,用三極管驅動蜂鳴器,用鎖存器控制數顯再找相關應用電路就很好解決
作者: ljh961031    時間: 2018-11-6 16:47
蜂鳴器使能引腳與數顯管 相連接
加上程序代碼可以實現
作者: Yonina    時間: 2018-11-6 17:02
使用定時器來控制蜂鳴器的開啟和關閉
作者: Yonina    時間: 2018-11-6 17:03
使用定時器來控制蜂鳴器的開啟和關閉
作者: Yonina    時間: 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     //  宏定義 數碼管 u8 p=0, q=0;    void delay(u16 i)  //  延時函數 { while (i--); } void love()    //  數碼管顯示LOVE  { u8 i=100;         while (i--)   //  該循環可以跳出 即可執行其下程序 {   for(h=0;h<=7;h+=2)   {    switch (h)           //  位選,選擇點亮的數碼管,    {     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];         //  發送段碼    delay(100);   } } }     void sound()   //  蜂鳴器響 { u8 i=100; while (i--)     // 只要不是死循環(while(1))即可 {   beep=~beep;   delay(500); } } void key()            //  判斷哪個開關按下 { if (k1==0)  //  開 {   delay(1000);  // 消抖   if (k1==0)     {    q=1;    }   while (!k1); } if (k2==0)   // 關 {   delay(1000);  // 消抖   if (k2==0)     {    q=0;    }   while (!k2); } if (k3==0)    //  開 {   delay(1000);  // 消抖   if (k3==0)     {    p=1;    }   while (!k3); } if (k4==0)  //  關 {   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;   } } }
作者: JM123456    時間: 2018-11-6 17:42
將蜂鳴器使能引腳與數顯管的使能引腳一起置位就好了
作者: ansy2001    時間: 2018-11-6 17:49
這兩個器件使能肯定要連接在一起。
作者: g08970    時間: 2018-11-6 18:09
樓上正解 新人學習了
作者: Wang-tg    時間: 2018-11-6 18:41
這個不難,只是可能你還沒寫過這類似程序,單片機運行速度是很快的,所以單片機可以在很短的時間內做很多事情,以至于讓你感覺這些事情是同時做的。你可以使用標志位控制蜂鳴器,比如你想讓蜂鳴器發聲標志位置1,關閉蜂鳴器置0;還可以使用定時器控制蜂鳴器發聲頻率。
作者: hsxuan    時間: 2018-11-6 19:20
寫在一個for循環里 for{數碼管=1 ;delay(2500);數碼管=0;delay(2500);beep=~beep;delay(1);}
作者: tzjcx    時間: 2018-11-6 20:48
三極管驅動蜂鳴器,程序的話用輪流處理也ok
作者: tzjcx    時間: 2018-11-6 21:07
蜂鳴器最好還是用另外的供電?不要直接用引腳啊,接個三極管驅動。
作者: 魑同甘共苦    時間: 2018-11-6 21:45
使用定時器來控制蜂鳴器的開啟和關閉
作者: 魑同甘共苦    時間: 2018-11-6 21:45
使用定時器來控制蜂鳴器的開啟和關閉
作者: kevingao    時間: 2018-11-6 21:45
51沒有進程的,也不能(微觀)同時;(宏觀)是可以的,增大晶振,減少數據的時長。
作者: admin    時間: 2018-11-7 00:57
看這http://m.raoushi.com/bbs/dpj-140577-1.html
作者: 857502711    時間: 2018-11-7 11:49
程序調試好可以實現,MCU沒試過,找機會試試
作者: 簡單的跌宕之美    時間: 2018-11-7 15:12
讓控制蜂鳴器的端口有效,也讓控制LED的端口有效.或者說考慮為單片機驅動不足,可添加三極管輔助驅動.
作者: 17660448216    時間: 2018-11-7 18:45
把他們的io口分別配置好吧

作者: Dremt    時間: 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];
//用來存放要顯示的8位數的值

//--聲明全局函數--//
void DigDisplay(); //動態顯示函數
/*******************************************************************************
* 函 數 名         : main
* 函數功能                   : 主函數
* 輸    入         : 無
* 輸    出         : 無
*******************************************************************************/
void main(void)
{
        unsigned char i;
        for(i=0;i<8;i++)
        {
                DisplayData[i]=DIG_CODE[i];       
        }
        while(1)
        {
                DigDisplay();
        }                               
}
/*******************************************************************************
* 函 數 名         : DigDisplay
* 函數功能                   : 使用數碼管顯示
* 輸    入         : 無
* 輸    出         : 無
*******************************************************************************/
void DigDisplay()
{
        unsigned char i;
        unsigned int j;
        for(i=0;i<8;i++)
        {
                switch(i)         //位選,選擇點亮的數碼管,
                {
                        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];//發送段碼
                j=10;                                                 //掃描間隔時間設定
                while(j--);       
                GPIO_DIG=0x00;//消隱
        }
}

作者: @lingyang    時間: 2018-11-8 14:18
數碼管與蜂鳴器連接起來,就好了吧
作者: 林木乍青    時間: 2018-11-8 17:37
你是說兩者一起工作嗎?設定一個基礎時間,一個時間變量控制數碼管點亮,一個時間變量控制蜂鳴器。蜂鳴器隨數碼管變化而工作的話,定時器中斷掃描數碼管,再設定標志判斷蜂鳴器的狀工作態




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1