单片机音乐流水灯论文的电路图及源程序

时间:2024.4.20

音乐流水灯电路图

音乐流水灯程序:

#include <REG52.H>

#include "SoundPlay.h"

unsigned char RunMode;

//**********************************System Fuction*************************************************

void Delay1ms(unsigned int count)

{

       unsigned int i,j;

       for(i=0;i<count;i++)

       for(j=0;j<120;j++);

}

unsigned char code LEDDisplayCode[] = { 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,     //0~7

                                                   0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF};

void Display(unsigned char Value)

{

       P1 = LEDDisplayCode[Value];

}

void LEDFlash(unsigned char Count)

{

       unsigned char i;

       bit Flag;

       for(i = 0; i<Count;i++)

       {

              Flag = !Flag;

              if(Flag)

                     Display(RunMode);

              else

                     Display(0x10);

              Delay1ms(100);

       }

       Display(RunMode);

}

unsigned char GetKey(void)

{

       unsigned char KeyTemp,CheckValue,Key = 0x00;

       CheckValue = P2&0x32;

       if(CheckValue==0x32)

              return 0x00;

      

       Delay1ms(10);

       KeyTemp = P2&0x32;

       if(KeyTemp==CheckValue)

              return 0x00;

       if(!(CheckValue&0x02))

              Key|=0x01;

       if(!(CheckValue&0x10))

              Key|=0x02;

       if(!(CheckValue&0x20))

              Key|=0x04;

       return Key;

}

unsigned int Timer0Count,SystemSpeed,SystemSpeedIndex;

void InitialTimer2(void)

{

       T2CON  = 0x00;                 //16 Bit Auto-Reload Mode

      TH2 = RCAP2H = 0xFC;    //重装值,初始值    TL2 = RCAP2L = 0x18;

       ET2=1;                               //定时器 2 中断允许

       TR2 = 1;                      //定时器 2 启动

       EA=1;

}

unsigned int code SpeedCode[]={   1,   2,   3,   5,   8,  10,  14,  17,  20,  30,

                                                      40,  50,  60,  70,  80,  90, 100, 120, 140, 160,

                                                        180, 200, 300, 400, 500, 600, 700, 800, 900,1000};//30

void SetSpeed(unsigned char Speed)

{

       SystemSpeed =SpeedCode[Speed];

}

void LEDShow(unsigned int LEDStatus)

{

       P1 = ~(LEDStatus&0x00FF);

       P0 = ~((LEDStatus>>8)&0x00FF);

}

void InitialCPU(void)

{

       RunMode = 0x00;

       Timer0Count = 0;

       SystemSpeedIndex = 9;

       P1 = 0x00;

       P0 = 0x00;

       P2 = 0xFF;

       P3 = 0x00;

       Delay1ms(500);

       P1 = 0xFF;

       P0 = 0xFF;

       P2 = 0xFF;

       P3 = 0xFF;

       SetSpeed(SystemSpeedIndex);

       Display(RunMode);

}

//Mode 0

unsigned int LEDIndex = 0;

bit LEDDirection = 1,LEDFlag = 1;

void Mode_0(void)

{

       LEDShow(0x0001<<LEDIndex);

       LEDIndex = (LEDIndex+1)%16;

}

//Mode 1

void Mode_1(void)

{

       LEDShow(0x8000>>LEDIndex);

       LEDIndex = (LEDIndex+1)%16;

}

//Mode 2

void Mode_2(void)

{

       if(LEDDirection)

              LEDShow(0x0001<<LEDIndex);

       else

              LEDShow(0x8000>>LEDIndex);

       if(LEDIndex==15)

              LEDDirection = !LEDDirection;

   LEDIndex = (LEDIndex+1)%16;

}

//Mode 3

void Mode_3(void)

{

       if(LEDDirection)

              LEDShow(~(0x0001<<LEDIndex));

       else

              LEDShow(~(0x8000>>LEDIndex));

       if(LEDIndex==15)

              LEDDirection = !LEDDirection;

   LEDIndex = (LEDIndex+1)%16;

}

//Mode 4

void Mode_4(void)

