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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5947|回復: 0
打印 上一主題 下一主題
收起左側

51單片機兩只老虎仿真加代碼

[復制鏈接]
跳轉到指定樓層
樓主
/***************************************************************************
    程序名稱:program4-1.c
    程序功能:單片機控制的音樂盒
****************************************************************************/
#include "reg51.h"                                        //包含頭文件reg51.h
#define  uchar unsigned char
#include <intrins.h>
#define  uint unsigned 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 tiger[ ]=                             //兩只老虎音符數組
{
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,0x14,
0x14,0x54,0x18,0x14,0x54,0x18,0x00,0x00
};                                                       
/***************************************************************************
    函數名稱:delay_125ms
    函數功能:實現125ms延時函數
    形式參數:無
    返回值:無
****************************************************************************/
void delay_125ms()
{  
           uchar counter=0;                         //計數器初始化
   TR0=1;                                 //啟動T0
for(;counter!=5;)                         //判斷計數器值是否等于5
   {
         if(TF0==1)                                 //T0溢出判斷
         {
                TF0 = 0;                                //定時器0溢出位清零
                TH0=0xa6;                    //恢復計數器初值(可采用stc-isp軟件計算)
                TL0=0x00;
                counter++;                         //循環次數標志位加1
         }
   }
   counter = 0;                                 //計數5次,計數器清零
}
/***************************************************************************
    函數名稱:palay_music
    函數功能:單片機控制蜂鳴器播放音樂
****************************************************************************/
                void paly_music()                                        //音樂播放函數
                {
uchar i,j,k;               
        j=0;
        while( tiger[j]!=0x00)       //一直播放到休止符0x00為止
        {
                k= tiger[j]&0x0F;                         //從音符數組中得到節拍
                note=tiger[j]>>4;             //從音符數組中得到音符
                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;                                //當播放到停止符時關閉T1
                        BEEP=1;                                //關閉蜂鳴器
                }
                for(i=k;i>0;--i)                //延時,產生相應的節拍
                {               
                        delay_125ms();                               
                }
                TR1=0;                                       
                j++;                                            //取數組中的下一個數據
        }
}                       
/***************************************************************************
    函數名稱:init
    函數功能:定時器T0、T1初始化
****************************************************************************/
void  init ()               
{
TMOD=0x11;                                        //T0工作定時工作方式
TH0=0xa6;                                        //賦T0計數器初值(25ms)
TL0=0x00;
ET1=1;                                        //允許T1中斷
EA=1;                                                //中斷允許
}
/***************************************************************************
    函數名稱:main
    函數功能:單片機控制蜂鳴器播放音樂
****************************************************************************/
         void main( )                                 //主函數
         {
           init();
           while(1)
{
          paly_music( );                        // 播放音樂
}
}
/***************************************************************************
    函數名稱:timer1
    函數功能:T1產生音符脈沖
****************************************************************************/
void timer1( ) interrupt 3
    {
          TH1=music[2*note];                        //恢復計數器初始值               
TL1=music[2*note+1];                       
BEEP=~BEEP;
         }







微信圖片_20190419200635.png (134.4 KB, 下載次數: 46)

微信圖片_20190419200635.png

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩精品中文字幕 | www.97国产 | 亚洲国产精品久久久 | 欧美福利| 成人国产午夜在线观看 | www国产亚洲精品久久网站 | 99re6在线| 亚洲自拍一区在线观看 | 日韩日韩日韩日韩日韩日韩日韩 | 精品久久久精品 | 成人性生交大片免费看r链接 | 久久久蜜桃| 一区二区三区视频 | 国产综合精品一区二区三区 | 国产欧美在线 | 精品亚洲一区二区三区 | 久久国产精品72免费观看 | 国产精品一区久久久 | 中文字幕 国产 | 最新av中文字幕 | 亚洲精品1区| 国产99久久精品一区二区永久免费 | 久久久天堂 | 成人免费视频在线观看 | 日批av| 欧美日韩一区二区三区四区 | av在线视 | 欧美成人精品 | 久久国产亚洲 | 亚洲欧美中文字幕在线观看 | 无人区国产成人久久三区 | 欧美精品在线一区 | 荷兰欧美一级毛片 | 国产玖玖 | 在线观看视频亚洲 | 成人免费网站视频 | 亚洲精品久久久久久国产精华液 | 天天操网 | 天天干b| 国产亚洲一区二区三区在线观看 | 久久免费视频在线 |