为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 数字音乐盒

数字音乐盒

2017-10-16 38页 doc 173KB 63阅读

用户头像

is_597436

暂无简介

举报
数字音乐盒数字音乐盒 单片机课程设计报告 数字音乐盒 摘要 本设计是基于51系列的单片机进行的数字音乐盒的设计,可以完成演奏音乐,显示乐曲播放的时间,并驱动LCD,显示歌曲号及播放时间,也可在LED显示歌曲号。 音乐盒的设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的AT89C51单片机, 输入采用4×4矩阵键盘,显示采用七段显示数码管LED。软件方面从分析音乐盒功能、流程图设计,再到程序的编写进行系统设计。 设计的结果能够完成演奏乐曲(最少三首乐曲,每首不少于30秒),开机时有英文欢迎提...
数字音乐盒
数字音乐盒 单片机课程设计 数字音乐盒 摘要 本设计是基于51系列的单片机进行的数字音乐盒的设计,可以完成演奏音乐,显示乐曲播放的时间,并驱动LCD,显示歌曲号及播放时间,也可在LED显示歌曲号。 音乐盒的设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的AT89C51单片机, 输入采用4×4矩阵键盘,显示采用七段显示数码管LED。软件方面从音乐盒功能、流程图设计,再到程序的编写进行系统设计。 设计的结果能够完成演奏乐曲(最少三首乐曲,每首不少于30秒),开机时有英文欢迎提示字符,播放时显示歌曲序号(或名称),可通过功能键选择乐曲,暂停,播放。在设计的同时对单片机的理论基础和外围扩展知识进行了比较全面准备。在硬件与软件设计时,没有良好的基础知识和实践经验会受到很大限制,每项功能实现时需要那种硬件,程序该如何编写等,没有一定的基础就不可能很好的实现。 具体实现功能: 1.利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而 演奏乐曲(最少三首乐曲,每首不少于30秒)。 2(采用LCD显示信息。 3(开机时有英文欢迎提示字符,播放时显示歌曲序号(或名称)。 4(可通过功能键选择乐曲,暂停,播放。 5(显示乐曲播放时间或剩余时间。 目录 1概述 ....................................................................................................................... 3 1.1单片机总体功能简介................................................................................... 4 1.2输入键盘功能综述 ...................................................................................... 4 1.3 输出LED显示功能综述 ............................................................................ 4 2系统总体及硬件设计 .................................................................................... 7 2.1系统设计要求 .............................................................................................. 7 2.2总体设计方案 .............................................................................................. 7 2.3系统硬件设计 .............................................................................................. 7 3 软件设计 .............................................................................................................. 9 3.1矩阵键盘设计 .............................................................................................. 9 3.2音乐盒模块设计 ........................................................................................ 10 4 Proteus软件仿真 ................................................................................................. 11 4.1Proteus ISIS简介 ......................................................................................... 11 4.2Proteus运行流程 ......................................................................................... 11 4.3Proteus功能仿真 ........................................................................................ 12 5课程设计体会 ...................................................................................................... 13 参考文献 ................................................................................................................ 14 附1 源程序代码 .................................................................................................... 15 附2 系统原理图 .................................................................................................... 32 1 1概述 单片机是单片微型机的简称,故又称为微控制器MCU(Micro Control Unit)。通常由单块集成电路芯片组成,内部包含有计算机的基本功能部件:中央处理器CPU,存储器和I/O接口电路等。因此,单片机只要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。 1.1单片机总体功能简介 单片机是在工业测控需要背景下而产生的,在一个应用系统中。按照测控系统的特点和要求,单片机的应用可分为单机应用和多机应用两大类。我们这次要完成的单片机课程设计就是它的单机应用,下面在介绍一下单片机在单机应用领域内的主要内容。 (1)智能产品 单片机与传统机械产品相结合,使传统机械产品结构简化,控制智能化,购成新一代机电一体化产品。目前,利用单片机构成的智能产品已广泛应用于家用电器、办公设备、数控机床、纺织机械、工业设备等行业。 (2)智能仪表 目前,各种传感器、变送器、控制仪表已普遍采用单片机应用系统。它集测量、处理、控制功能于一体,具有各种智能化功能,如存储、数据处理、查找、判断、联网和语音等功能。 2 单片机构成的智能仪表,能使仪表具有数字化、智能化、多功能化、综合化、柔性化等优点,赋予测量仪表以崭新的面貌,使传统的仪器、仪表发生根本性的变革,它代表了仪器仪表的发展趋势。 (3)测控技术 用单片机构成的各种工业控制系统中的数据采集系统具有工作稳定可靠、抗干扰能力强的优点,如炉温恒温控制系统、电镀生产自动控制系统等。 (4)智能接口 在计算机系统,特别是较大型的工业测控系统中,除通用外部设备外,还由许多外部通信、采集、多路分配管理、驱动控制等接口。这些外部设备与接口如果完全由主机进行管理,势必会造成主机负担过重,运行速度降低,接口的管理水平也不可能提高。如果用单片机进行接口的控制与管理,单片机与主机可并行加工处理,可以大量降低接口的通信密度,极大的提高了接口控制管理水平。在一些通用计算机外部设备上,已实现了单片机的键盘管理、打印机控制、绘图仪控制、硬盘驱动控制等。 1.2输入键盘功能综述 由于16个按键比较多,所以采用4×4矩阵编码键盘,在键盘设计总需要进行程序消抖,因为当按键按下时会有3,4MS的抖动时间,程序扫描速度非常快,如果没有消除抖动程序的,程序会检测到多次按键按下。 1.3 输出LED显示功能综述 在单片机应用系统中常用的显示器有发光二极管数码显示器LED和液晶显示器LCD。LED显示器具有耗电少、成本低廉、配置简单灵活,抗干扰性强等优点,但显示内容有限,且不能显示图形,因而其灵活性受到限制;LCD显示器除了具有LED特点外还能显示图形,但其驱动比较复杂。 本系统设计的计算器输出部分采用LED,因为音乐盒是8位显示,所以用8位7段LED动态显示,利用软件节省硬件外部资源。 1.4 AT89C51 单片机的主要特性 AT89C51单片机的主要工作特性是:内含4KB的可编程闪烁存储器,擦写次数1000次;内含128字节的RAM, 具有32根可编程I/O线,具有2个16位可编程定时器,具有6个中断源、5个中断矢量、2级优先权的中断结构,具有1个全双工的可编程串行通信接口,具有1个数据指针DPTR,两种低功耗工作模式,即空闲模式和掉电模式,具有可编的3级程序锁定位, 1.5 单片机引脚及功能 3 U11939XTAL1P0.0/AD0 38P0.1/AD137P0.2/AD21836XTAL2P0.3/AD3 35P0.4/AD434P0.5/AD533 P0.6/AD6932RSTP0.7/AD7 21P2.0/A822P2.1/A923 P2.2/A102924PSENP2.3/A113025ALEP2.4/A12 3126EAP2.5/A1327P2.6/A1428 P2.7/A15 110P1.0P3.0/RXD 211P1.1P3.1/TXD312P1.2P3.2/INT0413P1.3P3.3/INT1 514P1.4P3.4/T0615P1.5P3.5/T1716 P1.6P3.6/WRAT89C51817P1.7P3.7/RD 图1-1单片机引脚 - AT89C51 单片机采用40引脚的双列直插封装(DIP)形式,其引脚图 如图所示 Vcc:电源电压输入引脚 GND:电源地 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一写“1”时,被定义为高阻输入口。P0口能够用于外部程序数据存储器,它可以被定义为数据/地址的低8位。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入“1”后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流.P3口也可作为AT89C51的一些特殊功能口,如下表所示: 4 表1-2 管脚 备选功能 备注 P3.0 RXD 串行输入口 P3.1 TXD 串行输出口 P3.2 /INT0 外部中断0 P3.3 /INT1 外部中断1 P3.4 T0 记时器0外部输入 P3.5 T1 记时器1外部输入 P3.6 /WR 外部数据存储器写选通 P3.7 /RD 外部数据存储器读选通 P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 5 2系统总体方案及硬件设计 2.1系统设计要求 音乐盒设计要求: 数字 1.利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲(最少三首乐曲,每首不少于30秒) 2(采用LCD显示信息 3(开机时有英文欢迎提示字符,播放时显示歌曲序号(或名称) 4(可通过功能键选择乐曲,暂停,播放。 5(选作内容:显示乐曲播放时间或剩余时间 6. 编写程序,用Proteus软件进行仿真。 2.2总体设计方案 根据计算器的输入功能需求,采用4×4矩阵键盘,采用矩阵键盘也是利用软件节省硬件,利用内部ROM,进行循环查询。扬声器可以用一个准I,O口。 6 2.3系统硬件设计 图2-1系统总体硬件图 7 + 图2-2 LED数码显示电路 原理说明:当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。同时启动定时器T1,显示乐曲播放的时间,并驱动LCD,显示歌曲号及播放时间。也可在LED显示歌曲号。 (1) 硬件电路中用P1.0~P1.7控制按键,其中P1.0~P1.3扫描行,P1.4~P1.7扫描列。 (2) 用P0.0~P0.7,P2.0~P2.7控制LED,其中P0.0~P0.7控制七段码a,b,c,d,e,f,g,用P2.0~P2.7为数码管位选信号。 (3) 用,P2.0~P2.2作为LCD的RS,R/W,E的控制信号。用P0.0~P0.7作为LCD的D0~D7的控制信号。 (4) 用P3.7口控制蜂鸣器。 (5) 电路为12MHZ晶振频率工作,起振电路中C1,C2均为30pf。 8 3 软件设计 3.1矩阵键盘设计 键盘有两类,一类是编码键盘,即键盘上闭合键的识别由专门硬件来完成; 另一类是非编码键盘,键盘上键入即闭合键的识别由软件来实现。本系统的设计 采用非编码键盘,程序采用扫描方式。 开 始 P3端口初始化 读取P3端口状 态 是否有键按下 延迟10MS 是否有键按下 根据键值执行 图3-1扫描流程图 表3-1键盘示意图 0 1 2 3 4 5 6 7 8 9 A B C D E F 9 3.2音乐盒模块设计 图3-2控制流程图 附: 按键功能说明:1~A:十首歌曲;C:上一首歌曲;D:下一首歌曲;E:歌曲暂停;F:开机画面 10 4 Proteus软件仿真 4.1Proteus ISIS简介 Proteus ISIS是英国Labcenter它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路。 该软件的特点是: 1)全部满足我们提出的单片机软件仿真系统的,并在同类产品中具( 有明显的优势。 (2)具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统 2的仿真、RS,232动态仿真、I C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。 (3)目前支持的单片机类型有:ARM7系列、68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。 (4)支持大量的存储器和外围芯片。 总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大 ,可仿真ARM、51、AVR、PIC。 4.2Proteus运行流程 Proteus ISIS的工作界面是一种标准的Windows界面,如图所示。 包括:标栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。 运行Proteus程序后,进入软件的主界面。通过左侧工具栏中的P(从库中选择元件命令)命令,在Pick Devices 左侧窗口中选择所需元件的关键字,然后放置元件并调整方向和位置以及参数设置,最后进行连线。 4.3Proteus功能仿真 Proteus仿真效果 最后载入hex文件后可以进行模拟仿真,可以全速运行也可以单步调试运行。 11 图4-1系统仿真图 12 5课程设计体会 这次课程设计根据课题要求,复习了这学期所学的单片机内容,通过查询相关的资料,比较全面地了解了51系列单片机的相关知识。根据课程设计的要求和自己通过参考有关资料拟的方案,写好程序流程图,在程序流程图的基础上,根据芯片的功能写出相应的程序,达到能够实现所要求的功能的目的。 在写程序时,在每条指令后都写好注释,以便在程序出错的检查过程中可以更容易查找得到。 这次的单片机课程设计重点是理论与实际的相结合,不单单只是书上的一条条分离的指令。通过这次设计让我更系统的了解了个个指令以及单片机的扩展内容,为以后在实际工作中进行相关项目的设计积累了一定地经验。 通过这次毕业设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(特别是汇编语言)的掌握方面都能向前迈了一大步。 13 参考文献 【1】马忠梅,刘宾,戚军,马岩. 单片机C语言WINDOWS环境编程宝典. 北京: 北京航空航天大学出版社,2003 【2】马忠梅,籍顺心,张凯,马岩.单片机的C语言应用程序设计(第4版) 北京航空航天大学出版社,2007 北京: 【3】何立民. 单片机高级教程( 第1版(北京:北京航空航天大学出版社,2001 【4】赵晓安. MCS-51单片机原理及应用. 天津:天津大学出版社,2001.3 【5】李广第( 单片机基础( 第1版(北京:北京航空航天大学出版社,1999 【6】徐惠民、安德宁( 单片微型计算机原理接口与应用( 第1版( 北京: 北京邮电大学出版社,1996 【7】何立民(单片机与嵌入式系统应用,2002年,第5期:P5~8 【8】夏继强. 单片机实验与实践教程. 北京:北京航空航天大学出版,,2001 【9】陈志强 胡辉. 单片机应用系统设计实践指南. 机械工业出版社,2005 【10】肖洪兵. 单片机应用技术.电子工业出版社,2001 14 附录1 源程序代码 RS BIT P2.0 ;定义液晶显示端口标号 RW BIT P2.1 E BIT P2.2 ;******************************************** L50MS EQU 60H L1MS EQU 61H L250MS EQU 62H SEC EQU 65H MIN EQU 64H HOU EQU 63H ;******************************************* org 0000h ljmp main ORG 000BH LJMP TT0 ORG 001BH LJMP T1INT org 1000h main: ;-----------------------;液晶初始化 MOV SP,#70H MOV P0,#01H ;清屏 CALL ENABLE MOV P0,#38H ;8位,2行显示 lCALL ENABLE MOV P0,#0FH ;屏显on,光标on,闪烁on lCALL ENABLE MOV P0,#06H ;计数地址加1,显示幕on lCALL ENABLE ;-------------------------------内存初始化 lcall initil ;------------------------------- key1: lcall key lcall modd ljmp key1 ;---------------------键盘扫描 15 key: nop nop lcall ks jnz k1 ;有按键转到K1 lcall kaiji lcall SOP xn: ljmp key k1: lcall modd lcall modd lcall ks jnz k2 ljmp key k2: mov R2,#0feh ;读键盘 mov R4,#00h k3: mov A,R2 mov P1,A mov A,P1 JB ACC.4,L1 ;为1跳转,第一行无按键 mov a,#00h ljmp lk L1: jb acc.5,L2 mov a,#04h ljmp lk L2: jb acc.6,L3 mov a,#08h ljmp lk L3: jb acc.7,next1 mov a,#0ch ;------------------------------------------------------- lk: 16 add a,R4 push acc k4: lcall delay1 ;若同时有其他按键,则等待 lcall ks jnz k4 ;-------------------------------------------------------- mov r3,#07h clr a mov r0,#30h mov r1,#31h mm1: mov a,@r1 mov @r0,a inc r0 inc r1 djnz r3,mm1 pop acc mov @r0,a RET ;------------------------------------------------------ next1: inc R4 ;------列扫描 mov a,R2 JNB acc.3,n2 ljmp n1 n2: ljmp key n1: rl a mov R2,a ljmp k3 ;---------------------------------------------- ks: mov a,#0f0h ;判断P1口 mov P1,a nop nop 17 mov a,P1 cpl a anl a,#0f0h RET ;-------------------------------------------------- DELAY1: SETB RS0 dl: mov R5,#0ah dl2: mov R6,#63 dl3: nop nop djnz R6,dl3 djnz R5,dl2 CLR RS0 RET ;--------------------------------------------------- ;30H-37H初值为零 ;---------------------------------------------------- initil: mov r3,#08h mov r0,#30h m1: mov @r0,#00h inc r0 djnz r3,m1 RET ;---------------------------------------------------- ;显示 ;--------------------------------------------------- modd: MOV P0,#8EH lCALL ENABLE mov A,37H mov DPTR,#TABLE3 MOVC A,@A+DPTR 18 lCALL WRITE2 RET ;-------------------------------------------------- ;开机提示字 ;------------------------------------------------- kaiji: mov a,37h cjne a,#0fh,DFF MOV P0,#80H ;设光标地址 lCALL ENABLE MOV DPTR,#TABLE1;写数据 lCALL WRITE1 DFF: RET ;---------------------------------------------- ;按键值播放歌曲 ;---------------------------------------------- SOP: mov a,37h cjne a,#01h,A11 LCALL MODD MOV 52H,#HIGH TABLE10 MOV 53H,#LOW TABLE10 LCALL INITILE2 lcall MAIN0 A11: CJNE A,#02H,A22 LCALL MODD MOV 52H,#HIGH TABLE20 MOV 53H,#LOW TABLE20 LCALL INITILE2 lcall MAIN0 A22: CJNE A,#03H,A33 LCALL MODD MOV 52H,#HIGH TABLE30 MOV 53H,#LOW TABLE30 LCALL INITILE2 19 lcall MAIN0 A33: CJNE A,#04H,A44 LCALL MODD MOV 52H,#HIGH TABLE40 MOV 53H,#LOW TABLE40 LCALL INITILE2 lcall MAIN0 A44: CJNE A,#05H,A55 LCALL MODD MOV 52H,#HIGH TABLE50 MOV 53H,#LOW TABLE50 LCALL INITILE2 lcall MAIN0 A55: CJNE A,#06H,A66 LCALL MODD MOV 52H,#HIGH TABLE60 MOV 53H,#LOW TABLE60 LCALL INITILE2 lcall MAIN0 A66: CJNE A,#07H,A77 LCALL MODD MOV 52H,#HIGH TABLE70 MOV 53H,#LOW TABLE70 LCALL INITILE2 lcall MAIN0 A77: CJNE A,#08H,A88 LCALL MODD MOV 52H,#HIGH TABLE80 MOV 53H,#LOW TABLE80 LCALL INITILE2 lcall MAIN0 A88: CJNE A,#09H,A99 20 LCALL MODD MOV 52H,#HIGH TABLE90 MOV 53H,#LOW TABLE90 LCALL INITILE2 lcall MAIN0 A99: CJNE A,#0AH,AAA LCALL MODD MOV 52H,#HIGH TABLE100 MOV 53H,#LOW TABLE100 LCALL INITILE2 lcall MAIN0 AAA:RET ;****************************************** INITILE2: MOV L50MS,#20 MOV L1MS,#00H MOV L250MS,#00H MOV SEC,#00H MOV MIN,#00H MOV HOU,#00H MOV A,HOU MOV B,#10 DIV AB ADD A,#30H ;将BCD吗转化为ASIIC码 MOV P0,#0C8H ;显示小时十位 CALL ENABLE CALL WRITE2 MOV A,B ADD A,#30H MOV P0,#0C9H ;显示小时个位 CALL ENABLE CALL WRITE2 MOV A,#3AH MOV P0,#0DH ;显示冒号 CALL ENABLE CALL WRITE2 MOV A,MIN 21 MOV B,#10 DIV AB ADD A,#30H MOV P0,#0CBH ;显示分十位 CALL ENABLE CALL WRITE2 MOV A,B ADD A,#30H MOV P0,#0CCH ;显示分个位 CALL ENABLE CALL WRITE2 MOV A,#3AH MOV P0,#0CDH ;显示冒号 CALL ENABLE CALL WRITE2 MOV A,SEC MOV B,#10 DIV AB ADD A,#30H MOV P0,#0CEH ;显示秒十位 CALL ENABLE CALL WRITE2 MOV A,B ADD A,#30H MOV P0,#0CFH ;显示秒个位 CALL ENABLE CALL WRITE2 MOV P0,#0C0H ;设光标地址 CALL ENABLE MOV DPTR,#TABLE2;写数据 CALL WRITE1 RET ;*********************************************写指令 ENABLE: CLR RS CLR RW CLR E LCALL DELAY 22 SETB E RET ;**********************************************写数据 WRITE1: MOV R1,#00H A1: MOV A,R1 MOVC A,@A+DPTR CALL WRITE2 INC R1 CJNE A,#0FEH,A1 ;未到字符串末尾继续 RET WRITE2: MOV P0,A SETB RS CLR RW CLR E CALL DELAY SETB E RET ;********************************************** DELAY: MOV R4,#05 D1: MOV R5,#0FFH DJNZ R5,$ DJNZ R4,D1 RET ;---------------------------------------------- TAB: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h db 80h,90h,88h,83h,0c6h,0a1h,86h,8eh TAB1:db 89h,86h,0c7h,0c7h,0c0h TAB2:db 0c6h,88h,0c0h TABLE1:DB'WELCOM HERE',0FEH TABLE2:DB'DFF WB ',0FEH TABLE4:DB 'CAU',0FEH TABLE3:DB 30H,31H,32H,33h 23 DB 34H,35H,36H,37H DB 38h,39H,41H,42H DB 43H,44H,45H,46H ;-------------------------------------------------------------------- ;播放歌曲程序 ;-------------------------------------------------------------------- MAIN0: MOV TMOD,#11H MOV IE,#8aH ;MOV TH1,#3cH ;MOV TL1,#0b0H lcall ks jnz TTM12 MOV 40H,#00H ;--------------------------------------------------------- NEXT20: MOV A,40H MOV DPH,52H MOV DPL,53H MOVC A,@A+DPTR MOV R2,A JZ STOP ANL A,#0FH MOV R1,A MOV A,R2 SWAP A ANL A,#0FH JNZ SING CLR TR0 JMP W1 ;---------------------------------------------------------- SING: DEC A MOV 22H,A RL A MOV DPTR,#TABLE00 MOVC A,@A+DPTR MOV TH0,A 24 MOV 21H,A MOV A,22H RL A INC A MOVC A,@A+DPTR MOV TL0,A MOV 20H,A SETB TR0 SETB TR1 W1: LCALL DELAY30 INC 40H LCALL KS ;------有键跳出 JNZ STOP LJMP NEXT20 ;----------------------------------------------------------- STOP: CLR TR0 CLR TR1 LJMP MAIN0 ;---------------------------------------------------------- TTM12: LCALL K2 MOV A,37H CJNE A,#0EH,TTM13 CLR TR1 LCALL DELAY1 TTM120: LCALL KS LCALL DELAY1 JZ TTM120 LCALL K2 MOV A,37H CJNE A,#0EH,TTM120 SETB TR1 LJMP NEXT20 TTM13: CJNE A,#0CH,TTM14 25 MOV A,52H INC A MOV 52H,A MOV A,53H INC A MOV 53H,A MOV A,36H INC A MOV 37H,A LJMP TTM2 TTM14: CJNE A,#0DH,TTM2 MOV A,52H DEC A MOV 52H,A MOV A,53H DEC A MOV 53H,A MOV A,36H DEC A MOV 37H,A ;------------------------------------------------------ TTM2: RET ;*************************************************** ;定时器中断子程序0 ;*************************************************** TT0: PUSH ACC PUSH PSW MOV TL0,20H MOV TH0,21H CPL P3.7 POP PSW POP ACC RETI ;*************************************************** ;定时器中断子程序1 26 ;*************************************************** T1INT: MOV TH1, #3cH MOV TL1, #0b0H DJNZ L50MS,X4 MOV L50MS,#20 ;****************---每秒种时钟刷新秒显示一次 SECSET: MOV A,SEC MOV B,#10 DIV AB ADD A,#30H MOV P0,#0CEH ;显示秒十位 lCALL ENABLE lCALL WRITE2 MOV A,B ADD A,#30H MOV P0,#0CFH ;显示秒个位 lCALL ENABLE lCALL WRITE2 MOV A,SEC INC A MOV SEC,A XRL A,#60 X4: JNZ OUT MINSET: MOV SEC,#00H ;*************************************每分钟刷新分显示一次 MOV A,MIN INC A MOV MIN,A MOV B,#10 DIV AB ADD A,#30H MOV P0,#0CBH ;显示分十位 lCALL ENABLE lCALL WRITE2 27 MOV A,B ADD A,#30H MOV P0,#0CCH ;显示分个位 lCALL ENABLE lCALL WRITE2 MOV A,MIN MOV B,#3 MUL AB MOV B,#100 DIV AB MOV R2,A MOV A,#10 XCH A,B DIV AB MOV A,MIN XRL A,#60 JNZ OUT HOUSET: MOV MIN,#00H ;**************************************每小时刷新小时显示一次 MOV A,HOU MOV B,#10 DIV AB ADD A,#30H ;将BCD吗转化为ASIIC码 MOV P0,#0C8H ;显示小时十位 CALL ENABLE CALL WRITE2 MOV A,B ADD A,#30H MOV P0,#0C9H ;显示小时个位 CALL ENABLE CALL WRITE2 MOV A,HOU INC A MOV HOU,A XRL A,#10 JNZ OUT SJMP OVERFLOW 28 OUT: RETI ;*************************************溢出处理 OVERFLOW: MOV L50MS,#20 MOV L1MS,#00H MOV L250MS,#00H MOV SEC,#00H MOV MIN,#00H MOV HOU,#00H RETI ;-------------------------------------------------------------------- DELAY30: MOV R7,#2 W2: MOV R4,#125 W3: MOV R3,#248 DJNZ R3,$ DJNZ R4,W3 DJNZ R7,W2 DJNZ R1,DELAY30 RET ;-------------------------------------------------------------------- TABLE00: DW 64580,64684,64777,64820 DW 64898,64968,65030,64260 DW 64400,64524,65058,63835,64021 ;------------------------------------------------------------------- ;第一首《精忠报国》 ;-------------------------------------------------------------------- TABLE10: DB 66H,52H,36H,22H,12H,12H,22H,32H,98H,84H,82H,92H,14H,12H,22H DB 32H,52H,22H,42H,38H,66H,52H,36H,22H,12H,22H,22H,32H,98H DB 24H,22H,32H,54H,52H,32H,92H,12H,92H,82H,98H,66H,52H,36H,22H DB 12H,12H,22H,32H,98H,84H,82H,92H,14H,12H,22H,32H,52H,22H,42H,38H DB 66H,52H,36H,22H,12H,22H,22H,32H,98H,24H,22H,32H,54H,52H,32H DB 22H,12H,92H,82H,98H,14H,24H,34H,44H,64H,0B4H,64H,32H,52H 29 DB 62H,0B2H,62H,52H,38H,24H,22H,32H,54H,52H,62H,52H,32H,32H,22H,38H DB 64H,0B4H,64H,32H,52H,62H,0B2H,62H,52H,38H,22H,22H,22H,32H,52H,52H DB 52H,62H,7FH,74H,04H,58H,6FH DB 00 ;-------------------------------------------------------------------- ;第二首《月亮代表我的心》 ;-------------------------------------------------------------------- TABLE20: DB 02H,82H DB 16H,32H,54H,02H,52H DB 0A6H,32H,54H,02H,52H DB 64H,74H,0B6H,64H DB 52H,5CH,32H,22H DB 16H,12H,14H,32H,22H DB 16H,12H,14H,22H,32H DB 26H,12H,94H,22H,32H DB 2CH DB 32H,52H DB 36H,22H,14H,54H DB 0ACH,92H,0A2H DB 96H,0A2H,96H,82H DB 3CH,54H DB 36H,22H,14H,54H DB 0ACH,92H,0A2H DB 16H,12H,14H,22H,32H DB 2CH,02H,82H DB 16H,32H,56H,12H DB 0A6H,32H,56H,52H DB 66H,72H,0B6H,62H DB 62H,52H,58H,32H,22H DB 16H,12H,14H,32H,22H DB 16H,12H,14H,22H,32H DB 26H,92H,0A4H,12H,22H DB 1CH DB 00 ;------------------------------------------------------------------- ;第三首《看我七十二变》 ;------------------------------------------------------------------- 30 TABLE30: DB 0d4H,84H,94H,82H,92H DB 12H,22H,82H,92H,02H,92H,82H,0d2H DB 82H,92H,14H,84H,02H,0d1H,0d1H DB 0c2H,0d2H,84H,0d2H,0d2H,82H,82H DB 84H,82H,82H,94H,82H,0d2H DB 82H,82H,82H,92H,02H,82H,82H,0d2H DB 0c4H,84H,0d4H,92H,0d2H DB 82H,0d2H,82H,92H,98H DB 04H,94H,88H DB 04H,94H,88H DB 04H,94H,88H DB 04H,94H,88H,04H DB 32H,32H,22H,12H,02H,92H,12H,92H DB 32H,32H,22H,12H,02H,92H,12H,92H DB 32H,32H,22H,12H,02H,92H,12H,22H DB 54H,44H,34H,12H,22H DB 34H,22H,12H,02H,92H,12H,92H DB 32H,32H,22H,12H,02H,92H,12H,92H DB 32H,32H,22H,12H,02H,92H,12H,22H DB 54H,44H,32H,22H,12H,92H DB 00 END 31 附录2 系统原理图 32
/
本文档为【数字音乐盒】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索