实验二 电子琴.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE 7 实验二 电子琴 一、实验目的 了解计算机发声原理。 进一步熟悉定时器编程方法。 进一步熟悉键盘扫描电路工作原理及编程方法。 二、实验内容 利用实验仪上提供的键盘,使数字键1、2、3、4、5、6、7作为电子琴按键,按下既发出相应的音调。用8255的PA.0口发出音频脉冲,驱动喇叭。 三、实验电路及连接 喇叭发声电路如图。 键盘电路无需连线。 34 34 33 32 31 30 29 28 27 9 8 36 5 35 6 4 3 2 1 40 39 38 37 18 19 20 21 22 23 24 25 D0 D1 D2 D3 D4 D5 D6 D7 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PB0 PB2 PB4 PB5 PB6 PB7 PB1 PB3 A0 A1 /WR /RD RESET /CS A0 A1 /WR /RD RESET /CS AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 8255A 四、实验原理 1、利用定时器,可以发出不同频率的脉冲,不同频率的脉冲经喇叭驱动电路放大滤波后,就会发出不同的音调。 2、定时器按设置的定时参数产生中断,这一次中断发出脉冲低电平,下一次反转发出脉冲高电平。由于定时参数不同,就发出了不同频率的脉冲。本实验中按键一次,会发出50个脉冲。发完后继续监测键盘,如果键还按下,继续发音。 各音阶标称频率值: 音阶 1 2 3 4 5 6 7 频率(HZ) 440.00 493.88 554.37 587.33 659.26 739.99 830.61 五、实验框图 开始是检测键值输入 开始 是 检测键值输入 读入键值 1键值7 用键值查表得到音 频相关数据 按音频数据设 置定时器 启动定时 开始发声 已发50个脉冲 关闭定时 停止发声 否 是 是 否 否 主程序框图 开始 保护现场 停止计时 输出音频脉冲电平(高或低) 高频脉冲电平反转 脉冲个数减1 恢复现场 中断返回 定时中断程序框图 mode equ 082h PORTA equ 08000h CTL equ 08003h OUTBIT equ 09002h IN equ 09001h Pulse equ 55h PulseCNT equ 50h ToneHigh equ 51h ToneLow equ 52h Tone equ 53h KeyBuf equ 54h Speaker equ PORTA Ijmp Start org 000bh TimerOInt: push PSW clr TR0 mov TH0,TontHigh mov TL0,ToneLow setb TR0 mov a, Pulse mov dptr, #Speaker movx @dptr,a inc Pulse dec PulseCNT pop PSW reti ToneTable: dw 64578, 64686, 64778, 64821, dw 64898, 64968, 65029 TestKey: mov dptr, #OUTBlT mov a, #0 movx @dptr, a mov dptr, #IN movx a, @dptr cpl a anI a, #0fh ret KeyTabIe: db 16h, 15h, 14h, 0ffh db 13h, 12h, llh, l0h db 0dh, 0ch, 0bh, 0ah db 0eh, 03h, 06h, 09h db 0fh, 02h, 05h, 08h db 00h, 0lh, 04h, 07h GetKey: mov dptr,#OUTBIT mov P2,dph mov r0,#Low(IN) mov r1, mov r2,#6 KLoop: mov a,r1 cpl a movx @dprt,a cpl a rr a mov r1,a movx a,@r0 cpl a anl a,#0fh jnz Goon1 djnz r2,KLoop mov r2,#0ffh sjmp Exit Goon1: mov r1,a mov a,r2 dec a rl a rl a mov r2,a ;r2=(r2-1)*4 mov a,r1 mov r1,#4 LoopC: rrc a jc Exit inc r2 djnz r1,LoopC Exit: mov dptr,#OUTBIT clr a movx @dptr,a mov a,r2

文档评论(0)

44422264 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档