数字音乐盒的设计讲解.doc

上传人:小飞机 文档编号:3877528 上传时间:2023-03-26 格式:DOC 页数:34 大小:2.44MB
返回 下载 相关 举报
数字音乐盒的设计讲解.doc_第1页
第1页 / 共34页
数字音乐盒的设计讲解.doc_第2页
第2页 / 共34页
数字音乐盒的设计讲解.doc_第3页
第3页 / 共34页
数字音乐盒的设计讲解.doc_第4页
第4页 / 共34页
数字音乐盒的设计讲解.doc_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《数字音乐盒的设计讲解.doc》由会员分享,可在线阅读,更多相关《数字音乐盒的设计讲解.doc(34页珍藏版)》请在三一办公上搜索。

1、单片机与接口技术课程设计(论文)数字音乐盒的设计 院(系)名称电子与信息工程学院 专业班级通信121班 学号120405003 学生姓名潘凤麟 指导教师高影 讲师起 止 时 间: 2015.7.42015.7.13课程设计(论文)任务及评语院(系):电子与信息工程学院 教研室:通信工程学 号120405003学生姓名潘凤麟专业班级通信121班课程设计(论文)题目数字音乐盒的设计课程设计(论文)任务完成数字音乐盒的硬件和软件设计。设计任务包括:1、系统硬件框图设计说明2、利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲(最少3首乐曲,每首不少于30s);3、采用LCD显示

2、乐曲名称,可通过按键选择乐曲、暂停、播放。4、在Keil中完成程序的编辑和调试;5、通过Keil和Proteus进行联合仿真。指导教师评语及成绩平时成绩: 答辩成绩: 论文成绩: 总成绩: 指导教师签字: 年 月 日注:平时成绩占20%,答辩成绩占40%,论文成绩占40%。摘 要单片机是把CPU、存储器和I/O接口集成在一片半导体硅片上的微型计算机。本次课程设计所设计出的数字音乐盒就是基于单片机的一个系统。它的的硬件电路部分采用Proteus软件进行设计,以AT89C51单片机作为主芯片,用其I/O口产生不同频率的方波来驱动蜂鸣器发出不同的音调,再配以LCD显示屏和4*4键盘实现必要的显示和控

3、制。软件部分采用Keil与Proteus进行联合仿真,并用汇编语言来设计程序,把用Keil生成的HEX文件写入到单片机中即可实现设计所要求的功能。通过Proteus与Keil的联合仿真,该数字音乐盒可播放3首不同的歌曲,并可通过LCD显示屏显示歌曲名称或序号;可通过4*4键盘实现对歌曲的选择,暂停,与播放功能,故仿真结果符合设计要求。关键词: 数字音乐盒;LCD显示屏;键盘目 录第1章 绪论11.1 AT89C51简介11.2 仿真环境简介21.3本文研究内容3第2章 数字音乐盒硬件电路图的设计与分析42.1 总体设计方案分析42.2 数字音乐盒部分电路原理说明42.2.1 蜂鸣器驱动部分电路

4、图与原理说明42.2.2 LCD显示部分电路图与原理说明52.2.3 键盘控制部分电路图与原理说明6第3章 数字音乐盒的软件设计73.1 数字音乐盒总体软件程序流程图与分析83.2 数字音乐盒各子程序的设计与分析83.2.1 系统初始化子程序设计与分析93.2.2 LCD显示子程序设计与分析93.2.3 蜂鸣器频率控制子程序设计与分析103.2.4 键盘控制子程序设计与分析11第4章 仿真结果与分析124.1 仿真结果124.2 仿真步骤与结果分析13第5章 总结15参考文献16附 录17附 录18附 录19第1章 绪论1.1 AT89C51简介所谓单片机,是指把CPU、存储器和I/O接口集成

5、在一片半导体硅片上的微型计算机。单片机的始祖是由Intel公司所开发出的MCS-51系列单片机。在20世纪80年代中期以后,Intel公司以专利转让或技术交换的形式把其开发单片机的内核技术转让给了许多半导体芯片生产厂家,ATMEL公司就是其中之一,它开发出的AT89C51单片机被人们广泛地应用于生活与生产当中。下面分别简要介绍AT89C51的硬件结构及引脚。AT89C51单片机的硬件结构如下图1.1所示,主要由8大部分构成:1个8位的微处理器,完成运算与控制功能;片内128B的数据存储器,可扩展至片外64KB;64KB的程序存储器,其类型是Flash ROM,它的读写速度非常快,电擦除次数可达