{

       if(LEDDirection)

       {

              if(LEDFlag)

                     LEDShow(0xFFFE<<LEDIndex);

            else

                     LEDShow(~(0x7FFF>>LEDIndex));

       }

       else

       {

              if(LEDFlag)

                     LEDShow(0x7FFF>>LEDIndex);

              else

                     LEDShow(~(0xFFFE<<LEDIndex));

       }

       if(LEDIndex==15)

       {

              LEDDirection = !LEDDirection;

              if(LEDDirection)   LEDFlag = !LEDFlag;

       }

     LEDIndex = (LEDIndex+1)%16;

}

//Mode 5

void Mode_5(void)

{

       if(LEDDirection)

              LEDShow(0x000F<<LEDIndex);

       else

              LEDShow(0xF000>>LEDIndex);

       if(LEDIndex==15)

              LEDDirection = !LEDDirection;

    LEDIndex = (LEDIndex+1)%16;

}

//Mode 6

void Mode_6(void)

{

       if(LEDDirection)

              LEDShow(~(0x000F<<LEDIndex));

       else

              LEDShow(~(0xF000>>LEDIndex));

       if(LEDIndex==15)

              LEDDirection = !LEDDirection;

     LEDIndex = (LEDIndex+1)%16;

}

//Mode 7

void Mode_7(void)

{

       if(LEDDirection)

              LEDShow(0x003F<<LEDIndex);

       else

              LEDShow(0xFC00>>LEDIndex);

       if(LEDIndex==9)

              LEDDirection = !LEDDirection;

    LEDIndex = (LEDIndex+1)%10;

}

//Mode 8

void Mode_8(void)

{

       LEDShow(++LEDIndex);

}

void Timer0EventRun(void)

{

       if(RunMode==0x00)

       {

              Mode_0();     

       }

       else if(RunMode ==0x01)

       {

              Mode_1();

       }

       else if(RunMode ==0x02)

       {

              Mode_2();

       }

       else if(RunMode ==0x03)

       {

              Mode_3();

       }

       else if(RunMode ==0x04)

       {

              Mode_4();

       }

       else if(RunMode ==0x05)

       {

              Mode_5();

       }

       else if(RunMode ==0x06)

       {

              Mode_6();

       }

       else if(RunMode ==0x07)

       {

              Mode_7();

       }

       else if(RunMode ==0x08)

       {

              Mode_8();

       }

}

void Timer2(void) interrupt 5 using 3

{

       TF2 = 0;        //中断标志清除( Timer2 必须软件清标志!)

       if(++Timer0Count>=SystemSpeed)

       {

              Timer0Count = 0;

              Timer0EventRun();

     }

}

unsigned char MusicIndex = 0;

void KeyDispose(unsigned char Key)

{

       if(Key&0x01)

       {

              LEDDirection = 1;

              LEDIndex = 0;

              LEDFlag = 1;

              RunMode = (RunMode+1)%10;

              Display(RunMode);

              if(RunMode==0x09)

                     TR2 = 0;

              else

                     TR2 = 1;

       }

       if(Key&0x02)

       {

              if(RunMode==0x09)

              {

                     MusicIndex =(MusicIndex+MUSICNUMBER-1)%MUSICNUMBER;

              }

              else

              {

                     if(SystemSpeedIndex>0)

                     {

                            --SystemSpeedIndex;

                            SetSpeed(SystemSpeedIndex);

                     }

                     else

                     {

                            LEDFlash(6);

                     }

             }

       }

       if(Key&0x04)

       {

              if(RunMode==0x09)

              {

                     MusicIndex =(MusicIndex+1)%MUSICNUMBER;

              }

              else

              {

                     if(SystemSpeedIndex<28)

                     {

                            ++SystemSpeedIndex;

                            SetSpeed(SystemSpeedIndex);

                     }

                     else

                     {

                            LEDFlash(6);

                     }

            }

       }    

}

//*****************************Music******************************************************

//挥着翅膀的女孩

