毕业设计(论文)-基于51单片机的低成本音乐门铃设计 - 图文(5)

2019-03-04 13:39

4 系统软件设计

本设计需要用到的软件都是大众一般使用的软件,具有方便简易快捷的优点,程序用C语言编程,也是编程的主流语言,方便日后修改与调试。 4.1 软件介绍

本系统程序开发需要用到keil、STC-ISP V35 软件以及郭天祥51开发板。以下是关于keil和STC-ISP的简介。

现代电子系统的基本核心是嵌人式计算机系统,而单片机是最典型、最广泛、最普及的嵌入式系统。学好单片机,灵活应用Keil软件在电子、科技领域灵活应用单片机技术,将是带动国家科技发展、增强国家综合实力的必经之路。

Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。

掌握Keil软件的使用对于使用51系列单片机是十分必要的,即使不使用c语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令单片机开发事半功倍。[12]

STC-ISP 是单片机下载编程烧录软件,是针对STC系列单片机而设计的,可下载STC89系列、12C2052 系列和12C5410等系列的STC单片机,使用简便,现已被广泛使用。

程序控制流程图如图4.1所示。

16

准备 调用初始化程序 读P3口,判断有无按键调用延时子程序 读P3口,判断有无按键按下调用播放子程序 读P3口,判断有无按键按下调用延时子程序 调用播放子程序 读P3口,判断有无按键按下读P3口,判断有无按键按下调用延时子程序 调用播放子程序 图4.1 程序控制流程图

读P3口,判断有无按键按下

17

4.2 主程序设计

本系统首先建立音乐,把音乐的音符找出,建立各个音符的常数表,如下图4.2:

图4.2 音符常数表

编写程序时,我们把表建立在一个数组内,每个发音符使用一个字节,字节高四位(简谱码)代表音符的高低,低四位(节拍码)代表音符的节拍。如果一拍为0.4秒,1/4秒就是0.1秒,只要设定延时时间就可以求得节拍的时间。假设1/4拍为1 DELAY,则1拍应该为4 DELAY,以此类推。所以只要求得1/4拍的DELAY时间,其余的节拍就是它的倍数。1/4拍的延时时间在此我们设为125毫秒。

主文件程序由主程序、延时程序以及歌曲程序组成。

主程序首先对所有端口进行初始化操作,接着进入不断循环部分,直到按键按下,进入防止抖动程序,如果不是抖动,则进入音乐播放程序,直到音乐播放完毕,再次进入等待按键按下部分,直到第二次按键按下,再次进入防止抖动程序,如果不是抖动,则再次进入音乐播放程序,直到音乐播放完毕,直到第三次按键按下,最后一次次进入防止抖动程序,如果不是抖动,则最后一次次进入音乐播放程序,直到音乐播放完毕,回到循环起点,等待第四次按键按下部分,如此类推。程序如下: main() {

InitialSound(); while(1){

if(key==0)

18

} } } }

{

Delay1ms(10); if(key==0)

Play(Music_Girl,0,3,360); do {

}while(key==1); if(key==0) {

Delay1ms(10); if(key==0)

Play(Music_Same,0,3,360); {

}while(key==1); if(key==0) {

Delay1ms(10); if(key==0)

do

Play(Music_Two,0,3,360);}

延时程序部分。为防止按键抖动,对门铃进行有效保护,设计了防止抖动延时程序,程序如下:

void Delay1ms(unsigned int count) {

19

}

unsigned int i,j; for(i=0;i

4.3 播放文件程序设计

播放文件程序由初始化程序函数,音符发生中断函数,播放函数组成。 初始化函数是对芯片端口进行初始化操作,以确定中断模式以及端口初始值,程序如下: void InitialSound(void) {

BeepIO = 0;

Sound_Temp_TH1 = (65535-(1/1200)*SYSTEM_OSC)/256;

(10ms的初装值)

// 计算TL1应

装入的初值

Sound_Temp_TL1 = (65535-(1/1200)*SYSTEM_OSC)%6; // 计算TH1应

装入的初值 }

音符发生中断函数用于接收到中断信号时,进行的声音播放操作,程序如下: void BeepTimer0(void) interrupt 1 //音符发生中断 {

BeepIO = !BeepIO;

20

TH1 = Sound_Temp_TH1; TL1 = Sound_Temp_TL1; TMOD |= 0x11; ET0 = 1; ET1 = 0; TR0

= 0;

TR1 = 0; EA = 1;


毕业设计(论文)-基于51单片机的低成本音乐门铃设计 - 图文(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:看一个老总如何给8个下属加薪的

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

马上注册会员

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