单片机按键控制定时器选播多段音乐_第1页
单片机按键控制定时器选播多段音乐_第2页
单片机按键控制定时器选播多段音乐_第3页
单片机按键控制定时器选播多段音乐_第4页
单片机按键控制定时器选播多段音乐_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、郑州科技学院单片机课程设计题 目按键控制定时器选播多段音乐学生姓名 张三专业班级15级物联网一班学 号 201566666院(系)信息工程学院指导教师 王完成时间2017 年6月8日一、背景介绍如今,电子技术获得了飞速的发展,现代电子产品几乎渗透了社会的各个领域。 目前,单片机正朝着高性能和多品种方向发展趋势将是进一步想着CMOSt、低功耗、小体积、大容量、高性能、低价格和外围电路装化等几个方面发展。单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片, 而是把一个 计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片 机只缺少了 I/O设备。概括的讲:一块芯片就成了一台计

2、算机。它的体积小、质 量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机 是了解计算机原理与结构的最佳选择。单片机内部也用和电脑功能类似的模块, 比如CPU内存、并行总线。还有和硬件作用相同的存储器件,不同的是它的这 些部件性能都相对我们的家用电脑弱很多,不过价钱也是很低的。利用单片机实现音乐播放有很多要点, 例如外部电路简单,控制方便等,因 而备受广大单片机爱好者的喜爱。通过音乐播放器的设计方案,掌握C语言的编 写方法。并熟练的运用80C51单片机定时器产生固定频率的方波信号,推动喇叭 发出旋律,按下单键可以演奏预先设置的歌曲旋律, 最重要的是自己还可以通过 程序设计输入

3、自己喜欢的歌曲来演奏,本设计采用简易音阶编码直觉式输入法方 便设计音乐旋律。本文将围绕基于单片机按键控制定时器选播多段音乐,介绍一些关于单片机的基 础知识、音乐播放器的制作原理及方法(其中包括了音乐编程原理) 、定时器的 设定,以及仿真软件(Keil、Proteus )的使用方法。二、设计方案1、方案设计对于C51单片机,它抗干扰性较强,且集成度高、功能强、指令丰富等,可 以应用的地方较数字电路更多一些,广泛应用于工业控制系统,数据采集系统、 智能化仪器仪表及通讯设备。而且单片机已经深入到工业生产的各个环节以及人 民生活的各个层次。采用的是基于C51单片机的音乐播放器的设计,该系统控制 性能良

4、好,硬件电路简单、经济实惠,能得到更好的效果。本设计以at89C51单片机为核心,通过对其定时器的设定来实现音乐的播放, 借助键盘可以向计算机系统输入程序, 置数、送操作命令、控制程序的执行走向 等,并最终通过数码管显示出播放曲目的标号。图1-1结构总图2、方案要求音乐播放器按照从头到尾的顺序自动播放预先设定的1-3共3首乐曲,全部乐曲播放完毕则停止。按键分别是播放键。按下播放键时,音乐播放器会在当前播放的音乐切换播放和暂停;2.3、音乐播放器的组成据系统按键控制定时器选播多段音乐的功能要求,一个完整的音乐播放器电 路相当于一个简单的单片机系统,该系统由按键开关、单片机、LED显示电路、扬声器

5、控制电路4个方面构成。1.51单片机:at89c51单片机为整个系统的核心部分,是带动整个系统工作 的重要部分。2.扬声器:扬声器用一蜂鸣器,作为输出部分按照键盘给单片机的指令发出 乐曲。3.LED数码管显示电路:LED数码管也作为输出部分按照键盘给单片机的指 令,显示正在演奏的乐曲的序号。设计图音乐播放电路: 单片机介绍:( 1)中央处理器(CPU)中央处理器是单片机的核心,完成运算和控制功能。8051的CPUfg处理8位 二进制数或代码。( 2)内部数据存储器(内部RAM)8951芯片中共有256个RAMWl元,但其中后128单元被专用寄存器占用,能作为寄存器供用户使用的只是前128 单元

