|
功能部分實(shí)現(xiàn),框架已經(jīng)寫(xiě)好:
1、按鍵選擇音樂(lè)自動(dòng)播放或自己演奏
2、EEPROM實(shí)現(xiàn)存儲(chǔ)音樂(lè)(未加入,代碼寫(xiě)好需要調(diào)試)
3、.......
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (16.98 KB, 下載次數(shù): 69)
下載附件
2018-7-21 18:14 上傳
0.png (17.43 KB, 下載次數(shù): 72)
下載附件
2018-7-21 18:14 上傳
0.png (55.01 KB, 下載次數(shù): 67)
下載附件
2018-7-21 18:14 上傳
單片機(jī)源程序如下:
- #include <reg52.h>
- #include "led.h"
- #include "beep.h"
- #include "lcd1602.h"
- #include "key.h"
- #include "tim.h"
- #include "delay.h"
- #include "music.h"
- #include "musicArr.h"
- #include "SoundPlay.h"
- typedef unsigned int u16;
- typedef unsigned char u8;
- void show(u8 arr[],u8 length,u8 pos,u8 mode);
- unsigned char calcArrLen(unsigned char arr[]);
- void displayInit(void);
- u8 code ShowData[]="Electronic Organ";
- u8 code ShowData1[]="150802027";
- u8 code ShowData2[]="Welcome to use ";
- u8 code ShowData3[]="press note";
- u8 code ShowData4[]="Same song";
- u8 code ShowData5[]="Song name";
- u8 code ShowData6[]="aiwonijiubaobaowo";
- u16 FreqTemp=0;
- void main()
- {
- unsigned char i=0,key=0,timer=0,flag1=0;
- LcdInit(); //液晶屏初始化
- timInit(); //定時(shí)器初始化
- // AT24C02_Init(); //EEPROM初始化
- ledOFF(); //關(guān)閉LED燈
- InitialSound(); //音樂(lè)播放器初始化
- displayInit();
- while(1)
- {
- key=key_Scan();
- if(key==0x16&&flag==0) //播放/停止鍵 并且處于停止播放狀態(tài),開(kāi)始播放
- {
- flag=1;
- }
- else if(key>0&&key<22&&flag==0) //21鍵音符
- {
- num=key-1;
- FreqTemp=Freqtab[key-1];
- TR0=1;
- }
- else
- {
- if(TR0==1) //之前音符鍵按下,延時(shí)一秒停止
- {
- delay_ms(1000);
- TR0=0;
- }
- }
- if(flag==1)
- {
- if(status==1) //循環(huán)播放兩首歌曲
- {
- LcdWriteCom(0x01); //清屏
- show(ShowData5,9,4,0);
- show(ShowData4,15,0,1);
- Play(Music_Same,0,3,360);
- delay_ms(2000);
- }
- else
- {
- LcdWriteCom(0x01); //清屏
- show(ShowData5,9,4,0);
- show(ShowData6,16,0,1);
- Play(Music_Girl,0,3,360);
- delay_ms(2000);
- }
- }
- }
- }
- void displayInit(void)
- {
- unsigned char i= 0;
- for(i=0;i<16;i++)
- {
- LcdWriteData(ShowData[i]);
- }
- lcd_pos(0x40+3);
- for(i=0;i<9;i++)
- {
- LcdWriteData(ShowData1[i]);
- num=ShowData1[i]+6-'0';
- TR0=1;
- delay_ms(1000);
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載(仿真+代碼):
單片機(jī)開(kāi)發(fā)實(shí)訓(xùn).zip
(321.68 KB, 下載次數(shù): 163)
2018-7-21 17:54 上傳
點(diǎn)擊文件名下載附件
24鍵可播放音樂(lè)電子琴 下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|