6、到10000次;4个8位的可编程并行I/O口(P0,P1,P2,P3),可提供地址总线,数据总线,以及控制总线;1个全双工的串行口;2个16位的定时/计数器(T0,T1);中断系统:包含5个中断源(外部中断0,定时器T0,外部中断1,定时器1,串行口中断)和2个中断优先级(低级,高级);21个特殊功能寄存器。 图1.1 AT89C51硬件结构图 AT89C51的引脚采用40引脚双列直插式封装(DIP)方式,如下图1.2所示,按照功能可将其分为3类:一是电源及时钟引脚:VCC,VSS,XTAL1,XTAL2,二是控制引脚:PSEN,ALE,EA,RST,三是I/O口引脚:P0,P1,P2,P3,

7、为4个8位I/O口的外部引脚。图1.2 AT89C51引脚分布图1.2 仿真环境简介本次课程设计采用Proteus与keil进行联合仿真。Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前比较好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus可以完成从原理图布图、代码调试到单片机与外围电路的协同仿真,并能够一键切换到PCB设计,真

8、正实现了从概念到产品的完整设计,是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台。Proteus的处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MATLAB等多种编译器。Keil 是美国Keil Software公司出品的51系列兼容单片机C语言/汇编语言软件开发系统。Keil提供了包括编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方

9、案,并通过一个集成开发环境(Vision)将这些部分组合在一起。把在Keil中编译,连接,运行后生成的十六进制HEX文件写入到用Proteus绘制出的硬件电路图的单片机中,启动电路后,即可完成仿真。1.3本文研究内容本文研究的是基于单片机的数字音乐盒设计,经过对资料的查找和分析,我拟出了满足如下技术要求的设计方案。硬件电路部分用Proteus软件来绘制,软件部分采用Keil软件,并基于汇编语言来进行程序设计。在仿真时,通过Proteus与Keil的联合仿真,得到了满足设计要求的结果。第2章 数字音乐盒硬件电路图的设计与分析2.1总体设计方案分析本次课程设计所设计出的数字音乐盒在硬件电路上主要包

10、括3大部分:蜂鸣器驱动部分,LCD显示部分和键盘控制部分。它的总体方案框图如下图2.1所示。蜂鸣器驱动部分是采用AT89C51单片机的P3.7引脚产生不同频率的方波,从而去控制蜂鸣器发出不同的音调,这样就可以完成对一首歌曲的播放。LCD显示部分采用LM032L作为液晶显示器,并用AT89C51的P0.0P0.7引脚去控制LCD来完成乐曲名称或序号的显示。键盘控制部分采用4*4键盘,并用AT89C51的P1.0P1.7引脚进行控制,以完成对歌曲的选择,暂停与播放功能。下面分别对各硬件电路图作以简要的介绍与分析,总电路原理图将在附录中给出。AT89C51单片机LCD液晶显示系统键盘控制系统蜂鸣器图

11、2.1 数字音乐盒总体设计方案框图2.2 数字音乐盒部分电路原理说明2.2.1 蜂鸣器驱动部分电路图与原理说明 蜂鸣器驱动电路部分的原理采用AT89C51的P3.7引脚产生不同的频率方波去驱动蜂鸣器发出不同的音调。这些不同的音调由软件设计部分中不同的数码来实现,这些不同的数码就表示不同的频率成分,这些频率成分就会去驱动蜂鸣器发出不同的音调,从而完成对一首歌曲的播放。蜂鸣器驱动部分的电路图如下图2.2所示。图2.2数字音乐盒蜂鸣器驱动部分示意图2.2.2 LCD显示部分电路图与原理说明LCD是液晶显示器的缩写,它是一种被动式的显示器,即液晶本身并不发光,而是利用液晶经过处理后能够改变光线通过方向

