八按键简易电子琴的设计制作Word格式.docx
《八按键简易电子琴的设计制作Word格式.docx》由会员分享,可在线阅读,更多相关《八按键简易电子琴的设计制作Word格式.docx(23页珍藏版)》请在冰豆网上搜索。
P1口输出缓冲器可吸收20mA电流,并能直接驱动LED显示。
对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可作输入口。
P2口作输入口使用时,因为内部有上拉电阻,那些被外部信号拉低的引脚会输出一个电流(Iil)。
P3口:
~、是带有内部上拉电阻的7个双向I/O端口。
是比较器输出端,用于固定输入片内比较器的输出信号并且它作为一通用I/O口引脚而只读。
位用于内部比较器输出控制,无法做一般I/O控制,P3口输出缓冲器可吸收20mA电流。
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
00H~07H
R0~R7
1
08H~0FH
2
10H~17H
3
18H~1FH
Ⅲ、控制器:
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
PSW
程序状态标志寄存器
D0H
IP
中断优先级控制器
B8H
XXX00000B
P3
P3口数据寄存器
B0H
FFH
IE
中断允许控制寄存器
A8H
0XX00000B
P2
P2口数据寄存器
A0H
SBUF
串行口发送/接收缓冲器
99H
不定
SCON
串行口控制寄存器
98H
P1
P1口数据寄存器
90H
TL1
T1计数器低8位
8BH
TL0
T0计数器低8位
8AH
TH1
T1计数器高8位
8DH
TH0
T0计数器高8位
8CH
TMOD
定时器/计数器方式控制寄存器
89H
00H
TCON
定时器控制寄存器
88H
PCON
电源控制寄存器
87H
DPL
地址寄存器低8位
82H
DPH
地址寄存器高8位
83H
SP
堆栈指针寄存器
81H
07H
P0
P0口数据寄存器
80H
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×
AT89C51
4k×
含4k字节闪电存储器80C31
AT89C52
8k×
含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
LCALLYINYUE
LJMPMM
N1:
MOVDPTR,#TAB
MOVA,#00H
MOVCA,@A+DPTR
MOVR1,A
MOVA,#01H
MOVR0,A
MOVTH0,R1
MOVTL0,R0
SETBTR0
RE1:
JB,MAIN
AJMPRE1
N2:
MOVA,#02H
MOVA,#03H
RE2:
AJMPRE2
N3:
MOVA,#04H
MOVA,#05H
RE3:
JB,Y0
AJMPRE3
Y0:
N4:
MOVA,#06H
MOVA,#07H
RE4:
JB,Y1
AJMPRE4
Y1:
N5:
MOVA,#08H
MOVA,#09H
RE5:
JB,Y2
AJMPRE5
Y2:
N6:
MOVA,#0AH
MOVA,#0BH
RE6:
JB,M1
AJMPRE6
M1:
N7:
MOVA,#0CH
MOVA,#0DH
RE7:
JB,M2
AJMPRE7
M2:
N8:
MOVA,#0EH
MOVA,#0FH
MOVCA,@A+