unsigned char code Music_Girl[]={ 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x03,

                                  0x16,0x03, 0x17,0x03, 0x17,0x03, 0x17,0x03, 0x18,0x03,

                                  0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x02, 0x18,0x03,

                                  0x17,0x03, 0x15,0x02, 0x18,0x03, 0x17,0x03, 0x18,0x02,

                                  0x10,0x03, 0x15,0x03, 0x16,0x02, 0x15,0x03, 0x16,0x03,

                                  0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x1A,0x03,

                                  0x1B,0x03, 0x1F,0x03, 0x1F,0x03, 0x17,0x03, 0x18,0x03,

                                  0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x03, 0x17,0x03,

                                  0x18,0x03, 0x1F,0x03, 0x1F,0x02, 0x16,0x03, 0x17,0x03,

                                  0x18,0x03, 0x17,0x03, 0x18,0x03, 0x20,0x03, 0x20,0x02,

                                  0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03,

                                  0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03,

                                  0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66,

                                  0x1A,0x03, 0x19,0x03, 0x15,0x03, 0x15,0x03, 0x17,0x03,

                                  0x16,0x66, 0x17,0x04, 0x18,0x04, 0x18,0x03, 0x19,0x03,

                                  0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03,

                                  0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03,

                                  0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66,

                                  0x1A,0x03, 0x19,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03,

                                  0x1F,0x00, 0x1A,0x03, 0x1A,0x03, 0x1A,0x03, 0x1B,0x03,

                                  0x1B,0x03, 0x1A,0x03, 0x19,0x03, 0x19,0x02, 0x17,0x03,

                                  0x15,0x17, 0x15,0x03, 0x16,0x03, 0x17,0x03, 0x18,0x03,

                                  0x17,0x04, 0x18,0x0E, 0x18,0x03, 0x17,0x04, 0x18,0x0E,

                                  0x18,0x66, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x18,0x03,

                                  0x20,0x03, 0x20,0x02, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66,

                                  0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03, 0x1B,0x03,

                                  0x1F,0x66, 0x1F,0x04, 0x1B,0x0E, 0x1B,0x03, 0x19,0x03,

                                  0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03,

                                  0x15,0x03, 0x15,0x03, 0x17,0x03, 0x16,0x66, 0x17,0x04,

                                  0x18,0x04, 0x18,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03,

                                  0x1F,0x66, 0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03,

                                  0x1B,0x03, 0x1F,0x66, 0x1F,0x03, 0x1B,0x03, 0x19,0x03,

                                  0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03,

                                  0x19,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x00, 0x18,0x02,

                                  0x18,0x03, 0x1A,0x03, 0x19,0x0D, 0x15,0x03, 0x15,0x02,

                                  0x18,0x66, 0x16,0x02, 0x17,0x02, 0x15,0x00, 0x00,0x00};

//同一首歌

unsigned char code Music_Same[]={ 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x66, 0x18,0x03,

                                  0x17,0x02, 0x15,0x02, 0x16,0x01, 0x15,0x02, 0x10,0x02,

                                  0x15,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x02,

                                  0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x02, 0x18,0x66,

                                  0x17,0x03, 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x16,0x00,

                                  0x17,0x01, 0x19,0x02, 0x1B,0x02, 0x1B,0x70, 0x1A,0x03,

                                  0x1A,0x01, 0x19,0x02, 0x19,0x03, 0x1A,0x03, 0x1B,0x02,

                                  0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x18,0x66, 0x18,0x03,

                                  0x19,0x02, 0x1A,0x02, 0x19,0x0C, 0x18,0x0D, 0x17,0x03,

                                  0x16,0x01, 0x11,0x02, 0x11,0x03, 0x10,0x03, 0x0F,0x0C,

                                  0x10,0x02, 0x15,0x00, 0x1F,0x01, 0x1A,0x01, 0x18,0x66,

                                  0x19,0x03, 0x1A,0x01, 0x1B,0x02, 0x1B,0x03, 0x1B,0x03,

                                  0x1B,0x0C, 0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x1F,0x01,

                                  0x1A,0x01, 0x18,0x66, 0x19,0x03, 0x1A,0x01, 0x10,0x02,

                                  0x10,0x03, 0x10,0x03, 0x1A,0x0C, 0x18,0x0D, 0x17,0x03,

                                  0x16,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x70,

                                  0x18,0x03, 0x17,0x02, 0x15,0x03, 0x15,0x03, 0x16,0x66,

                                  0x16,0x03, 0x16,0x02, 0x16,0x03, 0x15,0x03, 0x10,0x02,

                                  0x10,0x01, 0x11,0x01, 0x11,0x66, 0x10,0x03, 0x0F,0x0C,

                                  0x1A,0x02, 0x19,0x02, 0x16,0x03, 0x16,0x03, 0x18,0x66,

                                  0x18,0x03, 0x18,0x02, 0x17,0x03, 0x16,0x03, 0x19,0x00,

                                  0x00,0x00 };

