国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【【51單片機的蜂鳴器實現(xiàn)小星星】】

這篇具有很好參考價值的文章主要介紹了【【51單片機的蜂鳴器實現(xiàn)小星星】】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

用單片機的蜂鳴,實現(xiàn)簡單小星星

我們在設置板子的時候要翻轉
翻轉IO口是因為使用了步進電機的多余的芯片管腳
我們翻轉之后還想讓它保持一段時間
就是先翻轉500次 Delay(1)之后 就是最小的單位每隔1ms 周期就是2ms 頻率就是500HZ

蜂鳴器播放音樂
我們首先在前面到現(xiàn)在必須明白一個道理 就是我們的蜂鳴器發(fā)聲是因為蜂鳴器的
【【51單片機的蜂鳴器實現(xiàn)小星星】】,51單片機微型設計,51單片機,嵌入式硬件,單片機
我們可以不停的反轉的電平,而且隨著電平翻轉頻率的變化,它的音調也會變化,依據(jù)此原理可以用蜂鳴器來播放音樂。我們可以控制電平的時序,傳遞合適的周期以便于控制音調的高低。
我們可以這么想 ,就像一個鼓,我們如果不敲動,那么就不會發(fā)聲。我們必須給他一個擾動 也就是翻轉 。就像是我們控制
舉例

void Timer0_Routine() interrupt 1
{
    
    TL0 = 64580%256;        //設置定時初值
    TH0 = 64580%256;        //設置定時初值
    Buzzer=!Buzzer; //蜂鳴器的頻率
}

當我們在實現(xiàn)音樂控制的時候還會出現(xiàn)一個問題就是我們的數(shù)組前兩個數(shù)字是一樣的那該怎么辦
這樣聽聲音就會有一種頓挫感

unsigned char Music[]={12,12,19,19,21,21,19,17,17,16,16,14,14,12};

例如這是最經典的小星星的一段
我們最好在中間插入一點東西使得能夠聽出不一樣的感覺

FreqSelect=Music[MusicSelect];
MusicSelect++;
Delay(500);
TR0=0;
Delay(5);
TR0=1;
  

做到這里我們會發(fā)現(xiàn)還有問題 我們看樂譜的時候就會發(fā)現(xiàn)有些音他是延長 而又有些音是兩個音的組合成一個
那么在這里我們是否再提供一個數(shù)組用來確定
這時候我們想到上面的music 是一維數(shù)組的形式 我們可以將其改寫為二維數(shù)組的形式
but 用一個數(shù)組也行 最好是二維更加清晰一點吧

FreqSelect=Music[MusicSelect];
MusicSelect++;
Delay(125*Music[MusicSelect]);
MusicSelect++;
TR0=0;
Delay(5);
TR0=1;
}

另外 我們拿到樂譜并不能很好的取一個基準 有很多16分 8分 4分頻 我們按照男人的思維 用數(shù)學的邏輯 取最小的記為1 哪個最小就用哪個

unsigned char Music[]={
12,4,
12,4,
19,4,
19,4,
21,4,
21,4,
19,4+4,
17,4,
17,4,
16,4,
16,4,
14,4,
14,4,
12,4+4
};

    unsigned char FreqSelect,MusicSelect;
    
void main()
{
    
    Timer0Init();
    while(1)
    {
        FreqSelect=Music[MusicSelect];
        MusicSelect++;
        Delay(125*Music[MusicSelect]);
        MusicSelect++;
       TR0=0;
        Delay(5);
        TR0=1;
    }    
    
}

新修改的代碼

還有樂譜中會出現(xiàn)休止符 休止符 就是不彈奏的意思
我們再開頭插入一個0 為什么再開頭不再結尾 其實你插入在哪里都可以 開頭最好做好識別一點吧

另外作為一個數(shù)組 難免會出現(xiàn)越界的行為 聲音走了 那么我們需要在特定位置增加一個判斷確定聲音是否越界
ok好了下面是小星星的完整代碼文章來源地址http://www.zghlxwxcb.cn/news/detail-570658.html

main.c

#include <REGX52.H>
#include "Delay.h"
#include"Timer0.h"

sbit Buzzer=P2^5;


