收藏 分享(赏)

可存储式电子琴.pdf

上传人:HR专家 文档编号:5958875 上传时间:2019-03-22 格式:PDF 页数:38 大小:361.44KB
下载 相关 举报
可存储式电子琴.pdf_第1页
第1页 / 共38页
可存储式电子琴.pdf_第2页
第2页 / 共38页
可存储式电子琴.pdf_第3页
第3页 / 共38页
可存储式电子琴.pdf_第4页
第4页 / 共38页
可存储式电子琴.pdf_第5页
第5页 / 共38页
点击查看更多>>
资源描述

1、概 述 本设计利用单片机 8051 的控制程序,结合 LCD 设计一台数字式可存储式电子琴,可以自己弹奏音乐,并自动存储所输入的单音,稍后会一起自动演奏出来。由控制程序的变化,可以做不同类型的电子琴的设计。本设计可以学习按键试电子琴的控制方式,按下键并发出相对音阶,并将输入的单音数据存入 8051 内部可用的内存 RAM 区,稍后一起自动演奏出来。 电子琴核心部分是单片机及其程序。单片机体积小,价格便宜,开发容易,可根据需要制作成为各种智能控制器以代替人工操作,实现自动化。单片机系统主要由中央处理器(CPU)、存储器和 I/O 接口电路三大部分组成,各部分通过三态门与地址总线、数据总线和控制总

2、线连接起来并相互传递信息(即传送数据)。其结构如图 1 所示。 地址总线 - 1 - 数据总线 控制总线 中央处理器 存储器 外部设备 I/O 接口 液晶显示器(LCD)由于功耗极低 、清洗美观、方便耐用和没有电磁辐射等特点广泛应用在便携式仪表或低功耗显示设备中。所以在电子琴中使用非常合适。但要完成LCD接口并显示,首先要选择译码驱动电路,并对输入有锁存功能。所以在接口设置一个芯片。 单片机的程序通常都是借助微机实现的,即在微型计算机上使用编辑软件编写程序,使用交叉汇编程序对源程序进行汇编,然后采用串行通信方法,把汇编得到的目标程序传送到单片机内,并进行程序调试和运行。 第一章 功能及方法说明

3、 11 功能说明 可存储式电子琴的基本功能如下: z 使用 LCD 显示器来显示音阶输入的相关信息。 z 当按下键盘组相对按键,压电喇叭会发出相对音阶单音, 共有两个 8 度音节。 z 所输入的单音会存入 8051 内而保存起来。 z 至多可以输入 64 个单音,可以一起演奏出来。 z 有清除存储功能,再重新输入。 z 演奏时可以按键来中断。 z 可以实时显示目前演奏的单音码及所存储的单音计数。 程序执行后工作指示 LED 闪动,表示程序开始执行,LCD 显示器显示如下: 当按下键盘组相对按键,压电喇叭会发出相对单阶单音,共有两个 8 度音节, DOSI,HI DOHI SI,14 个音阶,所

4、输入的单音会存入 8051 内而保存起来,至多可以输入 64 个单音,可以一起演奏出来,有清除存储功能,再重新输入。 4X4 按键音阶对应如下所示: 音阶 DO RE ME FA SO LA SI 按键 1 2 3 4 5 6 7 音阶 DO RE ME FA SO LA SI 按键 F B A 0 E D C IO51 ORGAN 9-CLR 8PLAY 图11 音阶对应表 LCD 可以实时显示所存储的单音计数,按键 9 是清除键,将存储的单音计数请为 0,按键 8 是放音键,将内存内的单音逐一演奏出来,演奏中可以按键 K4 来中断。 在本设计使用一般的 LCD 显示器来显示音乐演奏的消息及

5、单音码,按下键盘组按键,喇叭发出相对音阶,并存储起来自动演奏电子琴,可以扩充其功能如下: 扩充更多组的按键可以输入另外一组高音阶。 增加多组 LED 成为音乐走马灯。 增加串行 EEPROM 93C46 等系列芯片,将内存内的单音逐一写入 93C46 内,音乐- 2 - 数据可以长久保存,若关机后音乐数据仍保存着。 增加串行 EEPROM 等系列芯片,可以实时输入并存储多首歌曲,稍后再播放出来。 12 定时器产生各种频率的声音的方法 121 原理及说明 以定时器产生特定频率的方波信号,以定时器产生各种频率的声音,可以由喇叭发出“DO”、“RE ”、“ ME”的音阶,以定时器 0 工作于模式 0

