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

QQ登錄

只需一步,快速開始

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

求51單片機(jī)蜂鳴器和流水燈同時(shí)工作的程序。

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
#
ID:82714 發(fā)表于 2015-6-11 13:56 | 只看該作者 回帖獎(jiǎng)勵(lì) |正序?yàn)g覽 |閱讀模式
求51單片機(jī)蜂鳴器和流水燈同時(shí)工作的程序。

評(píng)分

參與人數(shù) 1黑幣 +5 收起 理由
天下第一帥 + 5 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

28#
ID:265915 發(fā)表于 2018-2-28 20:30 | 只看該作者
這個(gè)書上和網(wǎng)上有資料,只要把單獨(dú)的流水燈和蜂鳴器程序合并就行。
回復(fù)

使用道具 舉報(bào)

27#
ID:285815 發(fā)表于 2018-2-28 17:41 | 只看該作者
如果蜂鳴器和流水燈使用的IO不同的話,可以分別寫出函數(shù),再在主函數(shù)中調(diào)用即可,
回復(fù)

使用道具 舉報(bào)

26#
ID:286030 發(fā)表于 2018-2-28 16:22 | 只看該作者
可以在論壇里面找找應(yīng)該有這方面的內(nèi)容
回復(fù)

使用道具 舉報(bào)

25#
ID:283193 發(fā)表于 2018-2-8 20:59 | 只看該作者
#include"reg51.h"  #include"intrins.h"  #include"stdio.h"  typedef unsigned char u8;  typedef unsigned int  u16;    #define led P2  sbit beep=P1^5;  void delay(u16 i)  {     while(i--); }    void main() {       int i;    led=0xfe;    delay(100000);    while(1)     {          for(i=0;i<7;i++)           {                 led=_crol_(led,1);            delay(100000);           }         }            led=0;     delay(50000);    while(1)    { beep=~beep;                 delay(10);   } }
回復(fù)

使用道具 舉報(bào)

24#
ID:225626 發(fā)表于 2017-8-7 23:03 | 只看該作者
意思是亮一個(gè)燈,蜂鳴器響同樣的時(shí)間?
回復(fù)

使用道具 舉報(bào)

23#
ID:223754 發(fā)表于 2017-8-5 12:29 | 只看該作者
先寫好一個(gè)蜂鳴器的子程序,然后在寫LED點(diǎn)亮程序后面的同時(shí)調(diào)用蜂鳴器子程序即可。
回復(fù)

使用道具 舉報(bào)

22#
ID:137261 發(fā)表于 2017-8-5 11:17 | 只看該作者
蜂鳴器的節(jié)奏是啥。恐皇琼懢托辛?
回復(fù)

使用道具 舉報(bào)

21#
ID:217820 發(fā)表于 2017-8-3 09:40 | 只看該作者
用定時(shí)器,如果需要的話,可以加我QQ 3110312640
回復(fù)

使用道具 舉報(bào)

20#
ID:213173 發(fā)表于 2017-8-3 06:50 | 只看該作者
無源蜂鳴器和流水燈同時(shí)工作的程序,你自己按實(shí)際電路更改設(shè)置I/O口
#include <AT89X52.H>                         //單片機(jī)頭文件
#include <intrins.h>
#define uint unsigned int                 //宏定義變量uint為無符號(hào)整型數(shù)據(jù)(0-65535)
#define uchar unsigned char         //宏定義變量uchar為無符號(hào)字符型數(shù)據(jù)(0-255)
sbit Buzzer=P2^3;                                //蜂鳴器端口定義
bit Buzzer_sign=0;                                //蜂鳴器使能標(biāo)志位
uint Cnt200us=0;                                //中斷計(jì)數(shù)
void xianshi();                                        //顯示子程序聲明
void Timer0Init();                                //定時(shí)器初始化聲明

void main()
{
        Buzzer=1;                                        //蜂鳴器端口初始化
        Timer0Init();                                //定時(shí)器初始化
        P1=0xfe;                                        //LED端口初始化
        while(1)
        {
                xianshi();                                //顯示子程序
        }
}