12、的特性,从而达到白底黑字或黑底白字显示的目的。液晶显示器具有低功耗、抗干扰能力强等优点,因而被广泛应用在仪器仪表和控制系统中。而被广泛地应用在各类单片机系统中的显示模块是点阵字符型LCD显示器,它的模块电路框图如下图2.3所示。图2.3字符型LCD模块的电路框图 如图2.3所示,字符型LCD模块的电路图由控制器HD44780、驱动器HD44100及几个电阻和电容组成。HD44100用作扩展字符显示。该电路模块共有14个引脚,其中8条数据线,3条控制线,3条电源线,通过单片机写入模块的数据和命令,就可以对显示方式和显示的内容作出选择。如本次课程设计中所设计的LCD显示部分,它的电路原理图如下图2

13、.4所示。它采用P0.0P0.7引脚去控制LCD显示屏,再通过对应的软件指令的设计,即可令显示屏显示歌曲的名称或序号。图2.4数字音乐盒LCD显示部分示意图2.2.3 键盘控制部分电路图与原理说明常用的键盘接口分为独立式键盘接口和行列式键盘接口。独立式键盘接口适用于按键较少或操作速度较高的场合,而行列式键盘适用于按键数目较多的场合。由于本次课程设计要求能够播放至少3首歌曲,同时要能实现歌曲的暂停与播放功能,故选择按键数目较多的行列式键盘。行列式键盘的键盘结构如下图2.5所示,它由行线和列线组成,而各按键在行、列线的交叉点上。行线通过上拉电阻接到+5V电源上。在无按键按下时,行线处于高电平状态;

14、当有按键按下时,行线电平状态将由与此行线相连的列线电平决定。列线的电平如果为低,则行线电平为低;列线的电平如果为高,则行线的电平也为高,这一点是识别行列式键盘是否按下的关键所在。图2.5 行列式键盘原理图本次课程设计所采用的键盘控制系统的原理框图如图下图2.6所示。它使用4*4键盘,并用P1.0P1.7引脚进行控制,与AT89C51的中断系统相结合,并用软件进行编程后,就可实现对乐曲的播放与暂停功能。图2.6 数字音乐盒键盘控制部分示意图第3章 数字音乐盒的软件设计3.1数字音乐盒总体软件程序流程图与分析数字音乐盒的三大主要硬件部分为蜂鸣器驱动部分,LCD显示部分以及键盘控制部分。故按照此硬件

15、构造,可以设计出如下图3.1所示的总体程序流程图。在软件运行之前,第一步操作就是要对系统进行初始化操作。初始化完毕后,即可开始设计系统的核心功能部件,即LCD的显示和音乐的播放,最后就是键盘控制程序的设计,由于键盘既要控制LCD显示对应的歌曲名称或序号,又要控制蜂鸣器去播放不同的歌曲,所以把键盘控制程序写在LCD显示程序设计和蜂鸣器频率控制程序设计的下方,且箭头都指向它。键盘的每次按下都相当于产生了一次中断,故除上述核心程序外,该软件设计还包含一系列的中断子程序,用以完成对歌曲的选择,播放,暂停功能。下面对除中断子程序外的其他核心程序分别作以简要介绍,而包含全部程序的程序清单将在附录中给出。

16、系统初始化子程序设计系统初始化子程序设计蜂鸣器频率控制子程序设计LCD显示子程序设计键盘控制子程序设计键盘控制子程序设计图3.1 数字音乐盒总体程序流程图3.2数字音乐盒各子程序的设计与分析3.2.1 系统初始化子程序设计与分析系统的初始化操作包括对所使用端口的定义与赋值,汇编起始地址的赋值,中断子程序入口地址的赋值,堆栈的初始化以及LCD显示屏的初始化。系统初始化子程序设计如下:RS BIT P2.0; 定义液晶显示端口标 RW BIT P2.1E BIT P2.2L50MS EQU 60HL1MS EQU 61HL250MS EQU 62HSEC EQU 65HMIN EQU 64HHOU

17、 EQU 63HORG 0000HLJMP MAINORG 000BHLJMP TT0ORG 001BH ;中断程序入口地址LJMP T1INTORG 1000HMAIN: ;液晶初始化MOV SP,#70H ;堆栈初始化操作MOV P0,#01H ;清屏LCALL ENABLEMOV P0,#38H ;8位,2行显示LCALL ENABLE3.2.2 LCD显示子程序设计与分析AT89C51与LCD模块接口的软件编程的第一步必须要进行初始化操作,否则将无法正常显示,而常用的初始化方式有两种,一种是利用模块内部的复位电路进行初始化,一种是利用软件进行初始化,在本次课程设计中使用软件初始化方式,

