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

上传人:白大夫 文档编号:5417486 上传时间:2020-05-04 格式:PDF 页数:34 大小:2.41MB
返回 下载 相关 举报
数字音乐盒的设计讲解.pdf_第1页
第1页 / 共34页
数字音乐盒的设计讲解.pdf_第2页
第2页 / 共34页
数字音乐盒的设计讲解.pdf_第3页
第3页 / 共34页
数字音乐盒的设计讲解.pdf_第4页
第4页 / 共34页
数字音乐盒的设计讲解.pdf_第5页
第5页 / 共34页
点击查看更多>>
资源描述

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

1、单片机与接口技术 课程设计 ( 论文 ) 数字音乐盒的设计 院 ( 系 ) 名 称电 子 与 信 息 工 程 学 院 专业班级通 信 121 班 学号120405003 学生姓名潘 凤 麟 指导教师高 影讲 师 起止时间 :2015.7.4 2015.7.13 课程设计(论文)任务及评语 院(系):电子与信息工程学院教研室:通信工程 学 号120405003学生姓名潘凤麟专业班级通信 121 班 课程设 计(论 文)题目 数字音乐盒的设计 课 程 设 计 ( 论 文 ) 任 务 完成数字音乐盒的硬件和软件设计。 设计任务包括: 1、系统硬件框图设计说明 2、利用 I/O 口产生一定频率的方波,

2、驱动蜂鸣器,发出不同的音调,从 而演奏乐曲(最少3 首乐曲,每首不少于30s); 3、采用 LCD 显示乐曲名称,可通过按键选择乐曲、暂停、播放。 4、在 Keil 中完成程序的编辑和调试; 5、通过 Keil 和 Proteus进行联合仿真。 指 导 教 师 评 语 及 成 绩 平时成绩:答辩成绩:论文成绩: 总成绩:指导教师签字: 年月日 注:平时成 绩占20%, 答辩成绩占40%,论文成 绩占40%。 单片机与接口技术课程设计(论文) I 摘 要 单片机是把 CPU、 存储器和 I/O 接口集成在一片半导体硅片上的微型计算机。 本次课程设计所设计出的数字音乐盒就是基于单片机的一个系统。它

3、的的硬件电 路部分采用 Proteus软件进行设计,以AT89C51 单片机作为主芯片,用其I/O 口 产生不同频率的方波来驱动蜂鸣器发出不同的音调,再配以LCD 显示屏和4*4 键盘实现必要的显示和控制。软件部分采用Keil 与 Proteus进行联合仿真,并用 汇编语言来设计程序,把用Keil 生成的 HEX 文件写入到单片机中即可实现设计 所要求的功能。 通过 Proteus与 Keil 的联合仿真,该数字音乐盒可播放3 首不同的歌曲,并 可通过 LCD 显示屏显示歌曲名称或序号; 可通过 4*4 键盘实现对歌曲的选择, 暂 停,与播放功能,故仿真结果符合设计要求。 关键词:数字音乐盒;

4、 LCD 显示屏;键盘 单片机与接口技术课程设计(论文) II 目 录 第 1 章 绪论 1 1.1 AT89C51简介 . 1 1.2 仿真环境简介 2 1.3 本文研究内容 . 3 第 2 章 数字音乐盒硬件电路图的设计与分析 4 2.1 总体设计方案分析 4 2.2 数字音乐盒部分电路原理说明 4 2.2.1 蜂鸣器驱动部分电路图与原理说明 4 2.2.2 LCD 显示部分电路图与原理说明 . 5 2.2.3 键盘控制部分电路图与原理说明 6 第 3 章 数字音乐盒的软件设计 7 3.1 数字音乐盒总体软件程序流程图与分析 8 3.2 数字音乐盒各子程序的设计与分析 8 3.2.1 系统

5、初始化子程序设计与分析 9 3.2.2 LCD 显示子程序设计与分析 . 10 3.2.3 蜂鸣器频率控制子程序设计与分析 11 3.2.4 键盘控制子程序设计与分析 11 第 4 章 仿真结果与分析 12 4.1 仿真结果 12 4.2 仿真步骤与结果分析 13 第 5 章 总结 16 参考文献 17 附 录 18 附 录 19 附 录 20 单片机与接口技术课程设计(论文) 1 第 1 章 绪论 1.1 AT89C51 简介 所谓单片机,是指把 CPU、存储器和 I/O 接口集成在一片半导体硅片上的微型计算 机。单片机的始祖是由 Intel 公司所开发出的MCS-51 系列单片机。在 20

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

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

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

