基于AT89S52单片机的多模式带音乐跑马灯设计实训报告_第1页
基于AT89S52单片机的多模式带音乐跑马灯设计实训报告_第2页
基于AT89S52单片机的多模式带音乐跑马灯设计实训报告_第3页
基于AT89S52单片机的多模式带音乐跑马灯设计实训报告_第4页
基于AT89S52单片机的多模式带音乐跑马灯设计实训报告_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实训课题 基于at89s52单片机的多模式带音乐跑马灯设计一、 实训目的及要求(1) 通过实训,理解与掌握单片机系统的开发流程及常见系统的开发设计、仿真调试等,培养一定的单片机设计与开发能力。(2)掌握按键电路的设计。(3)掌握单片机复位电路和晶振电路的工作原理及设计。(4)掌握和了解+5v电源原理设计。(5)了解单片机c语言及程序设计。(6)对keil c51和proteus 7软件进行熟练的掌握和操作。二、 实训设备和元器件装有proteus、keil c软件的pc机一台, at89s52单片机一块,12mhz晶振,电容,电解电容,电阻,16个发光二级管,按键,三极管,74ls245集成块

2、,led数码管,+5v电源,印制板。三、 实训任务及功能要求(1)有16个发光二极管做跑马灯,其中跑马灯有10种亮灯模式。(2)有专门的按键用以切换跑马灯的模式,并且对于任何一种跑马灯模式都可以对亮灯速度进行控制。(3)每一种跑马灯模式用led数码管进行显示。(4)当跑马灯处于一种模式时,伴随的音乐响起,音乐至少有3首,并可以对其进行切换。四、 系统硬件电路 1、系统硬件框图基于at89s52单片机的多模式带音乐跑马灯控制系统由电源电路、单片机主控电路、模式切换以及调速按键控制电路、led数码管显示电路和16个发光二级管的跑马灯电路几部分组成,系统框图如图1-1所示: 电源电路at89s1单片

3、机复位电路晶振电路led数码管显示电路16个发光二极管做跑马灯模式切换按键以及速度调节按键 图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、控制流程图该程

4、序采用两个程序编写:第一个为单片机主程序,作用是使单片机完成相应上电功能;第二个为音乐产生程序,在第一个程序中包含第二个程序的头文件。程序流程图如图1-3所示:ynnyi/o初始化模式键被按下?模式加1,等于9?送led与跑马灯开始结束播放音乐yynn设定跑马灯初速检查按键开关减少时间,使跑马灯加速增加时间,使跑马灯减速led跑马灯加速键被按下?减速减被按下?(a)主程序 (b) 音乐产生程序图1-3 程序流程图2、系统源程序(c或汇编)#include #include unsigned char runmode;void delay1ms (unsigned int count) unsi

5、gned int i,j; for(i=0;jcount;i+) for(j=0;j1200;j+);unsigned char code leddisplaycode= 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e, 0xff;void display(unsigned char value) p3=leddisplaycodevalue; void ledflash(unsigned char count) unsigned char i; bit flag; for(i=0

6、;i8)&0x00ff);void initialcpu(void) runmode=0x00; timer0count=0; systemspeedindex=22; p1=0x00; p0=0x00; p2=0xff; p3=0x00; delay1ms(500); p1=0xff; p0=0xff; p2=0xff; p3=0xff; setspeed(systemspeedindex); display(runmode);unsigned int ledindex=0;bit leddirection=1,ledflag=1;void mode_0(void) ledshow(0x00

7、01ledindex); ledindex=(ledindex+1)%16;void mode_2(void) if(leddirection) ledshow(0x0001ledindex); if(ledindex=15) leddirection=!leddirection; ledindex=(ledindex+1)%16;void mode_3(void) if(leddirection) ledshow(0x0001ledindex); if(ledindex=15) leddirection = !leddirection; ledindex=(ledindex+1)%16;vo

8、id mode_4(void) if(leddirection) if(ledflag) ledshow(0xfffeledindex);else if(ledflag) ledshow(0x7fffledindex); else ledshow(0xfffeledindex);if(ledindex=15) leddirection=!leddirection; if(leddirection) ledflag=!ledflag;ledindex=(ledindex+1)%16;void mode_5(void) if(leddirection) ledshow(0x000fledindex

9、); if(ledindex=15) leddirection = !leddirection; ledindex=(ledindex+1)%16;void mode_6(void) if(leddirection) ledshow(0x000fledindex); if(ledindex=15)leddirection=!leddirection; ledindex=(ledindex+1)%16;void mode_7(void) if(leddirection) ledshow(0x003fledindex); if(ledindex=9) leddirection=!leddirect

10、ion; ledindex=(ledindex+1)%10;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

11、) mode_6(); else if(runmode=0x07) mode_7(); else if(runmode=0x08) mode_8();void timer2(void) interrupt 5 using 3 tf2=0; if(+timer0count=systemspeed) timer0count=0; timer0eventrun(); unsigned char musicindex=0;void keydispose(unsigned char key) if(key&0x01) leddirection=1; ledindex=0; ledflag=1; runm

