×
嵌入式 > 嵌入式开发 > 详情

单片机电子琴电路图及源程序代码

发布时间:2020-08-24 发布时间:
|

实验仿真图

源程序代码:(弹奏部分代码暂时去掉,见谅,需要的留言,转载请注明出处,谢谢!)

DUAN EQU 0c000H
WEI EQU 0a000H
LED0 EQU 8000H
ORG 0000H ;复位地址
LJMP MAIN ;跳转到主程序
ORG 0003H ;外部中断0入口地址
LJMP INT00 ;跳转到外部中断0服务程序
ORG 000BH ;T0中断入口
LJMP TIM0 ;跳转到T0中断服务程序


ORG 0030H ;主程序入口地址
MAIN:

MOV DPTR,#LED0
MOV A,#00H
MOVX @DPTR,A


MOV TMOD,#01H ;写入T0控制字, 16位定时方式
SETB IT0 ;外部中断为下降沿触发
MOV IE,#83H ;开中断
MOV 30H,#00H ;取简谱码指针
MOV R6,#0FFH ;选择音乐节奏灯循环次数
CLR 23H ;功能选择标志 00:键盘 01:音乐

NEXT: CLR TR0
JNB 23H,KEYPLAY ;若标志位是0则转到键盘程序
SETB P2.2
MOV A,30H ;简谱码指针装入A
JNB P0.1,START1 ;否则查询播放哪一首歌曲
JNB P0.2,START2
JNB P0.3,START3
LJMP NEXT

;确定不同歌曲的基地址
START1:

MOV DPTR,#TABLE ;从TABLE处取简谱码
MOV 60H,DPH
MOV 61H,DPL
MOV A,#00H
LJMP NEXT1
START2:

MOV DPTR,#TABLE2 ;从TABLE2处取简谱码
MOV 60H,DPH
MOV 61H,DPL
MOV A,#01H
LJMP NEXT1
START3:

MOV DPTR,#TABLE3 ;从TABLE处取简谱码
MOV 60H,DPH
MOV 61H,DPL
MOV A,#02H
LJMP NEXT1

;键盘弹奏程序入口
KEYPLAY: ;键盘程序入口
SETB P2.1
CLR P2.2
JNB P0.4,LOWTONE ;查询是高音还是其他的音
JNB P0.5,MIDDLETONE
JNB P0.6,HIGHTONE
LJMP NEXT ;没有选择高中低音则重新查询


;确定高中低音基地址
LOWTONE:
MOV DPTR,#LOWTABLE ;赋基地址值
MOV 50H,DPH
MOV 51H,DPL
LJMP KEY ;跳转到按键查询程序

MIDDLETONE:
MOV DPTR,#MIDDLETABLE
MOV 50H,DPH
MOV 51H,DPL
LJMP KEY

HIGHTONE:
MOV DPTR,#HIGHTABLE
MOV 50H,DPH
MOV 51H,DPL
LJMP KEY


;歌曲播放程序
NEXT1: MOV DPTR,#SEG7
MOVC A,@A+DPTR
MOV DPTR,#DUAN
MOVX @DPTR,A
MOV DPTR,#WEI
MOV A,#000BH
MOVX @DPTR,A
MOV DPH,60H
MOV DPL,61H
MOV A,30H
MOVC A,@A+DPTR
MOV R2,A ;取得的简谱码暂存于R2
JZ END0 ;是否取到结束码00H
ANL A,#0FH ;不是,则取节拍码
MOV R5,A ;节拍码存于R5
MOV A,R2 ;将简谱码装入A
SWAP A ;高、低4位交换
ANL A,#0FH ;取音符码
JNZ SING ;取得的音符码是否为0?
CLR TR0 ;是则不发音
lJMP D1 ;跳转到D1

SING: DEC A ;取得的音符码减1(不含0)
MOV 22H,A ;存入22H单元
RL A ;乘2
MOV DPTR,#TABLE1 ;到TABLE1中取相对的高位字节值
MOVC A,@A+DPTR
MOV TH0,A ;取得的高位字节装入TH0和21H单元
MOV 21H,A
MOV A,22H ;再装入取得的音符码
Rl A ;乘2
INC A ;加1
MOVC A,@A+DPTR ;到TABLE1中取相对的低位字节值
MOV TL0,A ;取得的高位字节装入TL0和20H单元
MOV 20H,A
SETB TR0 ;启动T0
D1: LCALL DELAY ;基本单位时间1/4拍,延时187毫秒
INC 30H ;取简谱码指针加1
LJMP NEXT ;取下一个码
END0: CLR TR0 ;停止T0
CLR 30H ;清零简朴指针
LJMP NEXT ;重复循环



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
Recogni:将高端AI芯片推向自动驾驶边缘