9、Proteus 可以完成从原理图布图、代码调试到单片机与外围电路的协同仿真,并能够一键切换到 PCB 设计,真正实现了从概念到产品的完整设计,是目前世界上唯一将电路仿真软件、 PCB 设计软件和虚拟模型仿真软件三合一的设计平台。 Proteus的处理器模型支持8051、 HC11、 PIC10/12/16/18/24/30/DsPIC33、 AVR、 ARM 、 8086和 MSP430 等,2010 年又增加了 Cortex 和 DSP系列处理器, 并持续增加其他系列 处理器模型。在编译方面,它也支持IAR、Keil 和 MATLAB 等多种编译器。 单片机与接口技术课程设计(论文) 3 K

10、eil 是美国 Keil Software 公司出品的 51系列兼容单片机 C语言/汇编语言软件开发 系统。Keil 提供了包括编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器 等在内的完整开发方案,并通过一个集成开发环境( Vision)将这些部分组合在一起。 把在 Keil 中编译,连接,运行后生成的十六进制HEX 文件写入到用 Proteus绘制出 的硬件电路图的单片机中,启动电路后,即可完成仿真。 1.3 本文研究内容 本文研究的是基于单片机的数字音乐盒设计,经过对资料的查找和分析,我拟出了 满足如下技术要求的设计方案。 硬件电路部分用 Proteus软件来绘制,软件部分采用

11、Keil 软件,并基于汇编语言来进行程序设计。在仿真时,通过Proteus与 Keil 的联合仿真, 得到了满足设计要求的结果。 单片机与接口技术课程设计(论文) 4 第 2 章 数字音乐盒硬件电路图的设计与分析 2.1 总体设计方案分析 本次课程设计所设计出的数字音乐盒在硬件电路上主要包括3 大部分:蜂鸣器驱动 部分,LCD 显示部分和键盘控制部分。它的总体方案框图如下图2.1 所示。蜂鸣器驱动 部分是采用 AT89C51 单片机的 P3.7引脚产生不同频率的方波,从而去控制蜂鸣器发出 不同的音调,这样就可以完成对一首歌曲的播放。LCD 显示部分采用LM032L 作为液 晶显示器,并用 AT

12、89C51 的 P0.0P0.7引脚去控制 LCD 来完成乐曲名称或序号的显示。 键盘控制部分采用4*4 键盘,并用 AT89C51 的 P1.0P1.7引脚进行控制, 以完成对歌曲 的选择,暂停与播放功能。下面分别对各硬件电路图作以简要的介绍与分析,总电路原 理图将在附录 中给出。 图 2.1 数字音乐盒总体设计方案框图 2.2 数字音乐盒部分电路原理说明 2.2.1 蜂鸣器驱动部分电路图与原理说明 蜂鸣器驱动电路部分的原理采用AT89C51 的 P3.7引脚产生不同的频率方波去驱动 蜂鸣器发出不同的音调。这些不同的音调由软件设计部分中不同的数码来实现,这些不 同的数码就表示不同的频率成分,

13、这些频率成分就会去驱动蜂鸣器发出不同的音调,从 而完成对一首歌曲的播放。蜂鸣器驱动部分的电路图如下图2.2 所示。 蜂鸣器 LCD 液晶显示系统 键盘控制系统 AT89C51 单 片 机 单片机与接口技术课程设计(论文) 5 图 2.2 数字音乐盒蜂鸣器驱动部分示意图 2.2.2 LCD 显示部分电路图与原理说明 LCD 是液晶显示器的缩写, 它是一种被动式的显示器, 即液晶本身并不发光, 而是 利用液晶经过处理后能够改变光线通过方向的特性,从而达到白底黑字或黑底白字显示 的目的。液晶显示器具有低功耗、抗干扰能力强等优点,因而被广泛应用在仪器仪表和 控制系统中。而被广泛地应用在各类单片机系统中

