单片机+电子琴设计+八个音调+三首歌+歌词显示
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
系统功能说明:
1、通过八个按键是否按下发出相应的1234567i这8个音调
2、实验中可以播放三首歌曲,通过开关控制
3、播放歌曲时,液晶屏显示播放歌曲号及歌词
附录1:晶振为12M的音乐频率表
音符频率(Hz)简谱码(T值)
低1DO 262 63628 TH0=F7H TL0=24H #1DO# 277 63731 TH0=F8H TL0=F3H 低2RE 294 63835 TH0=F9H TL0=5BH #2RE# 311 63928 TH0=F9H TL0=B8H 低3M 330 64021 TH0=FAH TL0=15H 低4FA 349 64103 TH0=FAH TL0=67H #4FA# 370 64185 TH0=FAH TL0=B9H 低5SO 392 64260 TH0=FBH TL0=04H #5SO# 415 64331 TH0=FBH TL0=4BH 低6LA 440 64400 TH0=FBH TL0=90H #6 466 64463 TH0=FBH TL0=CFH 低7SI 494 64524 TH0=FCH TL0=0CH 中1DO 523 64580 TH0=FCH TL0=44H #1DO# 554 64633 TH0=FCH TL0=79H 中2RE 587 64684 TH0=FCH TL0=ACH #2RE# 622 64732 TH0=FCH TL0=DCH 中3M 659 64777 TH0=FDH TL0=09H 中4FA 698 64820 TH0=FDH TL0=34H #4FA# 740 64860 TH0=FDH TL0=5CH 中5SO 784 64898 TH0=FDH TL0=82H #5SO# 831 64934 TH0=FDH TL0=A6H 中6LA 880 64968 TH0=FDH TL0=C8H #6 932 64994 TH0=FDH TL0=E2H 中7SI 988 65030 TH0=FEH TL0=06H 高1DO 1046 65058 TH0=FEH TL0=22H #1DO# 1109 65085 TH0=FEH TL0=3DH 高2RE 1175 65110 TH0=FEH TL0=56H #2RE# 1245 65134 TH0=FEH TL0=6EH 高3M 1318 65157 TH0=FEH TL0=85H 高4FA 1397 65178 TH0=FEH TL0=9AH #4FA# 1480 65198 TH0=FEH TL0=AEH 高5SO 1568 65217 TH0=FEH TL0=C1H #5SO# 1661 65235 TH0=FEH TL0=D3H 高6LA 1760 65252 TH0=FEH TL0=E4H #6 1865 65268 TH0=FEH TL0=F4H 高7SI 1967 65283 TH0=FFH TL0=03H 休止符用TH0=FFH ,TL0=FFH表示
附录2:LCD相关资料
两行液晶显示的地址:(均为十六位计数)
0 1 2 3 4 5 6 7 8 9 A B C D E F
40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F
命令格式要求,设置地址指针的时候第8位为1,后边为地址,即AC0~AC6,就是对应上表的地址。
附录3:实验程序:
RS BIT P2.0 ;定义液晶显示端口标号
RW BIT P2.1
E BIT P2.2
;********************************************
T0TH EQU 24H ;T0两个暂存变量
T0TL EQU 23H
ORG 0000H
LJMP INITION
ORG 000BH
LJMP T0INT
ORG 0100H
;********************************************
;*************************液晶初始化******************
INITION:
MOV SP,#70H
MOV P0,#01H ;清屏
CALL ENABLE
MOV P0,#38H ;8位,2行显示
CALL ENABLE
MOV P0,#0CH ;屏显on,关光标
CALL ENABLE
MOV P0,#06H ;计数地址加1,自动右移
CALL ENABLE
;******************************************
;开机提示
;******************************************
MOV P0,#80H
CALL ENABLE
MOV DPTR,#TABLE0 ;写数据的第一行
CALL WRITE1
MOV P0,#00010000B ;光标左移两位
CALL ENABLE
MOV P0,#00010000B
CALL ENABLE
CALL DEL0
LJMP MAIN
;*********************************************写指令
ENABLE:
CLR RS
CLR RW
SETB E
CALL DEL0
CLR E
RET
;**********************************************写数据
WRITE1:
MOV R1,#00H ;查表程序,从表头到表尾
A1:
MOV A,R1
MOVC A,@A+DPTR
CALL WRITE2
INC R1
CJNE A,#00H,A1 ;未到字符串末尾继续
RET
WRITE2:
MOV P0,A ;直接将数据写入液晶屏
SETB RS
CLR RW
SETB E
CALL DEL0
CLR E
RET
DEL0:MOV R4,#020H
C0:MOV R5,#020H
C1: DJNZ R5,C1
DJNZ R4,C0
RET
;******************************************
TABLE0:DB 'WELCOM HERE',00H
;*************************内存初始化******************
INITIAL:
MOV R3,#08H
MOV R0,#30H
M1:
MOV @R0,#00H
INC R0
DJNZ R3,M1
RET
;*************************选择按键播放八个音调****************** MAIN: MOV SP,#80H ;初始化堆栈
MOV TMOD,#11H ;定时器0工作方式0,定时器1工作方式0