找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8132|回复: 4
收起左侧

单片机音乐调音器课程设计报告

[复制链接]
ID:127902 发表于 2016-6-23 23:35 | 显示全部楼层 |阅读模式
单片机课程设计报告



题 目 音乐播放器



姓    名:
学    号:
130910056
专    业-------------------:
电子信息工程
班    级:
电信1302
指导教师:
职    称-------------------:
教授





计算机与信息工程学院
20161

湖南商学院课程设计
课程设计(实习)评审表
姓 名
李佩
学 院
计信学院
学 号
130910056
专业班级
电信1302
题 目
设置“+”、“-”两个按键,当按下“+”,声音增大;按下“-”,声音减小。

评审成绩

指导教师签名

职称

评审时间
      年   月   日

课程设计(实习)作品验收表
题目
设置“+”、“-”两个按键,当按下“+”,声音增大;按下“-”,声音减小。
参与人员
姓 名
班 级
电信1302
学 号
130910056
设计任务与要求:
    (1)设置“+”、“-”两个按键,当按下“+”,声音增大;按下“-”,声音减小;
(2)根据应用系统结构规模的要求,掌握在单片机外部扩展系统硬件设计的基本过程:例如硬件接口的设计,正确合理选用所需元器件,绘制应用系统与单片机连接的电路图等项工作。首先画出程序总体流程图,然后进行各控制模块程序的设计、编写系统程序。
(3)掌握如何应用单片机仿真软件来开发应用系统及仿真调试的过程,先进行各模块调试,然后进行各程序模块的联调,最后与硬件一起进行联调,反复检测和修改直至开发结束。
作品完成情况:
理论联系实践,实践离不开理论,由于之前没实际做过什么设计,所以在做这个课程设计时遇到过很多的问题. 由于单片机系统复杂,容易出现很多问题。但还是经过多次编程以及调试后得到了想要的结果。

验收情况:
                                                 验收教师签名:___________
                                                        年   月   日

注:1. 除“验收情况”栏外,其余各栏均由学生在作品验收前填写。
  • 验收情况栏由验收小组按实际验收的情况如实填写。

目录






一 、绪论
二十世纪九十年代以来,计算机、信息、电子、控制、通信等技术得到迅速发展,促使了社会生产力的提高,也使人们的生产方式和生活方式产生了日新月异的变化。随着人们生活水平的提高及对音乐的喜爱,对音乐播放器的品质,功能,品种等提出了越来越多的要求,表现在对控制系统性能、可靠性等要求越来越高。而品质的提高,功能的更新,可靠性的增强,品种的变化无不于产品的核心控制部分水平的提高密不可分。家用音乐播放器产品及其它有关消费电器产品都是一些开环或闭环控制系统,都由核心控制部分,执行部分与人机界面三部分组成。而最为重要的控制部分一般是由单片机来执行完成的,这就必将导致和促进单片机在音乐领域应用的发展。现在这些由单片机实现的音乐播放器的功能越来越强、费用越来越低。例如,就市场上的mp3目前的功能越来越强大体积却越来越小,价格也逐渐便宜,被大多数人所能接受。但这些音乐播放器也或多或少的存在着一些问题,解决这些问题,还除智能化的单片机莫属。
二 、课程设计目的及要求
2.1 课程设计目的
《单片机原理与应用》是电子信息工程专业的一门重要专业课,对应用能力和动手能力要求很高,课程设计环节是学生学习该课程后进行的一项必不可少的基本训练。
本着以下目的,制定《单片机应用系统设计》实施方案。
  • 使学生增进对单片机的感性认识加深对单片机理论方面的理解,巩固学生所学理论知识;
  • 使学生掌握单片机的内部功能模块的应用,培养学生系统设计的思想;
  • 培养学生的软件设计能力,提高学生的动手能力;
  • 培养学生查阅相关资料、撰写文档的能力和自学、科研的能力

