基于AT89S52单片机的多模式带音乐跑马灯设计实训报告.docx

上传人:b****6 文档编号:7447621 上传时间:2023-01-24 格式:DOCX 页数:22 大小:119.73KB
下载 相关 举报
基于AT89S52单片机的多模式带音乐跑马灯设计实训报告.docx_第1页
第1页 / 共22页
基于AT89S52单片机的多模式带音乐跑马灯设计实训报告.docx_第2页
第2页 / 共22页
基于AT89S52单片机的多模式带音乐跑马灯设计实训报告.docx_第3页
第3页 / 共22页
基于AT89S52单片机的多模式带音乐跑马灯设计实训报告.docx_第4页
第4页 / 共22页
基于AT89S52单片机的多模式带音乐跑马灯设计实训报告.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

基于AT89S52单片机的多模式带音乐跑马灯设计实训报告.docx

《基于AT89S52单片机的多模式带音乐跑马灯设计实训报告.docx》由会员分享,可在线阅读,更多相关《基于AT89S52单片机的多模式带音乐跑马灯设计实训报告.docx(22页珍藏版)》请在冰豆网上搜索。

基于AT89S52单片机的多模式带音乐跑马灯设计实训报告.docx

基于AT89S52单片机的多模式带音乐跑马灯设计实训报告

实训课题基于AT89S52单片机的多模式

带音乐跑马灯设计

一、实训目的及要求

(1)通过实训,理解与掌握单片机系统的开发流程及常见系统的开发设计、仿真调试等,培养一定的单片机设计与开发能力。

(2)掌握按键电路的设计。

(3)掌握单片机复位电路和晶振电路的工作原理及设计。

(4)掌握和了解+5V电源原理设计。

(5)了解单片机C语言及程序设计。

(6)对KeilC51和Proteus7软件进展熟练的掌握和操作。

二、实训设备和元器件

装有Proteus、KeilC软件的PC机一台,AT89S52单片机一块,12MHZ晶振,电容,电解电容,电阻,16个发光二级管,按键,三极管,74LS245集成块,LED数码管,+5V电源,印制板。

三、实训任务及功能要求

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

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

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

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

四、系统硬件电路

1、系统硬件框图

基于AT89S52单片机的多模式带音乐跑马灯控制系统由电源电路、单片机主控电路、模式切换以及调速按键控制电路、LED数码管显示电路和16个发光二级管的跑马灯电路几局部组成,系统框图如图1-1所示:

图1-1基于AT89S52单片机的多模式带音乐跑马灯控制系统框图

2、系统电路原理图

本工程用AT89S52单片机的P1,P2口分别控制8个跑马灯,而P3口与LED数码管相连,音乐采用蜂鸣器接P2.6输出,P2.1接模式键切换按键,P2.4和P2.5分别接跑马灯加速和减速按键,在音乐播放时加速与减速按键可以控制音乐的切换。

综上所述,可设计出基于AT89S52单片机的多模式带音乐跑马灯,电路原理图如图1-2所示:

图1-2基于AT89S52单片机的多模式带音乐跑马灯原理图

五、系统控制软件

1、控制流程图

该程序采用两个程序编写:

第一个为单片机主程序,作用是使单片机完成相应上电功能;第二个为音乐产生程序,在第一个程序中包含第二个程序的头文件。

程序流程图如图1-3所示:

(a)主程序(b)音乐产生程序

图1-3程序流程图

2、系统源程序〔C或汇编〕

*include

*include

unsignedcharRunMode;

voidDelay1ms(unsignedintcount)

