项目单元 5 简易电子琴

18
项项项项 5 项项项项项 5.1 项项项项 项项 MCS-51 项项项项项项项项 项项项项项项项项 项项项项项项项项项项项项项项项项 ,、。 5.2 项项项项 1. 项项项项项项项项项项项项项项2. 项项项项项项项项项项项项项项项项3. 项项项项项项项项项项项项项项项项项项项项项项4. 项项项 Proteus 项项项项项项 项项项 5.3 项项项项 项项项项项项项项项项项项项项项项 项项项项项项项项项项项项项项项项项项项项项 项项项项项项项项项项项 ,,。

Upload: florence-baxter

Post on 02-Jan-2016

75 views

Category:

Documents


0 download

DESCRIPTION

项目单元 5 简易电子琴. 5.1 训练要求 利用 MCS-51 单片机的有关技术,制作可弹唱音乐、具有存储和播放功能的简易电子琴。 5.2 训练目的 1. 掌握单片机键盘设计和应用方法。 2. 掌握单片机的存储器扩展方法和应用。 3. 理解单片机产生音乐声的基本原理和程序设计方法。 4. 掌握在 Proteus 环境中调试系统的方法。 5.3 任务要求 简易电子琴具有按键发声和弹唱功能,并能在弹唱过程中将音乐实时存储到存储器中,需要是可键取出再播放。. 图 5-1 按 键电波形. 5.4 相关知识 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 项目单元 5    简易电子琴

项目单元 5 简易电子琴

5.1 训练要求 利用 MCS-51 单片机的有关技术,制作可弹唱音乐、具有存储和播放功能的简易电子琴。

5.2 训练目的 1. 掌握单片机键盘设计和应用方法。 2. 掌握单片机的存储器扩展方法和应用。 3. 理解单片机产生音乐声的基本原理和程序设计方法。 4. 掌握在 Proteus 环境中调试系统的方法。

5.3 任务要求 简易电子琴具有按键发声和弹唱功能,并能在弹唱过程中将音乐实时存储到存储器中,需要是可键取出再播放。

Page 2: 项目单元 5    简易电子琴

5.4 相关知识 项目学习情境 1 80C51 单片机的矩阵式键盘 按键和键盘是单片机应用系统中的重要输入设备,其作用是控制系统的工作状态,向系统输入数据和命令。根据按键的作用可分为数字键和功能键。根据按键的连接方式可分为独立式按键和矩阵式键盘。

1. 键的可靠输入 机械型按键的开、关分别是机械触点的合、断作用。一个电压信号通过机械触点的闭合、断开过程波形如图 5 - 1 (设按键口平时接高电平,有键按下时为低电平)所示。由于机械触点的弹性作用,在闭合及断开的瞬间均有抖动过程,会出现一系列电脉冲。抖动时间长短,与开关的机械特性、按键动作等因素有关,一般为 5 ~ 10ms 。 按键的键稳定时间,由操作者的按键动作决定,一般大于 0.1s 。为保证单片机对键的一次闭合仅作一次键输入处理,必须去除抖动影响。通常用硬、软件去除抖动影响的。硬件消抖可采用 R—S 触发器或单稳态电路。软件去抖动可用延时法。单片机在检测到有键按下时,执行约 10ms 的延时程序,以消除前沿抖动影响。接着检查该键是否仍保持键闭合状态电平,若保持闭合状态电平,则确认该键按下。再检测按键是否弹起,一检测到按键弹起,再延时约 10ms ,消除后沿抖动影响。此为一个完整的确认按键的过程。

¼ü ÎÈ ¶̈

Ç° ÑØ ¶¶ ¶̄ ºó ÑØ ¶¶ ¶̄

¼ü °́ ÏÂ

图 5-1 按键电波形

Page 3: 项目单元 5    简易电子琴