//两只蝴蝶                                 

unsigned char code Music_Two[] ={ 0x17,0x03, 0x16,0x03, 0x17,0x01, 0x16,0x03, 0x17,0x03,

                                  0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02,

                                  0x16,0x0D, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03,

                                  0x10,0x0E, 0x15,0x04, 0x0F,0x01, 0x17,0x03, 0x16,0x03,

                                  0x17,0x01, 0x16,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x01,

                                  0x10,0x03, 0x15,0x03, 0x16,0x02, 0x16,0x0D, 0x17,0x03,

                                  0x16,0x03, 0x15,0x03, 0x10,0x03, 0x15,0x03, 0x16,0x01,

                                  0x17,0x03, 0x16,0x03, 0x17,0x01, 0x16,0x03, 0x17,0x03,

                                  0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02,

                                  0x16,0x0D, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03,

                                  0x10,0x0E, 0x15,0x04, 0x0F,0x01, 0x17,0x03, 0x19,0x03,

                                  0x19,0x01, 0x19,0x03, 0x1A,0x03, 0x19,0x03, 0x17,0x01,

                                  0x16,0x03, 0x16,0x03, 0x16,0x02, 0x16,0x0D, 0x17,0x03,

                                  0x16,0x03, 0x15,0x03, 0x10,0x03, 0x10,0x0D, 0x15,0x00,

                                  0x19,0x03, 0x19,0x03, 0x1A,0x03, 0x1F,0x03, 0x1B,0x03,

                                  0x1B,0x03, 0x1A,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x03,

                                  0x16,0x0D, 0x17,0x01, 0x17,0x03, 0x17,0x03, 0x19,0x03,

                                  0x1A,0x02, 0x1A,0x02, 0x10,0x03, 0x17,0x0D, 0x16,0x03,

                                  0x16,0x01, 0x17,0x03, 0x19,0x03, 0x19,0x03, 0x17,0x03,

                                  0x19,0x02, 0x1F,0x02, 0x1B,0x03, 0x1A,0x03, 0x1A,0x0E,

                                  0x1B,0x04, 0x17,0x02, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E,

                                  0x1B,0x04, 0x1A,0x03, 0x19,0x03, 0x17,0x03, 0x16,0x03,

                                  0x17,0x0D, 0x16,0x03, 0x17,0x03, 0x19,0x01, 0x19,0x03,

                                  0x19,0x03, 0x1A,0x03, 0x1F,0x03, 0x1B,0x03, 0x1B,0x03,

                                  0x1A,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x03, 0x16,0x03,

                                  0x17,0x01, 0x17,0x03, 0x17,0x03, 0x19,0x03, 0x1A,0x02,

                                  0x1A,0x02, 0x10,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x01,

                                  0x17,0x03, 0x19,0x03, 0x19,0x03, 0x17,0x03, 0x19,0x03,

                                  0x1F,0x02, 0x1B,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04,

                                  0x17,0x02, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04,

                                  0x17,0x16, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04,

                                  0x1A,0x03, 0x19,0x03, 0x17,0x03, 0x16,0x03, 0x0F,0x02,

                                  0x10,0x03, 0x15,0x00, 0x00,0x00 };

//***********************************************************************************

unsigned char * SelectMusic(unsigned char SoundIndex)

{

       unsigned char *MusicAddress = 0;

       switch (SoundIndex)

       {    

              case 0x00:

                     MusicAddress = &Music_Girl[0]; //挥着翅膀的女孩        

                     break;

              case 0x01:

                     MusicAddress = &Music_Same[0];      //同一首歌           

                     break;

              case 0x02:

                     MusicAddress = &Music_Two[0]; //两只蝴蝶 

                     break;

              case 0x03:

                     break;

              case 0x04:

                     break;

              case 0x05:

                     break;

              case 0x06:

                     break;

              case 0x07:

                     break;

              case 0x08:

                     break;

              case 0x09:

                     break;

              default:break;

       }

       return MusicAddress;

}

void PlayMusic(void)

{    

       Delay1ms(200);

       Play(SelectMusic(MusicIndex),0,3,360);

}

//***********************************************************************************