6、,用于存放可读写的数据。因此通常所说的内部数据存储器就是指前128 单元,简称内部RAM。( 3)内部程序存储器(内部ROM)8951共有4KB掩月M ROM用于存放程序、原始数据或表格,因此,称之为程序存储器,简称内部ROM。( 4)定时/ 计数器8951 共有两个16 位的定时/计数器,以实现定时或计数功能,并以其定时或计数结果对计算机进行控制。( 5)并行I/O 口MCS-51 共有 4 个 8 位的 I/O 口(P0、 P1、 P2、 P3) ,以实现数据的并行输入 / 输出。( 6)串行口8951 单片机有一个全双工的串行口,以实现单片机和其它设备之间的串行数据传送。该串行口功能较强

7、,既可作为全双工异步通信收发器使用,也可作为同步移位器使用。( 7)中断控制系统8951 单片机的中断功能较强,以满足控制应用的需要。8051 共有 5 个中断源,即外中断两个,定时/计数中断两个,串行中断一个。全部中断分为高级和低级共两个优先级别。(8) 时钟电路8951 芯片的内部有时钟电路,但石英晶体和微调电容需外接。时钟电路为单片机产生时钟脉冲序列。系统允许的晶振频率一般为6 MHz和12 MHz从上述内容可以看出,MCS-51 虽然是一个单片机芯片,但作为计算机应该具有的基本部件它都包括,因此,实际上它已是一个简单的微型计算机系统了。8951 是标准的40 引脚双列直插式集成电路芯片

8、。信号引脚介绍:( 1)主电源引脚VCC: +5 V 电源VSS地线。( 2)时钟电路引脚XTAL1和XTAL2外接晶体引线端。当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。( 3)控制信号引脚RST/VPD: 复位信号。当输入的复位信号延续两个机器周期以上的高电平时即为有效,用以完成单片机的复位初始化操作; 当单片机掉电时,此引脚上可接备用电源,由VPD向片内RAM!供备用电源,一保持片内RAMfr的数据不丢失。ALE/PROG地址锁存控制信号。在系统扩展时,ALE用于控制把P0 口输出 的低8位地址锁存起来,以实现低位地址和数据的隔离

9、。 此外,由于ALE是以晶振 1/6 的固定频率输出的正脉冲,因此, 可作为外部时钟或外部定时脉冲使用。对于EPROI®单片机,在EPRA喻程期间,此引脚接收编程脉冲。PSEN片外程序存储器读选通信号输出端。EA/VPP:访问程序存储控制信号。当EA信号为低电平时,对ROM勺读操作 限定在外部程序存储器;当EA信号为高电平时,对ROM勺读操作是从内部程序 存储器开始,并可延至外部程序存储器。对于EPROI®单片机,在EPRA编程期间,止匕引脚接上加 21VEPRO端程电 源 VPP。( 4) I/O 引脚P0.0P0.7 : P0 口 8位双向口线。P1.0P1.7 : P

10、1 口 8位双向口线。P2.0P2.7 : P2 口 8位双向口线。P3.0P3.7 : P3 口 8位双向口线。P3 口线的第二功能。P3的8条口线都定义有第二功能。引脚第二功能信号名称P3.0RXD申行数据接收以上把P3.1TXD申行数据发送8951单片机P3.2INTO外部中断0申请的全部信号引脚分别以P3.3INT1外部中断1申请第一功能和P3.4TO定时/计数器0的外部输入第二功能的 形式列出。对 于各种型号P3.5T1定时/计数器1的外部输入P3.6WR外部RAIW选通的芯片,其引 脚的弟一功 能信号是相P3.7RD外部RA麟选通同的,所不同的只在引脚的第二功能信号。对于 9、30

11、和31三个引脚,由于第 一功能信号与第二功能信号是单片机在不同工作方式下的信号,因此不会发生使用上的矛盾。但是P3 口的情况却有所/、同,它的第二功能信号都是单片机的重 要控制信号。因此,在实际使用时,都是先按需要选用第二功能信号,剩下的才 以第一功能的身份作数据位的输入/输出使用。B并行输入/输出口电路结构单片机芯片内还有一项主要内容就是并行 I/O 口。8051共有4个8位的并 行I/O 口,分别记作P0 P1、P2、P区每个口都包含一个锁存器、一个输出驱 动器和输入缓冲器。实际上,它们已被归入专用寄存器之列,并且具有字节寻址 和位寻址功能。在访问片外扩展存储器时,低8位地址和数据由P0