#define SPEED 500  //我們以4分音符為基準
unsigned int FreqTable[]={
    0,
    63628,63731,63835,63928,64021,64103,64185,64260,64331,64400,64463,64524,
    64580,64633,64684,64732,64777,64820,64860,64898,64934,64968,65000,65030,
    65058,65085,65110,65134,65157,65178,65198,65217,65235,65252,65268,65283
};

unsigned char Music[]={
13,4,
13,4,
20,4,
20,4,
22,4,
22,4,
20,4+4,
    0,4,
18,4,
18,4,
16,4,
16,4,
15,4,
15,4,
13,4+4,
    
    
    
    0xFF
};

    unsigned char FreqSelect,MusicSelect;
    
void main()
{
    
    Timer0Init();
    while(1)
    {
        if(Music[MusicSelect]!=0xFF)
        {
        FreqSelect=Music[MusicSelect];
        MusicSelect++;
        Delay(SPEED/4*Music[MusicSelect]);
        MusicSelect++;
       TR0=0;
        Delay(5);
        TR0=1;    
            
        }
        else
        {
            TR0=0;
            while(1);
            
        }
        
    }    
    
}


void Timer0_Routine() interrupt 1
{
    if(FreqTable[FreqSelect])
    {
        TL0 = FreqTable[FreqSelect]%256;              //設置定時初值
    TH0 = FreqTable[FreqSelect]/256;              //設置定時初值
    Buzzer=!Buzzer;     //蜂鳴器的頻率
        
    }
    
    
    
    
}

Delay.h

#ifndef __DELAY_H__
#define __DELAY_H__

void Delay(unsigned int xms);

#endif

Delay.c

void Delay(unsigned int xms)
{
	unsigned char i, j;
	while(xms--)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
	}
}

Timer0.c

#include <REGX52.H>

/**
  * @brief  定時器0初始化,1毫秒@12.000MHz
  * @param  無
  * @retval 無
  */
void Timer0Init(void)
{
	TMOD &= 0xF0;		//設置定時器模式
	TMOD |= 0x01;		//設置定時器模式
	TL0 = 0x18;		//設置定時初值
	TH0 = 0xFC;		//設置定時初值
	TF0 = 0;		//清除TF0標志
	TR0 = 1;		//定時器0開始計時
	ET0=1;
	EA=1;
	PT0=0;
}

Timer0.h

#ifndef __TIMER0_H__
#define __TIMER0_H__

void Timer0Init(void);

#endif

