单片机+电子琴设计+八个音调+三首歌+歌词显示.docx
- 文档编号:11888589
- 上传时间:2023-06-03
- 格式:DOCX
- 页数:16
- 大小:30.50KB
单片机+电子琴设计+八个音调+三首歌+歌词显示.docx
《单片机+电子琴设计+八个音调+三首歌+歌词显示.docx》由会员分享,可在线阅读,更多相关《单片机+电子琴设计+八个音调+三首歌+歌词显示.docx(16页珍藏版)》请在冰点文库上搜索。
单片机+电子琴设计+八个音调+三首歌+歌词显示
系统功能说明:
1、通过八个按键是否按下发出相应的1234567i这8个音调
2、实验中可以播放三首歌曲,通过开关控制
3、播放歌曲时,液晶屏显示播放歌曲号及歌词
附录1:
晶振为12M的音乐频率表
音符频率(Hz)简谱码(T值)
低1DO26263628TH0=F7HTL0=24H
#1DO#27763731TH0=F8HTL0=F3H
低2RE29463835TH0=F9HTL0=5BH
#2RE#31163928TH0=F9HTL0=B8H
低3M33064021TH0=FAHTL0=15H
低4FA34964103TH0=FAHTL0=67H
#4FA#37064185TH0=FAHTL0=B9H
低5SO39264260TH0=FBHTL0=04H
#5SO#41564331TH0=FBHTL0=4BH
低6LA44064400TH0=FBHTL0=90H
#646664463TH0=FBHTL0=CFH
低7SI49464524TH0=FCHTL0=0CH
中1DO52364580TH0=FCHTL0=44H
#1DO#55464633TH0=FCHTL0=79H
中2RE58764684TH0=FCHTL0=ACH
#2RE#62264732TH0=FCHTL0=DCH
中3M65964777TH0=FDHTL0=09H
中4FA69864820TH0=FDHTL0=34H
#4FA#74064860TH0=FDHTL0=5CH
中5SO78464898TH0=FDHTL0=82H
#5SO#83164934TH0=FDHTL0=A6H
中6LA88064968TH0=FDHTL0=C8H
#693264994TH0=FDHTL0=E2H
中7SI98865030TH0=FEHTL0=06H
高1DO104665058TH0=FEHTL0=22H
#1DO#110965085TH0=FEHTL0=3DH
高2RE117565110TH0=FEHTL0=56H
#2RE#124565134TH0=FEHTL0=6EH
高3M131865157TH0=FEHTL0=85H
高4FA139765178TH0=FEHTL0=9AH
#4FA#148065198TH0=FEHTL0=AEH
高5SO156865217TH0=FEHTL0=C1H
#5SO#166165235TH0=FEHTL0=D3H
高6LA176065252TH0=FEHTL0=E4H
#6186565268TH0=FEHTL0=F4H
高7SI196765283TH0=FFHTL0=03H
休止符用TH0=FFH,TL0=FFH表示
附录2:
LCD相关资料
两行液晶显示的地址:
(均为十六位计数)
0123456789ABCDEF
404142434445464748494A4B4C4D4E4F
命令格式要求,设置地址指针的时候第8位为1,后边为地址,即AC0~AC6,就是对应上表的地址。
附录3:
实验程序:
RSBITP2.0;定义液晶显示端口标号
RWBITP2.1
EBITP2.2
;********************************************
T0THEQU24H;T0两个暂存变量
T0TLEQU23H
ORG0000H
LJMPINITION
ORG000BH
LJMPT0INT
ORG0100H
;********************************************
;*************************液晶初始化******************
INITION:
MOVSP,#70H
MOVP0,#01H;清屏
CALLENABLE
MOVP0,#38H;8位,2行显示
CALLENABLE
MOVP0,#0CH;屏显on,关光标
CALLENABLE
MOVP0,#06H;计数地址加1,自动右移
CALLENABLE
;******************************************
;开机提示
;******************************************
MOVP0,#80H
CALLENABLE
MOVDPTR,#TABLE0;写数据的第一行
CALLWRITE1
MOVP0,#00010000B;光标左移两位
CALLENABLE
MOVP0,#00010000B
CALLENABLE
CALLDEL0
LJMPMAIN
;*********************************************写指令
ENABLE:
CLRRS
CLRRW
SETBE
CALLDEL0
CLRE
RET
;**********************************************写数据
WRITE1:
MOVR1,#00H;查表程序,从表头到表尾
A1:
MOVA,R1
MOVCA,A+DPTR
CALLWRITE2
INCR1
CJNEA,#00H,A1;未到字符串末尾继续
RET
WRITE2:
MOVP0,A;直接将数据写入液晶屏
SETBRS
CLRRW
SETBE
CALLDEL0
CLRE
RET
DEL0:
MOVR4,#020H
C0:
MOVR5,#020H
C1:
DJNZR5,C1
DJNZR4,C0
RET
;******************************************
TABLE0:
DB'WELHERE',00H
;*************************内存初始化******************
INITIAL:
MOVR3,#08H
MOVR0,#30H
M1:
MOVR0,#00H
INCR0
DJNZR3,M1
RET
;*************************选择按键播放八个音调******************
MAIN:
MOVSP,#80H;初始化堆栈
MOVTMOD,#11H;定时器0工作方式0,定时器1工作方式0
SETBEA
SETBET0;计数器0允许
SETBET1;计数器1允许
START:
SETBP3.7;关蜂鸣器
CLRTR0;定时器不允许
SCAN:
;键盘扫描
MOVA,P1
CJNEA,#0FFH,SU_KEY;判断键盘按下,跳到SU_KEY,若未按,继续扫描
NOP
LJMPSCAN
SU_KEY:
SU_KEY1:
P1.0,SU_KEY2;如果不是第1个键按下,转
MOVDPH,#0FCH
MOVDPL,#44H
SJMPPLAY
SU_KEY2:
P1.1,SU_KEY3;如果不是第2个键按下,转
MOVDPH,#0FCH
MOVDPL,#0ACH
SJMPPLAY
SU_KEY3:
P1.2,SU_KEY4;如果不是第3个键按下,转
MOVDPH,#0FDH
MOVDPL,#09H
SJMPPLAY
SU_KEY4:
P1.3,SU_KEY5;如果不是第4个键按下,转
MOVDPH,#0FDH
MOVDPL,#34H
SJMPPLAY
SU_KEY5:
P1.4,SU_KEY6;如果不是第5个键按下,转
MOVDPH,#0FDH
MOVDPL,#82H
SJMPPLAY
SU_KEY6:
P1.5,SU_KEY7;如果不是第6个键按下,转
MOVDPH,#0FDH
MOVDPL,#0C8H
SJMPPLAY
SU_KEY7:
P1.6,SU_KEY8;如果不是第7个键按下,转
MOVDPH,#0FEH
MOVDPL,#06H
SJMPPLAY
SU_KEY8:
P1.7,KEY1;如果不是第8个键按下,转
MOVDPH,#0FEH
MOVDPL,#22H
SJMPPLAY
PLAY:
MOVT0TH,DPH;存高位字符
MOVT0TL,DPL;存低位字符
MOVTH0,T0TH
MOVTL0,T0TL
SETBTR0;启动定时器0
MOVR2,#01B;1/4拍
DJNZR2,PLAY
LCALLDELAY
SJMPJUDGE
JUDGE:
P2.4,START;按键未按下,则继续扫描,否则,开始放音乐
;*************************选择按键播放音乐******************
KEY1:
P2.5,KEY2;第一个键(P2.5)按下,放音音乐1
MOVR2,#00H
LCALLMODD;歌曲号显示
MOVDPTR,#MU_TAB1
AJMPMUSIC
KEY2:
P2.6,KEY3;第二个键(P2.6)按下,放音乐2
MOVR2,#01H
LCALLMODD;歌曲号显示
MOVDPTR,#MU_TAB2
AJMPMUSIC
KEY3:
P2.7,NEXT_2;第三个键(P2.7)按下,放音乐3
MOVR2,#02H
LCALLMODD;歌曲号显示
MOVDPTR,#MU_TAB3
AJMPMUSIC
NEXT_2:
LJMPSTART;返回
MUSIC:
MOVTMOD,#01H
MOVIE,#82H;允许T0中断
MOVR7,#00H
LOOP:
CLRA
MOVCA,A+DPTR;查表取代码
MOVR1,A;定时器高八位存R1
INCDPTR
PUSHDPH;保护现场
PUSHDPL
GECI1:
P2.5,GECI2;第一个键(P2.5)按下,显示歌词1
MOVDPTR,#GE1
AJMPGECI
GECI2:
P2.6,GECI3;第二个键(P2.6)按下,显示歌词2
MOVDPTR,#GE2
AJMPGECI
GECI3:
P2.7,TIAOCHU;第三个键(P2.7)按下,显示歌词3
MOVDPTR,#GE3
AJMPGECI
TIAOCHU:
LJMPSTART
GECI:
LCALLQINGCHU
MOVP0,#0C0H;显示的位置
CALLENABLE
XIANSHI1:
MOVA,R7;查表取音乐汉语拼音显示
MOVCA,A+DPTR
CALLWRITE2
INCR7
CJNEA,#00H,XIANSHI1
MOVP0,#00010000B;将光标左移一位
CALLENABLE
MOVP0,#00010000B;将光标左移一位
CALLENABLE
POPDPL
POPDPH
CLRA
MOVCA,A+DPTR
MOVR0,A;定时器低八位存R0
ORLA,R1
JZNEXT0;相或结果全0为休止符
MOVA,R0
ANLA,R1
CJNEA,#0FFH,NEXT;相与结果为0FFH表示乐曲结束
MOVP0,#01H;清屏
CALLENABLE
LJMPINITION;从头开始演奏
NEXT:
MOVT0TH,R1;装定时初值
MOVTH0,T0TH
MOVT0TL,R0
MOVTL0,T0TL
SETBTR0;启动定时器
SJMPNEXT1
NEXT0:
CLRTR0;关闭定时器
NEXT1:
CLRA
INCDPTR
MOVCA,A+DPTR;查延时常数
MOVR2,A
LOOP1:
ACALLD200
DJNZR2,LOOP1;控制延时次数
INCDPTR
AJMPLOOP
D200:
MOVR3,#81H;延时程序
D200B:
MOVA,#0FFH
D200A:
DECA
JNZD200A
DECR3
CJNER3,#00H,D200B
RET
QINGCHU:
MOVA,#00100000B
MOVP0,#0C0H;将第二行的第一位置0
LCALLENABLE
LCALLWRITE2
MOVA,#00100000B;将第二行的第二位置0
MOVP0,#0C1H
LCALLENABLE
LCALLWRITE2
MOVA,#00100000B;将第二行的第三位置0
MOVP0,#0C2H
LCALLENABLE
LCALLWRITE2
MOVA,#00100000B;将第二行的第四位置0
MOVP0,#0C3H
LCALLENABLE
LCALLWRITE2
MOVA,#00100000B;将第二行的第五位置0
MOVP0,#0C4H
LCALLENABLE
LCALLWRITE2
MOVA,#00100000B;将第二行的第六位置0
MOVP0,#0C5H
LCALLENABLE
LCALLWRITE2
MOVA,#00100000B;将第二行的第七位置0
MOVP0,#0C6H
LCALLENABLE
LCALLWRITE2;将第二行的第三位置0
;以上等价程序如下
;GECI:
MOVR3,#00H;控制循环次数
;QINGCHU:
;MOVA,#00100000B;置空格
;PUSHA
;MOVR4,#0C0H;地址
;MOVA,R4
;MOVP0,A
;POPA
;INCR4
;DECR3;控制循环次数
;CJNER3,#00H,QINGCHU;计满十次则执行转移
;***************************************************
;定时器0中断子程序,定时音乐
;***************************************************
T0INT:
;中断服务子程序
MOVTH0,T0TH
MOVTL0,T0TL
CPLP3.7;反相输出,演示音乐
RETI
;******************************************
;显示
;******************************************
MODD:
MOVP0,#8EH
LCALLENABLE
MOVA,R2
MOVDPTR,#TABLE2
MOVCA,A+DPTR
LCALLWRITE2
RET
TABLE2:
DB31H,32H,33H
GE1:
db'xin',00h,'nian',00h,'hao',00h,'ya',00h,'xin',00h,'nian',00h,'hao',00h,'ya',00h
db'zhu',00h,'fu',00h,'da',00h,'jia',00h,'xin',00h,'nian',00h,'hao',00h
GE2:
DB'liang',00H,'zhi',00H,'lao',00H,'hu',00H,'liang',00H,'zhi',00H,'lao',00H,'hu',00H,'pao',00H,'de',00H,'kuai',00H
DB'pao',00H,'de',00H,'kuai',00H,'yi',00H,'zhi',00H,'mei',00H,'you',00H,'yan',00H,'jing',00H,'yi',00H,'zhi',00H
DB'mei',00H,'you',00H,'er',00h,'duo',00h,'zhen',00h,'qi',00h,'guai',00h,'zhen',00h,'qi',00h,'guai',00h
GE3:
DB'wo',00h,'ai',00h,'bei',00h,'jing',00h,'tian',00h,'an',00h,'men',00h,'tian',00h,'an',00h
;*************************延时子程序******************
DELAY:
MOV30H,#100;延长时间等待,键盘消抖
D1:
MOVR5,#200
D2:
DJNZR5,D2
DJNZ30H,D1
RET
;*******************新年好******************************
MU_TAB1:
DB0FEH,25H,04H,0FEH,25H,04H
DB0FEH,25H,06H,0FDH,80H,06H
DB0FEH,84H,04H,0FEH,84H,04H
DB0FEH,84H,06H,0FEH,25H,06H
DB0FEH,25H,04H,0FEH,84H,04H
DB0FEH,0C0H,04H,0FEH,84H,04H
DB0FEH,98H,04H,0FEH,84H,04H
DB0FEH,57H,06H
DB0FFH,0FFH
;*******************两只老虎****************************
MU_TAB2:
DB0FCH,44H,06H,0FCH,0ACH,06H,0FDH,09H,06H,0FCH,44H,06H
DB0FCH,44H,06H,0FCH,0ACH,06H,0FDH,09H,06H,0FCH,44H,06H
DB0FDH,09H,06H,0FDH,34H,06H,0FDH,0A6H,06H
DB0FDH,09H,06H,0FDH,34H,06H,0FDH,0A6H,06H
DB0FBH,04H,04H,0FDH,0C8H,04H,0FBH,04H,04H,0FDH,34H,04H
DB0FDH,09H,04H,0FCH,44H,04H,0FBH,04H,04H,0FDH,0C8H,04H
DB0FBH,04H,04H,0FDH,34H,04H,0FDH,09H,04H,0FCH,44H,04H
DB0FCH,44H,06H,0FDH,0A6H,06H,0FCH,44H,06H
DB0FCH,44H,06H,0FDH,0A6H,06H,0FCH,44H,06H
DB0FFH,0FFH
;*******************我爱天安门****************************
MU_TAB3:
DB0FDH,82H,06H,0FEH,22H,04H,0FDH,82H,04H,0FDH,34H,04H
DB0FDH,09H,04H,0FCH,0ACH,04H,0FCH,44H,06H
DB0FFH,0FFH,0FFH,0FFH
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 电子琴 设计 八个 音调 三首歌 歌词 显示