12、口分时传送, 高8位地址由P2 口传送。在无片外扩展存储器的系统中,这 4个口的每一位均 可作为双向的I/O端口使用。8951单片机的4个I/O 口都是8位双向口,这些口在结构和特性上是基本 相同的,但又各具特点。中断源中断源:引起中断的事件或设备称为中断源。采用中断的优点:良好的中断系统使处理机具有随机应变的能力,从而扩大 应用范围,提高CP改率51中断系统的特点:内容丰富,结构合理,逻辑性强,高效实用中断源是指能发出中断请求,引起中断的装置或事件。8051单片机的中断源 共有5个,其中2个为外部中断源,3个为内部中断源: 1) INTO:外部中断0,中断请求信号由P3.2输入。INT1:外

13、部中断1,中断请求信号由P3.3输入。T0:定时/计数器0溢出中断,对外部脉冲计数由P3.4输入。T1:定时/计数器1溢出中断,对外部脉冲计数由P3.5输入。 串行中断:包括串行接收中断RI和串行发送中断TI。中断寄存器8951单片机中涉及中断控制的有3个方面4个特殊功能寄存器:中断请求:定时和外中断控制寄存器TCON中行控制寄存器SCON; 中断允许控制寄存器IE; 中断优先级控制寄存器IP。中断请求控制寄存器TCONINTO、INT1、T0、T1中断请求标志放在 TCON串行中断请求标志放在 SCON 中。TCON6结构、位名称、位地址如下:表3-2 TCON的状态TCONDDDDDDDD

14、76543210位名称TF1-TF0-IE1IT1IE0IT0位地88888888址FHEHDHCHBHAH9H8HTCO位功能:TF1 T1溢出中断请求标志,T1计数溢出后,TF1=1TF0 T0溢出中断请求标志T0计数溢出后,TF0=1IE1外中断中断请求标志当P3.3引脚信号有效时,IE1=1IE0外中断中断请求标志当P3.2引脚信号有效时,IE0=1IT1 外中断触发方式控制位IT1=1,边沿触发方式;IT1=0,电平触发方式。IT0 外中断触发方式控制位其意义和功能与IT1相似。(2)中断请求控制寄存器SCONscoN结构、位名称、位地址如下:TI用行口发送中断请求标志SCOND7D

15、6D5D4D3D2D1D0位名称-TIRI位地址-99H98H用行口接收中断请求标志RI(3)中断允许控制寄存器IE8951对中断源的开放或关闭由中断允许控制寄存器 IE控制。IE的结构、位名 称和位地址如下:表3-4 IE的状态IED7D6D5D4D3D2D1D0位名称EA-ESET1EX1ET0EX0位地址AFH-ACHABHAAHA9HA8HEA CPlfr断允许控制位EA=1, CPUF中;EA=0, CP庆中,且屏蔽所有5个中断源EX0 外中断INT0中断允许控制位EX0=1, INTO开中;EX0=0 INTO关中。EX1 外中断INT1中断允许控制位EX1=1, INT1 开中;

16、EX1=0 INT1 关中。ET0 定时/计数器T0中断允许控制位ET0=1, T0FF中;ET0=0, T以中。ET1 定时/计数器T1中断允许控制位ET1=1, T1 开中;ET1=0, T1 关中。 ES 串行口中断( 包括串发、串收) 允许控制位ES=1 ,用行口开中;ES=Q串行口关中。复位电路单片机复位电路是用来让程序回到初始状态并重新执行的。单片机系统在运行中受到各种因素影响不能正常执行时,按下复位按钮内部的程序就会自动从头开始执行。当单片机的复位引脚RET出现5ms以上的高电平时,单片机就完成了复位操 作。如果RST持续为高电平,单片机就处于循环复位状态,而无法执行程序。为 了