12、ode=(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(systemspeedindex0) -systemspeedindex; setspeed(systemspeedindex); elseledflash(6); if(key&0x04) if(runmode=0x09|0x08|0x07|0x06|0x05|0x04|0

13、x03|0x02|0x01|0x00) musicindex=(musicindex+1)%musicnumber; else if(systemspeedindex28) +systemspeedindex; setspeed(systemspeedindex); elseledflash(6); 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,0x0

14、2, 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,

15、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, 0x1

16、a,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,0

17、x03, 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

18、, 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, 0

19、x19,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

20、,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,

21、 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, 0x

22、11,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,

23、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, 0x1f,0x0c, 0x1a,0x02, 0x19,0x02, 0x16,0x03, 0x16,0x03, 0x18,0x66, 0x18,0x0

24、3, 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, 0x1f,0x01, 0x17,0x03, 0x16

25、,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,0x

26、03, 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,

27、 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, 0x

28、17,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,

29、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,0x0

30、3, 0x19,0x03, 0x17,0x03, 0x16,0x03, 0x1f,0x02, 0x10,0x03, 0x15,0x00, 0x00,0x00;unsigned char*selectmusic (unsigned char soundindex) unsigned char*musicaddress=0; switch (soundindex) case 0x00:musicaddress=&music_girl0; break; case 0x01:musicaddress=&music_same0; break; case 0x02:musicaddress=&music_

31、two0; 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();initialt

32、imer2();while(1)key=getkey();if(runmode=0x09) playmusic(); if(key!=0x00) keydispose(key); 音乐产生程序清单如下:#ifndef _soundplay_h_revision_first_#define _soundplay_h_revision_first_#define system_osc 6000000#define sound_space 4/5#define musicnumber 3sbit beepio=p26;extern void ledshow(unsigned int ledstatu

33、s);extern unsigned char getkey(void);extern void keydispose(unsigned char key);extern void delay1ms(unsigned int count);extern unsigned char musicindex;unsigned int code fretab12=262,277,294,311,330,349,369,392,415,440,466,494;unsigned char code signtab7=0,2,4,5,7,9,11;unsigned char code lengthtab7=

34、1,2,4,8,16,32,64;unsigned char sound_temp_th0,sound_temp_tl0;unsigned char sound_temp_th1,sound_temp_tl1;void initialsound(void) beepio=0; sound_temp_th1=(65535-(1/1200)*system_osc)/256; sound_temp_tl1=(65535-(1/1200)*system_osc)%256; th1=sound_temp_th1; tl1=sound_temp_tl1; tmod|=0x11; et0=1; et1=0;

35、 tr0=0; tr1=0; ea=1;void beeptimer0(void) interrupt 1beepio=!beepio;th0=sound_temp_th0;tl0=sound_temp_tl0;void play(unsigned char*sound,unsigned char signature,unsigned octachord,unsigned int speed)unsigned int newfretab12;unsignedchar i,j;unsignedintpoint,ldiv,ldiv0,ldiv1,ldiv2,ldiv4,currentfre,tem

36、p_t,soundlength;unsigned char tone,length,sl,sh,sm,slen,xg,fd,key,ledflash,offset;for(i=0;i11)j=j-12;newfretabi=fretabj*2;elsenewfretabi=fretabj;if(octachord=1)newfretabi=2;else if(octachord=3)newfretabi=2; soundlength=0;while(soundsoundlength!=0x00) soundlength+=2;point=0;tone=soundpoint;length=sou

37、ndpoint+1;ldiv0=12000/speed;ldiv4=ldiv0/4;ldiv4=ldiv4-ldiv4*sound_space;tr0=0;tr1=1;while(pointsoundlength) sl=tone%10; sm=tone/10%10; sh=tone/100; ledflash=sm*(sl/2)+1)+2; ledshow(0xfffe=2; if(sm=3)currentfre=2; temp_t=65536-(50000/currentfre)*10/(12000000/system_osc); sound_temp_th0=temp_t/256; so

38、und_temp_tl0=temp_t%256; th0=sound_temp_th0; tl0=sound_temp_tl0+6; slen=lengthtablength%10; xg=length/10%10; fd=length/100; ldiv=ldiv0/slen; if(fd=1) ldiv=ldiv+ldiv/2; if(xg!=1) if(xg=0) if(slen0;i-) offset=(offset+1)%5; ledshow(0xfffe0;i-) offset=(offset+1)%5; ledshow(0xfffe(ledflash+offset-2); whi

39、le(tf1=0) key=getkey(); if(key!=0x00) keydispose(key); tr0=0; tr1=0; beepio=0; return; th1=sound_temp_th1; tl1=sound_temp_tl1; tf1=0; point+=2;tone=soundpoint;length=soundpoint+1;beepio=0;musicindex=(musicindex+1)%musicnumber;ledshow(0x0001);delay1ms(300);#endif六、 系统仿真、调试及运行1、proteus的使用及系统仿真图(1) 打开proteus软件应用。(2) 在应用页面中选择元件模式,并在该模式中单击“p”按钮,打开后在“关键字”栏中输入所需元件名称,并添加到方框列表中。添加到方框中。如图1-4所示:图1-4 单击p按钮查找所需元器件(3) 在页面上放置添加到方框列表中的所需元件,并连接线路。(4) 完成连接后,进行电气规则检查,检查无误后双击cpu单片机,在“project file”栏上添加“*.hex”文件并单击“确定”按钮。(5) 在仿真栏中单击“开始”按钮,系统进行仿真。仿真图如图1-5所示:图1-5 多模式带音乐跑马灯仿真图2、keil c的使用及系统调试过程(1) 打开keil c软件应用,单击

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论