2. 独立式按键 独立式按键是指直接用 I/O 口线构成的单个按键电路。每个独立式按键单独占有一个 I/O 口线,其工作状态不会影响其它 I/O 口线的工作状态。如图 5-2 所示,按键输入采用低电平有效,上拉电阻保证了按键断开时, I/O 口线有确定的高电平。当 I/O 口内部有上拉电阻时,外电路可以不接上拉电阻。图中虚线部分(将各按键输入端口通过与门输出到中断口)为中断按键处理法而设。当不考虑虚线内电路时,相关独立式按键程序可设计如下(键转功能 WORK0 , WORK1 , WORK2 子程序未写出):

&

INT0/1

+5

µ¥Æ¬»ú

K0

K1

K2P1.2

P1.1

P1.0

图 8-5 独立式按键电路

KEY:MO P1,#0FF ;置 P1 口为输入态 MOV A,P1 ;读键 CPL A ;取反 ANL A,#07H ;屏蔽高五位 JZ RETT ;无键闭合,返回 LCALL DELALY ;有按键,前沿消抖动,延时 10ms JB ACC.0,KEY0 ;转 K0 键功能程序 JB ACC.1,KEY1 ;转 K1 键功能程序 JB ACC.2,KEY2 ;转 K2 键功能程序RETT:SJMP KEYKEY0:LCALL WORK0 ;执行 K0 键功能程序KEY1:LCALL WORK1 ;执行 K1 键功能程序KEY2:LCALL WORK2 ;执行 K2 键功能程序

Page 4: 项目单元 5    简易电子琴

在按键较多时,独立式按键占用口线资源多,不宜采用,应采用矩阵式键盘。3. 矩阵式键盘 矩阵式键盘又称行列式键盘。用 I/O 口线组成行、列结构,按键设置在行列的交点上。N条口线最多可构造 N2 个按键。 4×4 的行列结构可构成 16 个键的键盘,如图 5-3 中右边所示。无按键时各行、列线彼此相交而不相连。当有键按下时,如按下“ F” 键,则与“ F” 相连的行线 P2.3 、列线 P2.7 相连。由行、列线的电平状态可以识别唯一与之相连的按键,此识别过程为读键。

图 5-3矩阵式键盘接口电路原理图

12M

+5

30p

30p

10k

+5

¸´Î»

10uF

EA/VP31

X119

X218

RESET9

RD17

WR16

INT012INT113

T014 T115

P101

P112

P123

P134

P145

P156

P167

P178

P00 39

P01 38

P02 37

P03 36

P0435

P05 34

P0633

P07 32

P20 21

P21 22

P2223

P23 24

P2425

P25 26

P26 27

P2728

PSEN29ALE/P 30

TXD 11RXD 10

89C51

a

bf

c

g

de

LED

dp 8

a 1

b 2

c 3

d 4

e5

f 6

g7

com

12345678

161514131211109

+5

ÊäÈë/Êä³ö

Êä³ö/ÊäÈë

0 1 2 3

4 5 6 7

8 9 A B

C D E F

p2.0

p2.1

p2.2

p2.3

p2.4

p2.5p2.6p2.7

Page 5: 项目单元 5    简易电子琴

