张贤祖单片机课程设计.doc_第1页
张贤祖单片机课程设计.doc_第2页
张贤祖单片机课程设计.doc_第3页
张贤祖单片机课程设计.doc_第4页
张贤祖单片机课程设计.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

酒 泉 职 业 技 术 学 院课 程 设 计(论 文)2012 级 电气工程与自动化 专业题 目: 单片机课程设计 基于单片机音乐盒设计 设计时间: 二一三年十二月 学生姓名: 张贤祖 学生学号: 121104034 指导教师: 杜 娟 班 级: 12电气班 2013年 12月27日绪 论 本设计是为了检测自己对单片机的掌握情况,并且能以c语言写出程序应用,设计是以AT89S51的芯片的电路为基础,利用keil和proteus仿真软件,设计出一个多个功能音乐盒。音乐盒主要由四大模块构成:包括AT89S51芯片、8个按键、蜂鸣器、晶振复位电路。有3个用来选择歌曲的键。此外用户可以按照自己的喜好选择音乐并将其转化成机器码存入单片机的存储器中。对于不同型号的单片机只需要相应的改变一下地址即可。该软、硬件系统具有很好的通用性,很高的实际使用价值。本报告写了音乐盒的原理,如何使用,述写了音调的产生和节拍的确定及音符编码;包含主电路及其图和流程图以及我们此次的设计的心得体会。 目 录绪论1、 课题分析.1 1 .课程设计的目的.1 2.课程设计任务.1 3.课程设计要求.1 4.课程设计意义.1二、硬件设计.1 1.硬件最小系统设计.12.发音电路设计.2 3.按键电路设计.3 4.硬件电路设计.4三、软件设计.51.流程图.5 2.程序设计.6 四、调试.111.硬件调试.11 2.软件调试.11 3.程序调试中出现的问题及解决的方法.12设计小结.13参考文献.14一、课程分析 1.课程设计目的 应用单片机,利用它的原理组成一个音乐播放器。本课程设计是主干实践课。课程的任务在于提高学生综合运用所学知识理论、分析解决问题的能力。 2.课程设计任务 (1)以单片机为核心部件组成一个音乐播放器; (2)利用单片机的定时器产生乐谱的各种频率方波,由蜂鸣器发出声音; (3)定义按键,能相应的播放出歌曲; 3.课程设计要求 能用按键选择不同的歌曲,至少三首歌播放,并写出课程设计报告。 4.课程设计的意义 通过自己动手设计单片及组成的器件,在软件及硬件上进一步了解单片机的原理,深入了解了单片机C51语言的实际应用,能更深地理解课堂上所学的内容,提高C语言程序的编写,体会作为一名设计人员所需要具备的各种能力,学会理论知识联系实际,提高我们发现问题,分析问题,解决问题和实践动手的能力。二、硬件的设计 1.最小系统设计 时钟电路单片机最小系统复位电路的极性电容C1的大小直接影响单片机的复位时间,一般采用1030uF,51单片机最小系统容值越大需要的复位时间越短。单片机最小系统晶振Y1也可以采用6MHz或者11.0592MHz,在正常工作的情况下可以采用更高频率的晶振,51单片机最小系统晶振的振荡频率直接影响单片机的处理速度,频率越大处理速度越快。 复位电路起振电容C2、C3一般采用1533pF,并且电容离晶振越近越好,晶振离单片机越近越好。图1 单片机最小系统硬件构成2发音电路设计图2 发音电路图发音原理:播放一段音乐需要的是两个元素,一个是音调,另一个是音符。首先要了解对应的音调,音调主要由声音的频率决定,同时也与声音强度有关。对一定强度的纯音,音调随频率的升降而升降;对一定频率的纯音、低频纯音的音调随声强增加而下降,高频纯音的音调却随强度增加而上升。另外,音符的频率有所不同。基于上面的内容,这样就对发音的原理有了一些初步的了解。音符的发音主要靠不同的音频脉冲。利用单片机的内部定时器/计数器0,使其工作在模式1,定时中断,然后控制P3.7引脚的输出音乐。只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲。 3按键电路设计 当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。同时启动定时器T1,显示歌曲号。 图3 按键电路图 4硬件电路图 1.本设计中用到89C51单片机,(硬件电路图如图4所示) 图4 硬件电路图(1)硬件电路中用(外部0、1、2输入端P2.5 P2.6 P2.7)分别接S1、S2、S3作为三首歌曲的功能键 (2)用P0.0-P0.7控制七段码a,b,c,d,e,f。(3)用P1.0口控制喇叭。(4)电路为12MHZ晶振频率工作,起振电路中C1,C2均为30pf。 2.原理说明:当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。 (1)硬件电路中用P3口控制按键,其中P3.0P3.2扫描列,P3.4P1.6扫描行; (2)用P1.0口控制蜂鸣器; (3)电路为12MHz晶振频率工作,起振电路中C1,C2均为30pf。 (4)利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演乐曲(内存三首乐曲)。 (5)采用分泌器显示当前播放的歌曲序号。 (6)可通过功能键选择乐曲,上一曲,下一曲 三、软件设计 1.本程序可以实现课程设计的基本要求,程序流程图如下:2.程序设计如下:开始初始化设置音节起始位置设置节拍间距读取音阶,音符显示当前播放歌曲序号节拍结束音乐结束#include#define uchar unsigned char#define uint unsigned intuchar Count;unsigned char code SONG = /祝你平安0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,0x20,0x20,0x1c,0x20,0x20,0x80,0x2b,0x20,0x26,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0x10,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,0x2b,0x10,0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x20,0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30,0x10,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x26,0x10,0x2b,0x10,0x2b,0x80,0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x10,0x40,0x10,0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x00, /路边的野花不要采0x30,0x1C,0x10,0x20,0x40,0x1C,0x10,0x18,0x10,0x20,0x10,0x1C,0x10,0x18,0x40,0x1C,0x20,0x20,0x20,0x1C,0x20,0x18,0x20,0x20,0x80,0xFF,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x80,0xFF,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x80,0x20,0x30,0x1C,0x10,0x20,0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x15,0x1F,0x05,0x20,0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x30,0x20,0x30,0x1C,0x10,0x18,0x40,0x1C,0x20,0x20,0x20,0x26,0x40,0x13,0x60,0x18,0x20,0x15,0x40,0x13,0x40,0x18,0x80,0x00, / 八月桂花0x20,0x40,0x1C,0x10,0x18,0x10,0x20,0x10,0x1C,0x10,0x18,0x40,0x1C,0x20,0x20,0x20, 0x1C,0x20,0x18,0x20,0x20,0x80,0xFF,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C, 0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x80,0xFF, 0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40, 0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40, 0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20, 0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x80,0x20,0x30,0x1C,0x10,0x20,0x10,0x1C,0x10, 0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x15,0x1F,0x05,0x20,0x10, 0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x30,0x1C,0x10, 0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20, 0x20,0x20,0x30,0x30,0x20,0x30,0x1C,0x10,0x18,0x40,0x1C,0x20,0x20,0x20,0x26,0x40, 0x13,0x60,0x18,0x20,0x15,0x40,0x13,0x40,0x18,0x80,0x00;void Time0_Init()TMOD = 0x01;IE = 0x82;TH0 = 0xDC;TL0 = 0x00;void Time0_Int() interrupt 1TH0 = 0xDC;TL0 = 0x00;Count+;void Delay_xMs(uint x) uint i,j; for(i=0; ix; i+) for(j=0; j3; j+); void Play_Song(uchar i)uchar Temp1,Temp2;uint Addr;Count = 0;Addr = i * 217;while(1)Temp1 = SONGAddr+; if (Temp1 = 0xFF) TR0 = 0; Delay_xMs(100); else if (Temp1 = 0x00) return; else Temp2 = SONGAddr+; TR0 = 1; while(1) Speak = Speak; Delay_xMs(Temp1); if(Temp2 = Count) Count = 0; break; void Main()Time0_Init();while(1)Play_Song(0);/Play_Song(0)为祝你平安 Play_Song(1)为路边的野花你不要采 Play_Song(2)八月桂花 四调试 1.硬件调试 (1)测试当键盘有键按下时,判断键值,未能启动计数器T0,产生一定频率的脉冲。写进去的信息不能显示出来,后来经过调试与其连接的电位器可以增强蜂鸣器音量。 (2)把程序下进单片机后,无法驱动蜂鸣器,放出乐曲。仔细检查发现程序没有错误,而且单片机内找不到程序,所以认为硬件方面出了问题,经过更换芯片后,显示结果正常。 2.软件调试 (1)对程序进行编译,确保程序能够正确运行. (2)将编译成功的程序开始运行.(3)提前输入了所播放音乐的编码,在程序正确运行中,选定歌曲并从P1.0输出音乐. 按照上面设计的电路在proteus软件内画图, 打开单片机软件开发系统Keil,选择89c51单片机,在其中编写程序,运行生成一个后缀名为hex的文件,然后将该文件下载到proteus中的AT89c51单片机中进行仿真,观察实验现象。仿真能实现播放音乐,按键选择曲目,播放功能。仿真成功后,安装好实验板,然后将音乐程序下载到电路板内 ,观察结果。能实现播放音乐,按键换曲等功能。 3.程序调试中出现的问题及解决的办法: (1)调试中,无法显示正常现象,检查后发现是因为程序中有的指令书写不规范导致的。(2) 编程过程中要注意加注释或分割线,否则,在程序过长时容易变得很乱,不便于查找或

温馨提示

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

评论

0/150

提交评论