本帖最后由 slslhrtd 于 2020-6-13 11:22 編輯
1.使用鍵盤彈奏音樂,7個按鍵控制7中音符(高音) 2.單片機外接7只LED,按鍵放音的同時,按下一個音律按鍵,點亮1只LED,同時閃爍十次后熄滅,按下另一個音律按鍵,點亮2只LED,同時閃爍十次后熄滅,……,按下最后一個按鍵,點亮7只LED,同時閃爍十次后熄滅 3.單片機每次按動音律按鍵,除了點亮對應(yīng)的燈亮狀態(tài)之外,結(jié)合音律通過蜂鳴器放音,將音律發(fā)聲出來 4.單片機外接第八只按鍵,一旦按下,連續(xù)播放一小段音樂。
#include <reg51.h> sbit K1=P3^0; sbit K2=P3^1; sbit K3=P3^2; sbit K4=P3^3; sbit K5=P3^4; sbit K6=P3^5; sbit K7=P3^6; sbit K8=P3^7; sbit fengmingqi=P0^5; unsigned char m,n,time; unsigned char Timer0_H,Timer0_L; code unsigned char MUSIC[]={ 5,2,1, 3,2,1, 2,2,2, 2,2,4, 3,2,1, 1,2,1, 2,2,1, 3,2,4, 5,2,1, 3,2,1, 2,2,2, 2,2,2, 5,1,1, 3,2,1, 4,2,1, 3,2,4, 3,2,1, 3,2,1, 7,2,1, 3,2,1, 2,2,2, 1,2,1, 7,1,1, 1,2,1, 2,2,1, 3,2,1, 6,2,3, 6,1,1, 1,2,1, 3,2,1, 2,2,1, 6,1,1, 1,2,1, 7,1,1, 5,1,1, 6,1,6, 5,2,1, 3,2,1, 2,2,2, 2,2,1, 2,2,1, 3,2,1, 1,2,1, 2,2,1, 3,2,4, 5,2,1, 3,2,1, 2,2,2, 2,2,1, 2,2,1, 5,1,1, 3,2,1, 4,2,1, 3,2,4, 3,2,1, 3,2,1, 7,2,3, 3,2,1, 2,2,2, 1,2,1, 7,1,1, 1,2,1, 2,2,1, 3,2,1, 6,2,3, 6,1,1, 1,2,1, 3,2,1, 2,2,1, 6,1,1, 1,2,1, 7,1,2, 5,1,2, 6,1,6, 0,0,0 }; code unsigned char FREQH[]={0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8, 0xF9, 0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC,0xFC, 0xFD,0xFD,0xFD,0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,} ; code unsigned char FREQL[]={0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,0x21,0xE1, 0x8C,0xD8,0x68,0xE9,0x5B,0x8F, 0xEE,0x44, 0x6B,0xB4,0xF4,0x2D, 0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,}; void delay(unsigned char m) { unsigned char n; for(m=0;m<250;m++) for(n=0;n<250;n++); } void delaymss(unsigned char t) {unsigned char t1; unsigned long t2; for(t1 = 0; t1 < t; t1++) for(t2 = 0; t2 < 8000; t2++); TR0 = 0; } void timer0init() { EA=1; ET0=1; TMOD=0X01; TH0 = Timer0_H; TL0 = Timer0_L; } void Song() { TH0=Timer0_H; TL0=Timer0_L; TR0=1; delaymss(time); } void timer0() interrupt 1 //T0中斷程序,控制發(fā)音的音調(diào) { TR0 = 0; TH0 = Timer0_H; //下次的中斷時間, 這個時間, 控制音調(diào)高低 TL0 = Timer0_L; fengmingqi = !fengmingqi; TR0 = 1; } void main() { unsigned char a; P2=0xff; P0=0x00; while(1) { if(K1==0) { delay(246); if(K1==0) { TMOD=0x01; TR0=1; for(m=0;m<10;m++) for(n=0;n<10;n++) { TH0=0xfe; TL0=0x21; do{} while(!TF0); fengmingqi=!fengmingqi; TF0=0; } for(a=0;a<10;a++) { P2=0x7f; delay(0); P2=0xff; delay(0); } } }
|