基于单片机的简易电子琴设计(汇编语言内容摘要:
块三大模块。 7 第二章 系统的软件设计 软件是该电子琴控制系统的重要组成部分,在系统的软件设计中我们也才用了模块化设计,将系统的各部分功能编写成子模块的形式,这样增强了系统软件的可 读性和可移植性。 音乐弹奏原理 由于一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样就可以利用不同的频率的组合,即可弹奏出我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时 /计数器来产生这样的方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。 演奏中,每一音符对应着确定的频率,我们将每一音符的时间常数和其相应的节拍常数作为一组,按顺序将乐曲中的所有常数排列成一个表,然后由查表程序依次取出,产生音符并控制节奏,就可以实现演奏效果。 电 子琴弹奏部分:实际上就是把每个按键所对应的值经过处理后发给单片机,再在单片机内把数字当作指针指向所对应的音符。 如下表所示: 按 键 音 阶 S1 do S2 re S3 mi S4 fa S5 so S6 la S7 xi S8 音 乐 音乐弹奏设计 发音电路有三极管、电阻和扬声器组成,接在 ,通过定时器溢出的时间不同, 输出的脉冲频率不同,三极管导通的频率也不同, 8 从而扬声器根据不同频率的脉冲发出的声音也不相同。 如下表所示: 各音符频率 与计数值 T的关系 音符 频率 Hz 半周期( ms) 简谱码 T 定时值( H) 简谱码 T 定时值 (D) 低 Do 131 F117 61719 低 Re 147 F2B7 62135 低 Mi 165 F42A 62506 低 Fa 175 F4D7 62679 低 So 196 F609 62985 低 La 220 F71F 63263 低 Si 247 F818 63512 中 Do 262 F88C 63628 中 Re 294 F95B 63835 中 Mi 330 FA15 64021 中 Fa 349 FA67 64103 中 So 392 FB04 64260 中 La 440 FB90 64400 中 Si 494 FC0C 64524 高 Do 262 FC44 64580 高 Re 294 FCAC 64684 高 Mi 330 FD09 64777 高 Fa 349 FD2A 64810 高 So 392 FD82 64898 高 La 440 FDC8 64968 高 Si 494 FE2E 65070 软件流程图 本系统中单片机 89C51的主要功能就是实现音乐播放功能。 其主程序流程如图 41所示。 9 上位机软件及程序 本系统的上位机软件主要是编辑电子琴播放状态的内容,在设计中采用汇编语言编写了电子琴控制系统控制和播放内容的程序。 ORG 0000H SJMP M1 ORG 000BH MOV TH0,R1 ;设置定时器初值 MOV TL0,R0 CPL ;输出方波 RETI 10 M0:MOV R5,00H M1:CLR A MOV C, ;判断是否为按键 1 MOV ,C JZ DO MOV C, ;判断是否为按键 2 MOV ,C JZ RAI MOV C, ;判断是否为按键 3 MOV ,C JZ MI MOV C, ;判断是否为按键 4 MOV ,C JZ FA MOV C, ;判断是否为按键 5 MOV ,C JZ SO MOV C, ;判断是否为按键 6 MOV ,C JZ LA MOV C, ;判断是否为按键 7 11 MOV ,C JZ XI MOV C, ;判断是否为按键 8 MOV ,C JZ M7 LJMP M1 M7:LJMP M2 DO:MOV R1,0FCH ;设定各音节初值 MOV R0,43H MOV R2,08H CLR ;打开灯 D1 LJMP NEXT RAI:MOV R1,0FCH MOV R0,0ABH MOV R2,08H CLR ;打开灯 D2 LJMP NEXT MI:MOV R1,0FDH MOV R0,08H MOV R2,08H CLR ;打开灯 D3 LJMP NEXT 12 FA:MOV R1,0FDH MOV R0,33H MOV R2,08H CLR ;打开灯 D4 LJMP NEXT SO:MOV R1,0FDH MOV R0,81H MOV R2,08H CLR ;打开灯 D5 LJMP NEXT LA:MOV R1,0FDH MOV R0,0C7H MOV R2,08H CLR ;打开灯 D6 LJMP NEXT XI:MOV R1,0FEH MOV R0,05H MOV R2,08H CLR ;打 开灯 D7 LJMP NEXT NEXT:CLR A 13 MOV TMOD,01H ;设定定时器工作方式 MOV IE,82H ;开启总中断 MOV TH0,R1 ;设置初值 MOV TL0,R0 SETB TR0 ;开启中断 0 LOOP1: LCALL D200C ;调用延时 DJNZ R2,LOOP1 ;判定是否延时完 CLR TR0 ;关闭中断 MOV A,0FFH ;关灯 MOV P2,A LJMP M1 ;跳转主程序 M5:CJNE R5,04H,M9。 判断是否为歌曲 4 MOV DPTR,QU LJMP LOOP M9:CJNE R5,05H,M8 ;判断是否为铃声 MOV DPTR,LS LJMP LOOP M8:CJNE R5,06H,M10 ;判断按键是否到第 6次 M10:LJMP M0 M4:CJNE R5,03H,M5 ;判定是否为歌曲 3 MOV DPTR,PL LJMP LOOP 14 M3:CJNE R5,02H,M4 ;判定是否为歌曲 2 MOV DPTR,LING LJMP LOOP M2:INC R5 ;记录按键 8次数 CJNE R5,01H,M3 ;判定是否为歌曲 1 MOV DPTR,TAB LOOP: CPL ;打开灯 D8 CLR A MOVC A,@A+DPTR ;取音符 MOV R1,A INC DPTR CLR A MOVC A,@A+DPTR MOV R0,A ORL A,R1 JZ NEXT0 ;判定是否为结束符号 MOV A,R0 ANL A,R1 CJNE A,0FFH,NEXT3 ;判定是否为休止符 CLR TR0 MOV R2,04H LCALL D200C 15 INC DPTR LJMP LOOP NEXT3: MOV TMOD,01H ;设定定时器工作方式 MOV IE,82H ;开启总中断 MOV TH0,R1 ;设置初值 MOV TL0,R0 SETB TR0 ;开 启中断 0 SJMP NEXT2 NEXT0:CLR TR0 ;关中断 MOV A,0FFH ;关灯 MOV P2,A LJMP M1 ;跳转至主程序 NEXT2: CLR A INC DPTR MOVC A,@A+DPTR ;取节拍 MOV R2,A LOOP3: LCALL D200C ;调用延时 DJNZ R2,LOOP3 ;判断是否延时完 INC DPTR ;跳到下一音符 LJMP LOOP D200C:MOV R3,65H ;延时子程序 16 D200B:MOV A,0FFH D200A:DEC A JNZ D200A DEC R3 CJNE R3,00H,D200B RET TAB:DB。基于单片机的简易电子琴设计(汇编语言
相关推荐
{ display(m,n,x,y)。 if(P1_0==0) 当检测暂停键按下,开中断,跳出暂停 { delay(1)。 if(P1_0==0) { while(P1_0==0)。 EA=1。 break。 } } } }} 半场交换比分子程序void key3() { int temp。 定义中间变量temp,检测到有按键按下时候 if(zidong==1amp。 amp。
CHS0 确定。 其 转换速度由控制寄存器中的 SPEED1 和SPEED0 确定。 在使用之前,应先给 ADC 上电,也就是置位控制寄存器中的ADC_POWER 位。 STC12C5616AD 单片机的 A/D 转换功能的控制主要有 ADC_CONTR 控制寄存器 来实现 ,其各个位的功能如表 所示。 表 特殊功能寄存器 ADC_CONTR Address B7 B6 B5 B4 B3 B2
11 1 0 1 01 编码标准(1)RC5在 RC5 标准中的 RC5,应用的是双相位编码。 载波频率为 36kHz。 相似的传输标准可在在 30kHz 到 56kHz 中应用。 一个字的传输由两个起始位开始;而后是翻转位,每按一次键翻转位变化一次,可由翻转位区分用户的按键颤抖;接着是五位地址码;地址码后就是要传输的命令。 每一个字中包含有频率为 36KHz 的 32 个脉冲。 (2)NEC
模拟输入中的一路 ALE:地址锁 存允许信号,输入,高电平有效。 START: A/ D 转换启动信号,输入,高电平有效。 EOC: A/ D 转换结束信号,输出,当 A/ D 转换结束时,此端输出一个高电平(转换期间一直为低电平)。 OE:数据输出允许信号,输入,高电平有效。 当 A/ D 转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。 CLK:时钟脉冲输入端。
第四章 系统主电路 设计 主电路 本设计整流电路由不可控的二极管三相桥式整流桥组成 ,采用功率晶体管 GTR 组成的直流 PWM功率变换器。 三相交流电源经三相桥式不可控整流器变换为电压恒定的直流电源 ,再经直流 PWM 功率变换器得到可调的直流电压 ,给直流电动机供电。 主电路如图33 所示 从图中可以看出, 380V 电压经过六个二极管的全波整流,变为直流。 采用大功率电容 C滤波
缓冲器可驱动(吸收或输出电流方式) 4个 TTL 输入。 在 89C51 中, P3 端口还用于一些专门功能,这些兼用功能见表 表 P3端口兼用功能表 Flash 存储器的编程 AT89C51 单片机内部有一个 4K 字节的 Flash PEROM。 这个 Flash 存储阵列通常是处于已擦除状态(既存储单元的内容为 FFH),随时可对它进行编程。 编程接口可接收高电 端口引脚 兼 用 功 能