6、,计时时间长短按所发音的频率而定,下表列出各个音符对应的频率值: 简谱 1 2 3 4 5 6 7 音符 C5 D5 E5 F5 G5 A5 B5 频率 523 587 659 698 784 880 987 1 2 3 4 5 6 7 C6 D6 E6 F6 G6 A6 B6 1046 1174 1318 1396 1567 1760 1975 图 12 频率对应表 定时器计数初值可以由频率值推得。由以下关系式可得: t=1/f(us); co=(int)t/2; lo=(8192-co)32; hi=(8192-co)/32; 其中符号的含义说明如下: f :频率值 t :方波宽度,以 u

7、s 表示 co :定时器所计数的次数 lo :计数初值低字节 hi :计数初值高字节 定时器每一个计数时间脉冲宽度为 1.0us(石英振荡晶体为 12 MHz),为了方便汇编程序设计,我们可以将各个音阶频率值对应的计数初值先求出,在汇编语言中以查表的方式- 3 - 来加载计数初值。 执行结果如下: =8051 timer mode 0 sound value calculator= XTAL=12 MHz f=523 co=956 TH0 value=226 TL0 value= 4 f=587 co=851 TH0 value=229 TL0 value=13 f=659 co=758 TH

8、0 value=232 TL0 value=10 f=698 co=716 TH0 value=233 TL0 value=20 f=784 co=637 TH0 value=236 TL0 value= 3 f=880 co=568 TH0 value=238 TL0 value= 8 f=987 co=506 TH0 value=240 TL0 value= 6 f=1046 co=478 TH0 value=241 TL0 value= 2 f=1174 co=425 TH0 value=242 TL0 value=23 f=1318 co=379 TH0 value=244 TL0 v

9、alue= 5 f=1396 co=358 TH0 value=244 TL0 value=26 f=1567 co=319 TH0 value=246 TL0 value= 1 f=1760 co=284 TH0 value=247 TL0 value= 4 f=1975 co=253 TH0 value=248 TL0 value= 3 any keyte continue 8051 控制程序执行后,将示波器接往 8051 P3_4 引脚,可以测量所输出的方波信号,其宽度依不同音阶而变,此时喇叭发出“DO”、“RE ”、“ ME”的音阶,一共 14 个单音,包含两个八度音,若拔下 KI 键

10、则喇叭再次发出声音测试。 122 定时器的工作 定时器工作方式寄存器TMOD格式如下图所示: D7 D6 D5 D4 D3 D2 D1 D0 GATE C/T- 4 - M1 M0 GATE C/TM1 M0 T1 T0 M1 M0工作方式选择位 M1 M0 工作方式 0 0 方式0,记数器为13位 0 1 方式1,记数器为16位 1 0 方式2,一个8位记数器,其初值能重新装入 1 1 方式3,两个8位记数器,仅适用于T0 C/T记数/定时方式选择位 GATE门控位 图13 定时器工作方式寄存器TMOD 定时器模式 0 的工作: 在模式 0 时定时器 0 可以进行 13 位的计时,其值保存在

11、两个 8 位的定时寄存器中,分别为 TL0 及 TH0(定时器 0)。 1221 计时工作脉冲 定时器的工作时钟可以由内部或是外部来提供,由 C/T 位( 在 TMOD 中) 来决定,当C/T=1 时,由外部引脚 T0 来提供,作为计数器时使用。当 C/T=0 时,则由内部时钟来提供,作为一般的定时器使用。而定 时器的时钟为系统工作时钟除 12。石英振荡晶体使用110592 Maz ,所以定时器每一个计数时间脉冲宽度为: 12/110592 MHz=1085us 若石英振荡晶体改为 12 MHz,定时器每一个计数时间脉冲宽度为: 12/12MHz=10us 计时模式 0 可以进行 13 位的计

