带音乐跑马灯课程设计.docx

上传人:b****8 文档编号:10660294 上传时间:2023-02-22 格式:DOCX 页数:24 大小:50.44KB
下载 相关 举报
带音乐跑马灯课程设计.docx_第1页
第1页 / 共24页
带音乐跑马灯课程设计.docx_第2页
第2页 / 共24页
带音乐跑马灯课程设计.docx_第3页
第3页 / 共24页
带音乐跑马灯课程设计.docx_第4页
第4页 / 共24页
带音乐跑马灯课程设计.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

带音乐跑马灯课程设计.docx

《带音乐跑马灯课程设计.docx》由会员分享,可在线阅读,更多相关《带音乐跑马灯课程设计.docx(24页珍藏版)》请在冰豆网上搜索。

带音乐跑马灯课程设计.docx

带音乐跑马灯课程设计

音乐跑马灯的设计

一、实验要求

基于AT89S51单片机多模式带音乐跑马灯的设计要求如下;

1)有16个发光二极管做跑马灯,其中跑马灯有十种灯亮模式。

2)有专门的按键用以切换跑马灯的模式,并且对于任何一种跑马灯模式都可以对灯亮速度进行控制。

3)每一种跑马灯模式用LED数码管进行显示。

4)当跑马灯处于一种模式时,音乐响起,音乐至少有3首,并可以对其进行切换。

二、课题研究目的和意义及介绍

1、目的意义

◆使用彩色LED灯,用这发光二极管以不同的模式循环点亮;

◆当撤换最后一个功能模式时,蜂鸣器将会播放音乐,此时LED将当作音频灯使用;

◆进一步熟悉和掌握单片机的结构和工作原理。

◆掌握单片机的接口技术及相关外围芯片的外特性,控制方法。

◆通过课程设计,掌握以单片机为核心的电路设计的基本方法和技术,了解有关电路参数的计算方法。

◆通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。

◆通过完成一个包括电路设计和程序开发的完整过程,为我们今后从事相应工作打下基础。

通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。

◆该实验通过单片机的定时器/计数器定时和计数原理,设计简单的计时器系统,拥有正确的应有的功能,并同时可以用液晶屏显示,在现实生活中应用广泛,具有现实意义

2、单片机的简单介绍

AT89C51是一种低功耗、高性能的片内含有4KB快闪可编程/擦除只读存储器(FPEROM-FlashProgrammableandEraseableReadOnlyMemory)的8位CMOS微控制器,使用高密度、非易失存储技术制造,并且与80C51引脚和指令系统完全兼容。

主要性能:

◆与MCS-51微控制器产品系列兼容。

◆片内有4KB可在线重复编程的快闪擦写存储器

◆存储数据保存时间为10年

◆宽工作电压范围:

Vcc可为2.7V到6V

◆全静态工作:

可从0Hz至16MHz

◆程序存储器具有3级加密保护

◆128*8位内部RAM

◆32条可编程I/O线

◆两个16位定时器/计数器

◆中断结构具有5个中断源和2个优先级

◆可编程全双工串行通道

◆空闲状态维持低功耗和掉电状态保存存储内容

3、实验仪器

集成电路芯片8032,液晶屏,AT89C51实验箱,按键,DVCC系列单片机微机仿真实验系统中的软件(WAVE6000)

三程序流程图

四、程序设计

#include

#include

unsignedcharRunMode;

voidDelay1ms(unsignedintcount)

{

unsignedinti,j;

for(i=0;i

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

}

unsignedcharcodeLEDDisplayCode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,

0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};

voidDisplay(unsignedcharValue)

{P3=LEDDisplayCode[Value];}

voidLEDflash(unsignedcharCount)

