八按键简易电子琴的设计制作.docx
《八按键简易电子琴的设计制作.docx》由会员分享,可在线阅读,更多相关《八按键简易电子琴的设计制作.docx(23页珍藏版)》请在冰豆网上搜索。
![八按键简易电子琴的设计制作.docx](https://file1.bdocx.com/fileroot1/2022-12/8/05c3a8f4-cca2-42e1-890e-a0c61103def7/05c3a8f4-cca2-42e1-890e-a0c61103def71.gif)
八按键简易电子琴的设计制作
八按键简易电子琴的设计制作
1.功能分析和方案论证说明
(1)功能分析
a.采用AT89C2051CPU,设计时钟电路和复位电路,上电复位和手动复位,3V供电(2节电池);
b.具有电子琴输入按键8个,包含1~7和高音1;
c.具有手动复位键1个,播放音乐和弹奏切换功能按键1个,在PCB图上标注“复位”、“功能切换”字样,这两个键在PCB图上分别布局于左右上角;
d.有发光二极管显示程序运行状态(用1个发光二极管指示对应的1个按键,实际是8个发光二极管,只用1个代表);
e.采用扬声器输出声音信号;
f.实现电子琴功能并且至少有一首存储歌曲。
g.发挥部分
即时编辑音乐并且可回放,可实现实现定时器功能,产生和弦音。
(2)方案论证说明
a.设计思路
1)选择AT89C2051单片机,通过T0定时中断,并配合引脚输出音频频率;
2)引脚输出接扬声器;
3)通过接入八个按键,包含1~7和高音1,通过查询方式,获取输入;
4)引脚接入一个指示灯,每有按键按下指示灯就亮一次;
5)通过引脚接入功能按键,实现播放音乐和弹奏的切换,中断方式接入。
b.硬件电路设计
电子琴的硬件电路由4部分组成:
单片机、时钟与复位电路、选择按键输入电路和扬声器组成电路框图如下所示。
c.AT89C2051单片机性能、特点
在我国MCS-51系列单片机,尤其是Philip公司的80C51及其派生产品受到普遍欢迎。
美国ATMEL公司生产的与MCS-51系列完全兼容的内含闪电存储器型单片机AT89C2051后来居上,大有取代MCS-51系列中EPROM之势。
其中AT89C2051单片机是AT89C51系列中结构最紧凑,体积最小的单片机,它的片内有2k字节闪烁存储器,管脚封装为20引脚,与8751
图1电子琴硬件电路设计框图
相比只去掉P0口、P2口,片内多一个模拟电压比较器。
用它设计产品,外围元器件少,接口技术简单,缩小电路板面积,成本低,开发容易,可广泛应用于小型简单不需很多I/O口控制的各种智能产品设计,现已得到开发人员广泛认可。
1)硬件结构
AT89C2051主要特点
(1)指令与MCS-51芯片兼容。
(2)内含2k字节的可反复电气烧录及擦除内存。
(3)工作电压至6V。
(4)工作频率最高至24MHz。
(5)内含128字节RAM。
(6)15条可编程控制I/O线。
(7)一个模拟电压比较器。
硬件结构
硬件结构如图1所示。
图1 AT89C2051管脚图
1.2.1引脚电气性能
AT89C2051单片机的P口特点
P1口:
P1口是一个8位双向I/O端口,其中~引脚带有内部上拉电阻,和要求外部上拉电阻。
和还分别作为片内精密模拟比较器的同相输入(AIN0)和反相输入(AIN1)。
P1口输出缓冲器可吸收20mA电流,并能直接驱动LED显示。
对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可作输入口。
P2口作输入口使用时,因为内部有上拉电阻,那些被外部信号拉低的引脚会输出一个电流(Iil)。
P3口:
~、是带有内部上拉电阻的7个双向I/O端口。
是比较器输出端,用于固定输入片内比较器的输出信号并且它作为一通用I/O口引脚而只读。
位用于内部比较器输出控制,无法做一般I/O控制,P3口输出缓冲器可吸收20mA电流。
对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可作输入口。
P3口作输入口使用时,因为内部有上拉电阻,那些被外部信号拉低的引脚会输出一个电流(Iil)。
、外部中断端口。
在稳定的状态条件下Io低被外部限制如下:
1)每个管脚的最大IOL15mA注85规格
2)每个8位口的最大IOL26mA
3)IOL输出最大总和71mA
4)如果IOL超过测试条件VOL可能会超过相应规格不能保证超过测试电流
1.2.2内部单元
Ⅰ、运算器
1)算术/逻辑部件ALU:
用以完成+、-、*、/的算术运算及布尔代数的逻辑运算,并通过运算结果影响程序状态寄存器PSW的某些位,从而为判断、转移、十进制修正和出错等提供依据。
2)累加器A:
在算术/逻辑运算中存放一个操作数或结果,在与外部存储器和I/O接口打交道时,进行数据传送都要经过A来完成。
3)寄存器B:
在*、/运算中要使用寄存器B。
乘法时,B用来存放乘数以及积的高字节;除法时,B用来存放除数及余数。
不作乘除时,B可作通用寄存器使用。
4)程序状态标志寄存器PSW:
用来存放当前指令执行后操作结果的某些特征,以便为下一条指令的执行提供依据。
PSW:
(D0H) D7 D6 D5 D4 D3 D2 D1 D0
Cy AC F0 RS1RS0OV — P
Cy:
进位标志。
有进位或借位,则Cy=1,否则Cy=0;在布尔运算时,Cy(简称C)
作为布尔处理器。
AC:
辅助进位标志位。
F0:
用户标志位:
用户可用软件对F0置位“1”或清“0”,以决定程序的流向。
OV:
溢出标志位:
当运算结果溢出时,OV为“1”,否则为“0”。
:
未定义。
P:
奇偶校验位:
当累加器A中的“1”的个数为奇数时,P置“1”,否则P置“0”。
RS1、RS0:
工作寄存区选择位:
——————————————————————————————————————
Ⅱ、片内工作寄存器组
RS1、RS0与片内工作寄存器组的对应关系
RS1RS0寄存器区 片内RAM地址通用寄存器名称
0 0 0 00H~07H R0~R7
0 1 1 08H~0FH R0~R7
1 0 2 10H~17H R0~R7
1 1 3 18H~1FH R0~R7
Ⅲ、控制器:
1)指令寄存器IR和指令译码器。
2)程序计数器:
存放CPU执行下一条指令的地址。
是一个16位寄存器,可寻址64KB。
3)堆栈指针SP:
用于子程序调用和中断处理。
【机器复位后,SP←#07H,因此压栈的第一个数据在08H单元中】。
4)数据指针寄存器DPTR:
16位的寄存器,也可以作为两个8位寄存器DPH和DPL。
DPTR主要作外部数据指针,可对64KB外部RAM进行间接寻址。
——————————————————————————————————————
MCS-51由包括PC在内的22个特殊功能寄存器,它们除有各自的名称外,还有唯一的地址,离散的分布在片内RAM中的80H~FFH共128个存储单元中。
在这128个储存单元构成的SFR块中,未被占用的单元不可使用。
Ⅳ、21个特殊功能寄存器SFR
特殊功能寄存器 功能名称 地址 复位后状态
B * 寄存器 F0H 00H
A * 累加器 E0H 00H
PSW * 程序状态标志寄存器 D0H 00H
IP * 中断优先级控制器 B8H XXX00000B
P3 * P3口数据寄存器 B0H FFH
IE * 中断允许控制寄存器 A8H 0XX00000B
P2 * P2口数据寄存器 A0H FFH
SBUF 串行口发送/接收缓冲器 99H 不定
SCON * 串行口控制寄存器 98H 00H
P1 * P1口数据寄存器 90H FFH
TL1 T1计数器低8位 8BH 00H
TL0 T0计数器低8位 8AH 00H
TH1 T1计数器高8位 8DH 00H
TH0 T0计数器高8位 8CH 00H
TMOD 定时器/计数器方式控制寄存器 89H 00H
TCON * 定时器控制寄存器 88H 00H
PCON 电源控制寄存器 87H 00H
DPL 地址寄存器低8位 82H 00H
DPH 地址寄存器高8位 83H 00H
SP 堆栈指针寄存器 81H 07H
P0 * P0口数据寄存器 80H FFH
PC 程序计数器 无地址 0000H
注:
“*”表示可位寻址。
……………………………………………………………………………………………………
;SP赋值方法:
(其中#50H为寄存器50H,不可直接写为50H,否则SP指向寄存器00H)
MOVSP,#50H
……………………………………………………………………………………………………
——————————————————————————————————————
2)复位电路的可靠性设计
影响单片机系统运行稳定性的因素可大体分为外因和内因两部分:
(1)外因
射频干扰,它是以空间电磁场的形式传递在机器内部的导体(引线或零件引脚)感生出相应的干扰,可通过电磁屏蔽和合理的布线/器件布局衰减该类干扰;
电源线或电源内部产生的干扰,它是通过电源线或电源内的部件耦合或直接传导,可通过电源滤波、隔离等措施来衰减该类干扰。
(2)内因
振荡源的稳定性,主要由起振时间频率稳定度和占空比稳定度决定起振时间可由电路参数整定稳定度受振荡器类型温度和电压等参数影响复位电路的可靠性。
基本复位电路
复位电路的基本功能是:
系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。
为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。
图2所示的RC复位电路可以实现上述基本功能。
单片机的复位电路
1.复位电路
单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作,例如复位后PC=0000H,使单片机从第一个单元取指令。
复位电路一般有上电复位、手动开关复位等电路,如图2所示。
2.复位后的状态
(1)复位后PC值为0000H,表明复位后程序从0000H开始执行。
(2)SP值为07H,表明堆栈底部在07H。
一般需重新设置SP值。
(3)P0~P3口值为FFH。
P0~P3口用作输入口时,必须先写入“1”。
单片机在复位后,已使P0~P3口每一端线为“1”,为这些端线用作输入口做好了准备。
图2常用复位电路
时钟电路与时序
在MCS-51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,其输出端为引脚XTAL2。
而在芯片的外部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,构成一个稳定的自激振荡器,这就是单片机的时钟电路,如图3所示。
时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。
(电子琴设计晶振采用12M,电容30PF)。
图3单片机的时钟电路
时序
图4时序图
(1)节拍与状态
把振荡脉冲的周期定义为节拍(用P表示)。
振荡脉冲经过二分频后,就是单片机的时钟信号的周期,其定义为状态(用S表示)。
这样,一个状态就包含两个节拍。
(2)机器周期
规定一个机器周期的宽度为6个状态,并依次表示为S1~S6。
由于一个状态又包括两个节拍,因此,一个机器周期总共有12个节拍。
(3)指令周期
指令周期是最大的时序定时单位,执行一条指令所需要的时间称为指令周期。
它一般由若干个机器周期组成。
指令周期时序如图4所示。
3)软件设计
指令使用限制
(1)AT89C2051内部有19个专用寄存器,比AT89C51少了P0、P2两个专用寄存器。
(2)AT89C2051含有2k字节闪电存储器用来存放程序,与MCS-51体系结构完全兼容,可用MCS-51指令系统对其进行程序设计。
然而,当我们用某些指令对AT89C2051进行程序设计时,一定要牢记某些特点。
(3)因为AT89C2051内部只有2k字节程序存储器,所以,所有跳转指令之目的地址必须落在该器件2k字节的程序存储器物理空间之内,这是程序设计人员责任。
例如:
LJMP7EOH指令有效,而LJMP900H则无效。
分支指令:
LCALL、LJMP、ACALL、SJMP等无条件分支指令,只要程序设计人员保证它们的目的地址一定落在000H~7FFH范围内就可执行无误;超出物理空间的界限就会引起不可知的程序执行结果。
CJNE、DJNE、JB、JNB等无条件分支指令,也须遵从上述规则。
另外,MOVX指令:
AT89C2051不可外扩数据存储器,亦不可外扩程序存储器。
故在程序中不应包括访问片外数据存储器的MOVX指令。
通常汇编程序只顾汇编,不管它所翻译的这些指令是否违反上述规则,这就要求程序设计人员在这方面特别注意。
闪电存储器的编程
AT89C2051片内存储器售后通常处于擦除状态,即每个地址单元内容均为FFH,人们可随时对其编程。
编程电压Vpp有高压12V的,也有低压5V的。
低压编程方式可以实现在用户系统内对AT89C2051进行编程;而高压编程方式则与常规闪电存储器或EPROM编程相兼容。
在这两种编程方式下,AT89C2051代入程序阵列均是逐个字节编程的,为了对片内闪电存储器任一非空白字节进行编程,必须用芯片擦除方式将整个存储器擦掉。
编程器开发
片内闪电存储器程序代码或数据可在线写入,亦可通过常规的编程器编程。
例如:
南京万利达MP-100这样一种经济型编程器,它支持通用EPROM等各种存储器,INTEL、ATMEL和Philips等各公司的全系列51单片机编程。
ME5103和ME5105仿真器支持AT89系列所有器件调试、仿真和编程。
为了实验或节省开发成本,可以只购买一个支持ATMEL89C2051编程器和逻辑测试笔,通过它编程写入芯片后,可以在实际电路系统中实验,如果发现问题,可以重新修改,重新编程写入。
它可反复擦写使用,在不更改硬件前提下,通过软件编程,轻松实现产品功能变化的要求。
AT89C2051系列单片机主要产品见表1。
表1 AT89C51系列单片机主要产品
型 号
存储规模
说 明
AT89C1051
1k×8
V~6V20引脚封装
AT89C2051
2k×8
V~6V20引脚封装
AT89C51
4k×8
含4k字节闪电存储器80C31
AT89C52
8k×8
含8k字节闪电存储器80C32
4)总结
AT89C2051单片机具有体积小巧,内建2KB电擦除程序存储器,造价低,外围元器件小,开发简单,是工程技术人员及单片机爱好者制作各种智能产品首选机型,也是许多数字电路、分立元件组成的老产品更新换代最好选择。
2.电路原理设计和PCB设计
(1)电路原理设计
a.时钟电路的设计
单片机工作的时间基准是由时钟电路提供的。
在单片机的XTAL1和XTAL2两个引脚间接一只晶振和两只电容就构成了单片机的时钟电路。
电路中C1和C2对振荡频率有微调作用,这里选用30pf,石英晶体采用12MHz。
如下图。
图2时钟与复位电路
b.复位电路的设计
单片机的RST引脚为主机提供一个外部复位信号输入端口。
复位信号是高电平有效,高电平有效的持续时间应为2个机器周期以上。
复位以后,单片机内各部件恢复到初始状态,单片机从ROM0000H开始执行程序。
本设计中采用手动复位方式,电容用10uF,电阻采用10K欧姆的。
如上图。
c.外围电路
P1口中的~引脚带有内部上拉电阻,可直接与按键相接,和要求外接上拉电阻。
接指示灯,接喇叭,接功能切换键。
图3电子琴原理图
(2)PCB设计
整体布局如下:
图4PCB布局
1、焊盘内径是0.9mm,外径是3.0mm,普通线宽是1.4mm,电源线宽度比普通线要加宽为2mm,线与线的安全间距为0.5mm左右。
2、三极管管脚间距5mm,三个角成三角形,电阻焊盘间距11mm,电容焊盘间距5mm,焊盘直径大小均在3.0mm。
3、AT89C2051两排管脚间距为7.62mm,每排各管脚间距为2.54mm,其管脚焊盘是运动场型(椭圆形),长:
X=3.5mm(长3~4mm),宽:
Y=2mm;按键5×7mm,焊盘直径不小于3.0mm(或140~160mil),二极管管脚间距4mm。
4、电源标出“+”,“-”极,靠边并排引出,焊盘设计成椭圆形,并增大面积,正负极之间距离为9mm。
6、焊盘采用水滴形,以增加焊盘的牢固性。
图5PCB打印
图6实物图
3.软件设计与调试
说明程序结构、程序流程图、仿真结果以及源程序代码。
1.程序结构
MAIN.......主程序
MM.........按键程序
YINYUE.....歌曲程序
2.程序流程图
图7程序流程图
3.源程序代码:
ORG0000H
LJMPMAIN
ORG0003H
LJMPZD
ORG000BH
LJMPTIM
ORG001BH
LJMPT0_SEV
ORG0100H
MAIN:
SETB
MOVTMOD,#01H
MOVIE,#83H
SETBIT0
SS:
JNB,MM1
JMPMM2
MM1:
LJMPAA
MM2:
CLRTR0
MOVTH0,#00H
MOVTL0,#00H
MM:
JNB,N1;电子琴程序
JNB,N2
JNB,N3
JNB,N4
JNB,NN5
JNB,NN6
JNB,NN7
JNB,NN8
JNB,AA
LJMPNOKEY
NN5:
LJMPN5
NN6:
LJMPN6
NN7:
LJMPN7
NN8:
LJMPN8
AA:
CLR
LCALLDEY
SETB
LCALLYINYUE
LJMPMM
N1:
MOVDPTR,#TAB
MOVA,#00H
MOVCA,@A+DPTR
MOVR1,A
MOVA,#01H
MOVCA,@A+DPTR
MOVR0,A
MOVTH0,R1
MOVTL0,R0
SETBTR0
CLR
RE1:
JB,MAIN
AJMPRE1
N2:
MOVDPTR,#TAB
MOVA,#02H
MOVCA,@A+DPTR
MOVR1,A
MOVA,#03H
MOVCA,@A+DPTR
MOVR0,A
MOVTH0,R1
MOVTL0,R0
SETBTR0
CLR
RE2:
JB,MAIN
AJMPRE2
N3:
MOVDPTR,#TAB
MOVA,#04H
MOVCA,@A+DPTR
MOVR1,A
MOVA,#05H
MOVCA,@A+DPTR
MOVR0,A
MOVTH0,R1
MOVTL0,R0
SETBTR0
CLR
RE3:
JB,Y0
AJMPRE3
Y0:
LJMPMAIN
N4:
MOVDPTR,#TAB
MOVA,#06H
MOVCA,@A+DPTR
MOVR1,A
MOVA,#07H
MOVCA,@A+DPTR
MOVR0,A
MOVTH0,R1
MOVTL0,R0
SETBTR0
CLR
RE4:
JB,Y1
AJMPRE4
Y1:
LJMPMAIN
N5:
MOVDPTR,#TAB
MOVA,#08H
MOVCA,@A+DPTR
MOVR1,A
MOVA,#09H
MOVCA,@A+DPTR
MOVR0,A
MOVTH0,R1
MOVTL0,R0
SETBTR0
CLR
RE5:
JB,Y2
AJMPRE5
Y2:
LJMPMAIN
N6:
MOVDPTR,#TAB
MOVA,#0AH
MOVCA,@A+DPTR
MOVR1,A
MOVA,#0BH
MOVCA,@A+DPTR
MOVR0,A
MOVTH0,R1
MOVTL0,R0
SETBTR0
CLR
RE6:
JB,M1
AJMPRE6
M1:
LJMPMAIN
N7:
MOVDPTR,#TAB
MOVA,#0CH
MOVCA,@A+DPTR
MOVR1,A
MOVA,#0DH
MOVCA,@A+DPTR
MOVR0,A
MOVTH0,R1
MOVTL0,R0
SETBTR0
CLR
RE7:
JB,M2
AJMPRE7
M2:
LJMPMAIN
N8:
MOVDPTR,#TAB
MOVA,#0EH
MOVCA,@A+DPTR
MOVR1,A
MOVA,#0FH
MOVCA,@A+