0% found this document useful (0 votes)
5 views8 pages

Play

The document contains C code for a music player using an embedded system, featuring functions for playing music in different modes: order, single, and random. It includes a frequency table for musical notes, UART communication for sending data, and LCD display functions for user interaction. The code is structured to handle music playback speed and utilizes a timer for sound generation.

Uploaded by

lx5995xl
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views8 pages

Play

The document contains C code for a music player using an embedded system, featuring functions for playing music in different modes: order, single, and random. It includes a frequency table for musical notes, UART communication for sending data, and LCD display functions for user interaction. The code is structured to handle music playback speed and utilizes a timer for sound generation.

Uploaded by

lx5995xl
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 8

#include <REGX52.

H>

#include <INTRINS.H>

#include "delay.h"

#include "timer0.h"

#include "tune.h"

#include "UART.h"

#include "music.h"

#include "LCD1602.h"

#include "matrixkey.h"

#include "UART.h"

unsigned int idata FreqTable[]={

0,

63628,63731,63835,63928,64021,64103,64185,64260,64331,64400,64463,64528,

64580,64633,64684,64732,64777,64820,64860,64898,64934,64968,65000,65030,

65058,65085,65110,65134,65157,65178,65198,65217,65235,65252,65268,65283,

};

unsigned char s1[]={77,79,68,69,58,79,82,68,69,82,0};

unsigned char s2[]={109,117,115,105,99,32,110,117,109,98,101,114,58,0};

unsigned char s3[]={77,79,68,69,58,83,73,78,71,76,69,0};

unsigned char s4[]={77,79,68,69,58,82,65,78,68,0};

//sbit Buzzer=P2^5; //定义蜂鸣器接口发声

#define SPEED1 500 //定义音乐播放速度(倍速播放更改?


#define SPEED2 200

#define SPEED3 1000

//unsigned int SPEED;

unsigned char MusicSelect;

unsigned char Music_num=sizeof(Music)/sizeof(Music[0]);

unsigned char speed;

void player(unsigned int musicnum)

timer0Init();

if(count0==0)

while(Music[musicnum][MusicSelect]!=0xFF)

FreqSelect=Music[musicnum][MusicSelect];

MusicSelect++;

delay(SPEED1/4*Music[musicnum][MusicSelect]);

MusicSelect++;

//LCD_ShowNum(2,12,MusicSelect,2);

TR0=0;

delay(5);

TR0=1;

else if(count0==1)
{

while(Music[musicnum][MusicSelect]!=0xFF)

FreqSelect=Music[musicnum][MusicSelect];

MusicSelect++;

delay(SPEED2/4*Music[musicnum][MusicSelect]);

MusicSelect++;

//LCD_ShowNum(2,12,MusicSelect,2);

TR0=0;

delay(5);

TR0=1;

else if(count0==2)

while(Music[musicnum][MusicSelect]!=0xFF)

FreqSelect=Music[musicnum][MusicSelect];

MusicSelect++;

delay(SPEED3/4*Music[musicnum][MusicSelect]);

MusicSelect++;

//LCD_ShowNum(2,12,MusicSelect,2);

TR0=0;

delay(5);

TR0=1;

}
if (Music[musicnum][MusicSelect]==0xFF)

MusicSelect=0;

TR0=0;

// while(1);

void order_play(void)

unsigned int o;

for (o=0;o<Music_num;o++)

//UartInit();

UART_Sendstring(s1);

delay(10);

// UartInit();

UART_Sendstring(s2);

delay(10);

UART_SendByte(o+49);

LCD_Clear();

if(count0==0)

{LCD_ShowString(1,1,"MODE:ORDER v:1");}

else if(count0==1)
{LCD_ShowString(1,1,"MODE:ORDER v:2");}

else if(count0==2)

{LCD_ShowString(1,1,"MODE:ORDER v:0.5");}

LCD_ShowString(2,1,"Music:");

LCD_ShowString(2,7,"test");

LCD_ShowNum(2,12,o+1,2);

player(o);

delay(1000);

void single_play(void)

unsigned char o,cc,q;

LCD_Clear();

LCD_ShowString(1,1,"Input music num:");

while(!cc)

{cc=MatrixKey();LCD_ShowNum(2,12,cc,3);}

UART_Sendstring(s3);

delay(10);

UART_Sendstring(s2);

delay(10);

UART_SendByte(cc+48);
while(!q)

{q=MatrixKey();}

for (o=0;o<5;o++)

LCD_Clear();

if(count0==0)

{LCD_ShowString(1,1,"MODE:SINGLE v:1");}

else if(count0==1)

{LCD_ShowString(1,1,"MODE:SINGLE v:2");}

else if(count0==2)

{LCD_ShowString(1,1,"MODE:SINGLE v:0.5");}

LCD_ShowString(2,1,"Music:");

LCD_ShowString(2,7,"test");

LCD_ShowNum(2,12,cc,3);

player(cc-1);

delay(1000);

cc=0;

q=0;

void rand_play(void)

unsigned char o;

o=99%Music_num;

for (o;o<Music_num;o++)

{
//UartInit();

UART_Sendstring(s4);

delay(10);

//UartInit();

UART_Sendstring(s2);

delay(10);

UART_SendByte(o+49);

LCD_Clear();

if(count0==0)

{LCD_ShowString(1,1,"MODE:RAND v:1");}

else if(count0==1)

{LCD_ShowString(1,1,"MODE:RAND v:2");}

else if(count0==2)

{LCD_ShowString(1,1,"MODE:RAND v:0.5");}

LCD_ShowString(2,1,"Music:");

LCD_ShowString(2,7,"test");

LCD_ShowNum(2,12,Music_num,3);

player(o);

delay(1000);

void music_player(void)

unsigned char ch;

LCD_Clear();
LCD_ShowString(1,1,"Mode: 3.random");

LCD_ShowString(2,1,"1.Order 2.single");

ch=MatrixKey();

while(!ch)

{ch=MatrixKey();}

if(ch==1)

order_play();

else if(ch==2)

single_play();

else if(ch==3)

rand_play();

else

{}

You might also like