{

unsignedchari;

bitFlag;

for(i=0;i

{

Flag=!

Flag;

if(Flag)

Display(RunMode);

else

Display(0x10);

Delay1ms(100);

}

Display(RunMode);

}

unsignedcharGetkey(void)

{

unsignedcharKeyTemp,CheckValue,Key=0x00;

CheckValue=P2&0x32;

if(CheckValue==0x32)

return0x00;

Delay1ms(10);

KeyTemp=P2&0x32;

if(KeyTemp==CheckValue)return0x00;

if(!

(CheckValue&0x02))Key|=0x01;

if(!

(CheckValue&0x10))Key|=0x02;

if(!

(CheckValue&0x20))Key|=0x04;

returnKey;

}

unsignedintTimer0Count,SystemSpeed,SystemSpeedIndex;

voidInitialTimer2(void)

{

T2CON=0x00;

TH2=RCAP2H=0xfc;

ET2=1;

TR2=1;

EA=1;

}

unsignedintcodeSpeedCode[]={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};

voidSetSpeed(unsignedcharSpeed)

{SystemSpeed=SpeedCode[Speed];}

voidLEDshow(unsignedintLEDStatus)

{

P1=~(LEDStatus&0x00ff);

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

}

voidInitialCPU(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);

}

unsignedintLEDIndex=0;

bitLEDDirection=1,LEDFlag=1;

voidMode_0(void)

{

LEDshow(0x0001<

LEDIndex=(LEDIndex+1)%16;

}

voidMode_1(void)

{

LEDshow(0x8000>>LEDIndex);

LEDIndex=(LEDIndex+1)%16;

}

voidMode_2(void)

{

if(LEDDirection)

LEDshow(0x0001<

else

LEDshow(0x8000>>LEDIndex);

if(LEDIndex==15)

LEDDirection=!

LEDDirection;

LEDIndex=(LEDIndex+1)%16;

}

voidMode_3(void)

{

if(LEDDirection)LEDshow(~(0x0001<

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

if(LEDIndex==15)LEDDirection=!

LEDDirection;

LEDIndex=(LEDIndex+1)%16;

}

voidMode_4(void)

{

if(LEDDirection)

{

if(LEDFlag)LEDshow(0xfffe<

elseLEDshow(~(0x7fff>>LEDIndex));

}

else

{

if(LEDFlag)LEDshow(0x7fff>>LEDIndex);

elseLEDshow(~(0xfffe<

}

if(LEDIndex==15)

{

LEDDirection=!

LEDDirection;

if(LEDDirection)LEDFlag=!

LEDFlag;

}

LEDIndex=(LEDIndex+1)%16;

}

voidMode_5(void)

{

if(LEDDirection)LEDshow(0x000f<

elseLEDshow(0xf000>>LEDIndex);

if(LEDIndex==15)LEDDirection=!

LEDDirection;

LEDIndex=(LEDIndex+1)%16;

}

voidMode_7(void)

{

if(LEDDirection)LEDshow(0x003f<

elseLEDshow(0xfc00>>LEDIndex);

if(LEDIndex==9)LEDDirection=!

LEDDirection;

LEDIndex=(LEDIndex+1)%10;

}

voidMode_8(void)

{LEDshow(++LEDIndex);}

voidtimer0eventrun(void)

{

if(RunMode==0x00){Mode_0();}

elseif(RunMode==0x01)

{Mode_1();}

elseif(RunMode==0x02)

{Mode_2();}

elseif(RunMode==0x03)

{Mode_3();}

elseif(RunMode==0x04)

{Mode_4();}

elseif(RunMode==0x05)

{Mode_5();}

elseif(RunMode==0x06)

{Mode_6();}

elseif(RunMode==0x07)

{Mode_7();}

elseif(RunMode==0x08)

{Mode_8();}

}

voidTimer2(void)interrupt5using3

{

TF2=0;

if(++Timer0Count>=SystemSpeed)

{

Timer0Count=0;

Timer0EventRun();

}

}

unsignedcharMusicIndex=0;

voidKeyDispose(unsignedcharKey)

{

if(Key&0x01)

{

LEDDirection=1;

LEDIndex=0;

LEDFlag=1;

RunMode=(RunMode+1)%10;

Display(RunMode);

if(RunMode==0x09)TR2=0;

elseTR2=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||0x08||0x07||0x06||0x05||0x04||0x03||0x02||0x01||0x00)

{MusicIndex=(MusicIndex+1)%MUSICNUMBER;}

else

{

if(SystemSpeedIndex<28)

{

++SystemSpeedIndex;

SetSpeed(SystemSpeedIndex);

}

else(LEDFlash(6);)

}

}

}

unsignedcharcodeMusic_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};//挥着翅膀的女孩

unsignedcharcodeMusic_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,0x22,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,0x03,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,0x33,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};

unsignedcharcodeMusic_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,0

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 中职中专

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1