㈠ 单片机按键发声电路求大神来帮我分析一下电路。
我不知道什么叫最小系统
这是一个8051单片机的经典电路
晶振就是那样的固定接法,电容是为了让晶振更容易起振,也会影响到单片机的工作频率,这个电容叫作负载电容
R1和C3是复位电路,8051要的是高电平复位,所以就那样接
没有说为什么要那样接,电路就是那样,没法解释的,就像你问电源的正极它为什么叫正极一样,它就那样,单片机的内部电路结构就那样接的
其它的K1呀,LS1呀,都是随便接的,只要是接在I/O端口的就行,LS1的接法并不好,没有驱动电路,8051的输出电流不大的,它只能输出电平信号而已
如果,你对我上面说的某个名词不理解,那你就得去看一下模电和数电基础,学好了再来看单片机。不然你会很累的
㈡ 用单片机唱一首歌的汇编语言流程图
实现原理就是一根IO接一个喇叭,然后从该IO送出各音符相应频率的脉冲,喇叭就会出对应的声音。
喇叭接的是P2.3
;----------------------------------
;Copyright fairychild
;转载请注明出处
DL EQU 0F111H
RLL EQU 0F2B3H
ML EQU 0F426H
FL EQU 0F4D0H
SL EQU 0F609H
LL EQU 0F71FH
XL EQU 0F817H
D EQU 0F889H
R EQU 0F959H
M EQU 0FA13H
F EQU 0FA68H
S EQU 0FB04H
L EQU 0FB90H
X EQU 0FC0BH
DH EQU 0FC44H
RH EQU 0FCADH
MH EQU 0FD0AH
FH EQU 0FD34H
SH EQU 0FD82H
LH EQU 0FDC8H
XH EQU 0FE06H
ORG 0000H
JMP START
;-----------------------------
ORG 001BH
CPL P2.3
CALL SOUND
RETI
;-----------------------------
START: MOV SP,#70H
SETB EA
SETB ET1
MOV TMOD,#11H
MOV R1,#0
MOV R2,#0
LAB: MOV A,R1
MOV DPTR,#FREQ
MOVC A,@A+DPTR
CJNE A,#0,LA1
JMP START
LA1: MOV R3,A
INC R1
MOV A,R1
MOVC A,@A+DPTR
CJNE A,#0,LA2
JMP START
LA2: MOV R4,A
INC R1
CALL SOUND
MOV A,R2
MOV DPTR,#TIME
MOVC A,@A+DPTR
MOV R5,A
INC R2
CALL DELAY
JMP LAB
;---------------------------------
SOUND: MOV TH1,R3
MOV TL1,R4
SETB TR1
RET
;---------------------------------
DELAY: MOV R6,#0FFH
LAB1: MOV R7,#0FFH
LAB2: DJNZ R7,LAB2
DJNZ R6,LAB1
DJNZ R5,DELAY
CLR TR1
RET
;---------------------------------
FREQ: DW D,SL,R,D,LL,SL
DW D,SL,M,R,D,S
DW SL,D,M,L,S,M,D
DW M,M,S,D,LL,SL,R
DW D,SL,R,D,LL,SL
DW D,SL,M,R,D,S
DW SL,D,M,L,S,D,M
DW R,M,S,LL,SL,R,D,0
TIME: DB 4,4,4,4,4,8
DB 4,4,4,2,2,8
DB 4,4,4,4,4,4,8
DB 4,2,2,4,2,2,8
DB 4,4,4,4,4,8
DB 4,4,4,2,2,8
DB 4,4,4,4,4,4,8
DB 4,2,2,2,2,4,8
;----------------------------------------
㈢ 简述单片机反转法识别矩阵按键过程
行反转法的基本概念是:行列线的交叉位置布置按键。所有行和列加上拉电阻。
所有行作输出先送低电平,然后读入列值。 如果有任意键按下,那么一定对应列值有0出现,也就知道了按下的键所在列。
反过来驱动这一列为0,其他列为1。把行作输入。就可以判断按下的键所在行。矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。这样,当按键没有按下时,所有的输入端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。<1>确定矩阵式键盘上何键被按下介绍一种“行扫描法”。行扫描法 行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,如上图所示键盘,介绍过程如下。1、判断键盘中有无键按下 将全部行线Y0-Y3置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。2、判断闭合键所在的位置 在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。
㈣ 单片机2个端口控制4个按键怎样实现
单片机IO口如果识别更多的按键,简单的方法就是通过控制按键按下,识别电流的流向。这说可能不是很理解,下面就来介绍下,如下图按键识别电路:
欢迎评论交流,也欢迎大家关注我:单片机嵌入式爱好者。会有源源不断的干货分享,能真正快速帮大家解决实际工作中遇到的问题哦!
㈤ 用单片机做电子琴,复音(合音)怎么实现
解析MIDI电子琴的设计用单片机是如何实现的
摘要:用单片机控制通用MIDI音源模块制作制作出的电子琴,结构简单,可靠性高,并且价格低廉,具有实用的价值。这种电子琴能够支持单音和复音弹奏,如果与高品质的音源芯片连接,音质更可与高档电子琴相媲美。我们在实验过程中,也曾采用手机中通用的音乐芯片构成音源模块,效果不错,价格更低廉,如韩国产的QS6400 等,这些芯片的驱动要复杂一些,需要对芯片进行初始化设置,详细内容可参看国防工业出版社出版的《MIDI原理与开发应用》一书中的相关章节。
关键字:电子琴,单片机,音源板,MD2064
1、电子琴的硬件设计方案
本电子琴包含48个按键键盘,即具有4个8度的音域,单片机AT89C51通过对所弹按键的识别,产生相应的MIDI消息。它支持单音弹奏和最多16个复音弹奏。电子琴结构示意图和电路原理图分别如图1和图2所示。AT89C51作为主控芯片,它使得键盘矩阵模块、通道和音色选择以及串口发送等各功能模块协调工作。48按键行列式键盘矩阵构成MIDI电子琴的键盘扫描输入端,由于89C51的P0口内部没有上拉电阻,故这里采用电阻R14——R21将列线拉至高电平,与六条行线组合完成48个琴键的扫描识别,在图1中,单片机与键盘矩阵间的双箭头线表示单片机在扫描键盘矩阵时,P0口和P2口分别作为输入/输出口使用。人机接口电路则利用了单片机P1口的大部分口线,并通过或门向INT0发出中断请求,该部分电路主要完成MIDI电子琴的通道设置和音色选择等人机交互功能。键盘的弹奏信息以及通道、音色信息经CPU处理后,由串口将标准的MIDI数据发送给MIDI音源及放大器,推动扬声器发声。
图1:MIDI电子琴结构示意图
图2:MIDI电子琴电路图
音源模块采用MD2064 套板,如图3所示。它是一种模块化的MIDI音源产品,由得理电子公司开发,具有标准MIDI接口,该板能接受标准GM MIDI命令进行音乐播放,自带3D, REVERB, CHORUS等效果处理。由于该套板的MIDI 接口采用了光耦合器,电流驱动,故设计了由Q1、Q2等器件组成的驱动电路,使单片机串口数据得以正常传输。在模块的耳机输出端取得信号后,经小功率放大即可推动扬声器发声。
2、电子琴的软件设计特点
该电子琴软件采用模块化设计方法,程序也较简单。软件中各功能模块都由相应的子程序完成,主要包含通道选择模块,音色选择模块,48按键键盘扫描模块,串口发送模块等,其中为了及时完成用户命令,音色选择模块采用了中断服务子程序,可以在演奏中快速响应使用者的请求。
主程序在完成串口初始化、相关变量的初始化以及设置通道后,即进入键盘扫描、发送音符消息流程,为了使按键识别准确可靠,还设置了两个缓冲区BUFF1和BUFF2保存键盘扫描值。主程序流程图如图3。
图3:MIDI电子琴程序的流程图
以下是部分功能模块的程序设计介绍。
2.1 音色选择模块的设计
该模块的功能是使MIDI电子琴能按要求快速改变音色,所以采用了中断服务子程序。当某个音色选择按键压下时,通过或门向单片机的INT0发出中断请求,CPU响应后进入该中断服务子程序。MIDI技术规范规定,标准MIDI含有128种音色,它们的编号范围是0~127,为了能够快速找到所需音色,硬件中设置3个按键,其中2个用于音色编号的单步增加和减小,每次增加或减小1个音色编号,另外一个键用于音色快进,当快进键有效时,每次增加8个音色编号,选择增加8个音色的原因是:标准MIDI的128种音色是按每8个音色一组编排的,共包含16个乐器组。电子琴开机时默认的音色编号是0,即大钢琴音色。
单片机的P1.2口线连接着音色增加按键,P1.3则连接音色减小按键,P1.4连接音色快进键。低电平时按键有效,这三个按键通过与门连接外部中断INT0,以便实时响应音色设置。该外部中断0的中断服务子程序流程图见图4,(图中省去了按键延时去抖动部分):
图4:音色改变子程序流程图
在该子程序中,变量TAMBER中存放当前音色,其值可在0~127间循环,当TAMBER是最大值127时,加1后又变为0;而当TAMBER为0时,减1则变为127;在边界范围加8取模后,刚好为其对应的音色值。
2.2 串口发送模块
串口发送模块主要用于发送产生的MIDI消息,串口采用的模式1,发送的波特率是31.25KBPS。串口通过驱动电路连接MIDI音源,发送MIDI消息。通道号存放在变量CHANNEL中,通过与90H相与,所得值就是当前所设置的通道号。
2.3 键盘扫描模块
本电子琴提供了48个MIDI按键,即4个8度音的音域范围,当按下单个键时,产生一条MIDI消息,当按下多个键值时产生对应键值的多条MIDI音符开消息,当某个键值被释放时,发送对应的音符关消息。这些MIDI消息通过串口发送给MIDI音源,产生MIDI音乐。音乐的时值由按键的时间长度控制,当按键被释放,实时产生MIDI消息,关闭被释放的键值音。
由P0口和P2口的P2.0~P2.5构成行列式键盘,也可继续扩展键盘,例如改为常用的49键或64键。因为支持复音按键,键盘扫描程序必须扫描到行列式键盘的每个键值,扫描所得的键值存放在缓冲区BUFF1或BUFF2中。键盘扫描程序获得的键盘编号范围是0~47,还需将这个键盘编号值转换为MIDI设备能够识别的钢琴键盘编号,这个功能由一个子程序来完成,限于篇幅本文不再详述。键盘扫描子程序流程如图5。
图5:键盘扫描子程序
㈥ 单片机流程图是根据实物画的吗.先画流程图再去做实物可以吗
实物流程图只是一个概念,和草稿原理相通,就是用纸表达,有这个模块,然后如何走向,大概绘制出有什么器件,然后按照草稿,把图画出来
㈦ 单片机程序流程图如何写文字说明
单片机程序流程图用文字叙述如下:
上电,复位初始化,进入系统待机,如果没有传感器信号产生的中断就一直等待感器信号触发中断,如果有传感器信号发出中断则进入触发警报服务程序,等待停止警报按钮按下,解除警报,等待按下复位按钮对系统初始化再次进入系统,等待中断触发状态。
编程大概有80%精力放在流程图,剩下的就是用语言描述而已。所以编程最难的不是把代码写出来,而是把流程图画出来。有了流程图,编程就简单很多了。