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

2020-07-01 09:43

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

带音乐跑马灯设计

一、 实训目的及要求

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

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

(3)掌握单片机复位电路和晶振电路的工作原理及设计。 (4)掌握和了解+5V电源原理设计。 (5)了解单片机C语言及程序设计。

(6)对Keil C51和Proteus 7软件进行熟练的掌握和操作。 二、 实训设备和元器件

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

(1)有16个发光二极管做跑马灯,其中跑马灯有10种亮灯模式。 (2)有专门的按键用以切换跑马灯的模式,并且对于任何一种跑马灯模式都可以对亮灯速度进行控制。

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

(4)当跑马灯处于一种模式时,伴随的音乐响起,音乐至少有3首,并可以对其进行切换。 四、 系统硬件电路 1、系统硬件框图

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

电源电路 LED数码管 显示电路 16个发光二极管做跑马灯 模式切换按键以及速度调节按键 复位电路 AT89S1 单片机

晶振电路

图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所示:

开始 设定跑马灯初速 I/O初始化 检查按键开关 模式键被按下? Y N 加速键被按下? N Y 减少时间, 使跑马灯加速 模式加1,等于9? N Y 减速减被按下? 播放音乐 N Y 增加时间, 使跑马灯减速 送LED与跑马结束 LED跑马灯

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

图1-3 程序流程图

2、系统源程序(C或汇编)

#include

#include unsigned char RunMode;

void Delay1ms (unsigned int count) {

unsigned int i,j; for(i=0;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=LEDDisplayCode[Value]; } void LEDflash(unsigned char count) {

unsigned char i; bit Flag;

for(i=0;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;

TH2=RCAP2H=0xFC; ET2=1; TR2=1; 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};

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=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(0x0001<

void mode_1(void) {

LEDShow(0x8000>>LEDindex); LEDindex=(LEDindex+1); }

void mode_2(void) {

if(LEDDirection)

LEDShow(0x0001<

LEDShow(0x8000>>LEDindex); if(LEDindex==15)

LEDDirection=!LEDDirection; LEDindex=(LEDindex+1); }

void mode_3(void)


基于AT89S52单片机的多模式带音乐跑马灯设计实训报告 - 图文.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:四年级下册语文素材-语文阅读理解答题技巧 - 通用版 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: