3.2 程序设计
(1)硬件电路准备完成后,系统经过接通电源,首先进行程序的初始化,紧接着是运用查询的方法获得歌曲音符的音调和节拍信息,从而确定定时时间和延时时间,与此同时根据得到的音调信息确定LED的闪烁个数。演奏完一个音符后程序自动运行下一个音符,歌曲播放完成后,自动实现循环演奏。程序流程图如图4所示:
图4 程序流程图
(2)程序是一个系统的灵魂,为了实现本设计的要求,根据任务以及音乐对彩灯的控制要求,把音符的相关信息和与之相对应的LED闪灯个数的信息存储相应的LED信息控制单片机引脚变化,从而使得LED随着音乐节奏有规律的闪烁。其主程序如下:
void main()
{
uchar i=0;
TMOD=0x01; EA=1; ET0=1;
while(1)
{
m=music[i][0];n=music[i][1];
TH0=T[m][0]; TL0=T[m][1];
if(m==0x00)
{TR0=0;delay(n);i++;}
else if(m==0xFF)
{TR0=0;delay(30);i=0;}
else if(m==music[i+1][0])
{TR0=1;P1=yinyue[m];delay(n);TR0=0;P1=0xFF;pause();i++;}
else
{TR0=1;P1=yinyue[m];delay(n);TR0=0;P1=0xFF;i++;}
}
}
4. 系统仿真与调试
程序编写完成后,就要在仿真软件Proteus进行原理图的绘制,在集成开发环境Keil µVision4中进行程序的编写,最后进行Proteus和Keil µVision4的联合调试。
4.1 应用软件概述
(1)仿真软件Proteus
Proteus是一款嵌入式系统仿真开发平台。Proteus的电路原理图系统的仿真功能:系统不仅可以做模拟电路与数字电路实验,而且能做接口与单片机实验。为毕业设计与课程设计提供系统综合仿真。目前大多数高校的实验教学中使用Proteus仿真软件[4]。
(2)集成开发环境Keil µVision4
Keil是目前最好的51单片机开发工具之一。Keil C51是51系列兼容单片机C语言软件开发系统。C51已被完全集成到µVision4的集成开发环境中。可以完成编辑、编译、连接、调试、仿真等整个开发流程,该集成系统可以编译C源程序,也可以编译汇编语言源程序[5]。
(3)Proteus与Keil联合调试
有了上述基础,接下来就要在仿真软件Proteus中进行电原理图的绘制、在集成开发环境Keil µVision4中编写程序,最后进行联合调试。联合调试前要进行如下设置:在Proteus中打开菜单-Debug(调试)", 选中"Use Remote Debug Monitor(使用远程调试监控)";在Keil µVision4中则要设置两项:①每次新建工程后,打开“菜单Project”选择“Options for Target 1”窗口,在选项卡“Debug”中, 选择右边的Use:“Proteus VSM Simulators”;②在此窗口中的“Output”选项卡中点选create hex wen jian[5]。
4.2 系统的仿真
各项工作顺利完成后,现在进行联合调试,单击 最左端的按钮,系统全速运行,或者单击 单步执行。
开始调试的时候遇到了一些问题,彩灯不会发光,蜂鸣器不能奏出音乐曲调,软件提示一些线路连接方面的错误。查阅LED方面的资料,得知彩灯不会发光是LED接法方面的错误,本设计LED采用灌电流的接法;并且调整限流电阻的阻值,LED的亮度会有所不同。蜂鸣器没有发出声音是由于没有把三极管的发射极和集电极连接正确,还有蜂鸣器型号在PROTEUS软件中的选择。经过修正LED的接法,修改线路的连接,更换PNP三极管的型号,对调PNP三极管的发射极和集电极,重新仿真可以看到LED在不停的闪烁,蜂鸣器演奏出“生日快乐歌”。 AT89S51单片机的音乐彩灯控制器设计+仿真图+源代码(6):http://www.youerw.com/zidonghua/lunwen_1833.html