• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 利用蜂鳴器和單片機演奏簡單的音樂電路設計

    利用蜂鳴器和單片機演奏簡單的音樂電路設計

    作者: 時間:2011-04-10 來源:網絡 收藏

    ET0=1; EA=1;

    TR0=0; TR1=1;

    while(point=point2)

    {

    sl=ts%10; /* 計算出音符 */

    sh=ts/100; /* 計算出是否升半 */

    sm=ts/10%10; /* 計算出高低音 */

    hz=ftab[stab[sl-1]+sh]; /* 查出對應音符的頻率 */

    if(sl!=0)

    {

    if (sm==1) hz>>=2; /* 若是低音 */

    if (sm==3) hz=2; /* 若是高音 */

    sc=(50000/hz)*10/plen; /* 計算脈沖個數 */

    sc=65536-sc; /* 計算計數器初值 */

    sc0=sc%256; /* 算出TL0 應裝初值 */

    sc1=sc/256; /* 算出TH0 應裝初值 */

    TH0=sc1; /* 裝入初值 */

    TL0=sc0+12; /* 加12 是對中斷延時的補償 */

    }

    slen=ltab[tl%10]; /* 算出是幾分音符 */

    xg=tl/10%10; /* 算出音符類型(0 普通1 連音2 頓音) */

    fd=tl/100;

    len=len0/slen; /* 算出連音音符的長度(多少個10ms)*/

    if (fd==1) len=len+len/2;

    if(xg!=1)

    if(xg==0) /* 算出普通音符的長度 */

    if (slen=4)

    len1=len-len4;

    else

    len1=len*yx;

    else

    len1=len/2; /* 算出頓音的長度 */

    else

    len1=len;

    if(sl==0) len1=0;

    len2=len-len1; /* 算出不發音的長度 */

    if (sl!=0)

    {

    TR0=1;

    for(i=len1;i>0;i--) /* 發規定長度的音 */

    {

    while(TF1==0);

    TH1=tc1; TL1=tc0;

    TF1=0;

    }

    }

    if(len2!=0)

    {

    TR0=0; speaker=1;

    for(i=len2;i>0;i--) /* 音符間的間隔 */

    {

    while(TF1==0);

    TH1=tc1; TL1=tc0;

    TF1=0;

    }

    }

    point+=2; /* 音符指針下移 */

    ts=sound[point]; tl=sound[point+1]; /* 讀出下一個音符和它時時值 */

    }

    }

    void yin() interrupt 1 /* 音符發生程序(中斷服務程序)*/

    {

    speaker=~speaker;

    TH0=sc1; TL0=sc0;

    }

    //==============================================

    main()

    {

    while(1)

    {

    play(sound,0,2,60,0,57);

    play(sound,0,1,60,0,57);

    play(sound,0,3,60,0,57);

    play(sound,0,2,40,0,57);

    play(sound,5,2,60,0,57);

    play(sound,0,2,80,0,57);

    }

    }

    塵埃粒子計數器相關文章:塵埃粒子計數器原理
    蜂鳴器相關文章:蜂鳴器原理

    上一頁 1 2 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 大邑县| 伊川县| 永寿县| 大英县| 彭阳县| 长子县| 延长县| 唐河县| 江川县| 商丘市| 祁东县| 德格县| 行唐县| 都昌县| 东山县| 芦溪县| 五莲县| 辽阳市| 应用必备| 尚义县| 怀安县| 工布江达县| 靖西县| 庆元县| 渝中区| 繁昌县| 六盘水市| 佛坪县| 通道| 抚远县| 都昌县| 长葛市| 苍山县| 哈尔滨市| 鲁甸县| 青海省| 思南县| 怀化市| 渭源县| 眉山市| 沙河市|