12、数,其值是以下列方式存储在寄存器 TL0 及 TH0 中: TH0 TL0 8bit 5bit 因此最长的计时时间为 1085 us 8192=8888 ms 。 1222 启动定时器 定时器工作的必要条件有以下 2 种: 开关控制位 GATE=0 时,只要 TR0=l,定时器 0 便会工作。 开关控制位 GATE=1 时,除了 TR0=1,外部 INT0 引脚,还必须是高电平才行。 利用条件 2,定时器必须等待外部引脚 INT0 的输入信号变为高电平才开始计时,因此可以用来测量输入 INT0 引脚的高电平信号时间的长短,这在工厂产品自动化生产测试系- 5 - - 6 - 统中是一项经常使用的

13、测量技巧。平时在单片机程序控制中, 若使用定时器内部时钟工作,C/T=0,GATE=0 ,在模式 0 下,只要下达指令: MOV TMOD,#00H 便可以设置定时器 0 于模式 0 开始计时工作。只要将 TR0(TCON 位 4)设为 l,定时器便会开始工作了。 1223 计时时间长短设置 8051 定时器是以上述的方式来计数,在模式 0 下共可计数 13 位,计数器值最多为8192(2 的 13 次方) ,由 0 数到 8192 便产生溢位而引发中断信号,产生定时器 0 的中断(TF0=I)。问题是我们可能只要计数 100 个脉冲便产生中断,只要将初值 8092(8192-100)加载计数

14、器便可,一旦启动定时器后,计数变为 8093、8094、一直到 8192 则产生中断,就计数 100 次了,而时间长度为: 1085 us 100=1085us 也就是经过 1085/us 后便产生中断了。 至于载入定时器的初值,计算如下: TL0=(8192-C)MOD 32 TH0=(8192-C)/32 其中,C 为所要计数的值,MOD 为取余数的运算,除以 32 后取余数部分。其中“/ ”为除法运算,在做完除法后取整数部分。 若计数次数为 100,C=100,可得: TLO=28 TH0=252 1224 计时溢位如何处理 当计数终止产生溢位时,程序如何处理呢? 我们怎么知道系统产生定

15、时器中断了呢? 定时器应用的方式可以有以下 2 种方式: 检查其中断控制寄存器 TCON 中的 TF0 及 TFl 位,若为 1 则代表产生计时溢位了。 执行相对应的中断服务程序。 一般程序设计中以方式 2 较常用,一旦计数终止产生溢位后便引发计时中断,若先前已设置好计时中断服务程序,则会自动跳去执行计时中断服务程序,在程序中再加载计数初值后重新计数,当计数终上时,又产生计时中断,如此一直循环下去,便可以每隔一段时间自动去执行中断服务程序,这样的设计架构是单片机程序设计中常用的技巧,也是一种简单的多任务程序设计方法。 第 2 章 控制电路 可存储式电子琴的控制电路分为以下几部分: 单片机 80

16、51 工作指示 LED LCD 显示器 按键输入 喇叭接口 2.1 控制电路说明 电子琴的核心部件是单片机,下图是MCS-51系列单片机的内部RAM地址分配示意图 。 7FH 数据缓冲器 位寻址区(00H-7FH) 工作寄存器3区 工作寄存器2区 工作寄存器1区 工作寄存器0区 30H 2FH 20H 1FH 18H 17H 10H 0FH 08H 07H 00H 图21 MCS-51系列单片机的内部RAM地址 图 22( 见下页) 为完整的控制电路。 其中 J1 为+5V 电源输入,当电源加入时电源指示灯 LED 将亮起,用以指示电源供给 - 7 - EA/VP31X119X218RESET

17、9INT012INT113T014T115P1.01P1.02P1.23P1.34P1.45P1.56P1.67P1.78RXD10TXD11ALE/P30PSEN29WR16RD17P2.021P2.122P2.223P2.324P2.425P2.526P2.627P2.728P0.732P0.633P0.534P0.435P0.336P0.237P0.138P0.0398051123VO4RS5R/W6EN7891011D412D513D614D7SDEC 2A16DRG LCD 16x2VCC20PF20PF11.0592MHZ10uFRESETVCC1K1KLEDVCCP3.7P0.7

