學(xué)習(xí)51單片機(jī)不久后,自己設(shè)計(jì)制作了這個(gè)簡(jiǎn)易電子琴,這是我單片機(jī)DIY的第一個(gè)作品,從構(gòu)思設(shè)計(jì)-購(gòu)買(mǎi)元件-布局焊接-程序編寫(xiě),系統(tǒng)地體驗(yàn)了整個(gè)開(kāi)發(fā)流程,也是一邊學(xué)一邊做,還好有網(wǎng)絡(luò)。 在2015年3月底焊接的,那段時(shí)間也參考網(wǎng)上的程序?qū)懥藗(gè)程序,實(shí)現(xiàn)的功能跟現(xiàn)在這個(gè)是一樣的,只不過(guò)程序結(jié)構(gòu)不好,還有延時(shí)有點(diǎn)問(wèn)題,所以在2016年1月1日重寫(xiě)了一下,功能不變,沒(méi)加沒(méi)減。
沒(méi)什么技術(shù)含量,但是是我的第一個(gè)DIY成品,很有紀(jì)念價(jià)值啊,現(xiàn)在分享一下。
有演示視頻,有圖片,有程序,不過(guò)沒(méi)有元件清單,沒(méi)有電路圖,也沒(méi)有必要吧,大家看看就都明白。
基于51單片機(jī)的簡(jiǎn)易電子琴 (1).jpg (1.61 MB, 下載次數(shù): 257)
下載附件
2016-1-4 13:39 上傳
基于51單片機(jī)的簡(jiǎn)易電子琴 (2).jpg (2.02 MB, 下載次數(shù): 160)
下載附件
2016-1-4 13:40 上傳
基于51單片機(jī)的簡(jiǎn)易電子琴 (3).jpg (1.47 MB, 下載次數(shù): 243)
下載附件
2016-1-4 13:40 上傳
基于51單片機(jī)的簡(jiǎn)易電子琴 (4).jpg (1.34 MB, 下載次數(shù): 252)
下載附件
2016-1-4 13:40 上傳
基于51單片機(jī)的簡(jiǎn)易電子琴 (5).jpg (890.03 KB, 下載次數(shù): 243)
下載附件
2016-1-4 13:40 上傳
基于51單片機(jī)的簡(jiǎn)易電子琴 (6).jpg (1.01 MB, 下載次數(shù): 240)
下載附件
2016-1-4 13:40 上傳
視頻:
源代碼:
- #include <reg52.h>
- sbit BUZZ=P1^6;//蜂鳴器連續(xù)的IO口
- unsigned char T1TH=0,T1TL=0;
- unsigned char code song1[]={ //兩只老虎
- 0x14,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,
- 0xFF //歌曲結(jié)束標(biāo)志
- };
- unsigned char code song2[]={ //送別
- 0x54,0x54,0x32,0x52,0x88,0x64,0x84,0x58,
- 0x54,0x12,0x22,0x34,0x22,0x12,0x28,0x04,0x04,
- 0x54,0x32,0x52,0x86,0x72,0x64,0x84,0x58,
- 0x54,0x22,0x32,0x46,0xB2,0x18,0x04,0x04,
- 0x64,0x84,0x88,0x74,0x62,0x72,0x88,
- 0x62,0x72,0x82,0x62,0x62,0x52,0x32,0x12,0x28,0x04,0x04,
- 0x54,0x32,0x52,0x86,0x72,0x64,0x84,0x58,
- 0x54,0x22,0x32,0x46,0xB2,0x18,0x04,0x04,
- 0xFF
- };
- unsigned char code cuzhi[]={
- 0xFF,0xFF, // low mid high
- 0xFC,0x44, //1 ## 5 6 7 1 2 3 4 5 6 7 1 2 3
- 0xFC,0xAC, //2 ## D C B 1 2 3 4 5 6 7 8 9 A
- 0xFD,0x09, //3
- 0xFD,0x34, //4
- 0xFD,0x82, //5
- 0xFD,0xC8, //6
- 0xFE,0x06, //7
- 0xFE,0x2A, //8 --high 1 N = 470;
- 0xFE,0x48, //9 --hign 2 N = 440;
- 0xFE,0x66, //A --hign 3 N = 410;
- 0xFC,0x0C //B---low 7 N = 1012
- };
- void delay1ms(unsigned char z); //延時(shí)1MS
- void delay125ms(unsigned char z); //延時(shí)165MS,即十六分音符
- void sing();
- main()
- {
- EA=1;//開(kāi)總中斷
- TMOD=0x10;//定時(shí)器1工作在方式1
- TH1=0;
- TL1=0;
- ET1=1;
- while(1)
- {
- sing();
- delay1ms(1000);
- }
- }
- void sing()
- {
- unsigned char temp;
- unsigned char jianpu;
- unsigned int i = 0;
- static unsigned char thesong = 0;
- while(1)
- {
- switch(thesong)
- {
- case 0:temp = song1[i];break;
- case 1:temp = song2[i];break;
- default:break;
- }
- if(temp == 0xFF)
- break;
- jianpu = (temp>>4); //取數(shù)的高4位
- if(jianpu != 0) //不是休止符
- {
- T1TH = cuzhi[jianpu*2];
- T1TL = cuzhi[jianpu*2+1];
- } //查表找初值
- else //jp = 0,休止符
- { TR1 = 0;BUZZ = 1; } //關(guān)蜂鳴器
- delay125ms( temp & 0x0F ); //取數(shù)的低4位
- TR1 = 0; //唱完一個(gè)音停10MS
- BUZZ = 1;
- delay1ms(10);
- TR1 = 1;
- i++;
- }
- TR1 = 0;
- BUZZ = 1;
- thesong++;
- if(thesong >=2)
- thesong = 0;
- }
- void delay125ms(unsigned char z) //延時(shí)165MS,即十六分音符
- {
- unsigned int x,y;
- for(x=z;x>0;x--)
- for(y=15000;y>0;y--);
- }
- void delay1ms(unsigned char z) //延時(shí)1MS
- {
- unsigned int x,y;
- for(x=z;x>0;x--)
- for(y=112;y>0;y--);
- }
- void timer1() interrupt 3 //用于產(chǎn)生各種音調(diào)
- {
- TH1=T1TH;
- TL1=T1TL;
- BUZZ = ~BUZZ;
- }
復(fù)制代碼
制作資料下載:
【BrightBell】基于51單片機(jī)的簡(jiǎn)易電子琴.rar
(9.67 MB, 下載次數(shù): 331)
2016-1-4 16:45 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
為大家省點(diǎn)黑幣,上百度云。。。
鏈接:http://pan.baidu.com/s/1skoeFkp 密碼:x9v5
|