18、软件初始化的流程如下图3.2所示,它通过不断地等待和检查忙标志或延时来不断更改各寄存器的值,从而完成初始化操作。 图3.2 LCD显示屏软件初始化流程图3.2.3 蜂鸣器频率控制子程序设计与分析本次课程设计中的蜂鸣器是完成音乐播放功能的核心器件,它受到AT89C51的P3.7引脚的控制,由P3.7引脚产生不同频率的方波,从而使蜂鸣器发出不同的音调,达到播放一首歌曲的效果。在一首曲子的音符数组中,0xFF表示休止符,非休止符的数组元素高四位表示音阶,低四位表示节拍。通过音阶查询计数初值并赋值给计数器,从而产生一定频率的音调,而乐曲播放中的节拍则是通过延时来实现的。该部分子程序的主要流程图如下图3

19、.3所示。初始化开始从音符数组中得到音符获取节拍获取音阶控制蜂鸣器发出对应节拍的曲调延时产生节拍通过定时器产生音阶图3.3 蜂鸣器控制系统软件部分流程图3.2.4 键盘控制子程序设计与分析键盘在单片机系统中采用编程扫描工作方式,它的子程序流程图如图3.4所示。键盘程序的功能主要有四个方面:一是判断键盘上有无键闭合,二是去除键的机械抖动,三是判断闭合键的键号,四是使单片机对键的一次闭合仅作一次处理。 图3.4 键盘控制子程序部分流程图第4章 仿真结果与分析4.1仿真结果利用Proteus与Keil进行联合仿真后,得到如下所示的一系列仿真结果。图4.1为按下键盘1键,并播放歌曲精忠报国时的LCD显

20、示图,可以观察到,此时LCD显示屏上显示了其歌曲序号为序号1;图4.2为按下键盘2键,并播放歌曲月亮代表我的心时的LCD显示图,可以观察到,此时LCD显示屏上显示了其歌曲序号为序号2;图4.3为按下键盘3键,并播放歌曲看我72变时LCD显示图,可以观察到,此时LCD显示屏上显示了其歌曲序号为序号3;而当按下键盘E键,歌曲会进入暂停状态,此时LCD显示屏上的计时时间不再变化,当再次按下E键时歌曲会继续播放,继续计时。图4.1 播放歌曲1时LCD显示图 图4.2 播放歌曲2时LCD显示图图4.3 播放歌曲3时LCD显示图4.2仿真步骤与结果分析首先对Proteus与Keil的联合仿真过程作以介绍。

21、仿真时,首先采用Proteus软件绘制硬件电路图,在Proteus左侧的原件栏拾取:AT89C51单片机,2N3906三级管,16个按键BUTTON,1个LCD显示屏LM032L,8个电阻,1个蜂鸣器之后即可连接电路,完成硬件部分的电路设计。之后采用Keil软件进行软件编程。打开Keil软件后的第一步是单击上方状态栏的Project选项,选择New project,在弹出来的对话框中新建一个文件夹,命名为music,之后将所有的代码内容都保存到该文件夹中,单击确定后,在弹出来的芯片选择对话框中选择ATMEL公司,选择其中的AT89C51单片机,并复制启动代码到Target1中。第二步是单击状态

22、栏中的File,选择New选项,即可新建一个用于编写代码的文本框,将代码写入后,保存到刚刚建立的文件夹中。由于是采用汇编语言来编写程序,故程序文件的后缀名要写成.asm。第三步是右键单击左侧Work space中的Source Group 1,选择Add files to source group 1,将刚刚保存好的.asm文件添加到其中。这时状态栏上方编译按钮应由灰色变为被点亮的状态。第四步是右键单击Work space中的Target 1,选择Options for Target 1,在弹出的对话框中选择Output界面,在界面中勾选Create HEX file,之后编译,运行,连接,看

23、到下方程序状态栏中出现Creating HEX file 0 errors 即可。最后一步是打开Proteus,单击单片机,将刚刚生成的HEX文件写入到单片机中,单击运行,即可观察仿真结果。 从仿真结果来看,按下键盘的1,2,3键,可以分别播放3首不同的歌曲,4d键均未定义,而事实上,只要在程序代码中再次添加几首歌曲的数码乐谱,那么当按下4d键时还可以播放另外10首歌曲,这也就是说,此设计共可播放13首不同的歌曲。而0号键用于复位,e键用于使歌曲暂停,f键用于显示“WELCOME HERE”的欢迎界面。在LCD显示屏上,按下1号键的同时,显示屏上会显示1,代表1号键已被按下,同时播放歌曲1。当

