可存储式电子琴_第1页
可存储式电子琴_第2页
可存储式电子琴_第3页
可存储式电子琴_第4页
可存储式电子琴_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、课程设计课程设计 可存储式电子琴系统设计可存储式电子琴系统设计学生姓名学生姓名李真,谢伟志,武光霞,李真,谢伟志,武光霞,孙宏杰,孙宏杰,郑悦,郑悦,周锦波,周锦波,学号学号200723502147所在专业所在专业机械设计制造及其自动化所在班级所在班级机 071-6指导教师指导教师刘鹏 负责内容负责内容同组人员同组人员可存储式电子琴可存储式电子琴一、任务书一、任务书 本设计利用 8051 单片机的控制程序结合 lcd 设计一台数字式可存储是电子琴。基本功能为:1、使用 lcd 显示器来显示音节输入的相关信息;2、当按下键盘组相对按键,压电喇叭会发出相对音节单音,共有两个八度音阶;3、所有单音会

2、存入 8051 内而保存起来;4、至多可以输入 64 个单音,可以一起演奏出来;演奏时可以按键中断;可以实时显示目前正演奏的单音码.二、原理说明二、原理说明a 8051 单片机介绍单片机介绍2.12.1 基本特性基本特性8051 单片机主要功能特点如下:(1)8 位 cpu;片内 128b ram (2)片内 4kbrom/eprom; 特殊功能寄存器区(3)2 个优先级的 5 个中断源结构;4 个 8 位并行 i/o 口(p0、p1、p2、 p3)(4)2 个 16 位定时/计数器(mcs-52 子系列为 3 个);全双工串行口(5)布尔处理器;64kb 外部数据存储器地址空间(6)64kb

3、 外部程序存储器地址空间;片内振荡器及时钟电路8051 片内程序存储器为掩膜 rom,可根据特殊要求和用途在制造芯片是将专用程序固化进去,成为专用单片机。引脚功能 mcs-51 系列单片机大多都采用 40 条引脚双列直插式器件,引脚除5v(vcc40 脚)和电源地(vss20 引脚)外,按其功能主要由以下三大部分组成。右图为为 8051 的引脚图。复位后内部寄存器状态复位后内部寄存器状态2.22.2 时钟电路时钟电路xtal1(19 脚)芯片内部振荡电路(单极反相放大器)输入端。tal2(18 脚)芯片内部振荡电路(单极反相放大器)输出端。mcs-51 的时钟可由内部方式或外部方式产生。2.3

4、2.3 控制信号控制信号2.3.1 rst/vpd (9 脚脚)复位信号复位信号时钟电路工作后,在此引脚上出现两个机器周期的高电平,芯片内部进行初始复位,复位后片内寄存器状态如下表所示。寄存器内容寄存器内容pc0000htmod 00hacc00htcon00hb00hth000hpsw00htl000hsp07hth100hdptr0000htl100hp0p30ffhscon00hip00000sbuf不定ie000000pcon00000p0p3 口输出高电平,初值 07h 写入堆栈指针 sp、清 0 程序计数器pc 和其余特殊功能寄存器。但初始复位不影响片内 ram 状态,只要该引脚保

5、持高电平,mcs-51 将循环复位。rst/vpd从高电平变成低电平时,单片机将从 0 号单元开始执行程序。另外该引脚还具有复用功能。只要将vpd接+5v 电源,一旦 vcc电位突然或断电,能保护片内 ram 中的信息不会丢失,复电后能正常工作。2.3.2 ale/(30 引脚引脚)地址锁存信号地址锁存信号_prog当访问外部存储器时,p0 口输出的低八位地址由 ale 输出的控制信号锁存到片外地址锁存器,p0 口输出地址低八位后,又能与片外地址/数据复用口,那么 p0 口上的信息究竟时地址还是数据完全又 ale 来定义,ale 高电平期间,p0 口上一般出现地址信息,在 ale 下降沿是,将

6、 p0 口上地址信息锁存到片外地址锁存器,在 ale 低电平期间 p0 口上一般出现指令和数据信息。平时不访问片外存储器时,该端也以六分之一的时钟频率固定输出正脉冲。 因而亦可作系统其它芯片的时钟源。ale 可驱动 8 个 ttl 门。2.3.3(29 脚脚)片外程序存储器读选通片外程序存储器读选通_psen低电平有效,8051 访问片外程序存储器时,程序计数器 pc 通过_psenp2 口和 p0 口输出十六位指令地址,作为程序存储器读信号,输出负脉_psen冲将相应存储单元的指令读出并送到 p0 口上,供 8051 执行。同样可_psen驱动 8 个 ttl 门输入。2.3.4/vpp(3

7、1 脚)内部和外部程序存储器选择信号脚)内部和外部程序存储器选择信号_ea对于 8051 来说,内部有 4k 字节的程序存储器,当为高时,cpu 访_ea问程序存储器有两种情况:a、地址小于 4k 时访问内部程序存储器。b、地址大于 4k 时访问外部程序存储器。若接地,则不使用内部程序存储器,不管地址大小,取指时总是访问_ea外部程序存储器。对于 eprom 型的单片机,在 eprom 编程时,此引脚用于施加 21 伏编程电压 vpp。2.42.4 i/o 口口8051 单片机有 4 个双向 8 位 i/o 口 p0p3,p0 口为三态双向口,负载能力为 8 个 lsttl 门电路,p1p3

8、为准双向口(用作输入时,口锁存器必须先写“1”),负载能力为 4 个 lsttl 门电路。2.5 8051 定时定时/计数器计数器一般单片机内部都设有定时/计数器,因为有的测控系统是按时间间隔定时控制的,如定时对物理过程(如温度)的采样测量等,虽然可以通过延时程序实现定时,但这会降低 cpu 的工作效率。如果能利用一个可编程的实时时钟获得延时定时,就可以提高 cpu 的工作效率。另外,也有一些测控系统时根据外部信号的计数结果来实现控制的,必须对外部随机时间(往往为脉冲信号)进行计数。因此,单片机内部一般都设置可变成的定时/计数器,以简化系统设计,提高系统功能。所谓可编程就是指可通过指令来确定或

9、改变其工作方式,应包括以下几个方面5:(1) 确定其工作方式是定时还是计数;(2) 预置定时或计数初值;(3) 当定时时间到或家户终止时,要不要发中断请求;(4) 如何启动定时或计数器工作。2.5.12.5.1 定时定时/ /计数器结构与工作原理计数器结构与工作原理从图 1-2(定时/计数器逻辑结构图)可以看出,2 个 16 位定时/计数器 t0和 t1,分别由 8 位计数器 th0、tl0 和 th1、tl1 构成,他们都是以加“1”的方式完成计数。特殊功能寄存器 tmod 控制定时/计数器的工作方式,tcon 控制定时/计数器的启动运行并记录 t0、t1 的溢出标志。通过对th0、tl0

10、和 th1、tl1 的初始化编程可以预置 t0、t1 的计数初值。通过对 tmod 和 tcon 的初始化编程可以分别置入方式字和控制字,以指定其工作方式并控制 t0、t1 按规定的工作方式计数。 t1 t0a)工作原理a、定时器当设置为定时器工作方式时,计数输入信号来自内部振荡信号,在每个机器周期内定时器的计数器做一次“1”运算。因此定时器亦可视为计算机机器周期的计数器。而每个机器周期又等于 12 个振荡脉冲,故定时器的工作 方式工作方式启动溢出启动溢出内总线(8ah)h(8ch)h(8bh)cputl1(8 位)th0(8 位)tl0(8 位)tcon (88h)tmod(89h)(8dh

11、)hth1(8 位)t0 (p3.4)t1 (p3.5)定时/计数器逻辑结构计数速率为振荡频率的(即 12 分频)。若单片机的晶振主频为 12mhz,121则计数周期为。如果定时器的计数器“1”产生溢出,则标志着定时时s1间到。b、计数器当设置为计数器工作方式时,计数输入信号来自外部引脚 t0(p3.4)、t1(p3.5)上的计数脉冲,外部每输入一个脉冲,计数器 th0、tl0(或 th1、tl1)做一次“1”运算。而在实际工作中,计数器由计数脉冲的下降沿触发,及 cpu 在每个机器周期的 s5p2 期间对外部输入引脚 t0(t1)采样,芮在 一个机器周期中采样值位高电平,而在下一个机器周期中

12、采样值为低电平,则紧跟着的再下一个机器周期的 s3p1 期间计数值就“+1”,完成一次计数操作。因此确认一次外部输入脉冲的有效跳变至少要花费 2 个机器周期,即 24 个振荡周期,所以最高计数频率为振荡频率的。为了确保计数脉冲不被丢失,则脉冲241的高电平及低电平均应保持一个机器周期以上。对外部计数脉冲的基本要求如上图所示,t为机器周期。cy不管时定时还是计数工作方式,定时器 t0 或 t1 再对内部时钟或外部脉冲计数时,不占用 cpu 的时间,除非产生溢出才可能中断 cpu 的当前操作。由此可见,定时/计数器是单片机内部效率高且工作灵活的部件。计数器计数脉冲的基本要求 tcy tcyt1另外