键盘读键程序设计一般有两种方法。即反转读键法和扫描读键法。( 1 )反转读键法 采用反转读键盘法,行、列轮流作为输入线。其电路原理如图 5-3 中所示。第一步:先置行线 p2.0 ~ P2.3 为输入线,列线 P2.4 ~ P2.7 为输出线,且输出为 0 。相应的 I/O 口的编程数据为 0FH 。若读入低四位的数据不等于 F ,则表明有键按下,保存低四位数据。其中为电平“ 0” 的位对应的是被按下键的行位置。第二步:设置输入、输出口对换,行线 p2.0 ~ P2.3 为输出线,且输出为 0 ,列线 P2.4 ~P2.7 为输入线, I/O 口编程数据为 F0H 。若读入高四位数据不等于 F ,即可确认按下的键。读入高四位数据中为 0 的位为列位置。保存高四位数据。将两次读数值组合,便得按键码。( 2 )扫描读键法 扫描读键法,其原理也如图 8-6 所示。给所有行线 I/O依次置为低电平,如果有键按下,总有一根列线电平被拉至低电平,从而使列输入 I/O 不全为 1 。依次向不同行线送低电平,保证在只有一行为低电平的情况下,查所有列的输入线状态。如果全为 1 ,则按键不在此列,否则按键必在此列,且是在与 0 电平行线相交点上的那个键。1 )先送 1110 到行线: P2.3 ~ P2.0=1110B ,再从列线 P2.7 ~ P2.4 读入数据。若有按键,则中必有一位 =0 ,如按“ 3” 键,则读入 P2.7 ~ P2.4=0111B ;同理按“ 1” 键,读入数据为 1101B 。2 )第一行,接着送出 P2.3 ~ P2.0=1101B扫描第二行,以此类推。 P2.3 ~ P2.0变化为1110B→1101B→1011B→0111B→1110B循环进行。各按键的扫描码列表如表 5-1 所示。3 )由于扫描码不易让人联想按键,因此须将扫描码用程序转换成按键码。4 )显示按键情况。图 5-3 中设计了数码显示管。使得按“ 0”显示 0 ,按“ 1”显示 1…… 。

Page 6: 项目单元 5    简易电子琴

表 5-1 各按键的扫描码表输入 输出

按键 P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0

0 1110 1110

1 1101 1110

2 1011 1110

3 0111 1110

4 1110 1101

5 1101 1101

6 1011 1101

7 0111 1101

8 1110 1011

9 1101 1011

A 1011 1011

B 0111 1011

C 1110 0111

D 1101 0111

E 1011 0111

F 0111 0111

Page 7: 项目单元 5    简易电子琴

4. 接口电路与程序设计 矩阵式键盘接口电路原理图如图 5-3 所示。图中数码管为共阳型。晶振频率 12MHz 。 1)反转读键法的程序设计ORG 0SJMP STARORG 30HSTAR: ACALL DE100 ;调用延时KEY: MOV P2,#0FH ;查键开始,行定义输入,列定义输出为 0

MOV A,P2 ;读入 P2的值CPL AANL A,#0FH ;确保低四位JZ KEY ;无键按下返回MOV R5,A ;有键按下,暂存MOV P2,#0F0H ;列定义输入,行定义输出为 0MOV A,P2 CPL AANL A,#0F0H JZ KEY MOV R4,A ;暂存高四位输入LCALL DE10 ;消抖动

Page 8: 项目单元 5    简易电子琴

KEY1: MOV A,P2 ;等待键松开CPL A ANL A,#0F0H JNZ KEY1 ;按键没松开,等待LCALL DE10 MOV A,R4 ;取列值ORL A,R5 ;与行值相或为组合键值MOV B,A ;结果暂存于 B中MOV R1,#0 ;键值寄存器 R3赋初值 =0MOV DPTR,#TAB ;取键码表首址到 DPTR

VAL0: MOV A,R1 MOVC A,@A+DPTR ;查键码表CJNE A,B,VAL ;非当前按键码,继续查找ACALL KEYV ;以按键码查显示码MOV P1,A ;查找到显示码送 P1二极管显示

SJMP KEY ;下一次按键输入 ,循环VAL: INC R1

SJMP VAL0 TAB: DB 11H,21H,41H,81H ;组合键码

DB 12H,22H,42H,82H DB 14H,24H,44H,84H DB 18H,28H,48H,88H

Page 9: 项目单元 5    简易电子琴

KEYV: MOV A,R1INC AMOVC A,@A+PC ;取显示码(即共阳段码)RETDB 0C0H,0F9H,0A4H,0B0H ;共阳段码 0, 1, 2, 3DB 99H,92H,82H,0F8H ;4, 5, 6, 7DB 80H,90H,88H,83H ;8, 9, A, BDB 0C6H,0A1H,86H,8EH ;C, D, E, F

DE100: MOV R6,#200 ;延时 100msD1: MOV R7,#250

DJNZ R7,$ DJNZ R6,D1 RET