void xianshi()                                        //顯示子程序
{
        if(Cnt200us>=5000)                        //1秒
        {
                Cnt200us=0;
                P1=_crol_(P1,1);                //循環(huán)移位
                Buzzer_sign=1;                        //蜂鳴器使能標(biāo)志置1
        }
}
void Timer0Init()                                //200微秒@11.0592MHz
{
        TMOD = 0x02;                                //設(shè)置定時(shí)器8位自動(dòng)重載模式
        TL0  = 0x48;                                //設(shè)置定時(shí)初值
        TH0  = 0x48;                                //設(shè)置定時(shí)重載值
        TF0  = 0;                                        //清除TF0標(biāo)志
        TR0  = 1;                                        //定時(shí)器0開始計(jì)時(shí)
        EA=1;                                                //開總中斷
        ET0=1;                                                //開定時(shí)器0中斷       
}
void timer0() interrupt        1                //中斷服務(wù)程序
{
        static uint count;
        Cnt200us++;
        if(Buzzer_sign==1)                        //如果蜂鳴器使能標(biāo)志1
        {
                count++;                                //定時(shí)器中斷變量自+1
                Buzzer=~Buzzer;                        //蜂鳴器端口取反
                if(count>=1000)                        //持續(xù)鳴0.2秒
                {
                        count=0;                        //計(jì)數(shù)清0       
                        Buzzer_sign=0;                //蜂鳴器使能標(biāo)志清0                               
                        Buzzer=1;                        //蜂鳴器端口清0
                }
        }
}
回復(fù)

使用道具 舉報(bào)

19#
ID:74784 發(fā)表于 2017-8-2 19:01 | 只看該作者
樓主問的這個(gè)問題不簡(jiǎn)單
這2天我正好在試驗(yàn)把發(fā)聲和點(diǎn)led合并在一起
也就是一邊叫單片機(jī)唱“生日快樂”
同時(shí)叫單片機(jī)點(diǎn)亮一個(gè)led拼湊的心形圖案
發(fā)現(xiàn)2個(gè)子程序的調(diào)用會(huì)有沖突
相互之間有bug
正在排除中。。。。。
回復(fù)

使用道具 舉報(bào)

18#
ID:111634 發(fā)表于 2016-7-10 22:30 | 只看該作者
distance1502 發(fā)表于 2016-7-10 10:00
自己研究吧,多看看大神們的資料

非常有道理。
回復(fù)

使用道具 舉報(bào)

17#
ID:129868 發(fā)表于 2016-7-10 10:00 | 只看該作者
自己研究吧,多看看大神們的資料
回復(fù)

使用道具 舉報(bào)

16#
ID:111634 發(fā)表于 2016-7-7 21:37 | 只看該作者
先安排流水燈工作,在某個(gè)燈亮延時(shí)時(shí)讓蜂鳴器工作。
回復(fù)

使用道具 舉報(bào)

15#
ID:129563 發(fā)表于 2016-7-7 15:44 | 只看該作者
原理圖都沒有 讓別人怎么給你程序 思路: 看你的是有源蜂鳴器還是無源的。假設(shè)是無源的 1.蜂鳴器導(dǎo)通幾個(gè)到幾十個(gè)毫秒,再關(guān)斷  再導(dǎo)通  再關(guān)斷 輪流運(yùn)行  寫個(gè)函數(shù)  叫BEEP() 2.流水燈   依次點(diǎn)亮單個(gè)LED  LED1ON() delay()  LED2ON()  delay()  LED3ON()  delay()............ 函數(shù)叫 flow_led() 3.蜂鳴器和LED同時(shí)工作  在while(1)里面調(diào)用 上面的兩個(gè)函數(shù)  BEEP()  和flow_led()
回復(fù)

使用道具 舉報(bào)

14#
ID:57657 發(fā)表于 2016-7-7 12:04 | 只看該作者
控制特殊功能寄存器讓某IO口輸出指定頻率,再通過定時(shí)器中斷控制頻率持續(xù)時(shí)間,中斷外添加流水燈程序,要求中斷外延遲程序精度高的不得使用此方法。
回復(fù)