2.2 课程设计要求
1、基本要求
学生每人一题,要求根据课题要求,通过查阅资料等,独立完成课题的方案设计、电路设计、系统流程图设计、仿真分析、调试和指标测试,撰写设计报告。
2、具体要求
从应用系统的设计的任务出发,应当通过设计工作的各个环节,达到以下教学要求:
(1)根据应用系统的要求,初步掌握总体结构的方法和构思,从中选择一种最佳的设计方案。
(2)根据应用系统结构规模的要求,掌握在单片机外部扩展系统硬件设计的基本过程:例如硬件接口的设计,正确合理选用所需元器件,绘制应用系统与单片机连接的电路图等项工作。
(3)根据设计任务和要求,首先画出程序总体流程图,然后进行各控制模块程序的设计、编写系统程序。
(4)掌握如何应用单片机仿真软件来开发应用系统及仿真调试的过程,先进行各模块调试,然后进行各程序模块的联调,最后与硬件一起进行联调,反复检测和修改直至开发结束。

3、音乐调音主要器件相关知识介绍3.1  AT89S52
AT89S52是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89S52是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案
0.001.jpg
                    芯片流程图
0.002.jpg







    单片机89S52采用40Pin封装的双列直接。下图是它们的引脚配置:40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在我们对这些引脚的功能加以说明:
·20:接地脚。
·40:正电源脚,工作时,接+5V电源。
·19:时钟XTAL1脚,片内振荡电路的输入端。
·18:时钟XTAL2脚,片内振荡电路的输出端。
  8051的时钟有两种方式,一种是片内时钟振荡方式 但需在18和19脚外接石英晶体(2-12MHz)和振荡电容,振荡电容的值一般取10p-30p。另外一种是外部时钟方式,即将XTAL1接地,外部时钟信号从XTAL2脚输入。
输入输出(I/O)引脚:
Pin39-Pin32为P0.0-P0.7输入输出脚。
Pin1-Pin8为P1.0-P1.7输入输出脚。
  芯片引脚简要说明
Vcc (40) :+5V 电源
Vss (20) :接地
P0 口(32~39):为8位双向三态I/O口
P1口(8~1):是带内部上拉电阻结构的8位准双向I/O口
P2口(28~21):也是带内部上拉电阻结构的8位准双向I/O口                                                                                                                                                                             
P3(17~ 10):也是带内部上拉电阻结构的8位准双向I/O口,但在整个系统中,对相应的口锁存器置“1” 后,这8个脚还具有第二功能。
RST/VPD (9):复位信号线
ALE/PROG (30):地址锁存有效信号线
PSEN(29):外部程序存储器读选通信号线
EN/VPP(31):内部和外部程序存储器的选择线
XTAL1(19) 和XTAL2(18):接外部石英晶体
XTAL1(19) 和XTAL2(18):接外部石英晶体
I/O端口:
8051共有4 I/O端口,为P0,P1,P2,P3;4个I/O口都是双向的,且每个口都具有锁存器。每个端口有8条线,共计32条I/O线。
P0.0~P0.7;P1.0~P1.7;P2.0~P2.7;P3.0~P3.7
1.  P0 有三个功能
   1)。外部扩充存储器时,作数据总线(D0~D7)
2)。外部扩充存储器时,作地址总线(A0~A7)
3)。不扩充时,作一般I/O使用,内部无上拉电阻,作为输出/输入使用时应加上拉电阻
2.  P1只作I/O口使用,有内部上拉电阻。
3.  P2有两个功能
     1)。扩充外部存储器时,作地址总线(A8~A15)使用。
     2)。作一般I/O口使用,有内部上拉电阻。








0.003.jpg
3.2蜂鸣器(如下图2.3-1)
                       图2.3-1