24、按下其他键时同样可以达到相同的效果。当按下e键时,执行歌曲暂停播放命令,可以观察到LCD的计时时间此时暂停,而当再次按下e键时,歌曲继续播放,计时继续。此次课程设计得到的仿真结果基本符合设计要求,但其中也存在如下两个问题:一是LCD显示屏在显示时会出现轻微的闪烁,二是键盘在按下后不能立刻松开,而是需要按下一小段时间,大概1秒钟后,单片机才能作出反应。第5章 总结本次单片机与接口技术课程设计共2周,题目是数字音乐盒的设计。起初在拿到这个设计题目时,并没有清晰的设计思路,经过一番思考,本人想到了要用单片机去驱动蜂鸣器来完成歌曲的播放功能,但是一首歌曲中有不同的音阶和节拍,如何实现这些不同的音阶和节

25、拍第一个困难。在查阅了大量的资料,并在老师的细心指导下,终于明白了单片机系统播放歌曲的原理。即:单片机可以产生不同频率的方波去驱动蜂鸣器发出不同的音调,而这些音调可以用音符数组来实现,不同的歌曲对应不同的音符数组,只要编写出对应的音符数组即可完成对于音阶的控制。而节拍的控制可通过调用延时子程序来实现。解决了音乐播放的原理问题后,遇到的第二个问题就是LCD显示部分程序设计和键盘控制程序设计的代码编写问题。本人清醒地意识到我在课堂上所学习到的理论知识并不够深入,以至于在实践中编写程序代码时显得比较捉襟见肘。于是在重新研读教材上对应的理论知识后,终于初步拟出了这两部分的程序设计流程图,按照拟定出的程

26、序设计流程图,本人在老师的指导下完成了对应程序代码的编写。这个过程虽然非常辛苦,但却获益良多。总之,本次单片机与接口技术课程设计巩固并加深了本人在课堂上所学到的理论知识,并使本人有机会把它们运用到实践中去,激发了本人的学习兴趣,使本人以更加饱满的热情投入到接下来的学习中去。 本人签字:参考文献1 张毅刚,彭喜元编著. 单片机原理与应用设计M.北京:电子工业出版社,20082 郭天祥编著.新概念51单片机C语言教程入门、提高、开发、扩展全攻略M.北京:电子工业出版社,20093 赵广元编著. Proteus辅助的单片机原理实践基础设计、课程设计和毕业设计M.北京:北京航空航天大学出版社,2013

27、4 王爽编著.汇编语言M(第三版).北京:清华大学出版社,20135 郑学坚,朱定华编著.微型计算机原理及应用M(第四版).北京:清华大学出版社,20136 刘亮.基于单片机的数字音乐盒设计:电子学报J.北京2014:11:53-587 周禹翔.数字音乐盒的设计与仿真:通信技术J.北京2015:12:64-44附 录总电路原理图附 录元器件清单器件名称数量AT89C51单片机1片2N3906三极管1个按键16个LM032L液晶显示器1个电阻9个蜂鸣器1个电解电容1个电容2个晶振1个 附 录 程序清单RS BIT P2.0; 定义液晶显示端口标号 RW BIT P2.1 E BIT P2.2;*

28、L50MS EQU 60HL1MS EQU 61HL250MS EQU 62HSEC EQU 65HMIN EQU 64HHOU EQU 63H;*ORG 0000HLJMP MAINORG 000BHLJMP TT0ORG 001BHLJMP T1INTORG 1000HMAIN: 液晶初始化MOV SP,#70H MOV P0,#01H ;清屏LCALL ENABLEMOV P0,#38H ;8位,2行显示LCALL ENABLEMOV P0,#0FH ;屏显ON,光标ON,闪烁ONLCALL ENABLEMOV P0,#06H ;计数地址加1,显示幕ONLCALL ENABLE 内存初始

