久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
單片機紅外編碼,解碼實驗和音樂應用實驗程序
[打印本頁]
作者:
Ares_g
時間:
2020-11-20 17:01
標題:
單片機紅外編碼,解碼實驗和音樂應用實驗程序
*****************************************************************************/
#include <reg52.h>
#include <stdio.h>
sbit sound=P3^3; //蜂鳴器
sbit IR=P3^2; //P3.2為紅外一體化接收
sbit SPK=P3^7; //喇叭
unsigned char data l; //第幾個碼?
unsigned char dm;
unsigned char aa[2]; //定義2個數組,用來存儲代碼,8位的數據碼和8位的數據反碼
unsigned long bb; //定義bb用來存放用戶識別碼,這里采用的是26位的用戶識別
unsigned char *song;
bit data IR_OK=0; //解碼成功標志
unsigned char song_number; //第幾首歌曲號碼
//第一首 干杯,朋友
unsigned char code song1[97]={0x34,0x32,0x32,0x34,0x42,0x51,
0x62,0x52,0x42,0x32,0x34,0x04,
0x74,0x74,0x62,0x62,0x64,
0x3c,0x04,
0x64,0x62,0x52,0x42,0x32,0x34,
0x33,0x31,0x32,0x72,0x76,0x72,
0x83,0x81,0x82,0x82,0x82,0x74,0x72,
0x7c,0x04,
0x63,0x61,0x62,0x62,0x64,0x72,0x82,
0x72,0x74,0x72,0x62,0x52,0x42,0x32,
0x42,0x44,0x42,0x42,0x52,0x62,0x52,
0x5c,0x04,
0x64,0x62,0x62,0x64,0x72,0x82,
0x72,0x74,0x72,0x62,0x52,0x42,0x32,
0x42,0x46,0x53,0x41,0x42,0x32,
0x3c,0x04,
0x44,0x48,0x02,0x32,
0x3f,
0x44,0x48,0x02,0x32,
0x3f,
0x34,0x0c,
0xFF};
//第二首 蘭花草
unsigned char code song2[46]={0x12,0x52,0x52,0x52,0x56,0x42,
0x32,0x42,0x32,0x22,0x18,
0x82,0x82,0x82,0x82,0x86,0x72,
0xB2,0x72,0x72,0x62,0x58,
0x52,0x82,0x82,0x72,0x56,0x42,
0x32,0x42,0x32,0x22,0x16,0xB2,
0xB2,0x32,0x32,0x22,0x16,0x52,
0x42,0x32,0x22,0xC2,0x88,
0xFF};
//第三首 兩只蝴蝶
unsigned char code song3[131]={0x52,0x42,
0x58,0x02,0x42,0x52,0x42,
0x38,0x04,0x12,0x32,
0x44,0x42,0x52,0x42,0x32,0x12,0x12,
0xC8,0x04,0x52,0x42,
0x58,0x02,0x42,0x52,0x42,
0x38,0x04,0x12,0x32,
0x44,0x42,0x52,0x42,0x32,0x12,0x32,
0x48,0x04,0x52,0x42,
0x58,0x02,0x42,0x52,0x42,
0x38,0x04,0x12,0x32,
0x44,0x42,0x52,0x42,0x32,0x12,0x11,0x31,
0xC8,0x04,0x52,0x72,
0x78,0x02,0x72,0x82,0x72,
0x58,0x04,0x42,0x42,
0x44,0x42,0x52,0x42,0x32,0x12,0x12,
0x32,0x32,0x3C,
0x09,0x72,0x72,0x82,
0xA2,0x92,0x92,0x82,0x52,0x42,0x42,0x42,
0x58,0x02,0x52,0x52,0x72,
0x84,0x84,0x02,0x12,0x52,0x42,
0x48,0x04,0x52,0x72,
0x72,0x52,0x74,0x02,0xA4,0x92,
0x82,0x92,0x54,0x02,0x82,0x82,0x92,
0x82,0x72,0x52,0x42,0x02,0xC4,0x12,
0x3C,
0xFF};
//第四首 祈禱
unsigned char code song4[37]={0xC4,0x12,0x32,0x44,0x42,0x52,
0x52,0x44,0x32,0x32,0x12,0x14,
0x12,0x12,0x32,0x42,0x54,0x44,
0x4F,
0xC4,0x12,0x32,0x44,0x42,0x72,
0x58,0x42,0x32,0x34,
0x14,0x12,0x32,0x34,0x32,0x12,
0x1F,
0xFF};
//第五首 陽光總在風雨后
unsigned char code song5[144]={0x52,0x62,
0x74,0x74,0x74,0x34,
0x42,0x34,0x52,0x56,0x42,
0x34,0x34,0x14,0x32,0x12,
0x12,0xC2,0xC4,0x04,0x52,0x62,
0x74,0x74,0x74,0x34,
0x42,0x34,0x52,0x56,0x42,
0x34,0x32,0x12,0x12,0x34,0x42,
0x4C,0x52,0x42,
0x34,0x32,0x42,0x32,0x12,0x12,0xC2,
0xC2,0x54,0x52,0x54,0x52,0x52,
0x42,0x32,0x32,0x12,0x32,0x42,0x32,0x52,
0x5C,0x52,0x42,
0x34,0x32,0x42,0x32,0x12,0x12,0xC2,
0xC2,0x54,0x52,0x54,0x02,0x52,
0x52,0x42,0x32,0x12,0x32,0x84,0x72,
0x7F,
0x0F,
0x74,0x72,0x52,0x54,0x74,
0x82,0x52,0x52,0x72,0x78,
0x34,0x32,0x32,0x42,0x54,0x72,
0x7F,
0x86,0x82,0x72,0x52,0x54,
0x72,0x84,0x32,0x36,0x52,
0x42,0x52,0x42,0x32,0x34,0x12,0x32,
0x32,0x42,0x4C,
0x86,0x82,0x72,0x52,0x54,
0x72,0x84,0x52,0x56,0x52,
0x42,0x52,0x72,0x82,0x52,0x34,0x12,
0x12,0x32,0x3C,
0xFF};
//第六首 心心相印
unsigned char code song6[85]={
0x04,0x24,0x14,0xC4,
0x54,0x54,0x48,
0x04,0x54,0x44,0x34,
0x22,0x14,0xB2,0xC8,
0x04,0x12,0xC2,0x16,0x12,
0x76,0x52,0x46,0x12,
0x3F,
0x04,0xB4,0xD4,0xC4,
0x14,0x28,0xC4,
0x14,0x12,0x32,0x16,0xC2,
0x54,0x78,0x34,
0x4C,0x42,0x52,
0x86,0x72,0x76,0x52,
0x74,0x28,0x42,0x52,
0x46,0x12,0x26,0x12,
0xCF,
0x04,0x24,0x14,0xC4,
0x56,0x52,0x48,
0x04,0x54,0x44,0x34,
0x22,0x14,0xB2,0xC8,
0x04,0x34,0x14,0xC4,
0x12,0x32,0x18,0x42,0x42,
0x74,0x58,0x44,
0x3F,
0xFF};
//第七首 最浪漫的事
unsigned char code song7[138]={0xC2,0xC2,0x12,
0x34,0x32,0x32,0x32,0x12,0x12,0x52,
0x54,0x02,0xC2,0x12,
0x32,0x32,0x32,0x32,0x34,0x52,0x72,
0x7C,0x02,0x72,
0x82,0x72,0x82,0x72,0x84,0x72,0x41,0x51,
0x52,0x41,0x31,0x34,0x02,0x32,0x32,0x12,
0x34,0x32,0x12,0x32,0x54,0x42,
0x32,0x32,0x32,0x32,0x34,0x52,0x72,
0x7C,0x72,0x72,
0x82,0x72,0x82,0x72,0x84,0x82,0x72,
0x42,0x52,0x42,0x34,0x12,0x12,0x32,
0xC4,0x52,0x42,0x34,0x12,0x12,
0x31,0x41,0x32,0x3C,
0x84,0x82,0x72,0x82,0x72,0x52,0x72,
0x78,0x02,0x72,0x82,0xA2,
0x84,0x82,0x72,0x82,0x72,0x82,0x32,
0x0A,0x72,0x82,0xA2,
0x38,0x02,0x32,0x42,0x52,
0x64,0x62,0x72,0x82,0x82,0x72,0x82,
0x82,0xA2,0x82,0x82,0x82,0xA2,0x82,0x72,
0x78,0x72,0x32,0x82,0x72,
0x78,0x72,0x82,0xA3,0x51,
0x42,0x51,0x41,0x3C,
0xFF};
//第八首 一生有你
unsigned char code song8[77]={0xC2,0xC2,0x34,0x42,0x42,
0x52,0x41,0x51,0x5C,
0x04,0xC2,0xC2,0x34,0x42,0x42,
0x52,0x31,0x41,0x4C,
0x04,0xC2,0xC2,0x34,0x42,0x42,
0x52,0x41,0x51,0x58,0x32,0x52,
0x4C,0x42,0x32,
0x34,0x32,0x42,0x48,
0x04,0xC2,0xC2,0x34,0x42,0x42,
0x72,0x41,0x51,0x5C,
0x04,0xC2,0xC2,0x32,0x32,0x42,0x42,
0x52,0x42,0x4C,
0x04,0xC2,0xC2,0x34,0x42,0x42,
0x52,0x41,0x51,0x58,0x32,0x52,
0x4C,0x42,0x32,
0x32,0x42,0x4C,
0xFF};
//第九首 寧靜的夏天
unsigned char code song9[]={
0X54,0XC4,0X12,0X32,0X34,
0X52,0X52,0X52,0X52,0X42,0X32,0X34,
0XC1,0XC2,0X52,0XC2,0X12,0X32,0X34,
0X11,0X12,0X31,0X12,0XC2,
0X78,0X72,0X52,0X52,0X42,
0X32,0X42,0X52,0X11,0XC1,0XC4,0XC1,0XC1,0XC1,0XC1,
0X12,0X32,0X32,0X12,0X42,0X42,0X44,
0XC2,0X12,0X32,0X42,0X52,0X72,0X72,0X82,
0X41,0X51,0X42,0X48,0X42,0X12,
0X3C,0X72,0X62,
0X3C,0X72,0X62,
0X3C,0X72,0X62,
0x21,0x31,0x41,0x51,0x61,0x71,0x81,0x91,0x61,0x71,0x81,0x91,
0X3F,
0X3F,
0X54,0XC2,0XC2,0X42,0XC2,0XC4,
0X34,0X32,0X42,0X52,0XC2,0XC4,
0XD2,0XC2,0X12,0X22,0X38,
0X12,0X22,0X32,0X42,0X48,
0xFF};
//第十首 老鼠愛大米
unsigned char code song10[]={
0x32,0x31,0x41,
0x52,0x52,0x42,0x31,0x41,0x44,0x31,0x41,
0x52,0x52,0x42,0x32,0x34,0x71,0x11,
0x74,0x71,0x71,0x11,0x31,0x34,0x32,
0x32,0x32,0x32,0x31,0x41,0x44,0x32,0x41,0x51,
0x52,0x52,0x72,0x81,0x41,0x44,0x52,0x41,0x31,
0x32,0x32,0x42,0x51,0x71,0x74,0x71,0x71,
0x12,0x31,0x31,0x31,0x52,0x42,0x32,0x32,0x41,0x31,
0x34,0x52,0x51,0x71,
0x72,0x71,0x71,0x72,0x71,0x81,0x84,0x52,0x42,
0x32,0x32,0x32,0x41,0x51,0x54,0x51,0x71,
0x72,0x72,0x72,0x81,0xA1,0xA2,0x82,0x72,0x52,
0x42,0x32,0x32,0x12,0x44,0x51,0x71,
0x72,0x72,0x71,0x82,0x71,0x84,0x52,0x42,
0x32,0x32,0x32,0x41,0x51,0x54,0x51,0x71,
0x72,0x72,0x72,0x81,0xA1,0xA2,0x82,0x72,0x51,0x41,
0x42,0x42,0x44,0x32,0x51,0x61,
0x72,0x42,0x44,0x52,0x41,0x31,
0x34,0x52,0x41,0x31,0x34,0x52,0x42,
0x52,0x32,0x52,0x81,0x71,0x74,0x51,0x71,
0x82,0x81,0x71,0x72,0x81,0x71,0x74,0x51,0x41,0x31,
0x42,0x41,0x51,0x42,0x31,0x41,0x44,0x52,0x41,0x31,
0x34,0x52,0x41,0x31,0x34,0x52,0x42,
0x52,0x32,0x52,0x81,0x71,0x74,0x51,0x41,
0x82,0x82,0xA2,0x71,0x81,0x72,0x71,0x51,0x41,0x31,
0x44,0x41,0x31,0x41,0x51,0x44,0x52,0x52,
0x42,0x31,0x34,0x52,0x41,0x31,
0x42,0x31,0x34,
0xFF};
//第十一首 偏偏喜歡你
unsigned char code song11[]={
0XC2,0XB2,
0X36,0X52,0X42,0X32,0X11,0XC1,0XB2,
0XC6,0X12,0XC4,0X12,0XC2,
0X76,0XA2,0X82,0X72,0X51,0X41,0X32,
0X4C,0X42,0X32,
0X74,0X82,0X74,0X82,0X72,
0X52,0X41,0X38,0X32,0X42,
0X16,0XC2,0X72,0X52,0X42,0X42,
0X3C,0XC2,0XB2,
0X36,0X52,0X42,0X32,0X11,0XC1,0XB2,
0XC6,0X12,0XC4,0X12,0XC2,
0X76,0XA2,0X82,0X72,0X51,0X41,0X32,
0X4C,0X42,0X32,
0X76,0X82,0X74,0X82,0X72,
0X53,0X41,0X38,0X32,0X42,
0X16,0XC2,0X72,0X52,0X41,0X51,0X12,
0XCC,0XC2,0XB2,
0X16,0XC2,0X72,0X52,0X42,0X42,
0X3C,0X32,0X32,
0X26,0X22,0X24,0X42,0X32,
0x22,0x12,0x18,0x02,0x52,
0X46,0X12,0X44,0X72,0X82,
0X5C,0X52,0X52,
0X46,0X42,0X74,0X42,0X32,
0X36,0X42,0X58,
0X82,0X72,0X62,0X52,0X46,0X32,
0X3C,0X12,0XB2,
0X36,0X52,0X42,0X32,0X11,0XC1,0XB2,
0XC6,0X12,0XC4,0X12,0XC2,
0X76,0XA2,0X82,0X72,0X51,0X41,0X32,
0X48,0X02,0X42,0X52,0X62,
0X76,0X82,0X74,0X82,0X72,
0X56,0X41,0X38,0X32,0X22,
0X16,0XC2,0X72,0X52,0X42,0X42,
0X3C,0X04,0X04,0X04,0X04,
0xFF};
//第十二首
unsigned char code song12[]={
0x34,0x32,0x34,0x34,0x24,0x34,0x32,0x32,0x24,0x38,0x44,0x58,0x48,
0x34,0x32,0x34,0x34,0x24,0x38,0x34,0x7F,0x34,0x32,0x34,0x32,
0x24,0x38,0x34,0x24,0x38,0x44,0x58,0x48,0x34,0x32,0x34,0x34,
0x24,0x38,0x34,0x7F,0x16,0x4C,0x74,
0x78,0x64,0x54,0x48,0x54,0x64,0x58,0x44,0x34,0x24,0x38,0x24,
0x14,0x12,0x21,0x11,0x78,0x68,0x3F,0x4C,0x74,
0x78,0x64,0x52,0x42,0x48,0x54,0x64,0x58,0x44,0x34,0x24,0x38,0x24,
0x24,0x38,0x44,0x58,0x48,0x3C,
0xFF};
unsigned char code* code songs[]={song1,song2,song3,song4,song5,song6,
song7,song8,song9,song10,song11,song12}; //指向12首歌
unsigned char code yin[30]={0xFF,0xFF,0xFB,0x90,0xFC,0x0C,0xFC,0x44,0xFC,0xAC,0xFD,0x09,0xFD,0x34,
0xFD,0x82,0xFD,0xC8,0xFE,0x06,0xFE,0x22,0xFA,0X15,0XFB,0x04,0xFA,0x67,0xFE,0x85}; //C調各音符頻率與計數初值T的對照表
//0.9ms
void delay0_9ms(void)
{
unsigned char j,k;
for(j=18;j>0;j--)
for(k=20;k>0;k--) ;
}
//1ms
void delay1ms(void)
{
unsigned char i,j;
for(i=2;i>0;i--)
for(j=230;j>0;j--) ;
}
//4.5ms
void delay4_5ms(void)
{
unsigned char i,j;
for(i=10;i>0;i--)
for(j=225;j>0;j--) ;
}
//100ms
void delay100ms(void)
{
unsigned char i,j,k;
for(i=200;i>0;i--)
for(j=20;j>0;j--)
for(k=10;k>0;k--) ;
}
/*延時1/4拍時間即187ms*/
void delay187ms()
/*
{
unsigned char i,j,k;
for(i=200;i>0;i--)
for(j=20;j>0;j--)
for(k=15;k>0;k--) ;
}
*/
{
unsigned char i,j;
for(i=255;i>0;i--)
{
for(j=120;j>0;j--)
{
if(IR_OK==1) {break;}
}
}
}
void t0(void) interrupt 0 using 2 //外部中斷0的函數
{
unsigned char i,j,k;
EA=0; //暫時關閉CPU的所有中斷請求
for(k=0;k<10;k++) //重復10次,目的是檢測在9毫秒內如果出現高電平就退出解碼程序
{ //aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
delay0_9ms(); //延時0.9毫秒
if (IR==1) {k=10;break;} //延時0.9毫秒后判斷P3.2腳是否出現高電平如果有就退出解碼程序
else if(k==9) //重復10次?
{ //bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
while(IR==0); //等待高電平避開9毫秒低電平引導脈沖
delay4_5ms(); //延時4.5毫秒避開4.5毫秒的結果碼
/********************************************
//26位的用戶碼,前13位數據碼,后13位數據反碼
*********************************************/
for(j=1;j<=26;j++)//每組數據為26位
{
while(IR==0); //
delay0_9ms();
if(IR==1)
{
delay1ms();
dm=dm|0x2000000; //因為是26位,一個"1",后面25個"0",轉化二進制即為"1000000"
if(j<26) dm=dm>>1; //數據"1",右移一個"1",一共25次
}
else if(j<26) dm=dm>>1; //數據"0",一共25次
}
bb=dm;
dm=0;
/***************************************************
//16位的用戶碼,前8位數據碼,后8位數據反碼
****************************************************/
for(i=0;i<2;i++)
{
for(j=1;j<=8;j++)//每組數據為26位
{
while(IR==0); //
delay0_9ms();
if(IR==1)
{
delay1ms();
dm=dm|0x80;
if(j<8) dm=dm>>1; //數據"1",右移一個"1",一共7次
}
else if(j<8) dm=dm>>1; //數據"0",一共7次
}
aa[i]=dm;
dm=0;
}
/***************************************************
//解碼成功的話,蜂鳴器叫一聲
****************************************************/
if(aa[0]==~aa[1]) //驗證成功
{
IR_OK=1;
sound=0;
delay100ms();
sound=1;
}
} //bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
} //aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
EA=1;
}
/*每個音符的發聲*/
void timer0() interrupt 1 using 1 //定時器T0
{
TH0=yin[2*l];
TL0=yin[2*l+1];
SPK = !SPK;
}
void sing_song()
{
unsigned int data j; //取碼指針
unsigned char data i; //用于循環
unsigned char data k; //幾個1/4拍
IR_OK=0; //不能少掉!!!!
song=songs[song_number];
j=0;
while(*(song+j)!=0xFF) //是否取到結束碼
{
if(IR_OK==1){break;} //這一句很重要的!!!!!
k=*(song+j)&0x0F; //后4位為多少個1/4拍
l=*(song+j)>>4; //song(song+j)[]中所放的每個字節
//前4位乘2表示為音符頻率在數組yin[]中的位置
TH0=yin[2*l]; //置初值
TL0=yin[2*l+1];
TR0=1; //起動定時器0
if ((yin[2*l]==0xff)&&(yin[2*l+1]==0xff)) //如果取到的都是休止符,則不輸出音頻
{
TR0=0;SPK=1;
}
for(i=k;i>0;--i) //節拍K為多少就執行多少個1/4拍
{ delay187ms(); }
TR0=0;
j++;
} //回22222
} //回xxxxxx
void main()
{
EA=1; //總中斷
TMOD=0x01; //timer0工作在方式1
IT0=1; //外部中斷0觸發方式控制位,下降沿觸發
ET0=1; //允許定時器T0中斷
EX0=1; //外部中斷0(INT0)中斷允許位
IP=0x01; //定義外部中斷0優先于定時器中斷的優先級
dm=0;
P2=0xc0;
P1=0x00;
while(1)
{
if(IR_OK==1)
{ if(aa[0]==0x11)
{song_number=0;P1=0x00;P2=0xf9;sing_song();} //顯示并演奏第1首
else if(aa[0]==0x12)
{song_number=1;P1=0x00;P2=0xa4;sing_song();} //顯示并演奏第2首
else if(aa[0]==0x13)
{song_number=2;P1=0x00;P2=0xb0;sing_song();} //顯示并演奏第3首
else if(aa[0]==0x14)
{song_number=3;P1=0x00;P2=0x99;sing_song();} //顯示并演奏第4首
else if(aa[0]==0x15)
{song_number=4;P1=0x00;P2=0x92;sing_song();} //顯示并演奏第5首
else if(aa[0]==0x16)
{song_number=5;P1=0x00;P2=0x82;sing_song();} //顯示并演奏第6首
else if(aa[0]==0x17)
{song_number=6;P1=0x00;P2=0xf8;sing_song();} //顯示并演奏第7首
else if(aa[0]==0x18)
{song_number=7;P1=0x00;P2=0x80;sing_song();} //顯示并演奏第8首
else if(aa[0]==0x19)
{song_number=8;P1=0x00;P2=0x90;sing_song();} //顯示并演奏第9首
else if(aa[0]==0x10)
{song_number=9;P1=0x00;P2=0x88;sing_song();} //顯示并演奏第10首
else if(aa[0]==0x1a)
{song_number=10;P1=0x00;P2=0x83;sing_song();} //顯示并演奏第11首
else if(aa[0]==0x1b)
{song_number=11;P1=0x00;P2=0xc6;sing_song();} //顯示并演奏第12首
else{sound=0;delay100ms();sound=1;delay100ms();
sound=0;delay100ms();sound=1;P1=0x00;P2=0xb6;} //蜂鳴器叫,表明沒有歌啦
}
}
}
復制代碼
作者:
admin
時間:
2020-11-21 16:42
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
久久99精品国产99久久6男男
|
国产黄色大片网站
|
国产精品高潮呻吟久久aⅴ码
|
男人天堂社区
|
久久99精品久久久久蜜桃tv
|
国产精品久久久久久久久久了
|
国产精品国产精品国产专区不片
|
99精品在线观看
|
欧美日韩在线免费
|
中文字幕免费在线
|
亚洲国产69
|
91视视频在线观看入口直接观看
|
午夜精品一区二区三区在线观看
|
久久久久久中文字幕
|
中文字幕亚洲一区
|
亚洲成人一二三
|
国产精品久久久久久亚洲调教
|
国产精品国产三级国产aⅴ浪潮
|
91porn国产成人福利
|
国产农村妇女毛片精品久久麻豆
|
成人影院av
|
久久专区
|
久久久久久国产精品
|
国产精品免费av
|
欧美在线精品一区
|
在线视频日韩
|
婷婷毛片
|
日本小电影网站
|
在线观看黄色
|
女同av亚洲女人天堂
|
在线免费观看黄视频
|
国产亚洲一区二区三区在线观看
|
国产中文区二幕区2012
|
在线看国产
|
91亚洲国产
|
欧美日韩精品一区
|
日韩av第一页
|
91xxx在线观看
|
麻豆精品国产91久久久久久
|
国产精品久久久久久久久久久久久久
|
亚洲精品一区二区在线观看
|