main()

{

       unsigned char Key;

       InitialCPU();

       InitialSound();

       InitialTimer2();

       while(1)

       {

              Key = GetKey();

              if(RunMode==0x09)

              {

                     PlayMusic();

              }

              if(Key!=0x00)

              {

                     KeyDispose(Key);

              }

       }

}

更多相关推荐:
矿山机电论文

论文选题说明及写作的初步设想一、选题思路:进入新的纪元以来,随着人类经济的迅猛发展以及科学知识的进步,我国的煤矿行业也进入了一个迅速发展的轨迹,各种新的技术运用到了煤矿行业的发展当中,尤其是矿山机电的发展更是迈…

矿山机电论文:矿山机电设备的安全监控系统的应用发展

矿山机电论文有关矿山机电的论文关于矿山机电的论文:矿山机电设备的安全监控系统的应用发展摘要:随着矿山机电设备自动化程度的不断提高,机电设备的安全管理变得越来越重要,没有机电设备的安全运行,就无法保证矿山的安全生…

矿山机电论文1

矿山机电论文在煤矿行业日新月异的发展中,机电设备的地位和作用变得越来越重要。煤矿机电设备的管理与维护措施对于煤矿安全生产和提高设备效率有着重要意义。随着我国煤炭产业的快速发展,煤矿机电设备的运行性能,对于煤炭企…

机电类专业毕业论文范文

机电工程技术高电压防雷保护的探讨学生姓名:学号:专业班级:指导教师:摘要随着我国电力事业的蓬勃发展,高电压防雷保护也不断的扩大。高电压防雷保护是电力事业的一项的重要工作。高电压在现有技术的条件下仍然出现遭雷击的…

机电一体化论文范文

黑龙江农垦农业职业技术学院毕业论文学号你的学号学生姓名所学专业机电一体化指导教师谭庆吉研究方向单片机与传感器应用黑龙江农垦科技职业学院年月日黑龙江农垦农业职业技术学院毕业论文设计申请表黑龙江农垦农业职业技术学院...

机电论文范文

毕业设计[论文]任务书姓名班号秋机电一体化院系远程与继续教育学院同组姓名无指导教导一、课题名称变频恒压供水控制系统设计二、课题内容农村社会保障制度是社会保障体系的一个重要组成部分,而农村经济结构的调整,人口老龄…

机电一体化论文 范文

摘要作为机电系的一名学生,将来工作学习都会以机电为主,所以必须掌握好各种机电的专业知识。我会本着认真的态度对待专业课的学习,提高自己的专业素养.接下来我将介绍一下我对电动机发展史的认识关键词:机电一体化电动机机…

机电工程硕士论文怎么写?

淘宝文稿定制ID大中华文字工作室有关电力调度的Internet工作流平台设计与实现科学技术与社会经济突飞猛进的时代电力行业在为社会发展做出显著贡献的同时其壮大的速度也是十分惊人的而为了确保居民用电的合理性的限度...

气动工具机电项目可行性研究报告评审方案设计(20xx年发改委标准案例范文)

360市场研究网气动工具机电项目可行性研究报告评审方案设计20xx年发改委标准案例范文编制机构博思远略咨询公司360投资情报研究中心研究思路360市场研究网关键词识别1气动工具机电项目可研2气动工具机电市场前景...

机电一体化论文

FMS技术的现状与发展趋势摘要文章就机电一体化在柔性制造中的一个应用实例简述了柔性柔性制造技术的基本概念分类主要组成部分所涉及的关键技术以及发展应用趋势以促使人们对机电一体化技术发展的了解以及对新的制造技术认识...

煤矿机电管理论文

煤矿机电管理存在问题及对策摘要地方煤矿由于建矿历史短基础薄弱机电管理存在职能部门作用不力标准化工作开展不平衡设备管理不到位技术管理滞后机电队伍素质低机电培训走过场等问题提高地方煤矿机电管理水平具体途径需从基础工...

机电工程高等职业学校毕业论文范文

江苏徐州机电工程高等职业学校05届高职毕业设计论文第1页江苏省徐州机电工程高等职业学校毕业论文姓名三号楷体加粗下同学号01000076系部专业论文题目指导教师职称年月江苏徐州机电工程高等职业学校05届高职毕业设...

机电论文(39篇)