DE10: MOV R6,#20 ;延时 10msD2: MOV R7,#248

DJNZ R7,$ DJNZ R6,D2 RET END

Page 10: 项目单元 5    简易电子琴

2 )扫描读键法程序设计 将上述反转读键法程序设计中读键部分 (从标号 KEY 到标号 TAB)换为以下程序,其余部分不变。两种程序设计方法实现的功能完全一样。KEY: MOV R3,#0FEH ;扫描初值

MOV R1,#0 ; 取码指针KEY1: MOV A,R3 ; 开始扫描

MOV P2,A ; 将扫描值输出至 P2 MOV A,P2 ; 读入 P2值 ,判断是否有按键按下

SWAP A ; 高低 4位互换 MOV R4,A ; 有按键 , 存入 R4, 以判断是否放开 SETB C ;C=1 MOV R5,#4 ;扫描 P2.4 ~ P2.7KEY2: RRC A ; 将按键值右移 1位 JNC KEYIN ;=0 有键按下 , 转 KEYIN INC R1 ;无按键 , 取码指针加 1 DJNZ R5,KEY2 ;4 列扫描完? MOV A,R3 SETB C RLC A ;扫描下一行 MOV R3,A ; 存扫描指针 JB ACC.4,KEY1; JMP KEY ;4 行扫描完KEYIN: ACALL DE10 ; 消抖动K1: MOV A,P2 ; 与上次读入值作比较 XRL A,R4 JZ K1 ; 相等 , 键未放开 ACALL KEYV ; 键放开后调显示段码 MOV P1,A ;段码送 P1 口显示 SJMP KEY ; 不相等 , 键放开 ,进入下一次的扫描

Page 11: 项目单元 5    简易电子琴

项目学习情境 2 用 EEPROM扩展 AT89C51单片机 ROM、 RAM 1. EEPROM 存储器 EEPROM 存储器是非易失性存储器。优点是:①可电擦写且断电后能保持写入内容,长达二十年。②不要求专门设备擦写,擦写电压多为 5伏且可在线擦写;可字节擦写,擦写次数可达数万次。所以,它既可作 ROM 用,也可作 RAM 用。但是它的擦写速度较慢(约为 10ms )。常用的 EEPROM 有 2816/16A ( 2K 字节), 2864A ( 8K 字节),28C256 ( 32 字节), 28C010 ( 128K 字节)等。其中带 A 的擦写电压为 5V 。

2. 2864A逻辑符号和性能(1) 逻辑符号图与引脚功能逻辑符号如图 5-4 所示。其中/CE : 片选端,低电平选通;A0 ~ A12 : 地址线;DQ0 ~ DQ7 : 数据线;/WE : 写操作允许端,低电平有效/OE : 输出允许端,低电平有效;NC : 未使用。其引脚与 27C64 、 6264兼容。

RY/BY1

A122

A73A6

4 A55

A46A3

7 A28

A19A0

10DQ0

11

DQ1 12

DQ213

WE27

NC26

A825

A924

A1123

OE22

A1021

CE20

DQ7 19DQ6

18DQ517

DQ4 16DQ3

15

2864A

图 5-4 2864A逻辑符号图

Page 12: 项目单元 5    简易电子琴

(2) 2864A主要性能取数时间: 250ns读操作电压: 5V写 /擦操用电压 Vpp : 5V字节擦除时间:  10ms写入时间: 10ms

3. 2864A真值表

工作方式              引 脚

/CE /OE /WE DQ0~ DQ7

读出 0 0 1 数据输出

维持 1 × ×     高 阻

字节写入 0 1 0 数据输入

输出禁止 × 1 ×     高 阻

不操作 0 1 1     高 阻

表 5-2 2864A真值表

当 /CE 为高电平时,芯片处于维持方式,此时功耗下降。字节写入:当 /CE 和 /WE 为低电平而 /OE 为高电平时,把数据线上传送的信息写

入指定的存储单元。字节写入电压为 5V ,所需时间最长为 15 ms 。不操作:与字节擦写操作方式相比,此时 /WE无效,因此不进行擦写操作,数据