17、使单片机复位后能脱离复位状态,通常选择C=1030uF, R=101k?。 在单片机启动后,电容C两端的电压持续充电为5V,这是时候10K电阻两端的电压接近于 0V, RST处于低电平所以系统正常工作。当按键按下的时候,开关导通,这个时 候电容两端形成了一个回路,电容被短路,所以在按键按下的这个过程中,电容开始释放之前充的电量。随着时间的推移,电容的电压从5V释放到变为了 1.5V, 甚至更小。根据串联电路电压为各处之和,这个时候10K电阻两端的电压为3.5V, 甚至更大,所以RST引脚又接收到高电平。单片机系统自动复位。中断入口地址8051的五个中断入口地址:INT0: 0003H;T0:

18、000BH;INT1: 0013HT1: 001BH;串行口:0023H中断优先控制和中断嵌套( 1) 中断优先控制8951中断优先控制首先根据中断优先级,此外还规定了同一中断优先级之间的中断优先权。其从高到低的顺序为:INTO、INT1、T0、T1、用行口。( 2) 中断嵌套当CPUE在执行某个中断服务程序时,如果发生更高一级的中断源请求中断, CPUT以“中断”正在执行的低优先级中断,转而响应更高一级的中断,这就是中 断嵌套。 中断嵌套只能高优先级“中断”低优先级, 低优先级不能“中断”高优先级,同一优先级也不能相互“中断”。三、系统程序#include<reg51.h>#in

19、clude<intrins.h>#define uchar unsigned char#define uint unsigned intsbit K1=P1A0;/播放和停止键sbit SPK=P3A7;/ 蜂鸣器uchar Song_Index=0,Tone_Index=0; / 当前音乐段索引,音符索引/ 数码管段码表codeucharDSY_CODE=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/ 标准音符频率对应的延时表codeucharHI_LIST=0,226,229,232,233,236,238,240,241

20、,242,244,245,246,247,248 ;uchar code LO_LIST=0,4,13,10,20,3,8,6,2,23,5,26,1,4,3;/ 三段音乐的音符uchar code Song50=1,2,3,1,1,2,3,1,3,4,5,3,4,5,5,6,5,3,5,6,5,3,5,3,2,1,2,1,-1,3,3,3,4,5,5,5,5,6,5,3,5,3,2,1,5,6,53,3,2,1,1,-1,3,2,1,3,2,1,1,2,3,1,1,2,3,1,3,4,5,3,4,5,5,6,5,3,5,3,2,1,3,2,1,1,-1;/ 三段音乐的节拍uchar code

21、 Len50=1,1,1,1,1,1,1,1,1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,2,1,2,-1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,2,2,-1,1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,2,1,1,2,1,1,1,1,1,1,1,2,1,1,2,2,-1;/ 外部中断0void EX0_INT() interrupt 0TR0=0; / 播放结束或者播放中途切换歌曲时停止播放Song_Index=(Song_Index+1)%3;/ 跳到下一首的开头Tone_Index=0;P2=DSY

22、_CODESong_Index;/ 数码管显示当前音乐段号/ 定时器 0 中断函数void T0_INT() interrupt 1TL0=LO_LISTSongSong_IndexTone_Index;TH0=HI_LISTSongSong_IndexTone_Index;SPK=SPK;/ 延时void DelayMS(uint ms)uchar t;while(ms-) for(t=0;t<120;t+);/ 主程序void main()P2=0xc0;SPK=0;TMOD=0x00;/T0 方式 0IE=0x83;IT0=1;IP=0x02;while(1)while(K1=1)

23、;/未按键等待while(K1=0);/等待释放TR0=1;/开始播放Tone_Index=0;/从第 0 个音符开始/ 播放过程中按下K1 可提前停止播放(K1=0) 。/若切换音乐段会触发外部中断,导致 TR0=0播放也会停止 while(SongSong_IndexTone_Index!=-1&&K1=1&&TR0=1)DelayMS(300*LenSong_IndexTone_Index); / 播放延时 (节拍)Tone_Index+; /当前音乐段的下一音符索引TR0=0;/停止播放while(K1=0);/若提前停止播放,按键未释放时等待四、软件流程未加入程序时仿真器设置软件来仿真,并在单片机的 个蜂鸣器。,想通过这样 程序运行的时候,能看见显调试时,将keil生成的hex文

温馨提示

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

评论

0/150

提交评论