18、P0.5P0.1P0.0P0.6P0.4VCC10Kx8VCC100k10KBUZZERVCCVCCP3.4E C B底视图P 2.0 -P 2.71 2VCC J11KLEDVCC5VP3.4P3.5P0.0P0.1P0.4P0.5P0.6P0.7K1 K2 K3 K4C945V C C 5 V: P IN 4 0G N D: P IN 2 0F E DC8 3 6 9 A2 5 80 1 4 7图22 控制电路图 - 8 - 正常实验时使用 1051 控制板上的压电喇叭会发出音乐旋律,声音较小,若是改用一般的小型喇叭来发声可以增加音量。小型喇叭可以经过连接线连在 I051 控制板上的 J3

19、 接头。 可存储式电子琴所输入的音阶值必须存入变量数组中,在演奏时才逐一取出来播放单音。8051 程序中的变量是使用内部存储器一般用途 RAM 区,范围为空间 30H7FH,因此内存规划如下: RAM 地址 30H70H 存放音阶值,最大内存空问为 64 字节。 RAM 地址 71H7FH 存放程序其他变量。 若要扩充音阶的存储容量,必须使用外部内存扩充,最简单的方式是使用串行EEPROM 93C46 等系列芯片,除了增加存储容量外还可以有断电数据保存的功能,关机后音乐数据仍保存着。 22 键盘扫描 221 键盘分配 整个 4x4 键盘按键分配如下所示: - 9 - 图2 3 键盘分配 F E

20、 D C E 3 6 9 A 2 5 8 0 1 4 7 当实际制作是所使用的键盘按键位置分配时,自行修改按键转换即可。 222 键盘扫描方法 222 1 矩阵式键盘的结构与工作原理 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,在P2口就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成 20 键的键盘,而直接用端口线则只能多出一键。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。 图24为矩阵式键盘的

21、结构图。 P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 图24 矩阵式键盘结构 矩阵式结构的键盘虽然比直接法要复杂一些,识别也要复杂一些,但能符合要求。下图中,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接 的I/O口则作为输入。这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下, 则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。 222 1 矩阵式键盘的按键识别方法 确定矩阵式键盘上何键被按下介绍一种“行扫描法”。 行扫描法 行扫描法又称为逐行(或列)扫描查询法,是一

22、种最常用的按键识别方法,如上图所示键盘,介绍过程如下。 - 10 - - 11 - (1) 判断键盘中有无键按下 将全部行线 Y0-Y3 置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。 (2) 判断闭合键所在的位置 在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。 8051

23、单片机的 P2 口用作键盘 I/O 口,键盘的列线接到 P2 口的低 4 位,键盘的行线接到 P2 口的高 4 位。列线 P2.7-P2.4 分别接有 4 个上拉电阻到正电源+5V,并把列线P2.7-P2.4设置为输入线,行线P2.0-P2.3设置为输出线。4根行线和4根列线形成16个相交点。 (1) 检测当前是否有键被按下。检测的方法是 P2.0-P2.3 输出全“0”,读取P2.7-P2.4的状态,若P2.7-P2.4为全“1”,则无键闭合,否则有键闭合。 (2) 去除键抖动。当检测到有键按下后,延时一段时间再做下一步的检测判断。 (3) 若有键被按下,应识别出是哪一个键闭合。方法是对键盘

24、的行线进行扫描。P2.0-P2.3按下述4种组合依次输出: P2.0 1 1 1 0 P2.1 1 1 0 1 P2.2 1 0 1 1 P2.3 0 1 1 1 在每组行输出时读取 P2.7-P2.4,若全为“1”,则表示为“0”这一行没有键闭合,否则有键闭合。由此得到闭合键的行值和列值,然后可采用计算法或查表法将闭合键的行值和列值转换成所定义的键值 (4)为了保证键每闭合一次CPU仅作一次处理,必须却除键释放时的抖动。 从以上分析得到键盘扫描程序的流程图如图25(见下页)所示。 23 LCD 驱动电路 单片机在开发过程中,常常会因为资源不足而不得不大量扩展接口芯片以满足应用系统的需要,其中

25、原因之一是人机界面中的键盘显示占用了系统太多资源,从而造成系统庞大,同时降低了系统的可靠性。在单片机应用系统中,键盘显示通常可采用以下几种方式: - 12 - Y N Y N N Y 扫描键盘 延时去抖动有键闭合找到闭合键计算键值 建立有效标志 闭合键释放建立无效标志 返回 键盘扫描图25 键盘扫描程序的流程图 (1)采用并行接口的键盘显示专用芯片8279。但8279所需外围元件多(显示驱动、译码等)、占用电路板面积大、综合成本高,在中小系统中常常大材小用; (2)采用通用并行 I/O 芯片扩展(如用 8155 等),但此方案同样需要驱动显示,同时键盘显示扫描还需占用CPU大量时间; ()采用

