1、成绩 优 良 中 及格 不及格课 程 设 计课程名称 单片机原理与应用课程设计课题名称 音乐提示定时器设计专 业班 级学 号姓 名指导老师 王迎旭、李晓秀、周向红等2015年 7月 10日电 气 信 息 学 院课 程 设 计 任 务 书课题名称 音乐提示定时器设计姓 名 专业 班级 学号指导老师 周向红课程设计时间 2015 年 6 月 29 日-2015 年 7 月 10 日一、任务及要求设计任务:以单片机为核心设计一个音乐提示定时器,具备倒数计时、时间修改、音乐演奏等功能。可作为微电脑倒数计数器,做一小段时间计时,放在家中使用,例如煮泡面、煮开水或小睡片刻等;用于全自动洗衣机洗涤完毕音乐提
2、示定时器。设计 4 个按键设置现在想要倒数的时间:K1-可调整倒数时间为 1-60 分钟;K2设置倒数计时时间为 5 分钟,显示为“05” ;K3设置倒数计时时间为 20 分钟,显示为“20” ;K4设置倒数计时时间为 60 分钟,显示为“60” ;一旦按键后则开始倒计时,当计时为 0 则演奏一曲音乐;内定倒数计时时间为 5 分钟,显示为 05。能焊接开发板的同学,在开发板上进行调试。(1)具有定时音乐演奏功能。(2)用按键实现不同时间设置等控制。(3)用 4 位 LED 数码管实现不同时间显示。设计要求:(1)确定系统设计方案;(2)进行系统的硬件设计;(3)完成必要的参数计算与元器件选择;
3、(4)开发板焊接及测试(5)完成应用程序设计;(6)应用系统的硬件和软件的调试二、进度安排第一周:周一:集中布置课程设计任务和相关事宜,查资料确定系统总体方案。周二周三:完成硬件设计和电路连接周四周日:完成软件设计第二周:周一周三:程序调试周四周五:设计报告撰写。周五进行答辩和设计结果检查。三、参考资料1、王迎旭等.单片机原理及及应用M. 2 版.机械工业出版社,20122、胡汉才.单片机原理及其接口技术M.3 版.清华大学出版社,2010.3、戴灿金.51 单片机及其 C 语言程序设计开发实例M.清华大学出版社,20104、周向红等.51 单片机课程设计指导M.华中科技大学出版社,2000目
4、 录第 1 章总体方案设计 1 1、1 总设计思路 11、2 系统总设计框图 11、3 音乐产生基本原理 2第 2 章硬件电路设计 32、1 单片机选择 32、2 复位电路设计 32、3 晶振电路设计 42、4 动态显示电路 52、5 音乐播放电路 5第 3 章软件设计 63、1 软件设计思路 63、2 主程序设计 63、3 中断服务程序设计 63、4 子程序设计 73、5 流程图 7 3、5、1 键盘流程图 73、5、2 显示流程图 83、5、3 音乐播放流程图 9第 4 章调试 104、1 硬件调试 104、2 软件调试 104、3 软硬件调试 104、4 开发板调试 10第 5 章总结
5、12第 6 章参考文献 13附录 1 总原理图附录 2 程序清单1第 1章 总体方案设计1、1 总设计思路通过计算某一音频周期(1/频率),然后将此周期除以 2,即为半周期的时间。利用单片机定时器计时这个半周期时间,每当计时到后就将输出脉冲的 I/O 口反相,然后重复计时此半周期时间再对 I/O 口反相,这样就能在此 I/O 口上得到此频率的脉冲,再结合中断延时程序,程序中节拍控制是通过调用延时子程序 DELAY 的次数来实现,产生音乐。利用 P1.1,P1.2,P1.3 管脚,对应开关 K2、K3、K4,分别启动不同的倒计时程序 5 分钟、10 分钟、20 分钟。通过查询方式对 P3.2 管
6、脚进行查询,进入 1 到 60 分钟的时间调整程序。P0 引脚作为显示输出连至 LED 显示器 Q0,Q1 为位选信号,控制不同位的数码管。程序中使用定时器 T0 方式 1 来产生歌谱中各音符对应频率的音频脉冲,由 P1.4 通放大输出,1 拍为 748 ms。确定了设计思路后,就可以具体设计了。先编写程序,并用软件检验是否正确。然后加入硬件进行调试。调试是进行仿真调试,即用 Proteus 仿真软件,画出相应正确的电路原理图,运行仿真软件,看是否可以实现课题所要求的功能。如果不可以,检查是电路的错还是程序连接出问题,进行修改,再次进入仿真环境调试。1、2 系统总设计框图晶振、复位电路蜂鸣器L
7、ED 显示电路按键输入电路 单片机图 1-1总设计框图21、3 音乐产生基本原理总而言之,一首乐曲是由音阶和节拍两大要素构成。一首乐曲演奏的原理是:不同音阶分别对应不同的频率,发出不同的音调,而节拍则控制发出音调时间的长短;若将乐曲的音调连续发出,并使其按相应的节拍变化,即可演奏一首乐曲。根据这一特点,我们采用单片机辅以相应的接口来设计音乐播放器 1。音乐的产生主要是通过单片机的I/O 口输出高低不同的脉冲信号来控制蜂鸣器发音。要想产生音频脉冲信号,需要算出某一音频的周期(1/频率),然后将此周期除以 2,即为半周期的时间。利用单片机定时器计时这个半个周期时间,每当计时到后就将输出脉冲的 I/
8、O 口反相,然后重复计时此半周期时间再对 I/O 口反相,这样就能在此 I/O 口上得到此频率的脉冲。通常,利用单片机的内部定时器 0,工作在方式 1 下,改变计数初值 TH0 和 TL0 来产生不同频率。对于音乐的节拍,每个音符使用 1 个字节,字节的高 4 位代表音符的高低,低 4 位代表音符的节拍。如果 1 拍为 0.4S,1/4 拍为 0.1S,只要设定延迟时间就可求得节拍的时间。假设 1/4 拍为 1DELAY,那么 1 拍应为 4DELAY,以此类推。所以只要求得 1/4 拍的DELAY,其余的节拍就是它的倍数。3第 2章 硬件电路设计2、1 单片机的选择单片机/EA 管脚始终接高
9、电平,单片机复位方式采用按键电平触发复位,通过计算可知单片机频率为 11.0592MHz 时,计时误差最小,精度越高,因此内部时钟频率设为11.0592MHz。AT89CXX 系列与 MCS-51 系列单片机相比,有两大优势:第一,片内程序存储器采用闪速存储器,使程序的写入更方便;第二,提供了更小尺寸的芯片,使整个硬件电路的体积更小。它以较小的体积、良好的性能价格比倍受青睐。本次课程设计采用AT89C51 单片机。图 2-1AT89C51芯片2、2 复位电路设计图 2-2复位电路根据应用的要求,复位操作有两种基本形式:上电复位和上电或开关复位。4当 MCS-5l 系列单片机的复位引脚 RST(
10、全称 RESET)出现 2 个机器周期以上的高电平时,单片机就执行复位操作。如果 RST 持续为高电平,单片机就处于循环复位状态。上电复位要求接通电源后,自动实现复位操作。电容 C3 和电阻 R10 于单片机内的等效电阻的作用,不用图中电阻 R9,也能达到上电复位的操作功能。 要求电源接通后,单片机自动复位,并且在单片机运行期间,用开关操作也能使单片机复位。由于电容 C3 的充电和反相门的作用,使 RST 持续一段时间的高电平。当单片机已在运行当中时,按下复位键 K 后松开,也能使 RST 为一段时间的高电平,从而实现上电或开关复位的操作。本系统的复位电路采用上电复位。RET 按键可以选择专门
11、的复位按键,也可以选择轻触开关。2、3 晶振电路设计图 2-3晶振电路单片机工作的时间基准是由时钟电路控制的。在单片机的 XTAL1 和 XTAL2 两个管脚,接一只晶振及两只电容就构成了单片机的时钟电路。电路中,电容器 C1 和 C2 对振荡频率有微调作用,通常的取值范围为 30PF 左右。石英晶体选择 12MHZ 就可以。本次设计应用的电压有+5V。220V 交流电源经变压器,整流,滤波后分别进入芯片7805,产生+5V,这些电源的具体应用情况如下:+5V 电源:单片机及外围电路所用电源+9V 电源:压电喇叭所用电源52、4 动态显示电路图 2-4显示电路首先介绍一下显示器的显示接口,按驱
12、动方式分为静态显示和动态显示两种显示方式。对于多为显示器,通常都是采用动态显示,既逐个地循环地点亮各位显示器。这样虽然在任一时刻只有一位显示器被点亮,但是由于人眼具有视觉残留效应,看起来与全部点亮效果一样。为了实现 LED 显示器的动态扫描,除了要给显示器提供段的输入之外,还有对显示器选择位的控制,这就是通常说的段控和位控。因此,多位 LED 显示器接口电路需要有两个输出口,其中一个用于 8 条段控线;另一个用于输出位控线,位控线的数目等于显示器的数目。2、5 音乐播放电路图 2-5音乐电路蜂鸣器有长声有短声两种,可以根据需要进行选择,通过软件编程控制。在程序里可以设计不同的歌曲来通过播放器进
13、行播放,所以,在这个设计里,是可以有不同的铃声的。6第 3章 软件设计3、1 软件设计思路软件设计包括:信息输入、信息处理、显示输出。为了使程序清晰明了,采用调用子程序设计方式。3、2 主程序设计MAIN: CLR F0 ;清零用户标志位MOV 33H , #5H ;默认 5 分钟倒计时S1 BIT P2.0 ;标号位地址 便于编程、阅读和接线S2 BIT P2.1 ;P1 口 显示输出S3 BIT P2.2 ; S?为矩阵键盘列S4 BIT P2.3H1 BIT P2.4 ; H?为矩阵键盘行H2 BIT P2.5H3 BIT P2.6H4 BIT P2.7W1 BIT P0.0 ; W?为
14、矩阵 7 段数码管 位选W2 BIT P0.1W3 BIT P0.2W4 BIT P0.3SETB W1SETB W2SETB W3SETB W4BELL BIT P3.7MAIN1: LCALL CHECK_KEYDOWN ;键盘扫描子程序LCALL TIME_COUNTDOWN_VALUE ;倒计时初值子程序AJMP MAIN1首先程序初始化,对一些位地址进行标号(便于阅读、接线、编程及程序修改) ,对默认显示内容赋初值。3、3 中断服务程序设计1)定时 0 中器断服务程序TIMER0_INT:MOV TH0 , #0DCHMOV TL0 , #00HCJNE R2 , #1 , L1DEC 35HMOV R2 , #100CJNE R3 , #1 , L2MOV R3 , #60DJNZ R4 , RTNSETB F0 ;用户标志位 置 1CLR TR0AJMP RTNL2: DEC R3