《单片机电子琴课程设计报告(共32页).doc》由会员分享,可在线阅读,更多相关《单片机电子琴课程设计报告(共32页).doc(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上1 课程设计的意义单片机自20世纪70年代问世以来,已对人类社会产生了巨大的影响。尤其是美国Intel公司生产的MCS-51系列单片机,由于其具有集成度高、处理功能强、可靠性高、系统结构简单、价格低廉、易于使用等优点,在工业控制、智能仪器仪表、办公室自动化、家用电器等诸多领域得到广泛的应用。20世纪80年代中期以后,Intel公司已把精力集中在CPU芯片的开发、研制上,并逐渐放弃了单片机芯片的生产,但是以MCS-51内核技术为主导的单片机已经成为许多厂家及公司竞相选用的对象。因此,Intel公司以专利转让或技术交换的形式把MCS-51的内核技术转让给了许多国际上著名的
2、半导体芯片生产厂家,如ATMEL、PHILIPS、Cygnal等公司。这些厂家生产的与MCS-51系列单片机兼容的各种增强型、扩展型单片机,已成为世界上8位单片机市场的主流产品。估计在今后若干年内,它们仍是我国8位单片机应用领域的主流机型。音乐已经成为现代人们生活所不可缺少的艺术,美妙的音乐可以让人放松,使人愉悦,电子琴作为一种乐器已经得到很多音乐人的重视和应用,一个质量好的电子琴可以做出让人欣赏的美好音乐,所以作为从事电子技术领域的我们来说,能做出质量优越的电子琴是我们的义务和责任,虽然今天我们做的是简易电子琴,但其已经具有电子琴的基本功能,为以后的进一步开发研究奠定一个良好的基础。本课程设
3、计的目的是为了深入了解MCS-51系列单片机的功能以及应用,学会制作简单的电子琴。会使用LCD显示屏,对其有进一步的了解。2 方案论证2.1 设计的任务本课程设计的任务是应用单片机制作一个简易的电子琴,能够准确发出基本的音符,并且同时能将音符在显示屏上现实出来。2.2 设计的要求利用所给键盘的1,2,3,4,5,6,7,8八个键,能够发出8个不同的音调,并且要求按下键发声,松开延时一段时间停止,中间再按别的键则发另外一音调的声音。当系统扫描到有按键被按下,则快速检测出是哪一个键被按下,然后单片机的定时器被启动,发出一定频率的脉冲,该频率的脉冲经喇叭驱动电路放大滤波后,就回发出相应的音调。如果在
4、前一个按下的键发声的同时有另一个键被按下,则启用中断系统,前面键的发音停止,转到后按的键发音程序,发出后按的键的音调。2.3创新部分1用一个诺基亚5110显示屏来显示当前所发出的音符,便于使用者对音符的识别,还可以编辑一首歌并同时显示歌词和时间。2.可播放音乐。2.4各部分元器件选用方案论证2.4.1 单片机的选用STC单片机是一款增强型5l单片机,完全兼容MCS-51。STC89C52可以代替AT89C51,而且功能更强,速度更快,寿命更长,价格更低。该单片机具有40个引脚,采用双列直插DIP-40封装。STC89C52可以完成ISP在线编程功能,而AT89C51则不能。因此,将AT89C5
5、1中的程序直接烧录到STC89C52中后,STC89C52就可以代替AT89C51直接工作。STC推出的系列51单片机芯片全面兼容其它51单片机。STC89C52内部有E2PROM,可以在程序中修改,而且断电不丢失数据。此外,还增加了两级中断优先级等等。2.4.2 显示元件的选用液晶显示模块采用的是NOKIA公司生产的LCD5110液晶显示模块。该液晶屏为48*84点阵的格式,每个英文字符占用6*8个点阵,一行可以显示14个字符,可以显示六行。汉字可以采用两种点阵方式显示,一种是12*12点阵,一种是16*16点阵,一共可以显示3行汉字。LCD5110有10个引脚,原理图如图1所示:图1 LC
6、D5110模块引脚图引脚1为LCD5110的复位键,由软件控制即可。引脚2为片选端,引脚3用于控制输入的数据是命令还是普通数据。引脚5为液晶显示器的时钟输入,引脚6为电源输入端,引脚8为电源地。引脚7为背光控制开关,低电平打开背光。引脚9、10用于扩展。2.4.3 键盘的选用常用键盘分为独立式键盘接口和行列式键盘接口。本次课题设计使用的是独立式键盘接口。独立式键盘接口就是各键是相互独立的,每个按键各接一条输入线,检验输入线电平的高低可以很容易判断哪个按键被按下。这种键盘适用于按键较少后操作速度较高的场合。我们共用了9个按键,其中8个按键控制1、2、3、4、5、6、7、i的发音。还有一个按键控制
7、LCD屏的显示。2.4.4 电源的选用要想使单片机正常运行,可靠、稳定的电源必不可少,在以往的电子设计中,我们一般制作5V电源,这样做的目的是通过变压器变压,将民用220V电直接转为5V电供单片机使用,在没有电脑USB时可以直接找一个插座接上便可使用。但缺点是制作成本较高,且体积较大,烧录程序时还需要另配烧录器。由于我们在课程设计过程中时刻都要使用笔记本电脑,且程序需要在线烧写,故我们选择使用了USB烧录器,既可以在线烧写程序也可以当作电源使用,方便快捷。2.4.5 其他元器件的选用在确定了单片机芯片、诺基亚5110显示屏、电源模块和按键后,我们还确定选用排针、排阻、导线若干以及用于单片机最小
8、系统的电容、晶振、电阻等。3 系统硬件设计3.1 总体设计本设计采用STC89C50032RC单片机作为系统控制芯片,单片机对P0口的按键进行查询,如果有按键按下,则产生相应频率的脉冲通过P2.0口输出,再经过放大电路驱动扬声器,发出相应的音调。在显示系统中对当前的音符进行显示。系统的总体框图如图2所示:STC89C528个按键P1口放大电路P2.0口5110显示屏P0口蜂鸣器(无图2 系统总体框图3.2 单片机最小系统最小系统包括晶振电路、复位电路和电源部分。最小系统电路图如图3所示:图3 最小系统电路图3.3 按键的连接一共有八个按键,分别和单片机的P1口相连,并分别连接一个上拉电阻。电路
9、图如图4所示:图4 按键连接电路图3.4 蜂鸣器的连接蜂鸣器经过一个放大电路和单片机的P2.0口相连,选用无源蜂鸣器。电路图如图5所示:图5 蜂鸣器连接电路图3.5 显示屏的连接显示屏总共有八个引脚,其中VCC和GND分别接3.3V电源和接地,其他引脚与单片机的P0口相连。电路图如图6所示:图6 显示屏连接电路图3.6 整体电路综合上面所介绍的各个模块的电路图的连接情况,最后总结出整体的电路图。整体电路图如图7所示:图7 整体连接电路图4 系统软件设计4.1主程序的设计设计软件应从设计主程序着手开始,而设计程序应从流程图开始,经过考察论证,查阅资料,再根据所学的单片机编程的知识,最后总结出主程
10、序的流程图如图8所示:初始化设置开始判断是否有按键按下延时10ms判断是否仍然有按键按下查看是哪个按键按下,并跳转到相应的程序段设置相应的指针偏移量调用显示子程序,调用定时子程序,开始定时进入定时服务子程序结束NYYN图8 主程序流程图4.2 显示子程序的设计指令格式分为两种模式:如果D/C(模式选择)置为低,当前字节解释为命令字节(见表1)。如果D/C置为高,接下来的字节将存储到显示数据RAM。每一个数据字节存入之后,地址计数自动递增。在数据字节最后一位期间会读取D/C信号的电平。每一条指令可用任意次序发送到PCD8544。首先传送的是字节的MSB(高位)。当SCE为高时,串行接口被初始化。
11、在这个状态,SCLK时钟脉冲不起作用,串行接口不消耗电力。SCE上的负边缘使能串行接口并指示开始数据传输。表1 命令字节4.3 定时子程序的设计定时子程序只需将TAB中对应的数值送给定时器的初值寄存器,然后开始定时。5 软硬件联调5.1 调试步骤第一:按照整体电路图焊接硬件,硬件实物图如图9所示:图9 硬件实物图第二:编辑软件程序,用Uv4对程序进行编译,编译无误后保存,再用protuse对软件进行仿真。图10 硬件运行结果图第三:将硬件通过USB与RS-232串口转换线与电脑连接,用STC下载软件将编译完成后的程序下载烧录到硬件中,观察硬件的运行结果。硬件运行结果如图10所示:5.2 软硬件
12、联调过程中出现的问题和解决办法问题1:将USB烧写器尾部的短路帽子摘掉后插上电脑,程序无法烧写进芯片。解决措施:将STC中单片机的设置更改为STC89C52型号的,再将波特率改小一点,端口设置正确即可。问题2:程序烧录进去后显示屏不显示任何数字。解决措施:将USB口从电脑上拔下然后再插入即可。问题3:按键按下之后扬声器的声音抖动。解决措施:将放大电路检查一遍再将每个焊点焊实即可。6 课设计总结6.1 收获通过一个多星期的课程设计,从选题到查资料,从完善原理图到写报告文档,让我明白了课程设计是名副其实的综合性训练,不仅要运用学过的单片机技术及应用,数字电路、模拟电路以及电子技术实验等知识,还要学
13、会查阅各种图书资料和工具书,并将新知识和所学的结合起来为自己所用。在做整个课程设计的过程中,我进一步熟悉使用了protuse仿真软件和Uv4软件编辑软件,能较好的应用这些软件,不管是文本程序的编写还是在顶层原理图的设计都有所提高,还增强了动手能力。应用软件的时候,要注意积累每次的体会和错误,下次碰到该注意的地方就要小心点,碰到出过错误的地方就要格外注意不要再犯同样的错误,这种方法应该适用做任何一件事吧。在设计中遇到一些困难和问题,在向老师请教和与同学的讨论中,解决了问题,觉得很有收获。6.2 心得体会一个星期很快就过去了,这一周我收获了很多。在过去的一周里,我和耿勇杰、张兴旺、张扬组成的小组,
14、经过大家一起坚持不懈的努力,最终完成了我们选择的单片机课题设计电子琴设计。在原设计的基础上,我们还加入了显示模块。用诺基亚5110的液晶显示屏,完成弹奏音符的显示,使设计更加完美。在这一个星期里,我们先把以前收集的资料进行了整理。在做课设之前,我们已经通过学校的图书馆和网络,进行了资料的收集,对基于单片机的电子琴设计有了大体的了解和认识。并且在这学期得课余时间,我们经过研究和讨论,制定了设计的基本思路,并焊接完成了硬件电路。这个星期我们的任务安排主要是完成电子琴的程序和5110液晶显示的程序,进行程序调试,使之在硬件上实现,最后完成任务书。在最初的两天里,先进行的是电子琴的程序设计,了解的音乐
15、产生的原理。音乐的产生是通过单片机的IO端口输出高低不同的脉冲信号来控制蜂鸣器发声。不同的音频信号的周期不同,通过单片机的定时器,给定时器设置不同的初值,通过定时器中断,中断过程中对IO端口取反,就得到了音频信号的脉冲。通过这次课设,我掌握了单片机设计单子琴的工作原理,又复习了单片机定时器的工作原理,熟练了计数初值的计算。把自己感兴趣的电子琴和学习的单片机知识联系到了一起,设计过程中,既再次学习了单片机的知识,对学习的知识有了更深刻的认识和理解;又获得了快乐,自己设计了简易的电子琴。用自己的设计弹奏出简单的音乐,还挺有成就感的。兴趣是最好的老师,把自己的兴趣和所学的知识结合起来,学以致用,理论
16、应用于实践,这是我最大的收获。完成电子琴的发音程序后,我们开始编写5110液晶显示屏的程序。5110液晶屏与一般课本上介绍的液晶显示屏不太一样。我们用的5110液晶显示屏,只有8个引脚,引脚越少,电路的连接越简单。可是看着越简单的东西,实际上要弄明白它的工作和使用就越难。由于5110液晶显示屏的资料比较少,我们又没有接触过。一开始我们先从其它的液晶显示屏资料开始研究,希望可以通过类比,了解5110液晶显示屏。再弄明白了其它液晶显示屏以后,我们开始编写5110的显示程序,编写完成后,与硬件进行调试却失败了。改程序,与硬件连接调试,失败;再改程序,再与硬件连接调试,再失败这样的过程重复了不知多少遍
17、。调试了两天以后,我们又把5110液晶显示屏的资料拿出来认真的研究,把指令集看了又看,这次我们注重分析了5110液晶屏与其它液晶屏的区别。放弃了通过其它液晶屏来认识5110,而是直接分析5110液晶屏。因为通过学习我们发现,两样东西即使它是类似的,可是在汇编的过程中,一点微小的区别也是不同的。后来在网上我们找到了5110液晶显示驱动PCD8544的使用手册,经过讨论和研究,我们再次编写了程序,结果和硬件连接了几次,还是失败了。最后我们只得求助于柳老师,刘老师编写完程序后,一开始也没有显示,老师把硬件断电再接电后,显示成功。于是我们也把自己写的程序下载到硬件中,断电再接电,显示也成功了。再郁闷了
18、这么长时间后,发现只是因为这个小动作,所以一直没有显示,我们在显示成功高兴的同时,也有点小无奈。真是细节决定成败啊。通过对5110液晶显示屏的使用,锻炼了我的自学能力。对一个从来没有接触过的器件,通过自己的学习,分析和研究,最终完成任务。这对我来说还是第一次,在这第一次的过程中,我走了很多弯路。一开始不知道如何下手,先是研究错了方向,学习和研究了许多其他的液晶显示屏。而后又拿着5110的资料不知道从哪看起,不知道那是编程要用的重点,只好把资料都看了。再后来又对5110的资料有不少不理解的地方,对引脚的控制和它的工作有许多模糊的地方,只好在编程时,一次次的实验,验证那种理解是正确的。虽然这个过程
19、曲折,而又让我觉得无奈。但是,在最后显示成功后,通过自己的努力而获得的喜悦,是无以言表的。并且,通过这次学习,我初步学会了看器件的使用手册,看指令表。学会了要想使用一个你不了解的器件,应该看什么,应该注意什么。你要看器件的参数,看各个引脚的连接和作用,看指令表。在编程的过程中,要严格按照指令表编写程序,不能自己想当然。大学教育和课题设计的目的,就是教会我们如何自学,锻炼我们独立思考的能力,在这次课设中,我有了切身的体会。老师在编写5110显示程序时,本身老师也没有接触过5110的汇编。老师根据资料,通过简单的阅读,就把C语言的5110的显示程序,改成了汇编,并且显示成功。我们的资料和老师看的差
20、不多,却折腾了两三天才把程序编写出来。我们一定会通过努力向老师看齐。最后,我们还发现了蜂鸣器的问题,一开始我们用的蜂鸣器是有源的,声音小,把分压电阻短路后,声音大了,可是一直“滴滴”响个不停。上网查证后,发现蜂鸣器分为有源和无源的,电子琴设计要用无源的蜂鸣器。虽然是个小问题,但是也增加了一个小知识点。通过这次课题设计,我的收获很大。我们获得了知识,完成了设计,锻炼了独立思考能力,和动手能力。我也体会到无论是硬件设计还是软件编程,细节决定成败,一定要认真对待每一个小步骤。最后,谢谢柳延领老师的指导和帮助。参考文献1.基于Proteus的8051单片机实例教程 李学礼 主编 电子工业出版社 2.P
21、roteus教程电子线路设计、制版与仿真 朱清慧 张凤蕊 翟天嵩 王志奎 编著 清华大学出版社 3.单片机原理及应用技术 陈益飞主编 国防工业出版社 4.单片机控制实训指导及综合应用实例 张大明 主编 机械工业出版社 附录电子琴课程设计程序源代码 SCE EQU P2.1 RES EQU P2.2 DC EQU P2.3 SDIN EQU P3.0 SCLK EQU P3.1 RX DATA 55H RY DATA 56H ;单片机初始化 ORG 0000H LJMP MAIN ORG 0003H LJMP PNT0 ORG 000BH LJMP INT_T0 ORG 001BH LJMP T
22、IME1 ;设置定时器01工作方式0,开中断MAIN:MOV SP,#70H MOV TMOD,#11H SETB EA SETB ET0 SETB ET1 SETB F0 ;LCD5110复位,清屏,初始化功能SRART: SETB RES SETB SCE SETB SCLK CALL CLEAR CLR RES NOP SETB RES NOP LCALL LCDRST LCALL LCD ;判断是否有键按下KEY: MOV P1,#0FFH MOV A,P1 XRL A,#0FFH JZ KEY2 LCALL DE10MS MOV A,P1 MOV R5,A XRL A,#0FFH J
23、NZ TKEY SJMP KEYKEY2:MOV A,P2 JNB ACC.5,L1 L2:SJMP KEY L1:LCALL DE10MS MOV A,P2 JB ACC.5,L2 LJMP FLCD ;判断那个键按下了TKEY:MOV A,R5 JNB ACC.0,K1 SJMP K2 K1: MOV R2,#0 MOV DPTR,#TLCD1 ;设置LCD5110显示字的表格位置 MOV 51H,DPH MOV 50H,DPL LCALL SLCD LJMP MUSIC K2: JNB ACC.1,KK2 SJMP K3 KK2:MOV R2,#2 MOV DPTR,#TLCD2 MOV
24、 51H,DPH MOV 50H,DPL LCALL SLCD LJMP MUSIC K3: JNB ACC.2,KK3 SJMP K4 KK3:MOV R2,#4 MOV DPTR,#TLCD3 MOV 51H,DPH MOV 50H,DPL LCALL SLCD LJMP MUSIC K4: JNB ACC.3,KK4 SJMP K5 KK4:MOV R2,#6 MOV DPTR,#TLCD4 MOV 51H,DPH MOV 50H,DPL LCALL SLCD LJMP MUSIC K5: JNB ACC.4,KK5 SJMP K6 KK5:MOV R2,#8 MOV DPTR,#TLC
25、D5 MOV 51H,DPH MOV 50H,DPL LCALL SLCD LJMP MUSIC K6: JNB ACC.5,KK6 SJMP K7 KK6:MOV R2,#10 MOV DPTR,#TLCD6 MOV 51H,DPH MOV 50H,DPL LCALL SLCD LJMP MUSIC K7: JNB ACC.6,KK7 SJMP K8 KK7:MOV R2,#12 MOV DPTR,#TLCD7 MOV 51H,DPH MOV 50H,DPL LCALL SLCD LJMP MUSIC K8: JNB ACC.7,KK8 LJMP KEY KK8:MOV R2,#14 MOV
26、 DPTR,#TLCD8 MOV 51H,DPH MOV 50H,DPL LCALL SLCD ;取按键对应音符,设置定时器0的初值MUSIC:MOV A,R2 MOV DPTR,#TAB MOVC A,A+DPTR MOV R7,A MOV TH0,R7 INC R2 MOV A,R2 MOVC A,A+DPTR MOV R6,A MOV TL0,R6 SETB TR0 ;判断按键是否释放LOOP:MOV P1,#0FFH MOV A,P1 XRL A,#0FFH JNZ LOOP ;按键释放后再响一段时间DETY:MOV R4,#200 LP1:MOV R3,#126 DJNZ R3,$
27、DJNZ R4,LP1 CLR TR0 LJMP KEY ;消除抖动延时10MSDE10MS:MOV R1,#10 LP2:MOV R0,#248 DJNZ R0,$ DJNZ R1,LP2 RET ;片P2.0口取反,提供音乐脉冲INT_T0:PUSH PSW PUSH ACC MOV TH0,R7 MOV TL0,R6 CPL P2.0 POP ACC POP PSW RETIPNT0:PUSH PSW PUSH ACC JNB TR0,RE2KEY1:CLR TR0 MOV P1,#0FFH MOV A,P1 XRL A,#0FFH JZ KEY1 LCALL DE10MS MOV P1
28、,#0FFH MOV A,P1 MOV R5,A XRL A,#0FFH JNZ RE3 RE3:POP PSW POP ACC LJMP TKEY RE2:POP PSW POP ACC RETI ;LCD5110清屏CLEAR:MOV 52H,#6 CLR1:MOV 53H,#84 CLR2:MOV A,#0 CALL WR_D DJNZ 53H,CLR2 DJNZ 52H,CLR1 RET ;LCD5110初始化LCDRST:MOV A,#21H LCALL WR_C MOV A,#0C8H LCALL WR_C MOV A,#20H LCALL WR_C MOV A,#0CH LCAL
29、L WR_C RET ;LCD5110显示“电子琴设计” LCD:SETB F0 MOV RY,#40H MOV RX,#80H LCALL SET_XY MOV DPTR,#LCD0 LCALL WDATA MOV RY,#41H MOV RX,#80H LCALL SET_XY MOV DPTR,#LCD1 LCALL WDATA MOV RY,#40H MOV RX,#90H LCALL SET_XY MOV DPTR,#LCD2 LCALL WDATA MOV RY,#41H MOV RX,#90H LCALL SET_XY MOV DPTR,#LCD3 LCALL WDATA MOV
30、 RY,#40H MOV RX,#0A0H LCALL SET_XY MOV DPTR,#LCD4 LCALL WDATA MOV RY,#41H MOV RX,#0A0H LCALL SET_XY MOV DPTR,#LCD5 LCALL WDATA MOV RY,#40H MOV RX,#0B0H LCALL SET_XY MOV DPTR,#LCD6 LCALL WDATA MOV RY,#41H MOV RX,#0B0H LCALL SET_XY MOV DPTR,#LCD7 LCALL WDATA MOV RY,#40H MOV RX,#0C0H LCALL SET_XY MOV D
31、PTR,#LCD8 LCALL WDATA MOV RY,#41H MOV RX,#0C0H LCALL SET_XY MOV DPTR,#LCD9 LCALL WDATA RET ;LCD5110写指令子程序 WR_C:CLR SCE CLR DC CALL SENT SETB SCE RET ;LCD5110写数据子程序 WR_D:CLR SCE SETB DC CALL SENT SETB SCE RET;LCD5110设置XY坐标SET_XY:MOV A, RY CALL WR_C MOV A,RX CALL WR_C RET ;LCD5110串行输入8位数据SENT:MOV 54H,
32、#08H RS:RLC A MOV SDIN,C CLR SCLK NOP NOP SETB SCLK DJNZ 54H,RS RET;写入汉字数据WDATA:MOV 57H,#16 STR0:MOV A,#00H MOVC A,A+DPTR LCALL WR_D INC DPTR DJNZ 57H,STR0 RET/电LCD0:DB 0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0xFFDB 0x88,0x88,0x88,0x88,0xF8,0x00,0x00,0x00LCD1:DB 0x00,0x00,0x1F,0x08,0x08,0x08,0x08,0x7FDB
33、0x88,0x88,0x88,0x88,0x9F,0x80,0xF0,0x00/子LCD2:DB 0x80,0x82,0x82,0x82,0x82,0x82,0x82,0xE2DB 0xA2,0x92,0x8A,0x86,0x82,0x80,0x80,0x00LCD3:DB 0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7FDB 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00/琴LCD4:DB 0x82,0x92,0x92,0xFE,0x92,0x92,0x82,0x00DB 0x82,0x92,0x92,0xFE,0x92,0x92
34、,0x82,0x00LCD5:DB 0x08,0x08,0x08,0x14,0x14,0x12,0x16,0x99DB 0x52,0x32,0x14,0x04,0x08,0x08,0x08,0x00/设LCD6:DB 0x40,0x40,0x42,0xCC,0x00,0x40,0xA0,0x9EDB 0x82,0x82,0x82,0x9E,0xA0,0x20,0x20,0x00LCD7:DB 0x00,0x00,0x00,0x3F,0x90,0x88,0x40,0x43DB 0x2C,0x10,0x28,0x46,0x41,0x80,0x80,0x00/计LCD8:DB 0x40,0x40,0
35、x42,0xCC,0x00,0x40,0x40,0x40DB 0x40,0xFF,0x40,0x40,0x40,0x40,0x40,0x00LCD9:DB 0x00,0x00,0x00,0x7F,0x20,0x10,0x00,0x00DB 0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00 ;LCD5110音符显示SLCD:MOV RY,#43H MOV RX,#0A8H LCALL SET_XY LCALL WDATA1 RET;写入音符数据WDATA1:MOV 55H,#6 STR:MOV A,#00H MOVC A,A+DPTR LCALL WR_D INC
36、DPTR DJNZ 55H,STR RET ;音符数据TLCD1: DB 00H,84H,0FEH,0FEH,80H,00HTLCD2:DB 86H,0C3H,0E3H,0B3H,9FH,8EHTLCD3:DB 44H,83H,92H,92H,0FEH,6CHTLCD4:DB 38H,2CH,26H,0FFH,20H,20HTLCD5:DB 00H,0DEH, 9EH, 92H,0F2H, 62HTLCD6:DB 7CH, 0FEH, 92H, 92H, 0E2H,64HTLCD7:DB 03H, 01H, 0E1H, 0F1H, 0FH,07H TLCD8:DB 00H, 84H, 0fdH
37、, 0FDH, 80H,00H ;音符频率初值TAB:DW 64580,64684,64777,64820 DW 64898,64968,65030,65058 FLCD:JNB F0,CHEN ;跳转到显示“谢谢”的子程序 LJMP START2 ;跳转到播放音乐子程序 CHEN:SETB F0 MOV RY,#40H MOV RX,#80H LCALL SET_XY LCALL CLEAR NOP NOP MOV RY,#40H MOV RX,#80H LCALL SET_XY MOV DPTR,#FLCD0 LCALL WDATA MOV RY,#41H MOV RX,#80H LCAL
38、L SET_XY MOV DPTR,#FLCD1 LCALL WDATA MOV RY,#40H MOV RX,#90H LCALL SET_XY MOV DPTR,#FLCD0 LCALL WDATA MOV RY,#41H MOV RX,#90H LCALL SET_XY MOV DPTR,#FLCD1 LCALL WDATA MOV RY,#40H MOV RX,#0A0H LCALL SET_XY MOV DPTR,#FLCD2 LCALL WDATA MOV RY,#41H MOV RX,#0A0H LCALL SET_XY MOV DPTR,#FLCD3 LCALL WDATA M
39、OV RY,#40H MOV RX,#0B0H LCALL SET_XY MOV DPTR,#FLCD4 LCALL WDATA MOV RY,#41H MOV RX,#0B0H LCALL SET_XY MOV DPTR,#FLCD5 LCALL WDATA MOV RY,#40H MOV RX,#0C0H LCALL SET_XY MOV DPTR,#FLCD6 LCALL WDATA MOV RY,#41H MOV RX,#0C0H LCALL SET_XY MOV DPTR,#FLCD7 LCALL WDATA SJMP KEY ;跳转回键盘扫描子程序/谢FLCD0:DB 0x40,0x42,0xCC,0x04,0x00,0xFC,0x56,0x55DB 0xFC,0x50,0x90,0x10,0xFF,0x10,0x10,0x00FLCD1:DB 0x00,0x00,0x3F,0x50,0x29,0x11,0x4D,0x83DB 0x7F,0x00,0x41,0x80,0x7F,0x00,0x00,0x00/柳FLCD2:DB 0x10,0x