29、化LCALL INITIL KEY1:LCALL KEYLCALL MODD LJMP KEY1键盘扫描KEY:NOPNOPLCALL KSJNZ K1 有按键转到K1LCALL KAIJILCALL SOPXN:LJMP KEYK1:LCALL MODDLCALL MODDLCALL KSJNZ K2LJMP KEYK2:MOV R2,#0FEH ;读键盘MOV R4,#00HK3:MOV A,R2MOV P1,AMOV A,P1JB ACC.4,L1;为1跳转,第一行无按键MOV A,#00HLJMP LKL1:JB ACC.5,L2MOV A,#04HLJMP LKL2:JB ACC.6

30、,L3MOV A,#08HLJMP LKL3:JB ACC.7,NEXT1MOV A,#0CHLK:ADD A,R4PUSH ACCK4:LCALL DELAY1 ;若同时有其他按键,则等待LCALL KSJNZ K4MOV R3,#07H CLR AMOV R0,#30HMOV R1,#31HMM1:MOV A,R1MOV R0,AINC R0INC R1DJNZ R3,MM1POP ACCMOV R0,A RETNEXT1:INC R4 ;列扫描MOV A,R2JNB ACC.3,N2LJMP N1N2:LJMP KEYN1:RL AMOV R2,ALJMP K3KS:MOV A,#0F0

31、H ;判断P1口MOV P1,ANOPNOPMOV A,P1CPL AANL A,#0F0HRETDELAY1:SETB RS0DL:MOV R5,#0AHDL2:MOV R6,#63DL3:NOP NOPDJNZ R6,DL3DJNZ R5,DL2 CLR RS0 RET ;30H-37H初值为零INITIL: MOV R3,#08HMOV R0,#30HM1:MOV R0,#00HINC R0DJNZ R3,M1 RETMODD: MOV P0,#8EHLCALL ENABLE MOV A,37HMOV DPTR,#TABLE3 MOVC A,A+DPTRLCALL WRITE2 RET;

32、开机提示字KAIJI:MOV A,37HCJNE A,#0FH,DFFMOV P0,#80H ;设光标地址 LCALL ENABLEMOV DPTR,#TABLE1;写数据LCALL WRITE1 DFF:RET;按键值播放歌曲SOP:MOV A,37HCJNE A,#01H,A11LCALL MODDMOV 52H,#HIGH TABLE10MOV 53H,#LOW TABLE10LCALL INITILE2LCALL MAIN0A11:CJNE A,#02H,A22LCALL MODDMOV 52H,#HIGH TABLE20MOV 53H,#LOW TABLE20 LCALL INITI

33、LE2 LCALL MAIN0A22:CJNE A,#03H,A33LCALL MODDMOV 52H,#HIGH TABLE30MOV 53H,#LOW TABLE30 LCALL INITILE2 LCALL MAIN0 A33:CJNE A,#04H,A44LCALL MODDMOV 52H,#HIGH TABLE10MOV 53H,#LOW TABLE10 LCALL INITILE2 LCALL MAIN0A44:CJNE A,#05H,A55LCALL MODDMOV 52H,#HIGH TABLE20MOV 53H,#LOW TABLE20 LCALL INITILE2 LCAL

34、L MAIN0A55:CJNE A,#06H,A66LCALL MODDMOV 52H,#HIGH TABLE30MOV 53H,#LOW TABLE30 LCALL INITILE2 LCALL MAIN0 A66:CJNE A,#07H,A77LCALL MODDMOV 52H,#HIGH TABLE10MOV 53H,#LOW TABLE10 LCALL INITILE2 LCALL MAIN0 A77:CJNE A,#08H,A88LCALL MODDMOV 52H,#HIGH TABLE20MOV 53H,#LOW TABLE20 LCALL INITILE2 LCALL MAIN0

35、A88:CJNE A,#09H,A99LCALL MODDMOV 52H,#HIGH TABLE30MOV 53H,#LOW TABLE30 LCALL INITILE2 LCALL MAIN0 A99:CJNE A,#0AH,AAALCALL MODDMOV 52H,#HIGH TABLE10MOV 53H,#LOW TABLE10 LCALL INITILE2 LCALL MAIN0 AAA:RET INITILE2:MOV L50MS,#20MOV L1MS,#00HMOV L250MS,#00HMOV SEC,#00HMOV MIN,#00HMOV HOU,#00HMOV A,HOUM

