单片机与接口技术 课程设计(论文)
数字音乐盒的设计
院(系)名称 专 学 学 指
生导
姓教业
班
级 号 名 师
电子与信息工程学院
通信121班 ********* 潘凤麟 高影 讲师
起 止 时 间: 2015.7.4—2015.7.13
课程设计(论文)任务及评语
院(系):电子与信息工程学院 教研室:通信工程 学 号 课程设计(论文)题目 完成数字音乐盒的硬件和软件设计。 120405003 学生姓名 潘凤麟 专业班级 通信121班 数字音乐盒的设计 课程设计(论文)任务 设计任务包括: 1、系统硬件框图设计说明 2、利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲(最少3首乐曲,每首不少于30s); 3、采用LCD显示乐曲名称,可通过按键选择乐曲、暂停、播放。 4、在Keil中完成程序的编辑和调试; 5、通过Keil和Proteus进行联合仿真。 平时成绩: 答辩成绩: 论文成绩: 总成绩: 指导教师签字: 年 月 日 指导教师评语及成绩注:平时成绩占 20%,答辩成绩占40%,论文成绩占40%。
单片机与接口技术课程设计(论文)
摘 要
单片机是把CPU、存储器和I/O接口集成在一片半导体硅片上的微型计算机。本次课程设计所设计出的数字音乐盒就是基于单片机的一个系统。它的的硬件电路部分采用Proteus软件进行设计,以AT89C51单片机作为主芯片,用其I/O口产生不同频率的方波来驱动蜂鸣器发出不同的音调,再配以LCD显示屏和4*4键盘实现必要的显示和控制。软件部分采用Keil与Proteus进行联合仿真,并用汇编语言来设计程序,把用Keil生成的HEX文件写入到单片机中即可实现设计所要求的功能。
通过Proteus与Keil的联合仿真,该数字音乐盒可播放3首不同的歌曲,并可通过LCD显示屏显示歌曲名称或序号;可通过4*4键盘实现对歌曲的选择,暂停,与播放功能,故仿真结果符合设计要求。
关键词: 数字音乐盒;LCD显示屏;键盘
I
单片机与接口技术课程设计(论文)
目 录
第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 数字音乐盒各子程序的设计与分析 ......................... 错误!未定义书签。
3.2.1 系统初始化子程序设计与分析 .................................................... 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
II
单片机与接口技术课程设计(论文)
第1章 绪论
1.1 AT89C51简介
所谓单片机,是指把CPU、存储器和I/O接口集成在一片半导体硅片上的微型计算机。单片机的始祖是由Intel公司所开发出的MCS-51系列单片机。在20世纪80年代中期以后,Intel公司以专利转让或技术交换的形式把其开发单片机的内核技术转让给了许多半导体芯片生产厂家,ATMEL公司就是其中之一,它开发出的AT89C51单片机被人们广泛地应用于生活与生产当中。下面分别简要介绍AT89C51的硬件结构及引脚。
AT89C51单片机的硬件结构如下图1.1所示,主要由8大部分构成:1个8位的微处理器,完成运算与控制功能;片内128B的数据存储器,可扩展至片外64KB;64KB的程序存储器,其类型是Flash ROM,它的读写速度非常快,电擦除次数可达到10000次;4个8位的可编程并行I/O口(P0,P1,P2,P3),可提供地址总线,数据总线,以及控制总线;1个全双工的串行口;2个16位的定时/计数器(T0,T1);中断系统:包含5个中断源(外部中断0,定时器T0,外部中断1,定时器1,串行口中断)和2个中断优先级(低级,高级);21个特殊功能寄存器。
图1.1 AT89C51硬件结构图
1
单片机与接口技术课程设计(论文)
AT89C51的引脚采用40引脚双列直插式封装(DIP)方式,如下图1.2所示,按照功能可将其分为3类:一是电源及时钟引脚:VCC,VSS,XTAL1,XTAL2,二是控制引脚:PSEN,ALE,EA,RST,三是I/O口引脚:P0,P1,P2,P3,为4个8位I/O口的外部引脚。
图1.2 AT89C51引脚分布图
1.2 仿真环境简介
本次课程设计采用Proteus与keil进行联合仿真。Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前比较好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus可以完成从原理图布图、代码调试到单片机与外围电路的协同仿真,并能够一键切换到PCB设计,真正实现了从概念到产品的完整设计,是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台。
Proteus的处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、 8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MATLAB等多种编译器。
2
单片机与接口技术课程设计(论文)
Keil 是美国Keil Software公司出品的51系列兼容单片机C语言/汇编语言软件开发系统。Keil提供了包括编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,并通过一个集成开发环境(μVision)将这些部分组合在一起。
把在Keil中编译,连接,运行后生成的十六进制HEX文件写入到用Proteus绘制出的硬件电路图的单片机中,启动电路后,即可完成仿真。
1.3本文研究内容
本文研究的是基于单片机的数字音乐盒设计,经过对资料的查找和分析,我拟出了满足如下技术要求的设计方案。硬件电路部分用Proteus软件来绘制,软件部分采用Keil软件,并基于汇编语言来进行程序设计。在仿真时,通过Proteus与Keil的联合仿真,得到了满足设计要求的结果。
3
单片机与接口技术课程设计(论文)
第2章 数字音乐盒硬件电路图的设计与分析
2.1总体设计方案分析
本次课程设计所设计出的数字音乐盒在硬件电路上主要包括3大部分:蜂鸣器驱动部分,LCD显示部分和键盘控制部分。它的总体方案框图如下图2.1所示。蜂鸣器驱动部分是采用AT89C51单片机的P3.7引脚产生不同频率的方波,从而去控制蜂鸣器发出不同的音调,这样就可以完成对一首歌曲的播放。LCD显示部分采用LM032L作为液晶显示器,并用AT89C51的P0.0~P0.7引脚去控制LCD来完成乐曲名称或序号的显示。键盘控制部分采用4*4键盘,并用AT89C51的P1.0~P1.7引脚进行控制,以完成对歌曲的选择,暂停与播放功能。下面分别对各硬件电路图作以简要的介绍与分析,总电路原理图将在附录Ⅱ中给出。
AT89C51LCD液晶显示系统 键盘控制系统
单片机蜂鸣器 图2.1 数字音乐盒总体设计方案框图
2.2 数字音乐盒部分电路原理说明
2.2.1 蜂鸣器驱动部分电路图与原理说明
蜂鸣器驱动电路部分的原理采用AT89C51的P3.7引脚产生不同的频率方波去驱动蜂鸣器发出不同的音调。这些不同的音调由软件设计部分中不同的数码来实现,这些不同的数码就表示不同的频率成分,这些频率成分就会去驱动蜂鸣器发出不同的音调,从而完成对一首歌曲的播放。蜂鸣器驱动部分的电路图如下图2.2所示。
4
单片机与接口技术课程设计(论文)
图2.2数字音乐盒蜂鸣器驱动部分示意图
2.2.2 LCD显示部分电路图与原理说明
LCD是液晶显示器的缩写,它是一种被动式的显示器,即液晶本身并不发光,而是利用液晶经过处理后能够改变光线通过方向的特性,从而达到白底黑字或黑底白字显示的目的。液晶显示器具有低功耗、抗干扰能力强等优点,因而被广泛应用在仪器仪表和控制系统中。而被广泛地应用在各类单片机系统中的显示模块是点阵字符型LCD显示器,它的模块电路框图如下图2.3所示。
图2.3字符型LCD模块的电路框图
5
单片机与接口技术课程设计(论文)
如图2.3所示,字符型LCD模块的电路图由控制器HD44780、驱动器HD44100及几个电阻和电容组成。HD44100用作扩展字符显示。该电路模块共有14个引脚,其中8条数据线,3条控制线,3条电源线,通过单片机写入模块的数据和命令,就可以对显示方式和显示的内容作出选择。
如本次课程设计中所设计的LCD显示部分,它的电路原理图如下图2.4所示。它采用P0.0~P0.7引脚去控制LCD显示屏,再通过对应的软件指令的设计,即可令显示屏显示歌曲的名称或序号。
图2.4数字音乐盒LCD显示部分示意图
2.2.3 键盘控制部分电路图与原理说明
常用的键盘接口分为独立式键盘接口和行列式键盘接口。独立式键盘接口适用于按键较少或操作速度较高的场合,而行列式键盘适用于按键数目较多的场合。由于本次课程设计要求能够播放至少3首歌曲,同时要能实现歌曲的暂停与播放功能,故选择按键数目较多的行列式键盘。行列式键盘的键盘结构如下图2.5所示,它由行线和列线组成,而各按键在行、列线的交叉点上。行线通过上拉电阻接到+5V电源上。在无按键按下时,行线处于高电平状态;当有按键按下时,行线电平状态将由与此行线相连的列线电平决定。列线的电平如果为低,则行线电平为低;列线的电平如果为高,则行线的电平也为高,这一点是识别行列式键盘是否按下的关键所在。
6
单片机与接口技术课程设计(论文)
图2.5 行列式键盘原理图
本次课程设计所采用的键盘控制系统的原理框图如图下图2.6所示。它使用4*4键盘,并用P1.0~P1.7引脚进行控制,与AT89C51的中断系统相结合,并用软件进行编程后,就可实现对乐曲的播放与暂停功能。
图2.6 数字音乐盒键盘控制部分示意图
7
单片机与接口技术课程设计(论文)
第3章 数字音乐盒的软件设计
3.1数字音乐盒总体软件程序流程图与分析
数字音乐盒的三大主要硬件部分为蜂鸣器驱动部分,LCD显示部分以及键盘控制部分。故按照此硬件构造,可以设计出如下图3.1所示的总体程序流程图。在软件运行之前,第一步操作就是要对系统进行初始化操作。初始化完毕后,即可开始设计系统的核心功能部件,即LCD的显示和音乐的播放,最后就是键盘控制程序的设计,由于键盘既要控制LCD显示对应的歌曲名称或序号,又要控制蜂鸣器去播放不同的歌曲,所以把键盘控制程序写在LCD显示程序设计和蜂鸣器频率控制程序设计的下方,且箭头都指向它。键盘的每次按下都相当于产生了一次中断,故除上述核心程序外,该软件设计还包含一系列的中断子程序,用以完成对歌曲的选择,播放,暂停功能。下面对除中断子程序外的其他核心程序分别作以简要介绍,而包含全部程序的程序清单将在附录Ⅲ中给出。
键盘控制子程序设计 键盘控制子程序设计 LCD显示子程序设计 蜂鸣器频率控制子程序设计 系统初始化子程序设计 系统初始化子程序设计 图3.1 数字音乐盒总体程序流程图
8
单片机与接口技术课程设计(论文)
3.2数字音乐盒各子程序的设计与分析
3.2.1 系统初始化子程序设计与分析
系统的初始化操作包括对所使用端口的定义与赋值,汇编起始地址的赋值,中断子程序入口地址的赋值,堆栈的初始化以及LCD显示屏的初始化。系统初始化子程序设计
如
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 ;清屏 LCALL ENABLE
MOV P0,#38H ;8位,2行显示 LCALL ENABLE
下
:
9
单片机与接口技术课程设计(论文)
3.2.2 LCD显示子程序设计与分析
AT89C51与LCD模块接口的软件编程的第一步必须要进行初始化操作,否则将无法正常显示,而常用的初始化方式有两种,一种是利用模块内部的复位电路进行初始化,一种是利用软件进行初始化,在本次课程设计中使用软件初始化方式,软件初始化的流程如下图3.2所示,它通过不断地等待和检查忙标志或延时来不断更改各寄存器的值,从而完成初始化操作。
图3.2 LCD显示屏软件初始化流程图
1 0
单片机与接口技术课程设计(论文)
3.2.3 蜂鸣器频率控制子程序设计与分析
本次课程设计中的蜂鸣器是完成音乐播放功能的核心器件,它受到AT89C51的P3.7引脚的控制,由P3.7引脚产生不同频率的方波,从而使蜂鸣器发出不同的音调,达到播放一首歌曲的效果。
在一首曲子的音符数组中,0xFF表示休止符,非休止符的数组元素高四位表示音阶,低四位表示节拍。通过音阶查询计数初值并赋值给计数器,从而产生一定频率的音调,而乐曲播放中的节拍则是通过延时来实现的。该部分子程序的主要流程图如下图3.3所示。
获取节拍 开始 初始化 从音符数组中得到音符 图3.3 蜂鸣器控制系统软件部分流程图
通过定时器产生音阶 延时产生节拍 控制蜂鸣器发出对应节拍的曲调 获取音阶 3.2.4 键盘控制子程序设计与分析
11
单片机与接口技术课程设计(论文)
键盘在单片机系统中采用编程扫描工作方式,它的子程序流程图如图3.4所示。键盘程序的功能主要有四个方面:一是判断键盘上有无键闭合,二是去除键的机械抖动,三是判断闭合键的键号,四是使单片机对键的一次闭合仅作一次处理。
图3.4 键盘控制子程序部分流程图
第4章 仿真结果与分析
4.1仿真结果
利用Proteus与Keil进行联合仿真后,得到如下所示的一系列仿真结果。图4.1为按下键盘1键,并播放歌曲《精忠报国》时的LCD显示图,可以观察到,此时LCD显示屏上显示了其歌曲序号为序号1;图4.2为按下键盘2键,并播放歌曲《月亮代表我的心》时的LCD显示图,可以观察到,此时LCD显示屏上显示了其歌曲序号为序号2;图4.3为按下键盘3键,并播放歌曲《看我72变》时LCD显示图,可以观察到,此时LCD显示屏上显示了其歌曲序号为序号3;而当按下键盘E键,歌曲会进入暂停状态,此时LCD显示屏上的计时时间不再变化,当再次按下E键时歌曲会继续播放,继续计时。
1 2
单片机与接口技术课程设计(论文)
图4.1 播放歌曲1时LCD显示图
图4.2 播放歌曲2时LCD显示图
图4.3 播放歌曲3时LCD显示图
4.2仿真步骤与结果分析
首先对Proteus与Keil的联合仿真过程作以介绍。仿真时,首先采用Proteus软件绘制硬件电路图,在Proteus左侧的原件栏拾取:AT89C51单片机,2N3906三级管,16个按键BUTTON,1个LCD显示屏LM032L,8个电阻,1个蜂鸣器之后即可连接电路,完成硬件部分的电路设计。
1 3
单片机与接口技术课程设计(论文)
之后采用Keil软件进行软件编程。打开Keil软件后的第一步是单击上方状态栏的Project选项,选择New project,在弹出来的对话框中新建一个文件夹,命名为music,之后将所有的代码内容都保存到该文件夹中,单击确定后,在弹出来的芯片选择对话框中选择ATMEL公司,选择其中的AT89C51单片机,并复制启动代码到Target1中。第二步是单击状态栏中的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,之后编译,运行,连接,看到下方程序状态栏中出现Creating HEX file 0 errors 即可。最后一步是打开Proteus,单击单片机,将刚刚生成的HEX文件写入到单片机中,单击运行,即可观察仿真结果。
从仿真结果来看,按下键盘的1,2,3键,可以分别播放3首不同的歌曲,4~d键均未定义,而事实上,只要在程序代码中再次添加几首歌曲的数码乐谱,那么当按下4~d键时还可以播放另外10首歌曲,这也就是说,此设计共可播放13首不同的歌曲。而0号键用于复位,e键用于使歌曲暂停,f键用于显示“WELCOME HERE”的欢迎界面。
在LCD显示屏上,按下1号键的同时,显示屏上会显示1,代表1号键已被按下,同时播放歌曲1。当按下其他键时同样可以达到相同的效果。当按下e键时,执行歌曲暂停播放命令,可以观察到LCD的计时时间此时暂停,而当再次按下e键时,歌曲继续播放,计时继续。
此次课程设计得到的仿真结果基本符合设计要求,但其中也存在如下两个问题:一是LCD显示屏在显示时会出现轻微的闪烁,二是键盘在按下后不能立刻松开,而是需要按下一小段时间,大概1秒钟后,单片机才能作出反应。
1 4
单片机与接口技术课程设计(论文)
1 5
单片机与接口技术课程设计(论文)
第5章 总结
本次单片机与接口技术课程设计共2周,题目是数字音乐盒的设计。
起初在拿到这个设计题目时,并没有清晰的设计思路,经过一番思考,本人想到了要用单片机去驱动蜂鸣器来完成歌曲的播放功能,但是一首歌曲中有不同的音阶和节拍,如何实现这些不同的音阶和节拍第一个困难。在查阅了大量的资料,并在老师的细心指导下,终于明白了单片机系统播放歌曲的原理。即:单片机可以产生不同频率的方波去驱动蜂鸣器发出不同的音调,而这些音调可以用音符数组来实现,不同的歌曲对应不同的音符数组,只要编写出对应的音符数组即可完成对于音阶的控制。而节拍的控制可通过调用延时子程序来实现。
解决了音乐播放的原理问题后,遇到的第二个问题就是LCD显示部分程序设计和键盘控制程序设计的代码编写问题。本人清醒地意识到我在课堂上所学习到的理论知识并不够深入,以至于在实践中编写程序代码时显得比较捉襟见肘。于是在重新研读教材上对应的理论知识后,终于初步拟出了这两部分的程序设计流程图,按照拟定出的程序设计流程图,本人在老师的指导下完成了对应程序代码的编写。这个过程虽然非常辛苦,但却获益良多。
总之,本次单片机与接口技术课程设计巩固并加深了本人在课堂上所学到的理论知识,并使本人有机会把它们运用到实践中去,激发了本人的学习兴趣,使本人以更加饱满的热情投入到接下来的学习中去。
本人签字:
1 6
单片机与接口技术课程设计(论文)
参考文献
[1] 张毅刚,彭喜元编著. 单片机原理与应用设计[M].北京:电子工业出版社,2008 [2] 郭天祥编著.新概念51单片机C语言教程—入门、提高、开发、扩展全攻略[M].北
京:电子工业出版社,2009
[3] 赵广元编著. Proteus辅助的单片机原理实践—基础设计、课程设计和毕业设计[M].
北京:北京航空航天大学出版社,2013
[4] 王爽编著.汇编语言[M](第三版).北京:清华大学出版社,2013
[5] 郑学坚,朱定华编著.微型计算机原理及应用[M](第四版).北京:清华大学出版社,2013 [6] 刘亮.基于单片机的数字音乐盒设计:电子学报[J].北京2014:11:53-58 [7] 周禹翔.数字音乐盒的设计与仿真:通信技术[J].北京2015:12:64-44
1 7
单片机与接口技术课程设计(论文)
附 录Ⅰ
总电路原理图
1 8
单片机与接口技术课程设计(论文)
附 录Ⅱ
元器件清单
器件名称 AT89C51单片机 2N3906三极管
按键
LM032L液晶显示器
电阻 蜂鸣器 电解电容 电容 晶振
数量 1片 1个 16个 1个 9个 1个 1个 2个 1个
1 9
单片机与接口技术课程设计(论文)
附
录
Ⅲ
程序清单
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 ;清屏 LCALL 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键盘扫描 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:
2 0
单片机与接口技术课程设计(论文)
MOV A,R2 MOV P1,A MOV A,P1
JB ACC.4,L1;为1跳转,第一行无按键 MM1: MOV A,@R1 MOV @R0,A INC R0 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
;若同时有其他按键,则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:
2 1
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 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 LCALL MAIN0
2 2
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 TABLE30 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,#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
2 3
单片机与接口技术课程设计(论文)
ADD A,#30H
MOV P0,#0C8H ;显示小时十位 LCALL ENABLE
MOV B,#10 DIV AB ADD A,#30H
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,#0CCH LCALL ENABLE LCALL WRITE2 MOV A,#3AH
MOV P0,#0CDH LCALL ENABLE LCALL WRITE2 MOV A,SEC
;显示小时个位 ;显示冒号 ;显示分十位 ;显示分个位 ;显示冒号 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;写数据 LCALL 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
2 4
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,$ 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 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,AMOV 21H,AMOV A,22H
2 5
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 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
2 6
单片机与接口技术课程设计(论文)
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 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 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
2 7
;显示分十位 ;显示分个位
HOUSET: MOV MIN,#00H MOV A,HOU MOV B,#10 DIV AB
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,HOU INC A MOV HOU,A XRL A,#10 JNZ OUT
SJMP OVERFLOW 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
2 8
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 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,32HDB 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 00H
第三首《看我七十二变》 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
2 9
单片机与接口技术课程设计(论文)
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 00H
END
3 0
因篇幅问题不能全部显示,请点此查看更多更全内容