26、专用显示控制器,并用CPU的I/O引脚完成键盘输入(如C14499、PS7219、- 13 - MAX7219、ICM7218、TLC5921 等,大多是串行接口并有显示驱动能力,I/O 占用少)。这种接口方式省去了显示的扫描,而且电路大多也很简单,通常在系统需要的按键较少时比较适用; ()采用带 I2C 总线的键盘显示芯片(如显示用 SAA1064,键盘用 PCF8574),不过这种方式对于无I2C总线接口的CPU来说,编程显得有些不便; ()采用串行接口的键盘显示专用芯片,如 BC7280/81、HD7279、CH451 等。这类芯片占用CPU的资源少,传输速度较快,外围器件要求也较少,在

27、中小系统中都可得到广泛的应用。 231 LCD 的功能与引脚介绍 LCD 在电子产品中使用频率相当高,普通的七段显示器只能用来显示数字,要显示英文文字时,要选择使用 LCD(液晶显示器),常 见的使用场合有测量仪器 及高级电子产品,毕竟LCD 价格不是很便宜。我们在电在材料行买到的 LCD,其背面有控制电路,其上面有专门的IC来完成LCD的控制动作,在设计的接口中,只要送入适当的命令码和欲显示的数据,LCD便会将其字符显示出来,在控程上非常方便。 一般市售的LCD均有统一引脚,本设计采用的LCD为SDEC厂牌(2A16DRG)引脚功能说明如下: z D0D7 双向的数据总线, LCD 数据读写

28、方式可以分为 8 位及 4 位两种,以 8 位数据进行读写则 D0D7 有效,若以 4 位方式读写,则只用 D7D4。 z RS 寄存器选择控制线,当RS=0时,并且做写入的动作时,可以写入指令寄存器,若RS=0,且做读取的动作时,可以读取忙碌标志及地址计数器的内容。如果RS=1则用于读写数据寄存器。 z R/W LCD读写控制线,R/W=0时,LCD执行写入的动作,R/W=1时则做读取的动作。 EN启用控制线,高电平动作。 z VCC 电源正端。 z VO 亮度调整电压输入控制引脚,当输入0V时字符显示最亮。 z GND 电源地端。 232 LCD 特性 LCD具有入下特性: z +5V供电

29、,亮度可调整。 - 14 - z 内藏振荡电路,系统内含重置电路。 z 提供各种命令,如清除显示器、字符闪烁、显示移位等多种功能。 z 显示用数据RAM共80个字节。 z 字符产生器ROM有160个57点阵字型。 z 字符产生器RAM可由用户自定义8个57点阵字型。 233 LCD 内部的内存 LCD内部存储器共分为3种: z 固定字型ROM,称为CG(Character Generator)ROM。 z 数据显示RAM,称为DD(Data Display)RAM。 z 用户自定义字型RAM,称为CGRAM。 (1)CG ROM CG ROM内存储着192个57点阵的字型,这些字型均已固定,例

30、如我们将“A”写入LCD 中,就是将“A”的 ASCII 码 41H 写至 DDRAM 中,同时至 CG ROM 中将“A”的字型点阵数据找出来而显示在LCD上。 (2)DD RAM DD RAM内用来存储写至LCD内部的字符,DD RAM的地址分布从00H到67H,分别代表LCD 的各列位置,例如我们要将“A”写入第 2 行的第 1 个位置,就先设置 DD RAM 地址为40H,而后写入41H至LCD即可。 (3)CG RAM 此区域只有64个字节,可将用户将自行设计的字型写入LCD中,一个字的大小为5x7点阵,工可以存储8个字型,其显示码为00H到07H。 234 LCD 的操作命令 SD