36、OV B,#10DIV ABADD A,#30H MOV P0,#0C8H ;显示小时十位LCALL ENABLELCALL WRITE2MOV A,BADD A,#30HMOV P0,#0C9H ;显示小时个位LCALL ENABLELCALL WRITE2MOV A,#3AHMOV P0,#0DH ;显示冒号LCALL ENABLELCALL WRITE2MOV A,MINMOV B,#10DIV ABADD A,#30HMOV P0,#0CBH ;显示分十位LCALL ENABLELCALL WRITE2MOV A,BADD A,#30HMOV P0,#0CCH ;显示分个位LCALL

37、ENABLELCALL WRITE2MOV A,#3AHMOV P0,#0CDH ;显示冒号LCALL ENABLELCALL WRITE2MOV A,SECMOV B,#10DIV ABADD A,#30H MOV P0,#0CEH ;显示秒十位LCALL ENABLELCALL WRITE2MOV A,BADD A,#30HMOV P0,#0CFH ;显示秒个位LCALL ENABLELCALL WRITE2MOV P0,#0C0H ; 设光标地址 LCALL ENABLEMOV DPTR,#TABLE2;写数据LCALL WRITE1 RET; 写指令ENABLE: CLR RSCLR

38、RWCLR ELCALL DELAYSETB ERET写数据WRITE1:MOV R1,#00HA1:MOV A,R1MOVC A,A+DPTRLCALL WRITE2INC R1CJNE A,#0FEH,A1 ;未到字符串末尾继续RETWRITE2:MOV P0,ASETB RSCLR RWCLR ELCALL DELAYSETB ERETDELAY:MOV R4,#05D1:MOV R5,#0FFHDJNZ R5,$DJNZ R4,D1RET TAB:DB:0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8HDB 80H,90H,88H,83H,0c6H,0a1H,86

39、H,8eHTAB1:DB 89H,86H,0C7H,0C7H,0C0HTAB2:DB 0C6H,88H,0C0HTABLE1:DB WELCOM HERE,0FEHTABLE2:DBDFF WB ,0FEHTABLE4:DB CAU,0FEHTABLE3:DB 30H,31H,32H,33H DB 34H,35H,36H,37HDB 38H,39H,41H,42HDB 43H,44H,45H,46H;播放歌曲程序MAIN0:MOV TMOD,#11HMOV IE,#8AH MOV TH1,#3CHMOV TL1,#0B0H LCALL ksJNZ TTM12 MOV 40H,#00HNEXT2

40、0:MOV A,40HMOV DPH,52HMOV DPL,53HMOVC A,A+DPTRMOV R2,AJZ STOPANL A,#0FHMOV R1,AMOV A,R2SWAP AANL A,#0FHJNZ SINGCLR TR0JMP W1SING:DEC AMOV 22H,ARL AMOV DPTR,#TABLE00MOVC A,A+DPTRMOV TH0,AMOV 21H,AMOV A,22HRL AINC AMOVC A,A+DPTRMOV TL0,AMOV 20H,ASETB TR0SETB TR1W1:LCALL DELAY30INC 40HLCALL KS ;有键跳出JNZ

41、 STOPLJMP NEXT20STOP:CLR TR0CLR TR1LJMP MAIN0 TTM12:LCALL K2MOV A,37HCJNE A,#0EH,TTM13CLR TR1LCALL DELAY1TTM120:LCALL KSLCALL DELAY1JZ TTM120LCALL K2MOV A,37HCJNE A,#0EH,TTM120SETB TR1LJMP NEXT20TTM13:CJNE A,#0CH,TTM14MOV A,52HINC AMOV 52H,AMOV A,53HINC AMOV 53H,AMOV A,36HINC AMOV 37H,ALJMP TTM2TTM1

42、4:CJNE A,#0DH,TTM2MOV A,52HDEC AMOV 52H,AMOV A,53HDEC AMOV 53H,AMOV A,36HDEC AMOV 37H,A TTM2:RET;定时器中断子程序0TT0:PUSH ACCPUSH PSWMOV TL0,20HMOV TH0,21HCPL P3.7POP PSWPOP ACCRETI ;定时器中断子程序1T1INT: MOV TH1, #3cHMOV TL1, #0b0HDJNZ L50MS,X4MOV L50MS,#20 ; 每秒种时钟刷新秒显示一次SECSET:MOV A,SECMOV B,#10DIV ABADD A,#30H MOV P0,#0CEH ;显示秒十位LCALL ENABLELC

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号