线为高阻状态。

Page 13: 项目单元 5    简易电子琴

4. EEPROM扩展 ROM、 RAM电路设计 图 5-5 是用一片 2864A 扩展 AT89C51 ROM 、 RAM 的典型原理图(未画出复位和晶振电路)。用到 /PSEN 、 /RD 、 /WR 、 ALT 等控制信号。图中虚线框图部分不是扩展电路所必需,只为直观演示控制线状态而设。此 ROM 、 RAM 扩展电路的寻址范围为 0000H ~ 1FFFH (无关位为 0 )。对其它更大容量(但小于 64K )的扩展 ROM 、 RAM 存储器只需将其高位地址线( A13 、 A14 、 A15 )接上对应 P2的高位口线( P2.5 、 P2.6 、 P2.7 )即可。所以,此原理图对用 EEPROM 扩展 ROM 、 RAM 而言不失其普遍意义。

图 5-5 2864A 扩展 ROM、 RAM电路原理图

D03

Q02

D14

Q15

D27

Q26

D38

Q39

D413

Q412

D514

Q515

D617

Q616

D718

Q719

OE1

LE11

74LS373

EA/VP31

X119

X218

RESET9

RD17

WR16

INT012

INT113

T014

T115

P101

P112

P123

P134

P145

P156

P167

P178

P0039

P0138

P0237

P0336

P0435

P0534

P0633

P0732

P2021

P2122

P2223

P2324

P2425

P2526

P2627

P2728

PSEN29

ALE/P30

TXD11

RXD10

89C51

RY/BY1

A122

A73

A64

A55

A46

A37

A28

A19

A010

DQ011

DQ112

DQ213

WE27

NC26

A825

A924

A1123

OE22

A1021

CE20

DQ719

DQ618

DQ517

DQ416

DQ315

2864A

1

23

AND

VCC

D0D1D2D3D4D5D6D7

A0A1A2A3A4A5A6A7

A8A9A10A11A12

D0D1D2D3D4D5D6D7

600 +5

/ WR信号指示灯

600

/ RD信号指示灯

600

/ PSEN信号指示灯绿

Page 14: 项目单元 5    简易电子琴

由电路分析可知 : 写入 2864A 是由 /WR 控制,只能用 MOVX 指令,即将 2864A当作外 RAM 写入数据;从 2864A 中读数由 /RD 或 /PSEN来控制,通过与门来实现,所以读数用 MOVX 指令或是 MOVC 指令时,将分别当作从外 RAM 或外 ROM 读取。 图 5-5 中右下方与单片机 /PSEN引脚相接的绿色 LED灯为显示外 ROM 控制信号作用的指示灯;与单片机 /RD引脚相接的黄色 LED灯为显示读取外 RAM 控制信号作用的指示灯;与单片机 /WR引脚相接的红色指示灯为显示写外 RAM 控制信号作用的指示灯。当所接控制信号有效 (即为低电平 ) 时对应指示灯发光。

5. 程序设计 为便于观察执行指令时上述指示灯的状态,时钟信号频率要低。本例选用振动频率为 12Hz 外部时钟信号 , 机器周期为 1秒。 注意:写入 EEPROM 一字节要求延时 10毫秒以上。 此程序将 12H 写入外 RAM 2864A 的“ 1000H” 单元,再从外 RAM“1000H” 单元读出再写入内 RAM 30H 中,接着从外 ROM“1000H” 单元读出到内 RAM 40H 中。

Page 15: 项目单元 5    简易电子琴

ORG 0HSTAR: MOV DPTR,#1000HMOV A,#12H ; 立即数送到 AMOVX @DPTR,A ; 写 2864A ,红色指示灯亮,黄色、绿色指示灯灭;NOP ; 2864A 为外 RAM ,写时要延时 10毫秒MOVX A,@DPTR ; 读外 RAM 2864A 1000H 单元的内容外 RAM