14、的显示模块是点阵字符型LCD 显示 器,它的模块电路框图如下图2.3 所示。 图 2.3 字符型 LCD模块的电路框图 单片机与接口技术课程设计(论文) 6 如图 2.3 所示,字符型 LCD 模块的电路图由控制器HD44780、驱动器 HD44100 及 几个电阻和电容组成。 HD44100 用作扩展字符显示。该电路模块共有14 个引脚,其中 8 条数据线, 3 条控制线, 3 条电源线,通过单片机写入模块的数据和命令,就可以对显 示方式和显示的内容作出选择。 如本次课程设计中所设计的LCD 显示部分,它的电路原理图如下图2.4 所示。它采 用 P0.0P0.7引脚去控制 LCD 显示屏,再

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

16、平状态将由与此行线相连的列线电平决 定。列线的电平如果为低,则行线电平为低;列线的电平如果为高,则行线的电平也为 高,这一点是识别行列式键盘是否按下的关键所在。 单片机与接口技术课程设计(论文) 7 图 2.5 行列式键盘原理图 本次课程设计所采用的键盘控制系统的原理框图如图下图2.6 所示。它使用 4*4 键 盘,并用 P1.0P1.7引脚进行控制,与 AT89C51 的中断系统相结合,并用软件进行编程 后,就可实现对乐曲的播放与暂停功能。 图 2.6 数字音乐盒键盘控制部分示意图 单片机与接口技术课程设计(论文) 8 第 3 章 数字音乐盒的软件设计 3.1 数字音乐盒总体软件程序流程图与

17、分析 数字音乐盒的三大主要硬件部分为蜂鸣器驱动部分,LCD 显示部分以及键盘控制部 分。故按照此硬件构造,可以设计出如下图3.1 所示的总体程序流程图。在软件运行之 前,第一步操作就是要对系统进行初始化操作。初始化完毕后,即可开始设计系统的核 心功能部件,即LCD 的显示和音乐的播放,最后就是键盘控制程序的设计,由于键盘 既要控制 LCD 显示对应的歌曲名称或序号,又要控制蜂鸣器去播放不同的歌曲,所以 把键盘控制程序写在LCD 显示程序设计和蜂鸣器频率控制程序设计的下方,且箭头都 指向它。键盘的每次按下都相当于产生了一次中断,故除上述核心程序外,该软件设计 还包含一系列的中断子程序,用以完成对

18、歌曲的选择,播放,暂停功能。下面对除中断 子程序外的其他核心程序分别作以简要介绍,而包含全部程序的程序清单将在附录中 给出。 图 3.1 数字音乐盒总体程序流程图 系统初始化子程序设计 LCD 显示子程序设计蜂鸣器频率控制子程序设计 键盘控制子程序设计 系统初始化子程序设计 键盘控制子程序设计 单片机与接口技术课程设计(论文) 9 3.2 数字音乐盒各子程序的设计与分析 3.2.1 系统初始化子程序设计与分析 系统的初始化操作包括对所使用端口的定义与赋值,汇编起始地址的赋值,中断子 程序入口地址的赋值,堆栈的初始化以及LCD 显示屏的初始化。系统初始化子程序设 计如下: RS BIT P2.0

19、; 定义液晶显示端口标 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 ;清屏 LCALL ENABLE MOV P0,#38H ;8 位,2 行显示 LCALL ENABLE 单片机与接口技术

20、课程设计(论文) 10 3.2.2 LCD 显示子程序设计与分析 AT89C51 与 LCD 模块接口的软件编程的第一步必须要进行初始化操作,否则将无 法正常显示,而常用的初始化方式有两种, 一种是利用模块内部的复位电路进行初始化, 一种是利用软件进行初始化,在本次课程设计中使用软件初始化方式,软件初始化的流 程如下图 3.2 所示,它通过不断地等待和检查忙标志或延时来不断更改各寄存器的值, 从而完成初始化操作。 图 3.2 LCD 显示屏软件初始化流程图 单片机与接口技术课程设计(论文) 11 3.2.3 蜂鸣器频率控制子程序设计与分析 本次课程设计中的蜂鸣器是完成音乐播放功能的核心器件,它

