欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

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

QQ登錄

只需一步,快速開始

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

單片機(jī)音樂盒程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:393275 發(fā)表于 2018-9-4 10:04 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit BUZZER=P1^0;//蜂鳴器輸出
uchar th0,tl0; //定時(shí)器0賦值變量
uchar start_; //返回變量
uint code Note[]={0,64580,64684,64777,64820,64898,64968,65030,/*中音*/
63628,63853,64021,64103,64260,64400,64524,/*低音*/
65058,65110,65157,65178,65217,65252,65282/*高音*/}; /*************************************************************************
音普規(guī)則:
1、音普由一個(gè)字節(jié)十六進(jìn)制數(shù)組成
2、高4位代表節(jié)拍,一拍約400MS,將一拍分成8份
3、低4位代表音符,一一對(duì)應(yīng)Note[]列表
4、0x20代表歌曲結(jié)束符
**************************************************************************/
uchar code Xiaopingguo[]={
0x83,0x81,0x82,0x6d,0x43,0x42,0x41,0x42,0x8d,0x8d,0x40, /*你是我的小呀小蘋果*/
0x83,0x81,0x82,0x82,0x45,0x43,0x8e,0x81,0x40,
/*怎么愛你都不嫌多*/
0x41,0x4e,0x8d,0x4e,0x41,0x82,0x8c,0x46,0x45,0x83,0x83,0x43,0x40, /*紅紅的小臉溫暖我的心窩*/
0x42,0x81,0x42,0x43,0x42,0x43,0x42,0x23,0x25,0x85,0x30,0x45,0x10,0x45,0x30,0x45,0x10,0x45,0x30,0x85,0x85,0x85,0x40,
/*點(diǎn)亮我生命的火 火火 火火 火*/
0x83,0x81,0x82,0x6d,0x43,0x42,0x41,0x42,0x8d,0x8d,0x40, /*你是我的小呀小蘋果*/
0x83,0x81,0x82,0x82,0x45,0x43,0x8e,0x81,0x40,
/*就像天邊最美麗的云朵*/
0x41,0x4e,0x8d,0x4e,0x41,0x82,0x8c,0x46,0x45,0x83,0x83,0x43,0x40, /*春天又來到了花開滿山坡*/
0x42,0x81,0x42,0x43,0x82,0x8c,0x8d,0x4d,0x41,0x8d,0x20 /*種下希望就會(huì)收獲*/
};
uchar code mamahao[]={              //世上只有媽媽好
//世上只有媽媽好
0x68,0x52,0x34,0x54,0x84,0x62,0x52,0x68,
//世上只有媽媽好
0x34,0x52,0x62,0x54,0x34,0x12,0xc2,0x52,0x32,0x28,
//有媽的孩子像個(gè)寶
0x24,0x32,0x54,0x52,0x62,0x34,0x24,0x18,
//投進(jìn)了媽媽的懷抱
0x54,0x32,0x22,0x12,0xc2,0x12,0xb8,0x04,0xff,
//幸福享不了
};
uchar code tiger[]={//兩只老虎
0x14,0x24,0x34,0x14,0x14,0x24,0x34,0x14,
//兩只老虎兩只老虎
0x34,0x44,0x58,0x34,0x44,0x58,
//跑得快跑得快
0x52,0x61,0x52,0x41,0x34,0x14,0x52,0x61,0x52,0x41,0x34,0x14,
//一只沒有眼睛一只沒有尾巴
0x14,0xb4,0x18,0x14,0xb4,0x18,0xff,
//真奇怪真奇怪
};



//----延時(shí)子程序--------------------------------------------------
void Delay(uint xms)
{
uint j;
for(;xms>0;xms--)
for(j=110;j>0;j--);
}
//---------------------------------------------------------------

//----定時(shí)器變量賦值---------------------------------------------
void Timer_Set(uchar num)
{
th0=Note[num]/256;
tl0=Note[num]%256;
}
//---------------------------------------------------------------
//----系統(tǒng)初始化-------------------------------------------------
void Init()
{
BUZZER = 1; //關(guān)閉蜂鳴器
TMOD = 0x01; //定時(shí)器0工作方式1
TR0 = 1; //啟動(dòng)定時(shí)器
ET0 = 1; //定時(shí)器0溢出中斷使能
EA = 1; //總中斷使能
start_ = 0; //返回變量初始化
}
//---------------------------------------------------------------
//----按鍵掃描---------------------------------------------------
void Key_Scan()
{
P0 = 0x0f;
if(P0!=0x0f)
{

Delay(5);
if(P0!=0x0f)
{
P0=0xfe;
if(P0==0xee){Timer_Set(8);} //按鍵1被按下
else if(P0==0xde){Timer_Set(12);}//按鍵5被按下
else if(P0==0xbe){Timer_Set(2);} //按鍵9被按下
else if(P0==0x7e){Timer_Set(6);} //按鍵13被按下
else;
P0=0xfd;
if(P0==0xed){Timer_Set(9);} //按鍵2被按下
else if(P0==0xdd){Timer_Set(13);}//按鍵6被按下
else if(P0==0xbd){Timer_Set(3);} //按鍵10被按下
else if(P0==0x7d){Timer_Set(7);} //按鍵14被按下
else;
P0=0xfb;
if(P0==0xeb){Timer_Set(10);} //按鍵3被按下
else if(P0==0xdb){Timer_Set(14);}//按鍵7被按下
else if(P0==0xbb){Timer_Set(4);} //按鍵11被按下
else if(P0==0x7b){Timer_Set(15);}//按鍵15被按下
else;
P0=0xf7;
if(P0==0xe7){Timer_Set(11);} //按鍵4被按下
else if(P0==0xd7){Timer_Set(1);} //按鍵8被按下
else if(P0==0xb7){Timer_Set(5);} //按鍵12被按下
else if(P0==0x77){Timer_Set(1);} //按鍵16被按下
else;
}
}
else
{
th0=0;
}
}
//---------------------------------------------------------------
//----主程序-----------------------------------------------------
void main()
{
uchar temp,yinpu,jiepai;
Init();
while(1)
{
start:
temp=0;
while(Xiaopingguo[temp]!=0x20)
{
jiepai=Xiaopingguo[temp]>>4; //獲取節(jié)拍
yinpu=Xiaopingguo[temp]&0x0F; //獲取音普
Timer_Set(yinpu);
Delay(jiepai*50);
temp++;
P0 = 0x0f;
if(P0!=0x0f)goto out;
}
out:
th0 = 0;
BUZZER = 1;//關(guān)閉蜂鳴器
while(1)
{
Key_Scan();
if(start_==1)
{
start_=0;
goto start;
}
}
}
}
//---------------------------------------------------------------
//----定時(shí)器0中斷服務(wù)程序----------------------------------------
void Timer0() interrupt 1
{

TH0 = th0;
TL0 = tl0;
if(th0==0)BUZZER=1; //判斷停頓,有停頓不發(fā)音
else{BUZZER = ~BUZZER;} //無停頓發(fā)音
}
//----------------------------------------------------------------

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

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2018-9-6 05:51 | 只看該作者
補(bǔ)全原理圖或者詳細(xì)說明一下電路連接即可獲得100+黑幣
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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