標(biāo)題: 基于STC89C52RC的音樂(lè)盒 [打印本頁(yè)]
作者: zhang866 時(shí)間: 2020-12-17 10:27
標(biāo)題: 基于STC89C52RC的音樂(lè)盒
c72eae151107f9fa3cf396e5f64d1ce2.png (62.47 KB, 下載次數(shù): 37)
下載附件
2020-12-17 13:39 上傳
代碼
#include<reg52.h>
sbit BUZZER=P2^0;
unsigned char th,tl;
unsigned char flag1,flag2;
char code table[]={
0xc0,0xf9,0xa4,0xb0
/*,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e*/
};
unsigned int TONE[14]={1012,956,852,759,716,638,568,506,478,426,379,1276,1136,1433};
unsigned char code SONG[4][150]={
{5,5,5,5,3,4,5,8,6,6,6,6,8,6,5,5,5,5,5,5,7,6,4,4,4,4,4,4,4,3,2,1,1,8,8,8,8,5,3,8,
8,10,9,9,9,9,8,7,6,6,7,7,7,7,7,8,9,5,7,7,8,9,8,7,8,8,20},
{5,8,6,8,5,3,5,2,3,5,3,5,6,8,5,6,5,3,5,1,3,2,3,2,1,2,3,6,5,3,5,6,5,8,6,5,3,5,2,5,2,
3,2,1,20},
{3,5,8,6,5,3,5,6,8,5,8,10,9,8,9,8,6,8,5,3,5,6,5,6,8,9,5,6,3,2,1,2,2,2,3,5,5,8,2,3,
5,3,5,8,6,5,3,5,6,8,5,8,10,9,8,9,8,6,8,5,3,5,6,5,6,8,9,5,6,3,8,6,5,3,2,1,2,2,3,5,8,10,9,8,9,8,5,6,8,20},
{1,2,3,1,1,2,3,1,3,4,5,3,4,5,5,6,5,4,3,1,5,6,5,4,3,1,2,11,1,2,11,1,20}
};
unsigned char code BEAT[4][150]={
{4,4,4,4,4,4,8,8,4,4,4,4,4,4,8,4,4,4,4,4,4,4,8,8,4,4,4,4,4,2,8,8,4,4,4,4,4,4,8,4,8,4,
4,4,4,2,4,8,8,4,4,4,4,4,4,8,8,4,4,4,4,4,4,8,8},
{8,8,4,4,8,4,4,4,4,8,4,4,4,4,4,4,4,4,4,8,4,8,4,4,4,4,16,4,4,4,4,8,4,4,4,4,4,4,8,4,4,4,4,16},
{4,4,4,4,16,4,4,4,4,16,8,4,8,8,4,4,4,4,16,8,4,8,4,4,8,4,4,16,4,4,8,16,8,4,4,8,8,8,4,4,16,4,4,4,4,16,
4,4,4,4,16,8,4,8,8,4,4,4,4,16,8,4,8,4,4,8,4,4,16,8,4,8,8,4,4,8,16,8,4,16,8,4,8,8,4,4,4,4,16},
{4,4,4,4,4,4,4,4,4,4,8,4,4,8,2,2,2,2,4,4,2,2,2,2,4,4,4,4,8,4,4,8}
};
void SET_BUZZER_TONE(unsigned int tone)
{
TR0=0;
//關(guān)閉定時(shí)器0
//TH0=(65536-tone)/256;
//TL0=(65536-tone)%256;
th=(65536-tone)/256;
tl=(65536-tone)%256;
TR0=1 ;
//開(kāi)啟定時(shí)器0
}
void DELAY_MIN_BEAT (unsigned char x)
{
unsigned int i,j,k;
for (i=0;i<x;i++)
{
for(j=0;j<100;j++)
for(k=0;k<120;k++);
}
TR0=0;//關(guān)閉定時(shí)器0
}
void TIME0_INIT()
{
IE|=0x82; //1000_0010開(kāi)啟總中斷并開(kāi)啟定時(shí)器0
TMOD=0x01;//定時(shí)器О工作在方式1
IP=0x02;
//定時(shí)器0具有最高優(yōu)先級(jí)
}
void INT_INIT(){
IE|=0x85;//1000_0101開(kāi)啟總中斷并開(kāi)啟外部中斷0,1
TCON|=0x05;//外部中斷0和1負(fù)邊緣觸發(fā)
}
void display(char a)
{
P0=table[a];
}
void main()
{
char num1,num2;
unsigned char flag0;
num1=0;//對(duì)應(yīng)遞增按鈕,即外部中斷О
num2=0;//對(duì)應(yīng)遞減按鈕,即外部中斷1
flag0=1;//定時(shí)器TO中斷標(biāo)志位
flag1=0;//遞增中斷標(biāo)志位
flag2=0;//遞減中斷標(biāo)志位
BUZZER=0;
TIME0_INIT();//定時(shí)器初始化
INT_INIT();//外部中斷初始化
while(1)
{
display(num1);
while(flag0)
//定時(shí)器TO中斷標(biāo)志位
{
if(SONG[num1][num2]==20) flag0=0;
//如果檢測(cè)到最后一個(gè)音調(diào)為20,說(shuō)明此曲應(yīng)該結(jié)束
else
{
if(flag1==1)
//中斷檢測(cè)
{
num1++;
if(num1>3) num1=0;
num2=0;
flag1=0;
display(num1);
}
if(flag2==1)
//中斷檢測(cè)
{
num1--;
if(num1<0) num1=3 ;num2=0;
flag2=0;
display(num1);
}
SET_BUZZER_TONE(TONE[SONG[num1][num2]]);//音調(diào)
DELAY_MIN_BEAT(BEAT[num1][num2]) ;//節(jié)拍
num2++;
}
}
num2=0;
flag0=1;
num1++;
if(num1==4) num1=0;
}
}
void T0_TONE(void) interrupt 1
{
TH0=th;
TL0=tl ;
BUZZER=~BUZZER;
}
void INT0_SELECT(void) interrupt 0{
flag1=1;
}
void INT1_SELECT(void) interrupt 2{
flag2=1;
}
-
-
51黑論壇_單片機(jī)音樂(lè)盒.zip
2020-12-17 10:26 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
1.2 MB, 下載次數(shù): 20, 下載積分: 黑幣 -5
BY-CDUT-ZSLOO
歡迎光臨 (http://www.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
不卡av在线|
国产精品精品视频一区二区三区
|
二区三区视频
|
国产精品久久久
|
午夜国产
|
99免费|
亚洲欧美一区二区三区在线
|
亚洲国产欧美在线人成
|
久久一区二区三区四区五区
|
欧美久久精品一级c片
|
久久久久久91
|
日韩在线中文字幕
|
综合色在线
|
av激情在线
|
国产精品免费看
|
91九色视频
|
午夜精品久久
|
成人免费大片黄在线播放
|
xx性欧美肥妇精品久久久久久
|
二区av
|
成人av一区|
国产欧美精品一区二区三区
|
91免费电影
|
免费精品|
91香蕉嫩草
|
日本一区二区三区在线观看
|
一区二区三区四区在线
|
日韩精品一区二区三区视频播放
|
成人免费毛片在线观看
|
av一级一片
|
国产精品18久久久久久久
|
午夜男人视频
|
欧洲一区二区三区
|
99色在线视频
|
日本欧美国产
|
日韩在线免费播放
|
天天综合日日夜夜
|
色狠狠一区
|
久久久久久亚洲
|
日韩精品无码一区二区三区
|
久久久久成人精品
|