21、受到 AT89C51的 P3.7 引脚的控制,由P3.7 引脚产生不同频率的方波,从而使蜂鸣器发出不同的音调,达到 播放一首歌曲的效果。 在一首曲子的音符数组中,0xFF 表示休止符,非休止符的数组元素高四位表示音 阶,低四位表示节拍。通过音阶查询计数初值并赋值给计数器,从而产生一定频率的音 调, 而乐曲播放中的节拍则是通过延时来实现的。该部分子程序的主要流程图如下图3.3 所示。 图 3.3 蜂鸣器控制系统软件部分流程图 3.2.4 键盘控制子程序设计与分析 开始初始化从音符数组中得到音符 获取节拍 获取音阶 通过定时器 产生音阶 延时产生节拍 控制蜂鸣器 发出对应节 拍的曲调 单片机与接口

22、技术课程设计(论文) 12 键盘在单片机系统中采用编程扫描工作方式,它的子程序流程图如图3.4所示。键 盘程序的功能主要有四个方面:一是判断键盘上有无键闭合,二是去除键的机械抖动, 三是判断闭合键的键号,四是使单片机对键的一次闭合仅作一次处理。 图 3.4 键盘控制子程序部分流程图 第 4 章 仿真结果与分析 4.1 仿真结果 利用 Proteus与 Keil 进行联合仿真后,得到如下所示的一系列仿真结果。图4.1 为 按下键盘 1 键,并播放歌曲精忠报国时的LCD 显示图,可以观察到,此时LCD 显 示屏上显示了其歌曲序号为序号1;图 4.2 为按下键盘 2 键,并播放歌曲月亮代表我 的心时

23、的 LCD 显示图,可以观察到, 此时 LCD 显示屏上显示了其歌曲序号为序号2; 图 4.3 为按下键盘 3 键,并播放歌曲看我72 变时 LCD 显示图,可以观察到,此时 LCD 显示屏上显示了其歌曲序号为序号3;而当按下键盘 E 键,歌曲会进入暂停状态, 此时 LCD 显示屏上的计时时间不再变化,当再次按下E 键时歌曲会继续播放,继续计 时。 单片机与接口技术课程设计(论文) 13 图 4.1 播放歌曲 1 时 LCD显示图 图 4.2 播放歌曲2 时 LCD显示图 图 4.3 播放歌曲 3 时 LCD显示图 4.2 仿真步骤与结果分析 首先对 Proteus与 Keil 的联合仿真过程

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

25、中选择 ATMEL 公司,选择其中的AT89C51 单片机,并复制启动代码到Target1中。第 二步是单击状态栏中的File,选择 New 选项,即可新建一个用于编写代码的文本框,将 代码写入后,保存到刚刚建立的文件夹中。由于是采用汇编语言来编写程序,故程序文 件的后缀名要写成 .asm 。第三步是右键单击左侧Work space中的 Source Group 1,选择 Add files to source group 1,将刚刚保存好的 .asm文件添加到其中。这时状态栏上方编译按 钮应由灰色变为被点亮的状态。 第四步是右键单击 Work space中的 Target 1 , 选择 Op

26、tions for Target 1,在弹出的对话框中选择Output界面,在界面中勾选Create HEX file,之后编 译,运行,连接,看到下方程序状态栏中出现Creating HEX file 0 errors 即可。最后一 步是打开 Proteus, 单击单片机,将刚刚生成的HEX 文件写入到单片机中,单击运行,即 可观察仿真结果。 从仿真结果来看, 按下键盘的 1,2,3 键,可以分别播放 3 首不同的歌曲, 4d 键均未 定义,而事实上,只要在程序代码中再次添加几首歌曲的数码乐谱,那么当按下4d键 时还可以播放另外10 首歌曲,这也就是说,此设计共可播放13 首不同的歌曲。而

27、0 号 键用于复位, e键用于使歌曲暂停, f 键用于显示“ WELCOME HERE ” 的欢迎界面。 在 LCD 显示屏上,按下 1 号键的同时,显示屏上会显示1,代表 1 号键已被按下, 同时播放歌曲 1。当按下其他键时同样可以达到相同的效果。当按下e 键时,执行歌曲 暂停播放命令,可以观察到LCD 的计时时间此时暂停,而当再次按下e 键时,歌曲继 续播放,计时继续。 此次课程设计得到的仿真结果基本符合设计要求,但其中也存在如下两个问题:一 是 LCD 显示屏在显示时会出现轻微的闪烁,二是键盘在按下后不能立刻松开,而是需 要按下一小段时间,大概1 秒钟后,单片机才能作出反应。 单片机与接