此电路当BEEP孔悬空时,三极管导通,喇叭内部无震荡电路,音膜不动。当BEEP孔接在单片机时,引脚高地电平不断的变化,音膜被拉动,发出声音。
四、 音乐调音器设计原理
4.1单片机发声的基本原理
众所周知,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单处机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调。音符的节拍我们可以用定时器T0来控制,送入不同的初值,就可以产生不同的定时时间。便如某歌曲的节奏为每分钟94拍,即一拍为0.64秒。但是,由于T0的最大定时时间只能为131毫秒,因此不可能直接用改变T0的时间初值来实现不同节拍。我们可以用T0来产生10毫秒的时间基准,然后设置一个中断计数器,通过判别中断计数器的值来控制节拍时间的长短。。例如对1/4拍音符,定时时间为0.16秒,相应的时间常数为16(即10H);对3拍音符,定时时间为1.92秒,相应时间长数为192(即C0H)。我们将每一音符的时间常数和其相应的节拍常数作为一组,按顺序将乐曲中的所有常数排列成一个表,然后由查表程序依次取出,产生音符并控制节奏,就可以实现演奏效果。此外,结束符和体止符可以分别用代码00H和FFH来表示,若查表结果为00H,则表示曲子终了;若查表结果为FFH,则产生相应的停顿效果。为了产生手弹的节奏感,在某些音符(例如两个相同音符)音插入一个时间单位的频率略有不同的音符。
4.2设计的相关音乐说明
1要产生音频脉冲,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期时间。利用半周期时间定时这个半周期时间,每当计时到后就将输出的I/O反向,然后重复计时此半周期再对I/O反向,就可以在I/O脚上得到此频率的脉冲。
2利用8051的内部定时器使其工作在记数模式MODE1下,改变记数值TH0及 TL0以产生不同的方法。
3 记数脉冲值与频率的关系公式如:N=Fi/2/Fr。N:记数值:Fi:内部计时依次为1us,故其频率为1 MHZ; Fr:要产生的频率;
4 其记数值的求法如:T=65536-N=65536-Fi/2/Fr。例:设K=65536,F=1000000=Fi=1 MHZ。求低音DO(26HZ),中音DO(523HZ),高音DO(1046HZ)的记数值。
5 调音量主要就是调节占空比。占空比越大,音量越高,反之,占空比越小,音量越小。
5 音乐编码表
每个音符都对应了一个T值,12M晶振时各音符的T值如下表1:
                   表1: 12M晶振时对应的T值表
音符(低音)
T值
音符(中音)
T值
音符(高音)
T值
1
63628
1
64580
1
65058
2
63835
2
64684
2
65110
3
64021
3
64777
3
65157
4
64103
4
64820
4
65178
5
64260
5
64898
5
65217
6
64400
6
64968
6
65252
7
64524
7
65030
7
65282
每个音符的发音长度,各调节拍与时间的设定如下表2所示:
                表2: 调值与节拍延时时间关系表
曲调值
1/4拍时间
1/8拍时间
调4/4
125ms
62ms
调3/4
187ms
94ms
调2/4
250ms
125ms

4.3音乐调音器硬件电路图
0.004.jpg

4.4 主程序
#include


   sbit BEEP=P3^7;
   sbit key1=P2^2;
   sbit key2=P2^5;

  bit bz;
              char b;
              char m=5;

void Delay(unsigned int ms)
{                                                                       

while(ms--);

}                                             


void init()
  {
  EA=1;
  TMOD=0X01;
  TH0=(64536)/256;
  TL0=(64536)%256;
  ET0=1;
  TR0=1;
  }            


void main()
  {            

              init();

    while(1)
              {

              if((key1==0)&&(bz==0))
          {              Delay(11);
                                if(key1==0)
                                             { bz=1;
                                              if(m<10) m++;
                                             }}

                            if((key2==0)&&(bz==0))
          {              Delay(11);
                                if(key2==0)
                                             { bz=1;
                                             if(m>0) m--;}}            

                            if((key1==1)&&(key2==1))
                                   bz=0 ;                 }

                              }




void to() interrupt 1
   {                  
                                 TH0=(64536)/256;
         TL0=(64536)%256;
                            b++;
                            if(b==10) b=0;
                            if(b<m)beep=1;[ align] 附录
元器件列表
名称
数量
名称
数量
AT89C52
1
33pF元片电容
2
蜂鸣器
1
按钮
2
10uF电解电容
1
NPN
1
10K电阻
1
12M晶振
1

0.png
全部资料下载:
控制音量.rar (280.95 KB, 下载次数: 31)
回复

使用道具 举报

ID:155830 发表于 2016-12-19 21:58 | 显示全部楼层
需要,谢谢楼主分享
回复

使用道具 举报

ID:150601 发表于 2016-12-20 18:16 | 显示全部楼层
感谢分享,前段时间就想过如何设计改变无源蜂鸣器音量大小,毕竟新手毛都不会。。。多亏楼主大方
回复

使用道具 举报

ID:150601 发表于 2016-12-20 18:17 | 显示全部楼层
感谢分享
回复

使用道具 举报

ID:192129 发表于 2017-4-21 19:44 | 显示全部楼层
楼主留个联系联系我下 想请你开发个程序QQ 10  333 500 10
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表