31、EC的操作命令均为12位,其中高4位为标识码,低8位为参数,各操作命令如下: 空操作:0000B(可为任意值,下同) 空操作命令对SDEC 2A16不产生任何影响。该命令可以在多个SDEC 2A16级联的应用中透过前级SDEC 2A16向后级SDEC 2A16发送操作命令而不影响前级SDEC 2A16的状态。例如,要将操作命令001000000001B发送给两级级联电路中的后级SDEC 2A16(后级SDEC 2A16 的 DIN 引脚连接到前级 SDEC 2A16 的 DOUT 引脚),只要在该操作命令后添加空操作命令000000000000B再发送, 那么, 该操作命令将经过前级SDEC

32、2A16到达后级SDEC 2A16,- 15 - 而空操作命令留给了前级SDEC 2A16。另外,为了在不影响SDEC 2A16的前提下变化DCLK以清除看门狗计时器,也可以发送空操作命令。在非级联的应用中,空操作命令可只发送高4位。 芯片内部复位:001000000001B 内部复位命令可将SDEC 2A16的各个寄存器和各种参数复位到默认的状态。芯片上电时,SDEC 2A16均被复位,此时各个寄存器均复位为0,各种参数均恢复为默认值。 字数据移位:0011000000D1D0B 字数据移位命令共有4个:开环左移、右移,闭环左移、右移。D0为0时为开环,为1时为闭环,D1为0时左移,为1时为

33、右移。开环左移时 DIG0引脚对应的单元补00H,此时不译码方式显示为空格,BCD 译码方式时显示为 0;开环右移时,DIG7 引脚对应的单元补00H;而在闭环时DIG0与DIG7头尾相接,闭环移位。 设定系统参数:01000000WDOGKEYBDISPB 该命令用于设定SDEC 2A16的系统级参数 如看门狗使能WDOG、键盘扫描使能KEYB、显示驱动使能 DISP 等。各个参数均可通过位数据来进行控制,将相应的数据位置为 1可启用该功能,否则关闭该功能(默认值)。 设定显示参数:0101MODELIMITINTENSITYB 此命令用于设定 SDEC 2A16 的显示参数,如译码方式 M

34、ODE(1 位)、扫描极限 LIMIT(3 位)、显示亮度 INTENSITY(4 位)等。译码方式 MODE 为 1 时选择 BCD 译码方式,为0 时选择不译码方式。SDEC 2A16 默认工作于不译码方式,此时 8 个数据寄存器中字节数据的位7位0分别对应8个数码管的小数点和段G段A,当数据位为1时,对应的数据段(或发光管)点亮;数据位为 0 时熄灭。SDEC 2A16 工作于 BCD 译码方式主要应用于数码管驱动,单片机只要给出二进制数的BCD码,便可由SDEC 2A16将其译码并直接驱动数码管以显示对应的字符。BCD 译码方式是对数据寄存器中字节数据的位 4位 0 进行兼容BCD的译

35、码,可用于控制段驱动引脚SEG6SEG0的输出,它们对应于数码管的段G段A,同时可用字节数据的位 7 控制段来驱动引脚 SEG7 的输出以对应数码管的小数点,字节数据的位 6 和位 5 不影响 BCD 译码的输出,它们可以是任意值。将位 4位 0 进行 BCD 译码可显示以下28个字符,其中00000B01111B分别对应于“0F”、10000B11010B分别对应于“ ”空格、“”或加号、“”负号或减号、“” 等于号 、“” 左方括号 、“” 右方括号、“”下划线、 “H” 、“L” 、“P” 、“” 小数点、其余值为空格。 - 16 - 扫描极限LIMIT控制位001B111B和000B(

36、默认值)可分别设定扫描极限17和8。显示亮度INTENSITY控制位的0001B1111B和0000B(默认值)则用于分别设定显示驱动占空比1/1615/16 和16/16,以实现16级显示亮度控制。 设定闪烁控制:0110D7SD6SD5SD4SD3SD2SD1SD0SB 设定闪烁控制命令用于设定 SDEC 2A16的闪烁显示属性,其中 D7SD0S 分别对应于 8 个字驱动 DIG7DIG0。闪烁属性 D7SD0S 分别通过 1 位数据控制,将相应的数据位置为1可使能闪烁显示,否则为正常显示,不闪烁(默认值)。 加载字数据:1DIGADDRDIGDATAB 加载字数据命令用于将字节数据 D