28、口技术课程设计(论文) 15 单片机与接口技术课程设计(论文) 16 第 5 章 总结 本次单片机与接口技术课程设计共2 周,题目是数字音乐盒的设计。 起初在拿到这个设计题目时,并没有清晰的设计思路,经过一番思考,本人想到了 要用单片机去驱动蜂鸣器来完成歌曲的播放功能,但是一首歌曲中有不同的音阶和节 拍,如何实现这些不同的音阶和节拍第一个困难。在查阅了大量的资料,并在老师的细 心指导下,终于明白了单片机系统播放歌曲的原理。即:单片机可以产生不同频率的方 波去驱动蜂鸣器发出不同的音调,而这些音调可以用音符数组来实现,不同的歌曲对应 不同的音符数组,只要编写出对应的音符数组即可完成对于音阶的控制。

29、而节拍的控制 可通过调用延时子程序来实现。 解决了音乐播放的原理问题后,遇到的第二个问题就是LCD 显示部分程序设计和 键盘控制程序设计的代码编写问题。本人清醒地意识到我在课堂上所学习到的理论知识 并不够深入,以至于在实践中编写程序代码时显得比较捉襟见肘。于是在重新研读教材 上对应的理论知识后,终于初步拟出了这两部分的程序设计流程图,按照拟定出的程序 设计流程图,本人在老师的指导下完成了对应程序代码的编写。这个过程虽然非常辛苦, 但却获益良多。 总之,本次单片机与接口技术课程设计巩固并加深了本人在课堂上所学到的理论知 识,并使本人有机会把它们运用到实践中去,激发了本人的学习兴趣,使本人以更加饱

30、 满的热情投入到接下来的学习中去。 本人签字: 单片机与接口技术课程设计(论文) 17 参考文献 1 张毅刚 ,彭喜元编著 . 单片机原理与应用设计 M. 北京:电子工业出版社 ,2008 2 郭天祥编著 .新概念 51 单片机 C 语言教程入门、提高、开发、扩展全攻略M. 北 京:电子工业出版社 ,2009 3 赵广元编著 . Proteus 辅助的单片机原理实践基础设计、课程设计和毕业设计M. 北京:北京航空航天大学出版社 ,2013 4 王爽编著 .汇编语言 M( 第三版 ).北京:清华大学出版社 ,2013 5 郑学坚, 朱定华编著 .微型计算机原理及应用 M (第四版).北京:清华大

31、学出版社 ,2013 6 刘亮.基于单片机的数字音乐盒设计:电子学报J.北京 2014:11:53-58 7 周禹翔 .数字音乐盒的设计与仿真:通信技术J.北京 2015:12:64-44 单片机与接口技术课程设计(论文) 18 附 录 总电路原理图 单片机与接口技术课程设计(论文) 19 附 录 元器件清单 器件名称数量 AT89C51 单片机1片 2N3906 三极管1个 按键16 个 LM032L 液晶显示器1个 电阻9个 蜂鸣器1个 电解电容1个 电容2个 晶振1个 单片机与接口技术课程设计(论文) 20 附录 程序清单 RS BIT P2.0; 定义液晶显示端口标号 RW BIT P

32、2.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 ;清屏 LCALL ENABLE MOV P0,#38H ;8 位, 2 行显示 LCALL ENABLE MOV P0,#0FH ;屏显 ON,光标 ON,闪烁 ON LCALL ENAB

33、LE MOV P0,#06H ;计数地址加1,显示幕 ON LCALL ENABLE 内存初始化 LCALL INITIL KEY1: LCALL KEY LCALL MODD LJMP KEY1键盘扫描 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: 单片机与接口技术课程设计(论文) 21 MOV A,R2 MOV P1,

34、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: 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

35、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 MOV A,P1 CPL A ANL A,#0F0H RET DELAY1: 单片机与接口技术课程设计(论文) 22 SETB RS0 DL:MOV R5,#0AH DL2: MOV R6,#63 DL3: NOP NOP DJNZ R6,DL3 DJNZ R

36、5,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 LCALL WRITE2 RET;开机提示字 KAIJI: MOV A,37H CJNE A,#0FH,DFF MOV P0,#80H ;设光标地址 LCALL ENABLE MOV DPTR,#TABLE1;写数据 LCALL WRITE1 DFF:

