【最新版】基于单片机的微型电子琴设计毕业设计(3)

2018-11-23 20:36

本次课程设计,我采用矩阵式键盘电路,这样可以大大的节省单片机IO的开销。键盘电路见图6-7

图6-7 键盘电路

[13]

在按键过程中常产生“毛刺”现象,如图6-8所示,要消除“毛刺”现象,

这里采用最常用的方法,即延时重复扫描法,延时法的原理为:因为“毛刺”脉冲一般持续时间短,约为几ms,而我们按键的时间一般远远大于这个时间,所以当单片机检测到有按键动静后,再延时一段时间(10ms~20ms)后再判断此电平是否保持原状态,如果是则为有效按键,否则无效。

图6-8“毛刺”现象

6.2.6 发音电路

电子琴发音电路见图6-9。

图6-9 电子琴发音电路

6.2.7 供电及复位电路

电子琴的供电电路和复位电路

[14]

见图6-10。

图6-10 电子琴供电及复位电路

6.2.8 LED数码管显示电路

本次毕业设计的显示电路采用LED数码管显示,LED(Light-Emitting Diode)是一种外加电压从而渡过电流并发出可见光的器件。LED是属于电流控制器件,使用时必须加限流电阻

[15]

。LED有单个LED和八段LED之分,也有共阴和共阳两种。

常用的七段显示器的结构如图下图所示。发光二极管的阳极连在一起的称为共阳极显示器(如图b所示),阴极连在一起的称为共阴极显示器(如图c所示)。1位显示器由八个发光二极管组成,其中七个发光二极管a~g控制七个笔画(段)的亮或暗,另一个控制一个小数点的亮和暗,这种笔画式的七段显示器能显示的字符较少,字符的开头有些失真,但控制简单,使用方便。

此外,要画出电路图,首先还要搞清楚他的引脚图的分布,在了解了正确的引脚图后才能进行正确的字型段码编码。才能显示出正确的数字来。

图6-11 数码管引脚

选用的是P0口作为输出口时要接上拉电阻

7 系统软件设计

7.1系统软件总体方案 (1)键盘扫描程序:

检测是否有键按下,有键按下则记录按下键的键值,并跳转至功能转移程序;无键按下,则返回键盘扫描程序继续检测 (2)功能转移程序:

对检测到得按键值进行判断,是琴键则跳转至琴键处理程序,是功能键则跳转至相应的功能程序,我们设计的功能程序有两种,即音色调节功能和自动播放乐曲功能 (3)琴键处理程序:

根据检测到得按键值,查询音律表,给计时器赋值,使发出相应频率的声音 (4)自动播放歌曲程序:

检测到按键按下的是自动播放歌曲功能键后执行该程序,电子琴会自动播放事先已经存放好的歌曲,歌曲播放完毕之后自动返回至键盘扫描程序,继续等待是否有键按下

7.2系统软件简易流程图

否 是

是 否 按键子程序流程图如下

弹奏程序流程图

自动播放歌曲程序流程图

Y N Y

N 7.3 部分设计源程序 7.3.1歌曲播放子程序

;=== 歌曲播放子程序 === START0:

mov 30H,# SONG0 ;取简谱码指针(第1首) next: mov a,30h

mov dptr,#tab1

movc +dptr ;至相关页码,高4位为音符的高低 mov r2,a ;低4位为音符的节拍 jz end0 ;检查简谱码是否已结束(有无00?) anl a,#0fh ;取节拍(低4位)

mov r5,a ;存入r5,节拍的时间 mov a,r2 swap a

anl a,#0fh ;取音频值(高4位) jnz sing ;是否为0,是0则不发音 clr TR1 ;开始,则不发音 jmp d1

sing: dec a ;因0不列入 mov 22h,a ;存入(22h) rl a ;乘2 mov dptr,#tab1

movc +dptr ;至tab1取码,取t的值

mov th1,a ;取到的高位字节存入th1 mov 21h,a ;取到的高位字节存入(21h) mov a,22h ;再载入取到的音符码 rl a ;乘2 inc a ;加1

movc +dptr ;至table取相对的低位字节计数值 mov tl1,a ;取到的低位字节存入tl0 mov 20h,a ;取到的低位字节存入(20h) setb TR1 ;启动TIMER0 d1: call delay

inc 30h ;取简谱码指针加1 jmp next

end0: clr TR1 ;停止TIMER0

mov a,31h ;载入计次指针 xrl a,#00h ;是否按第1次? jnz end1 ;不是则跳至end1 jb KEY,$ ;按第2次? call delay1 ;消除抖动 jnb KEY,$ ;放开否?

inc 31h ;计次地址(31h)加1 MOV 30h,# song1 ;第2首歌指针 jmp next 7.3.2延时程序 DELY10MS:

MOV R6,#10 D10: MOV R7,#248 DJNZ R7,$ DJNZ R6,D10 RET 7.3.3音符参数表

;==== 音符参数表===

TABLE: DB 06H,5BH,4FH,66H,6DH,7DH,07H,06H DB 06H,5BH,4FH,66H,6DH,7DH,07H,06H

8 系统调试与测试结果分析

8.1 系统调试

在系统设计中采用模块设计法,所以方便对各电路模块功能进行逐级测试:中心控制模块的调试,音乐播放模块的调试,按键控制模块的调试等,最后将各模块组合后进行整体测试。首先对各模块的功能进行调试,主要调试各模块能否实现指定的功能。然后通过WAVE6000软件对编好的程序进行调试,检查语法错误。最后将调试好的软件程序导入到硬件模块中,调试系统实现的功能。

调试主要方法和技巧:软件调试和硬件调试 8.1.1系统软件调试

通常一个调试程序应该具备至少四种性能

[16]

:跟踪、断点、查看变量、更改

数值。整个程序是一个主程序调用各个子程序实现功能的过程,要使主程序和整个程序都能平稳运行,各个模块的子程序的正确与平稳运行必不可少,所以在软件调试的最初阶段就是把各个子程序模块进行分别调试。 8.1.2 系统硬件调试

硬件调试主要是针对单片机部分进行调试。


【最新版】基于单片机的微型电子琴设计毕业设计(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:微机原理实验报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: