久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機音樂盒代碼

[復(fù)制鏈接]
ID:415601 發(fā)表于 2018-10-26 08:39 | 顯示全部樓層 |閱讀模式
/***************************************************************************
    程序名稱:program4-1.c
    程序功能:單片機控制的音樂盒
****************************************************************************/
    #include "reg51.h"                                        //包含頭文件reg51.h
    #define  ucharunsigned char
    #define  uintunsigned int
    sbit  BEEP=P3^7;                                        //蜂鳴器控制接口
    uchar note;                                                //音符下標
    uchar code music[]={0xFC,0x44,0xFC,0xAC, 0xFD,0x09, 0xFD,0x34, 0xFD,0x82, 0xFD,0xC8};
                                                                            //T值
    uchar code 2tiger[ ]=                             //兩只老虎音符數(shù)組
    {
         0x14,0x24,0x34,0x14,0x14,0x24,0x34,0x14,0x34,0x44,0x58,0x34,0x44,
     0x58,0x53,0x61,0x53,0x41,0x34,0x14,0x53,0x61,0x53,0x41,0x34,x14,
     0x14,0x54,0x18,0x14,0x54,0x18,0x00,0x00
    };                                                        
/***************************************************************************
    函數(shù)名稱:delay_125ms
    函數(shù)功能:實現(xiàn)125ms延時函數(shù)
    形式參數(shù):無
    返回值:無
****************************************************************************/
    void delay_125ms()
    {  
           uchar counter=0;                         //計數(shù)器初始化
       TR0=1;                                 //啟動T0
      for(;counter!=5;)                         //判斷計數(shù)器值是否等于5
       {
             if(TF0==1)                                 //T0溢出判斷
             {
                    TF0 = 0;                                //定時器0溢出位清零
                    TH0=0xa6;                    //恢復(fù)計數(shù)器初值(可采用stc-isp軟件計算)
                    TL0=0x00;
                    counter++;                         //循環(huán)次數(shù)標志位加1
             }
       }
       counter = 0;                                 //計數(shù)5次,計數(shù)器清零
    }
/***************************************************************************
    函數(shù)名稱:palay_music
    函數(shù)功能:單片機控制蜂鳴器播放音樂
****************************************************************************/
                void paly_music()                                        //音樂播放函數(shù)
                {
uchar i,j,k;               
            j=0;
            while(2tiger[j]!=0x00)       //一直播放到休止符0x00為止
            {
                    k=2tiger[j]&0x0F;                         //從音符數(shù)組中得到節(jié)拍
                    note=2tiger[j]>>4;             //從音符數(shù)組中得到音符
                    TH1=music[2*note];                                //定時器1賦初值
                    TL1=music[2*note+1];               
                    TR1=1;                                                        // 啟動T1
                    if((music[2*note]==0x00)&&(music[2*note+1]==0x00))//判斷是否停止符
                    {
                            TR1=0;                                //當播放到停止符時關(guān)閉T1
                            BEEP=1;                                //關(guān)閉蜂鳴器
                    }
                    for(i=k;i>0;--i)                //延時,產(chǎn)生相應(yīng)的節(jié)拍
                    {               
                            delay_125ms();                                
                    }
                    TR1=0;                                       
                    j++;                                            //取數(shù)組中的下一個數(shù)據(jù)
            }
    }                        
/***************************************************************************
    函數(shù)名稱:init
    函數(shù)功能:定時器T0、T1初始化
****************************************************************************/
    void  init ()               
    {
     TMOD=0x11;                                        //T0工作定時工作方式
     TH0=0xa6;                                        //賦T0計數(shù)器初值(25ms)
     TL0=0x00;
     ET1=1;                                        //允許T1中斷
     EA=1;                                                //中斷允許
    }
/***************************************************************************
    函數(shù)名稱:main
    函數(shù)功能:單片機控制蜂鳴器播放音樂
****************************************************************************/
         void main( )                                 //主函數(shù)
         {
           init();
           while(1)
      {
            paly_music( );                        // 播放音樂
  }
  }
/***************************************************************************
    函數(shù)名稱:timer1
    函數(shù)功能:T1產(chǎn)生音符脈沖
****************************************************************************/
  void timer1( ) interrupt 3
      {
          TH1=music[2*note];                        //恢復(fù)計數(shù)器初始值               
     TL1=music[2*note+1];                        
     BEEP=~BEEP;
         }


回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久久久久妇女 | 成人网在线观看 | 一区二区三区在线播放 | 91福利网址 | 黄色国产视频 | 天天操天天射天天舔 | 在线免费中文字幕 | 色狠狠桃花综合 | 亚洲看片网站 | 欧美 中文字幕 | 成人免费视频网站在线观看 | 成年人免费看的视频 | 一区二区福利视频 | 国产精品精品视频一区二区三区 | 一区二区三区视频在线 | 日本黄色影片在线观看 | 视频一区二区在线观看 | 一级黄色片在线免费观看 | 草樱av| 午夜精品久久久久久久久久久久久 | 国产一区二区在线播放 | 成人免费视屏 | 涩涩鲁亚洲精品一区二区 | 日本人做爰大片免费观看一老师 | 久久综合伊人一区二区三 | 黄色精品 | 黄色大片网站 | 日韩在线一区二区三区 | 日韩av啪啪网站大全免费观看 | 蜜桃毛片 | 国产免费自拍 | 国产精品亚洲综合 | 国产一区二区三区四区五区加勒比 | 亚洲国产精品久久久久婷婷老年 | 在线观看日韩精品视频 | 成人一区在线观看 | 国产欧美一区二区三区在线看蜜臀 | 精品99在线| 99久久久久久久 | 国产日韩欧美中文 | 99看片网|