37、 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 TABLE3

38、0 LCALL INITILE2 LCALL MAIN0 单片机与接口技术课程设计(论文) 23 A33: CJNE A,#04H,A44 LCALL MODD MOV 52H,#HIGH TABLE10 MOV 53H,#LOW TABLE10 LCALL INITILE2 LCALL MAIN0 A44: CJNE A,#05H,A55 LCALL MODD MOV 52H,#HIGH TABLE20 MOV 53H,#LOW TABLE20 LCALL INITILE2 LCALL MAIN0 A55: CJNE A,#06H,A66 LCALL MODD MOV 52H,#HIGH T

39、ABLE30 MOV 53H,#LOW TABLE30 LCALL INITILE2 LCALL MAIN0 A66: CJNE A,#07H,A77 LCALL MODD MOV 52H,#HIGH TABLE10 MOV 53H,#LOW TABLE10 LCALL INITILE2 LCALL MAIN0 A77: CJNE A,#08H,A88 LCALL MODD MOV 52H,#HIGH TABLE20 MOV 53H,#LOW TABLE20 LCALL INITILE2 LCALL MAIN0 A88: CJNE A,#09H,A99 LCALL MODD MOV 52H,#

40、HIGH TABLE30 MOV 53H,#LOW TABLE30 LCALL INITILE2 LCALL MAIN0 A99: CJNE A,#0AH,AAA LCALL MODD MOV 52H,#HIGH TABLE10 MOV 53H,#LOW TABLE10 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 单片机与接口技术课

41、程设计(论文) 24 ADD A,#30H MOV P0,#0C8H ;显示小时十位 LCALL ENABLE LCALL WRITE2 MOV A,B ADD A,#30H MOV P0,#0C9H ;显示小时个位 LCALL ENABLE LCALL WRITE2 MOV A,#3AH MOV P0,#0DH ;显示冒号 LCALL ENABLE LCALL WRITE2 MOV A,MIN MOV B,#10 DIV AB ADD A,#30H MOV P0,#0CBH ;显示分十位 LCALL ENABLE LCALL WRITE2 MOV A,B ADD A,#30H MOV P0,

42、#0CCH ;显示分个位 LCALL ENABLE LCALL WRITE2 MOV A,#3AH MOV P0,#0CDH ;显示冒号 LCALL ENABLE LCALL WRITE2 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 P0,#0C0H ; 设光标地址 LCALL ENABLE MOV DPTR,#TABLE2;写数据 L

43、CALL WRITE1 RET; 写指令 ENABLE: CLR RS CLR RW CLR E LCALL DELAY SETB E RET 写数据 WRITE1: MOV R1,#00H A1: MOV A,R1 MOVC A,A+DPTR LCALL WRITE2 INC R1 单片机与接口技术课程设计(论文) 25 CJNE A,#0FEH,A1 ;未到字符串末尾继续 RET WRITE2: MOV P0,A SETB RS CLR RW CLR E LCALL DELAY SETB E RET DELAY: MOV R4,#05 D1: MOV R5,#0FFH DJNZ R5,$

44、DJNZ R4,D1 RET TAB: DB:0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0 F8H 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:DBDFF WB ,0FEH TABLE4:DB CAU,0FEH TABLE3:DB 30H,31H,32H,33H DB 34H,35H,36H,37H DB 38H,39H,41H,42H DB 43H,44H,45H,46

45、H ;播放歌曲程序 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+

46、DPTR MOV TH0,AMOV 21H,AMOV A,22H 单片机与接口技术课程设计(论文) 26 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 D

47、ELAY1 JZ TTM120 LCALL K2 MOV A,37H CJNE A,#0EH,TTM120 SETB TR1 LJMP NEXT20 TTM13: CJNE A,#0CH,TTM14 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;

48、定时器中断子程序0 TT0: PUSH ACC 单片机与接口技术课程设计(论文) 27 PUSH PSW MOV TL0,20H MOV TH0,21H CPL P3.7 POP PSW POP ACC RETI ; 定时器中断子程序1 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 A

49、DD 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 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 单片机与接口技术课程设计(论文) 28 HOUSET: MOV MIN,#00H MOV A,HOU MOV B,#10 DIV AB ADD A,#30H MOV P0,#0C8

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1