37、IGDATA(8 位)写入 DIGADDR(3 位)指定的数据寄存器中。DIGADDR 的 000B111B 分别用于指定数据寄存器的地址 07,并分别对应于DIG0DIG7引脚驱动的8个数码管。DIGDATA为待写入的字节数据。 读取按键代码:0111B 读取按键代码命令用于获得 SDEC 最近检测到的有效按键的按键代码。该命令是唯一的具有数据返回的命令,SDEC 通常从 DOUT 引脚输出按键代码,按键代码总是 7 位数据,最高位是状态码,位5位0是扫描码。 读取按键代码命令的位数据B7B0可以是任意值,所以控制器可以将该操作命令缩短为 4 位数据 B11B8。例如,SDEC 2A16 检

38、测到有效按键并中断时,如按键代码是5EH,则先向SDEC发出读取按键代码命令0111B,然后再从DOUT获得按键代码5EH。 SDEC 所提供的按键代码为 7 位,位 2位 0 是列扫描码,位 5位 3 是行扫描码,位6是状态码(键按下为1,键释放为0)。例如,连接DIG3与SEG4的键被按下时,按键代码为 63H,键被释放后,按键代码是 23H。单片机可以在任何时候读取按键代码,但一般在SDEC 2A16检测到有效按键而产生键盘中断时读取按键代码,此时按键代码的位6总是1。另外,如果需要了解按键何时释放,单片 机可以通过查询方式定期读取按键代码,直到按键代码的位6为0。连接在DIG7DIG0

39、与SEG7SEG0之间的键被按下时,SDEC 2A16所提供的按键代码。这些按键代码具有一定的规律,如果需要键被释放时的按键代码,按键代码的位 6 置 0,也可将表中的按键代码减去 40H。应注意的是:SDEC 2A16 不支持组合键,也就是说,同一时刻,不能有两个或者更多的键被按下。 24 音频处理电路 241 说明 音频处理器集数字均衡器与数字功率放大为一体,是一种硬件与软件的多功能数字音频处理器。可在数字状态下对音频进行降噪、均衡、时间压扩、限幅,混响、增益控制、声像移动等特技处理。在不变调的同时对声音进行压、扩,从而最大限度地减少了干扰和失真,确保了音频信号的质量。具有高效率、高保真、

40、输出功率大、频响范围宽和没有零瓢的特点,可根椐现场环境对每一通道独立调节高低音,均衡等并保存预设值,方便随时调用。配备 RS-232 控制接口,方便与外部计算机控制软件相连,通过虚拟数字调音台,我们可以实现操作面板的所有控制。方便随时调用。多路音频采集通道与4路线性输入可进行任意切换进行现场监听。 可根椐不同的 使环境对背景噪声,回声,及各种杂音进行消除,使监听到的声音层次分明,圆润, 饱满,清晰。能用于补偿房间的声学缺陷或系统本身的缺陷。 242 原理 其起主要作用的是带运算放大器的数字电位器,数字电位器部分的原理框图如图 2.6所示。 图2.6 原理框图 - 17 - 由图2.6可知,DS

41、1667包含两个电位器,每个电位器有各自的游标,它由一个包含在8 位寄存器中的数值来设定。每一个电位器由 256 个阻值相等的电阻器组成,相互间以及和最末端电阻器之间是以抽头连接的。 另外,电位器可以用串联的形式堆积起来,也就是说,电位器0的高端连接到电位器1 的低端,作为堆栈电位器,堆栈选择位用来选择哪个电位器的游标将出现在多路输出端SOUT。如果 0 写进堆栈多路输出分配器,将连接游标 0 到 SOUT 引脚。这个游标将决定从堆栈电位器底部的256个抽头中选择哪一位。如果1被写进堆栈多路输出分配器,将选择游标1,堆栈电位器上部的256个抽头中的其中之一连接到SOUT引脚。 通过 17 位

42、I/O 移位寄存器,数据可以从游标 0 和游标 1 寄存器以及堆栈选择位中读出或写入。I/O 移位寄存器是 3 线串行口负载,而 3 线串行口由 RST、DQ 和 CLK 组成。它通过传送17位数而修改数据。只有当RST输入高电平时,才允许通过DQ引脚串行写入数据。在RST端变为低电平以前,电位器总保持以前的数值不变。当RST变为低电平后,电位器的数值才会改变,当RST输入为低电平时,DQ和CLK输入不起作用。 当 RST 是高电平时,CLK 输入端由低到高转变,有效数据被写进 I/O 移位寄存器。无论时钟输入是高电平还是低电平,DQ引脚的输入数据都可以改变,而只有满足设置要求时DQ引脚的数值