使用道具 舉報(bào)

13#
ID:97438 發(fā)表于 2016-3-25 14:20 | 只看該作者
我覺得用定時(shí)器最好~~~
回復(fù)

使用道具 舉報(bào)

12#
ID:110710 發(fā)表于 2016-3-25 12:32 | 只看該作者
yanjibao 發(fā)表于 2015-6-27 18:09
同問的還有嗎,要不要我發(fā)布一個(gè)。就定在今天晚上吧

同求,^O^
回復(fù)

使用道具 舉報(bào)

11#
ID:110710 發(fā)表于 2016-3-25 12:31 | 只看該作者
yanjibao 發(fā)表于 2015-6-27 18:09
同問的還有嗎,要不要我發(fā)布一個(gè)。就定在今天晚上吧

同求&#128522;
回復(fù)

使用道具 舉報(bào)

10#
ID:84096 發(fā)表于 2015-6-27 18:27 | 只看該作者
分別寫蜂鳴器和流水燈的程序,然后在while(1)里調(diào)用。。。。

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

9#
ID:81808 發(fā)表于 2015-6-27 18:09 來自觸屏版 | 只看該作者
liuxianbin2015 發(fā)表于 2015-6-27 10:47
同問,樓主知道了要告訴我

同問的還有嗎,要不要我發(fā)布一個(gè)。就定在今天晚上吧

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

8#
ID:83349 發(fā)表于 2015-6-27 13:36 | 只看該作者
同時(shí)工作其實(shí)也有個(gè)先后順序的
回復(fù)

使用道具 舉報(bào)

7#
ID:84042 發(fā)表于 2015-6-27 10:47 | 只看該作者
同問,樓主知道了要告訴我
回復(fù)

使用道具 舉報(bào)

6#
ID:81808 發(fā)表于 2015-6-24 08:50 來自觸屏版 | 只看該作者
本帖最后由 yanjibao 于 2015-6-24 08:58 編輯

這個(gè)用定時(shí)器好一些,定時(shí)125us,定時(shí)器函數(shù)直接翻轉(zhuǎn)io蜂鳴器就會(huì)響。累計(jì)80次就是10毫秒,在累計(jì)100次就是一秒鐘了

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

5#
ID:81808 發(fā)表于 2015-6-24 08:49 來自觸屏版 | 只看該作者
蜂鳴器,就是某個(gè)io口的持續(xù)震蕩。流水燈就是秒級(jí)延時(shí)以后的io電平變化。要這樣的程序,必須明確單片機(jī)型號(hào),以及晶振頻率,否則有快有慢效果不一定好

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

地板
ID:83701 發(fā)表于 2015-6-23 15:21 | 只看該作者
同          問
回復(fù)

使用道具 舉報(bào)

板凳
ID:82795 發(fā)表于 2015-6-12 10:04 | 只看該作者
這類很簡(jiǎn)單的吧,一般單片機(jī)的書上都會(huì)有類似程序的

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:60611 發(fā)表于 2015-6-11 21:48 | 只看該作者
工作的時(shí)候,調(diào)用蜂鳴器程序后,再調(diào)用點(diǎn)燈即可

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

樓主
ID:76227 發(fā)表于 2015-6-11 17:19 | 只看該作者
原理圖都沒有 讓別人怎么給你程序
思路:
看你的是有源蜂鳴器還是無源的。假設(shè)是無源的
1.蜂鳴器導(dǎo)通幾個(gè)到幾十個(gè)毫秒,再關(guān)斷  再導(dǎo)通  再關(guān)斷 輪流運(yùn)行  寫個(gè)函數(shù)  叫BEEP()
2.流水燈   依次點(diǎn)亮單個(gè)LED  LED1ON() delay()  LED2ON()  delay()  LED3ON()  delay()............
函數(shù)叫 flow_led()
3.蜂鳴器和LED同時(shí)工作  在while(1)里面調(diào)用 上面的兩個(gè)函數(shù)  BEEP()  和flow_led()




就行啦

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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