{

unsignedinti,j;

for(i=0;j

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

}

unsignedcharcodeLEDDisplayCode[]={

0*C0,0*F9,0*A4,0*B0,0*99,0*92,0*82,0*F8,

0*80,0*90,0*88,0*83,0*C6,0*A1,0*86,0*8E,0*FF};

voidDisplay(unsignedcharValue)

{P3=LEDDisplayCode[Value];}

voidLEDflash(unsignedcharcount)

{

unsignedchari;

bitFlag;

for(i=0;i

{

Flag=!

Flag;

if(Flag)

Display(RunMode);

else

Display(0*10);

Delay1ms(100);

}

Display(RunMode);

}

unsignedcharGetKey(void)

{

unsignedcharKeyTemp,CheckValue,Key=0*00;

CheckValue=P2&0*32;

if(CheckValue==0*32)

return0*00;

Delay1ms(10);

KeyTemp=P2&0*32;

if(KeyTemp==CheckValue)return0*00;

if(!

(CheckValue&0*02))Key|=0*01;

if(!

(CheckValue&0*10))Key|=0*02;

if(!

(CheckValue&0*20))Key|=0*04;

returnKey;

}

unsignedintTimer0Count,SystemSpeed,SystemSpeedInde*;

voidInitialTimer2(void)

{

T2CON=0*00;

TH2=RCAP2H=0*FC;

ET2=1;

TR2=1;

EA=1;

}

Unsignedintcode

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};

voidSetSpeed(unsignedcharSpeed)

{SystemSpeed=SpeedCode[Speed];}

voidLEDShow(unsignedintLEDStatus)

{

P1=~(LEDStatus&0*00FF);

P0=~((LEDStatus>>8)&0*00FF);

}

voidInitialCPU(void)

{

RunMode=0*00;

Timer0Count=0;

SystemSpeedInde*=22;

P1=0*00;

P0=0*00;

P2=0*FF;

P3=0*00;

Delay1ms(500);

P1=0*FF;

P0=0*FF;

P2=0*FF;

P3=0*FF;

SetSpeed(SystemSpeedInde*);

Display(RunMode);

}

unsignedintLEDinde*=0;

bitLEDDirection=1,LEDflag=1;

voidmode_0(void)

{

LEDShow(0*0001<

LEDinde*=(LEDinde*+1)%16;

}

voidmode_1(void)

{

LEDShow(0*8000>>LEDinde*);

LEDinde*=(LEDinde*+1)%16;

}

voidmode_2(void)

{

if(LEDDirection)

LEDShow(0*0001<

else

LEDShow(0*8000>>LEDinde*);

if(LEDinde*==15)

LEDDirection=!

LEDDirection;

LEDinde*=(LEDinde*+1)%16;

}

voidmode_3(void)

{

if(LEDDirection)LEDShow(~(0*0001<

elseLEDShow(~(0*8000>>LEDinde*));

if(LEDinde*==15)LEDDirection=!

LEDDirection;

LEDinde*=(LEDinde*+1)%16;

}

voidmode_4(void)

{

if(LEDDirection)

{

if(LEDflag)LEDShow(0*FFFE<

elseLEDShow(~(0*7FFF>>LEDinde*));

}

else

{

if(LEDflag)LEDShow(0*7FFF>>LEDinde*);

elseLEDShow(~(0*FFFE<

}

if(LEDinde*==15)

{

LEDDirection=!

LEDDirection;

if(LEDDirection)LEDflag=!

LEDflag;

}

LEDinde*=(LEDinde*+1)%16;

}

voidmode_5(void)

{

if(LEDDirection)LEDShow(0*000F<

elseLEDShow(0*F000>>LEDinde*);

if(LEDinde*==15)LEDDirection=!

LEDDirection;

LEDinde*=(LEDinde*+1)%16;

}

voidmode_6(void)

{

if(LEDDirection)LEDShow(~(0*000F<

elseLEDShow(~(0*F000>>LEDinde*));

if(LEDinde*==15)LEDDirection=!

LEDDirection;

LEDinde*=(LEDinde*+1)%16;

}

voidmode_7(void)

{

if(LEDDirection)LEDShow(~(0*003F<

elseLEDShow(~(0*FC00>>LEDinde*));

if(LEDinde*==9)LEDDirection=!

LEDDirection;

LEDinde*=(LEDinde*+1)%10;

}

voidmode_8(void)

{

LEDShow(++LEDinde*);

}

voidTimer0EventRun(void)

{

if(RunMode==0*00){mode_0();}

elseif(RunMode==0*01)

{mode_1();}

elseif(RunMode==0*02)

{mode_2();}

elseif(RunMode==0*03)

{mode_3();}

elseif(RunMode==0*04)

{mode_4();}

elseif(RunMode==0*05)

{mode_5();}

elseif(RunMode==0*06)

{mode_6();}

elseif(RunMode==0*07)

{mode_7();}

elseif(RunMode==0*08)

{mode_8();}}

voidtimer2(void)interrupt5using3

{

TF2=0;

if(++Timer0Count>=SystemSpeed)

{

Timer0Count=0;

Timer0EventRun();

}

}

unsignedcharMusicInde*=0;

voidkeydispose(unsignedcharkey)

{

if(key&0*01)

{

LEDDirection=1;

LEDinde*=0;

LEDflag=1;

RunMode=(RunMode+1)%10;

Display(RunMode);

if(RunMode==0*09)TR2=0;

elseTR2=1;

}

if(key&0*02)

{

if(RunMode==0*09){MusicInde*=(MusicInde*+MUSIUMBER-1)%MUSIUMBER;}

else

{

if(SystemSpeedInde*>0)

{

--SystemSpeedInde*;

SetSpeed(SystemSpeedInde*);

}

else{LEDflash(6);}

}

}

if(key&0*04)

{

if(RunMode==0*09||0*08||0*07||0*06||0*05||0*04||0*03||0*02||0*01||0*00)

{MusicInde*=(MusicInde*+1)%MUSIUMBER;}

else

{

if(SystemSpeedInde*<28)

{

++SystemSpeedInde*;

SetSpeed(SystemSpeedInde*);

}

else{LEDflash(6);}

}

}

}

unsignedcharcodeMusic_Girl[]={

0*17,0*02,0*17,0*03,0*18,0*03,0*19,0*02,0*15,0*03,

0*16,0*03,0*17,0*03,0*17,0*03,0*17,0*03,0*18,0*03,

0*19,0*02,0*16,0*03,0*17,0*03,0*18,0*02,0*18,0*03,

0*17,0*03,0*15,0*02,0*18,0*03,0*17,0*03,0*18,0*02,

0*10,0*03,0*15,0*03,0*16,0*02,0*15,0*03,0*16,0*03,

0*17,0*02,0*17,0*03,0*18,0*03,0*19,0*02,0*1A,0*03,

0*1B,0*03,0*1F,0*03,0*1F,0*03,0*17,0*03,0*18,0*03,

0*19,0*02,0*16,0*03,0*17,0*03,0*18,0*03,0*17,0*03,

0*18,0*03,0*1F,0*03,0*1F,0*02,0*16,0*03,0*17,0*03,

0*18,0*03,0*17,0*03,0*18,0*03,0*20,0*03,0*20,0*02,

0*1F,0*03,0*1B,0*03,0*1F,0*66,0*20,0*03,0*21,0*03,

0*20,0*03,0*1F,0*03,0*1B,0*03,0*1F,0*66,0*1F,0*03,

0*1B,0*03,0*19,0*03,0*19,0*03,0*15,0*03,0*1A,0*66,

0*1A,0*03,0*19,0*03,0*15,0*03,0*15,0*03,0*17,0*03,

0*16,0*66,0*17,0*04,0*18,0*04,0*18,0*03,0*19,0*03,

0*1F,0*03,0*1B,0*03,0*1F,0*66,0*20,0*03,0*21,0*03,

0*20,0*03,0*1F,0*03,0*1B,0*03,0*1F,0*66,0*1F,0*03,

0*1B,0*03,0*19,0*03,0*19,0*03,0*15,0*03,0*1A,0*66,

0*1A,0*03,0*19,0*03,0*19,0*03,0*1F,0*03,0*1B,0*03,

0*1F,0*00,0*1A,0*03,0*1A,0*03,0*1A,0*03,0*1B,0*03,

0*1B,0*03,0*1A,0*03,0*19,0*03,0*19,0*02,0*17,0*03,

0*15,0*17,0*15,0*03,0*16,0*03,0*17,0*03,0*18,0*03,

0*17,0*04,0*18,0*0E,0*18,0*03,0*17,0*04,0*18,0*0E,

0*18,0*66,0*17,0*03,0*18,0*03,0*17,0*03,0*18,0*03,

0*20,0*03,0*20,0*02,0*1F,0*03,0*1B,0*03,0*1F,0*66,

0*20,0*03,0*21,0*03,0*20,0*03,0*1F,0*03,0*1B,0*03,

0*1F,0*66,0*1F,0*04,0*1B,0*0E,0*1B,0*03,0*19,0*03,

0*19,0*03,0*15,0*03,0*1A,0*66,0*1A,0*03,0*19,0*03,

0*15,0*03,0*15,0*03,0*17,0*03,0*16,0*66,0*17,0*04,

0*18,0*04,0*18,0*03,0*19,0*03,0*1F,0*03,0*1B,0*03,

0*1F,0*66,0*20,0*03,0*21,0*03,0*20,0*03,0*1F,0*03,

0*1B,0*03,0*1F,0*66,0*1F,0*03,0*1B,0*03,0*19,0*03,

0*19,0*03,0*15,0*03,0*1A,0*66,0*1A,0*03,0*19,0*03,

0*19,0*03,0*1F,0*03,0*1B,0*03,0*1F,0*00,0*18,0*02,

0*18,0*03,0*1A,0*03,0*19,0*0D,0*15,0*03,0*15,0*02,

0*18,0*66,0*16,0*02,0*17,0*02,0*15,0*00,0*00,0*00};

unsignedcharcodeMusic_Same[]={

0*0F,0*01,0*15,0*02,0*16,0*02,0*17,0*66,0*18,0*03,

0*17,0*02,0*15,0*02,0*16,0*01,0*15,0*02,0*10,0*02,

0*15,0*00,0*0F,0*01,0*15,0*02,0*16,0*02,0*17,0*02,

0*17,0*03,0*18,0*03,0*19,0*02,0*15,0*02,0*18,0*66,

0*17,0*03,0*19,0*02,0*16,0*03,0*17,0*03,0*16,0*00,

0*17,0*01,0*19,0*02,0*1B,0*02,0*1B,0*70,0*1A,0*03,

0*1A,0*01,0*19,0*02,0*19,0*03,0*1A,0*03,0*1B,0*02,

0*1A,0*0D,0*19,0*03,0*17,0*00,0*18,0*66,0*18,0*03,

0*19,0*02,0*1A,0*02,0*19,0*0C,0*18,0*0D,0*17,0*03,

0*16,0*01,0*11,0*02,0*11,0*03,0*10,0*03,0*0F,0*0C,

0*10,0*02,0*15,0*00,0*1F,0*01,0*1A,0*01,0*18,0*66,

0*19,0*03,0*1A,0*01,0*1B,0*02,0*1B,0*03,0*1B,0*03,

0*1B,0*0C,0*1A,0*0D,0*19,0*03,0*17,0*00,0*1F,0*01,

0*1A,0*01,0*18,0*66,0*19,0*03,0*1A,0*01,0*10,0*02,

0*10,0*03,0*10,0*03,0*1A,0*0C,0*18,0*0D,0*17,0*03,

0*16,0*00,0*0F,0*01,0*15,0*02,0*16,0*02,0*17,0*70,

0*18,0*03,0*17,0*02,0*15,0*03,0*15,0*03,0*16,0*66,

0*16,0*03,0*16,0*02,0*16,0*03,0*15,0*03,0*10,0*02,

0*10,0*01,0*11,0*01,0*11,0*66,0*10,0*03,0*1F,0*0C,

0*1A,0*02,0*19,0*02,0*16,0*03,0*16,0*03,0*18,0*66,

0*18,0*03,0*18,0*02,0*17,0*03,0*16,0*03,0*19,0*00,

0*00,0*00};

unsignedcharcodeMusic_Two[]={

0*17,0*03,0*16,0*03,0*17,0*01,0*16,0*03,0*17,0*03,

0*16,0*03,0*15,0*01,0*10,0*03,0*15,0*03,0*16,0*02,

0*16,0*0D,0*17,0*03,0*16,0*03,0*15,0*03,0*10,0*03,

0*10,0*0E,0*15,0*04,0*1F,0*01,0*17,0*03,0*16,0*03,

0*17,0*01,0*16,0*03,0*17,0*03,0*16,0*03,0*15,0*01,

0*10,0*03,0*15,0*03,0*16,0*02,0*16,0*0D,0*17,0*03,

0*16,0*03,0*15,0*03,0*10,0*03,0*15,0*03,0*16,0*01,

0*17,0*03,0*16,0*03,0*17,0*01,0*16,0*03,0*17,0*03,

0*16,0*03,0*15,0*01,0*10,0*03,0*15,0*03,0*16,0*02,

0*16,0*0D,0*17,0*03,0*16,0*03,0*15,0*03,0*10,0*03,

0*10,0*0E,0*15,0*04,0*0F,0*01,0*17,0*03,0*19,0*03,

0*19,0*01,0*19,0*03,0*1A,0*03,0*19,0*03,0*17,0*01,

0*16,0*03,0*16,0*03,0*16,0*02,0*16,0*0D,0*17,0*03,

0*16,0*03,0*15,0*03,0*10,0*03,0*10,0*0d,0*15,0*00,

0*19,0*03,0*19,0*03,0*1A,0*03,0*1F,0*03,0*1B,0*03,

0*1B,0*03,0*1A,0*03,0*17,0*0D,0*16,0*03,0*16,0*03,

0*16,0*0D,0*17,0*01,0*17,0*03,0*17,0*03,0*19,0*03,

0*1A,0*02,0*1A,0*02,0*10,0*03,0*17,0*0D,0*16,0*03,

0*16,0*01,0*17,0*03,0*19,0*03,0*19,0*03,0*17,0*03,

0*19,0*02,0*1F,0*02,0*1B,0*03,0*1A,0*03,0*1A,0*0E,

0*1B,0*04,0*17,0*02,0*1A,0*03,0*1A,0*03,0*1A,0*0E,

0*1B,0*04,0*1A,0*03,0*19,0*03,0*17,0*03,0*16,0*03,

0*17,0*0D,0*16,0*03,0*17,0*03,0*19,0*01,0*19,0*03,

0*19,0*03,0*1A,0*03,0*1F,0*03,0*1B,0*03,0*1B,0*03,

0*1A,0*0

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

当前位置:首页 > 工作范文 > 演讲主持

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

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