带音乐跑马灯课程设计.docx
- 文档编号:10660294
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:24
- 大小:50.44KB
带音乐跑马灯课程设计.docx
《带音乐跑马灯课程设计.docx》由会员分享,可在线阅读,更多相关《带音乐跑马灯课程设计.docx(24页珍藏版)》请在冰豆网上搜索。
带音乐跑马灯课程设计
音乐跑马灯的设计
一、实验要求
基于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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 音乐 跑马 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)