;黄色指示灯亮红色、绿色指示灯灭MOV 30H,A ; 再写入内 RAM 30H 中,红色、黄色、绿色指示灯灭MOVC A,@A+DPTR ;从 2864A 1000H 读出送入 A 中, 2864A 当外 ROM 。

;绿色指示灯亮红色、黄色指示灯灭MOV 40H,A ; 再送入内 RAM 40H 中,红色、黄色、绿色指示灯灭LJMP STAREND

Page 16: 项目单元 5    简易电子琴

5.5 实训的任务和步骤

1. 功能与操作1 )功能①可弹唱音乐,有 16 个音键。②存储弹唱音乐,音乐可长达数十分钟。③播放音乐,即能够将弹奏的音乐照原样播放出来。2 )操作①上电或复位后,则进入弹唱状态,指示灯亮,按音乐键盘弹唱音乐,再按“弹唱”键存储音乐并播放刚弹的音乐结束。②若存储器中已存音乐,按“播放”键,播放存储器中的音乐。③若存储器中已存音乐,按“弹唱”键,则清除原存储的音乐,进入弹唱状态。④无论出现什么情况,按“复位”键均可从头来。

Page 17: 项目单元 5    简易电子琴

2. 技术要点 1 )音符频率、简谱、节拍 音符频率、简谱、节拍在基本音乐中极为重要。在确定某音调的各音符频率(程序中用 TABLE1 间接表示)后,简谱和节拍就成为关键了。在程序中分别用简谱码、节拍码表示(参阅文献 [17] )。为了能及时从键盘按键识别简谱,形成简谱码,程序中应用了AT89C51 定时器 l 的定时与定时中断功能;为了能及时从键盘取得按某音符的时间长短(即节拍)形成节拍码,程序中应用了 AT89C51 定时器 0 的定时与定时中断功能。这些都是程序设计中的技术要点。 2 )扩展片外 RAM 音乐一般较长,有时长达数十分钟。 AT89C51 中没有足够的片内 RAM来存储简谱节拍码;何况片内 RAM 中的内容在断电后也无法保存,这就需要扩展片外 RAM 。 该电子琴采用 E2PROM AT28C64B ,它有断电后保存数据数十年的性能。当要将简谱码、节拍码存入其中时,它扮演的角色是片外 RAM ,复奏时可读出。当要求断电后保存数据时,它扮演的却是非易失性存储器的角色。但要注意写 AT2864B 时,要求 10ms 以上的时间。当采用扩展 SRAM 6264又要求断电后保存音乐数据时,则可采用锂电池保持 SRAM6264 中的音乐数据。 P203

Page 18: 项目单元 5    简易电子琴

7.6思考内容 7-1.80C51 有几个中断源?各中断标志是如何产生的?又是如何复位的? CPU 响应各中断时,其中断入口地址是多少? 7-2.某系统有三个外部中断源 1 、 2 、 3 ,当某一中断源变低电平时便要求 CPU 处理,它们的优先处理次序由高到低为 3 、 2 、 1 ,处理程序的入口地址分别为 2000H 、 2100H 、 2200H 。试编写主程序及中断服务程序(转至相应的入口即可)。 7-3. 外部中断源有电平触发和边沿触发两种触发方式,这两种触发方式所产生的中断过程有何不同?怎样设定? 7-4. 简述 80C51 单片机的中断响应过程。 7-5. 简述 80C51 单片机的中断响应条件。 7.7 实训报告要求和考核标准 实训考核标准见表 7-5

考核项目 考核内容 配分 考核要求及评分标准 得分

电路连接 按照 7-3电路连接 20分 电路连接到位 10分发光二极管连接到位 10分

编写程序 编写循环流水灯实训程序 30分 调试并运行循环流水灯实训程序 15分

操作并运行循环流水灯系统 15分

通电试验系统组成系统运行运行结果分析

50分

能说明系统组成 15分系统运行正常 10分会分析运行结果 25分定额时间为 2小时,每超 5分钟扣 5分。

实际总得分 教师签字

表 7-5 实训考核标准