43、才被送入移位寄存器。数据写入总是以堆栈选择位的数值开始的。送入的下一个8位是规定电位器1的游标设定数值,这8位数据的最高有效位首先送出,接下来的8位是规定电位器0的游标的设定数值, 首先送出的也是最高有效位。 送入的第17位数据,是游标 0 设定的最低有效位。如果写进的数据少于 17 位数,电位器设置的数值将是被写进的数据加上以前未转换的保留位。如果写进的数据大于17位,最后的17位数据留在移位寄存器中。因此,如果送进的数据不是17位,将导致电位器设置不准确。 当多位数据被写进移位寄存器时,以前的数据通过级联串行口引脚 COUT 逐位移出,通过连接一个DS1667的COUT到另一个DS1667

44、的DQ引脚,多个电位器能象链子一样串接在一起,如图2.7所示。 图2.7 写数据 - 18 - 图2.8 读数据 读数据时,DQ引脚处于悬浮状态。当RST保持低电平时,位17总是出现在COUT引脚,它通过电阻器反馈回DQ引脚,该数据通过读设备读出。RST引脚变成高电平则启动数据的传送。CLK输入端从低到高转变时,位17被送进I/O移位寄存器的第一位,位16出现在COUT引脚和DQ引脚。当17位全部传送完后,数据已完全移至初始位置。当RST变回低电平以结束数据传送时,数据(类似于读发生以前的数值)被送进游标 0、游标 1 的寄存器和堆栈选择位。 243 特点 该数字音频处理器具有以下特点: z

45、由CPU进行所有操作的控制; z 使用液晶显示屏对各项操作进行显示; z 有短路保护、热保护、DC 保护、VHF 保护、削波限幅器、长期输出功率限制、AC 保护等各项保护功能; z 采用大功率电源变压器,数字功率放大,保证功放有足够的功率; z 完善的系统降噪处理,减低噪声,使音质更加清晰; z 配备RS-232 控制接口,方便与外部单片机控制软件相连,通过虚拟数字调音台,实现面板操作的所有控制; 244 功能 能实现的主要功能: z 使用先进的32位数字音频处理器,进行全程数字化处理,使整机性能更卓越。 z 抑制启动阀值可调,通过调节反馈抑制器的阀值(-3dB至-9dB)使其能在不同激励电平

46、的情况下,可靠启动反馈抑制器的滤波器, 具有反馈抑制器所具有功能。 z 数字音频控制能对每一路进行音量/平衡/衰减控制、高/低音控制、均衡调节和动态范围压缩等功能的独立调节。 z 液晶处理:对液晶显示的背光、字符,数字、汉字、由CPU进行处理。 - 19 - - 20 - z 背光LCD显示屏,所有功能和设置LCD液晶显示并可以通过RS232接口连接单片机进行设置。 z 稳压电源:为系统提供稳定的直流电源。 第 3 章 程序说明及流程图 本次工程实训中,可以学习利用单片机定时器来产生固定频率的方波信号推动压电喇叭,发出旋律。可存储式电子琴所输入的音阶值,是存入内存一般用途 RAM 区,范围为空

47、间为 30H7FH ,共 64 字节,因此最大存储音阶容量为 64 个音阶,由于可使用的内存有限,目前只设计单音拍子演奏长度固定为一拍,实际演奏一拍的长度可以依需要由延迟参数来决定。 目前控制程序只在按键按下放开后才演奏单音,并没有像标准琴键那样可以有按键发音并持续发音功能,直到按键放开来,或是按下一段时间后单音才停止发音。由于单音的演奏是由定时器中断程序来控制,可以在演奏单音的同时并侦测按键是按下,或是放开, 适当的修改程序,可以达到上述功能。 图 3 1(见下页)为主程序控制的工作流程。 在主控程序循环中主要工作为等待是否确按链,若有按键则做相应的按键功能处理,是 K8 键则开始演奏存在内存内的音阶,若是 K9 键则清除计数。若是其他按键则显示按键值,演奏单音,将按键值存入内存,计数增加,最后判断计数值是否超过最大存储音阶容量 64

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报