到了這里,關于【【51單片機的蜂鳴器實現(xiàn)小星星】】的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 5-51單片機-蜂鳴器實驗

    5-51單片機-蜂鳴器實驗

    ? ? ? ? 1. 對系統(tǒng)默認的數(shù)據(jù)類型進行重定義,u8,u16; ? ? ? ? 2.延時函數(shù),主要是將傳過來的整數(shù)進行減減實現(xiàn)延時; ? ? ? ? 3.還用到了while()循環(huán); ? ? ? ? 1. 首次定義一個變量,主要是為了延時蜂鳴器響亮的時長; ? ? ? ? 2.通過while()循環(huán),使得Buzzer_Port產生脈沖信號,從而使蜂

    2024年04月16日
    瀏覽(33)
  • 【【51單片機的蜂鳴器-11】】

    【【51單片機的蜂鳴器-11】】

    DS1302我一直有問題擱置了幾百天了 先來看看蜂鳴器 搞了一個禮拜verilog然后出去吃飯 估計自己得有10多天沒看c語言和51單片機了 現(xiàn)在先處理一下蜂鳴器的問題 蜂鳴器 蜂鳴器分為有源蜂鳴器和無源蜂鳴器 有源內部自帶震蕩源,將正負極接上直流電壓及可持續(xù)發(fā)聲,頻率固定

    2024年02月16日
    瀏覽(18)
  • 51單片機學習筆記-9蜂鳴器

    51單片機學習筆記-9蜂鳴器

    [toc] 注:筆記主要參考B站江科大自化協(xié)教學視頻“51單片機入門教程-2020版 程序全程純手打 從零開始入門”。 注:工程及代碼文件放在了本人的Github倉庫。 蜂鳴器 是一種將電信號轉換為聲音信號的器件,常用來產生設備的按鍵音、報警音等提示信號。蜂鳴器按驅動方式可分

    2024年02月06日
    瀏覽(22)
  • stm32單片機/51單片機蜂鳴器不響(proteus模擬)

    stm32單片機/51單片機蜂鳴器不響(proteus模擬)

    1提高蜂鳴器電阻,這樣根據(jù)分壓原理,可以提升蜂鳴器2段電壓 2更改蜂鳴器的工作電壓為更小的值,這個可以通過在proteus內設置探針查看電壓值,更改為其值就可以了 我覺得如果不是仿真的話,蜂鳴器額定電壓是不能改的,如果電壓不夠的話好像就只能夠選用合適的三極管

    2024年02月11日
    瀏覽(20)
  • MCU-51:單片機蜂鳴器播放音樂和提示音

    MCU-51:單片機蜂鳴器播放音樂和提示音

    蜂鳴器是一種將電信號轉換為聲音信號的器件,常用來產生設備的按鍵音、報警音等提示信號 蜂鳴器按驅動方式可分為有源蜂鳴器和無源蜂鳴器 有源蜂鳴器:內部自帶振蕩源,將正負極接上直流電壓即可持續(xù)發(fā)聲,頻率固定 無源蜂鳴器:內部不帶振蕩源,需要控制器提供振

    2024年02月02日
    瀏覽(23)
  • 33、基于51單片機老人防跌倒蜂鳴器報警系統(tǒng)加速度檢測

    33、基于51單片機老人防跌倒蜂鳴器報警系統(tǒng)加速度檢測

    背景技術 老年人出門由于身體不靈活、視力較差,容易發(fā)生跌倒,現(xiàn)用的老年人跌倒報警裝置是通過無線對講系統(tǒng)研發(fā)的,它外觀精美,自動化程度高,有很強的專業(yè)性,但是,設計者忽略了一個問題,因為大多數(shù)老年人使用現(xiàn)代化產品不熟練,隨著視力、操作能力的下降,

    2023年04月08日
    瀏覽(22)
  • 【51單片機】:閃燈、流水燈(從左往右)、流水燈(從右往左)、蜂鳴器。

    【51單片機】:閃燈、流水燈(從左往右)、流水燈(從右往左)、蜂鳴器。

    ? ? ? ? 言歸正傳,一切都回歸本源,從51再來一次,首先就是最簡單的點燈大師。 ? ? ? ? 這么些年從51 到? 32? 再到? arduino? 再到? ESP? 等等,都是從點燈大師開始的。 于是介紹如下: 閃燈 流水燈(從左往右) 流水燈(從右往左) 蜂鳴器 ????????LED燈的原理:LED是發(fā)

    2024年02月11日
    瀏覽(26)
  • 基于51單片機的煙霧檢測+溫度檢測+蜂鳴器報警+光耦+風扇+LCD4602液晶顯示(含原理圖/PCB/代碼)

    基于51單片機的煙霧檢測+溫度檢測+蜂鳴器報警+光耦+風扇+LCD4602液晶顯示(含原理圖/PCB/代碼)

    講在前面: 51單片機是大多數(shù)電子愛好者的入門級單片機,這款設計是一個比較綜合的單片機設計。本文介紹了一個典型的51單片機設計,希望對各位有幫助。 本人也在其他平臺開源了一些項目和分享: 點擊進入B站傳送門 1)產品功能: 使用51單片機作為控制器,與ADC0832(

    2024年01月22日
    瀏覽(27)
  • 單片機-蜂鳴器

    單片機-蜂鳴器

    蜂鳴器是一種一體化結構的電子訊響器,采用直流電壓供電 蜂鳴器主要分為 壓電式蜂鳴器 和 電磁式蜂鳴器 兩 種類型。 壓電式蜂鳴器 主要由多諧振蕩器、壓電蜂鳴片、阻抗匹配器及共鳴箱、外殼等組成。多諧振蕩器由晶體管或集成電路構成,當接通電源后(1.5~15V 直流工

    2024年02月09日
    瀏覽(20)
  • 單片機學習-蜂鳴器如何發(fā)出聲音

    單片機學習-蜂鳴器如何發(fā)出聲音

    BEEP =! BEEP? ? 為何使用 非運算,這里面 P2 的管腳默認 有上拉電阻,P2^5 輸出高電平 每次循環(huán) 非運算一下 為低電平 ,產生那種評率 0 1? 0 1? 0 1 循環(huán)下去?

    2024年02月11日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包