13、,每个定时/计数器还有四种工作方式,即有四种逻辑结构模式。其中工作方式 02 对 t0 和 t1 都是一样的,而方式 3 对两者是不同的。2.5.22.5.2 8051 定时器模式的工作定时器模式的工作8051 内含有 2 个 16 位的定时计数器,称为定时器 0 及定时器 1,如同一般定时计数器的功能,其主要有两种作用:第一、执行一段特定时间长短的计时。第二、可以计算由 t0 或 t1 引脚输入的脉冲数。前者在应用上可以产生正确的时间延迟及定时去执行中断服务例程,这是单片机在软件控制程序上常用到的技巧,而后者的应用则是计数器或是计数器的设计。 这两个定时器本身都有 4 种工作模式可供使用:(

14、1)模式 0:13 位计时工作模式。(2)模式 1: 16 位计时工作模式。(3)模式 2: 具有自动重新加载计数值的 8 位计时工作模式。(4)模式 3: 在此模式工作时,定时器 1 本身停止计时的工作。而定时器 0 分为两个独立的 8 位定时器由 tl0 及 th0 来负责计时的任务。模式 0 到模式 2 中,定时器 0 和定时器 1 的使用方法都一样,只有在模式3 时才不同。2.5.32.5.3 定时计数器相关控制寄存器定时计数器相关控制寄存器设计定时器相关控制寄存器说明如下表所示.(1)tcon 寄存器每个位都可按位寻址,可分别设置或清除,适当地控制这些位便可控制定时器地动作。b7 b

15、6 b5 b4 b3 b2 b1 b0 tf1 tr1 tf0 tr0 ie1 it1 ie0 ie0 其中有关符号说明如下:a. tf1: tcon.7,定时器 1 溢位标志,当定时器计时终止产生溢位时,硬件会自动设为 1,而在执行过中断服务程序后,硬件会自动清除该位。b. tr1: tcon.6, 定时器 1 计时启动位,通过软件来设置或清除做启动或停止计数的功能。c. tf0: tcon.5, 定时器 0 溢位标志,其功能同 tf1。d. tr0: tcon.4, 定时器 0 定时启动位,其功能同 tr1。e. ie1: tcon.3, 外部中断 1(引脚 int1)的中断设置标志。当

16、int1引脚由外部送入中断信号,而硬件检测到此信号时,会将此位设置。在执行过中断服务例程后,硬件会自动清除此位。f. it1: tcon.2, 外部中断 1 的中断信号类型设置,当 it1=1 时,中断信号位负缘触发。若 it1=0 时则为低电平触发。g. ie0: tcon.1, 外部中断 0(引脚 int0)的中断设置,当 int0 引脚由外部送入中断信号,而硬件检测到此信号时将此位设置,在执行过中断服务程序后,硬件自动清除此位。h. it0: tcon.0, 外部中断 0 的中断信号类型设置,当 it0=1 时,中断信号为负缘触发。若 it0=0 时,则为低电平触发。定时器 1定时器 0

17、定时计数器相关控制寄存器及其说明(2)tmod 计时模式选择寄存器 此寄存器不可按位寻址,其结构如下:b7 b6 b5 b4 b3 b2 b1 b0gate c/t m1 m0 gate c/t m1 m0其中的有关符号说明如下:a. gate: 定时器动作的开关控制位,当 gate=0 时,定时器在tr0=1 或 tr1=1 时会工作。而当 gate=1 时,且 tr0=1 或 tr1=1,定时器要在 int0 或 int1 引脚成为高电平时才会执行计时的工作。b. c/t: 计时功能或计数功能的选择位,c/t=0 执行计时工作,而c/t=1 时才执行计数的功能。c. m0、m1: 工作模式

18、选择,其设置情况说明如表 1-4 所示。名 称地址功能tcon88h定时器控制寄存器tmod89h定时器工作模式选择寄存器th08ch定时器 0 高 8 位计时寄存器tl08ah定时器 0 低 8 位计时寄存器th18dh定时器 1 高 8 位计时寄存器tl18bh 定时器 1 低 8 位计时寄存器(3)ie: 中断启用寄存器 可按位寻址,地址a8h,用来启用各种中断信号的产生,各个位说明如下:b7 b6 b5 b4 b3 b2 b1 b0 ea et2 es et1 ex1 et0 ex0其中的有关符号说明如下:a. ea(ie.7): ea=0 时,所有中断禁用(中断不产生);ea=1 时

19、,各中断的产生由个别的启用位决定。b. (ie.6): 保留。c.et2(ie.5): 启用定时器 2 溢位的中断(8052 用)。m1 m0 工作模式0 0 模式 00 1 模式 1 1 0 模式 21 1 模式 3tmod 寄存器的 b1、b0 位的设置及其说明d. es (ie.4) : 启用串行端口的中断(es1 启用,es=0 禁用)。e.et1(ie.3): 启用定时器 1 中断。f.ex1(ie.2): 启用外部中断 int1 的中断。g. et0(ie.1): 启用定时器 0 中断。h. ex0(ie.0): 启用外部中断 int0 的中断。bled 原理原理选用的是共阴极的

20、led发光二极管的阴极连在一起的称为共阴极显示器。通常的七段 led 显示块中有八个发光二极管,故也称为八段显示器。其中七个发光二极管构成七笔字型“8”一个发光二极管构成小数点。七段显示块与单片机接口非常容易。只要将一个八位并行输出口与显示块的发光二极管相连即可。八位并行输出口输出不同的字节数据即可获得不同的数字或字符。c蜂鸣器蜂鸣器1、蜂鸣器模拟输出do,re,mi.的音阶声音。蜂鸣器发声过程仍由按键启动,定时器控制鸣叫频率。2、据不同音阶的频率,计算出定时器的定时初值和定时周期。d、键盘扫描、键盘扫描1. 键盘输入信息的主要过程键盘输入信息的主要过程a、cpu 判断是否有键按下;b、确定按

21、下的是哪一个键;c、把此键代表的信息翻译成计算机所能识别的代码,如 ascii 或其他特征码。以上 1.2 和 1.3 是由软件来完成的,所以用非编码键盘。2扫描程序查询的内容为:扫描程序查询的内容为:a、查询是否有键按下 首先对 p0 口进行初始化 p0=0 xf0,利用 if 语句进行判断,判断表达式是p1!=0 xf0,如果为真则执行 key scan()子程序,如果为假则执行 else.b、查询按下键的行列位置。利用 key_scan()来进行键盘查询检测,先判断列,在判断行,具体见程序。c、对得到的行号和列号进行译码,得到键值。d、键盘的判断是均进行延时,以防止键盘抖动的干扰。利用

22、key_scan()来进行键盘查询检测。e e、以定时器产生各种频率的声音、以定时器产生各种频率的声音原理及说明原理及说明由于定时器可以产生各种频率的声音,所以由喇叭发出“do”、“re”、“me”.的音阶。定时器 0 工作于模式 0,计时时间长短所发音的频率而 定,下表列出各个音符对应的频率值: 简谱12345671234567音符c5d5e5f5g5a5b5c6d6e6f6g6a6b6频率523 5876596987848809871046117413181396156717601975由频率值推得定时器计数初值,可由以下关系式求得: )(/1sft2/(int)tco 32)8192(0

23、0colo32/ )8192(cohi其中符号的含义说明如下:频率值f :方波宽度,以表示ts:定时器所计数的次数co:计数初值低字节lo:计数初值高字节hi经计算得到以下一些数据:xtal12 mhzf523 co=956 th0 value=226 tl0 value=4f587 co=851 th0 value=229 tl0 value=13f659 co=758 th0 value=232 tl0 value=10f698 co=716 th0 value=233 tl0 value=20f784 co=637 th0 value=236 tl0 value=3f880 co=568

24、 th0 value=238 tl0 value=8f987 co=506 th0 value=240 tl0 value=6f1046 co=478 th0 value=241 tl0 value=2f1174 co=425 th0 value=242 tl0 value=23f1318 co=379 th0 value=244 tl0 value=5f1396 co=358 th0 value=244 tl0 value=26f1567 co=319 th0 value=246 tl0 value=1f1760 co=284 th0 value=247 tl0 value=4f1975 co=253 th0 value=248 tl0 value=3附录附录 1:流程图:流程图确定键盘位置执行 else判断式为真判断式为假将键值 k 赋予 led 子程序,使 led 显示相应数值,并激活计数器,延时1ms,当计数器计数完毕后,产生溢出中断,触发发声程序,发声程序调用相应数组中的相应发声频率,发声,并进行延时 1ms.主程序p0 初始化,计数器选择方式 1 下工作,开中断 t0,计数器初始化。执行 while 条件语句p0 初始化,判断键盘是否被按下附录附录 2:原理图:原理图附录附录 3:程序清单:程序清单#include #include #def

温馨提示

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

评论

0/150

提交评论