单片机数字音乐盒程序设计
《单片机原理及应用》
课程设计报告
题 目
学 号 姓 名
年级专业
指导教师
完成日期
安徽师范大学物理与电子信息学院
College of Physics and Electronic Information, Anhui Normal University 数字音乐盒 1295054 邢安超 张凯旋 罗杰 2012级自动化 黄云飞 2014 年 6 月 7 日
目 录
摘要......................................................................................................................... 1
引言......................................................................................................................... 2
1 课程设计目的..................................................................................................... 2
2 课程设计任务及要求......................................................................................... 2
4 设计原理............................................................................................................. 3
5 系统总体方案介绍............................................................................................. 4
5.1 系统组成框图........................................................................................... 4
5.2 音乐盒的功能........................................................................................... 4
6 硬件设计............................................................................................................. 4
6.1 总体设计框图........................................................................................... 4
6.2各部分硬件设计及其原理........................................................................ 5
6.3 硬件电路图及功能................................................................................... 7
7 软件设计............................................................................................................. 8
7.1 软件程序设计........................................................................................... 8
8 调试..................................................................................................................... 9
8.1 检查硬件连接........................................................................................... 9
8.2 检查软件系统........................................................................................... 9
8.3 测试结果................................................................................................... 9
课程设计体会....................................................................................................... 10
参考文献............................................................................................................... 10
附 录..................................................................................................................... 1
数字音乐盒
邢安超 张凯旋 罗杰,皖江学院
摘 要:
本设计是采用单片机为核心设计的数字音乐盒。它可以实现音乐的播放,可
以通过功能键来选择乐曲,播放或暂停,并且可以通过LCD 屏幕显示正在播放的
歌曲的序号,及乐曲播放时间,开机时有英文欢迎提示字符,本音乐盒可以播放
三首音乐。
主控芯片采用AT89C51,采用汇编语言进行编程,编程后利用KEIL C51来
进行编译,再生成的HEX 文件装入芯片中,采用proteus 软件来仿真,检验功能
得以正常实现。
本系统功能键有一个2×4的键盘组成,其中1号到3号键是歌曲序列号键,
可以直接选择音乐;4号键选择当前播放音乐的上一首音乐,5号键选择当前播
放音乐的下一首音乐,6号键使音乐暂停播放,7号键显示开机画面。
键盘采用动态扫描方式。每次扫描一行键盘,送此行低电平,读输入口的状态值,
判断有没有键按下。若有键按下,根据读入口的值选择显示值并送至显示值寄存
单元,判断键值,启动计数器T0,根据次值为偏移地址找到要选择的音乐的代
码的首地址,根据代码产生一定频率的脉冲,驱动蜂鸣器,放出音。同时启动定
时器T1,计算音乐的播放的时间,并且启动LCD ,在LCD 上显示序号和播放时间。
在制作过程中,我发现将音乐代码的首地址送出很难实现。因为其首地址是十六
位的,而单片机中我们能用的十六位的寄存器只有DPTR ,但是DPTR 在下面必须
要用到,所以不能用。把十六位地址拆成俩个八位的地址分高低位去送, 用直接
地址#high(4000h)去送,编译成功。
关键词:AT89C51, 数字音乐盒, 2×4键盘,LCD, 时钟震荡电路
引言
本课程设计是设计数字音乐盒及其播放程序。
乐曲演奏广泛用于自动答录装置、手机铃声、集团电话、及智能仪器仪表设
备。实现方法有许多种,在众多的实现方法中,以纯硬件完成乐曲演奏,随着
FPGA 集成度的提高,价格下降,EDA 设计工具更新换代,功能日益普及与流行,
使这种方案的应用越来越多。如今的数字逻辑设计者面临日益缩短的上市时间的
压力,不得不进行上万门的设计,同时设计者不允许以牺牲硅的效率达到保持结
构的独特性。使用现今的EDA 软件工具来应付这些问题,并不是一件简单的事情。
FPGA 预装了很多已构造好的参数化库单LPM 器件。通过引入支持LPM 的EDA[1]
软件工具,设计者可以设计出结构独立而且硅片的使用效率非常高的产品。单片
机制作的八音盒弥补了这些。
1 课程设计目的
基于学习单片机课程的基础,锻炼我们的动手能力。
《单片机与接口技术》课程设计是单片机课程的综合性与实践性教学环节,
课程设计的目的就是:
a .综合运用单片机原理课程和单片机接口技术课程的知识,分析和解决实
际应用中的问题进一步巩固、加深和拓宽所学的知识。
b .通过设计实践,逐步树立正确的设计思想,熟悉掌握单片机应用系统设
计的一般规律,培养分析问题和解决问题的能力。
c .通过逻辑分析、方案设计、硬件电路连接、画程序流程图,汇编语言编
程,上机调试,进行全面的单片微机应用基本技能的训练。
2 课程设计任务及要求
以单片机为核心,设计一个数字音乐盒:
利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏
乐曲(最少3首乐曲,每首不少于30s )。
采用LCD 显示信息。
a. 开机时有英文欢迎提示字符,播放时显示歌曲序号(或名称)。
b. 可通过功能键选择乐曲、暂停、播放。
c .利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而
演奏乐曲
d.采用LCD 显示信息
e.选作内容:显示乐曲播放时间或剩余时间
3 设计意义
a 、有利于基础知识的理解
通过《初中信息技术》必修部分的学习,学生掌握了一些信息时代生存与发
展必需的信息技术基础知识和基本技能,具备了在日常生活与学习中应用信息技
术解决问题的基本态度与基本能力。但是,学生对于程序、病毒的内涵,程序与
文档、数据的区别,计算机运行的机理等知识内容的理解比较肤浅。学生如果接
触了程度设计,就能真正理解,从而进一步打破计算机的神秘感。
b 、有利于逻辑思维的锻炼
在许多常规学科的日常教学中,我们不难发现这样一个现象,不少学生的思
维常常处于混乱的状态。写起作文来前言不搭后语,解起数学题来步骤混乱,这
些都是缺乏思维训练的结果。程序设计是公认的、最能直接有效地训练学生的创
新思维,培养分析问题、解决问题能力的学科之一。即使一个简单的程序,从任
务分析、确定算法、界面布局、编写代码到调试运行,整个过程学生都需要有条
理地构思,这中间有猜测设想、判断推理的抽象思维训练,也有分析问题、解决
问题、预测目标等能力的培养。
c 、有利于与其他学科的整合
在程序设计中,我们可以解决其它学科有关问题,也利用其它课程的有关知
识来解决信息技术中比较抽象很难理解的知识。在信息技术课中整合其它学科的
知识,发挥信息技术的优势。例如,在编写“一元二次方程求解”程序时,就复
习了数学的相关知识。而在讲解逻辑运算的知识时,我们又可以利用物理中的电
路知识进行讲解,起到意想不到的效果。
d 、有利于治学态度的培养。
程序设计中,语句的语法和常量变量的定义都有严格的要求,有时输了一个
中文标点、打错了一个字母,编译就不通过,程序无法正常运行。因此,程序设
计初学阶段,学生经常会犯这样的错误,可能要通过几次乃至十多次的反复修改、
调试,才能成功,但这种现象会随着学习的深入而慢慢改观。这当中就有一个严
谨治学、一丝不苟的科学精神的培养,又有一个不怕失败、百折不挠品格的锻炼。
4 设计原理
当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱
动蜂鸣器,放出乐曲。同时启动定时器T1,显示乐曲播放的时间,并驱动LCD,
显示歌曲号及播放时间。也可在LED 显示歌曲号。
5 系统总体方案介绍
5.1 系统组成框图
音乐盒的系统结构以AT89C51单片机位控制核心,加上几个按键、时钟复位
电路、蜂鸣器、LCD 模块组成。单片机负责接收按键的输入,根据输入控制音乐
播放曲目和音乐播放|暂停的样式以及蜂鸣器发音。系统组成框图如图2.1所示。
图5.1 系统组成框图
5.2 音乐盒的功能
音乐盒的功能结构如图2.2所示。1~3号开关负责切换播放歌曲,播放歌曲
共3首,分别是同一首歌、世上只有妈妈好和精忠报国。4、5号开关负责切换
歌曲:上一首和下一首,6号开关负责歌曲的暂停和播放,7号开关是开机键。
6 硬件设计
6.1 总体设计框图
当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱 动蜂鸣器,放出乐曲。同时启动定时器T1,显示乐曲播放的时间,并驱动LCD,
显示歌曲号及播放时间。也可在LED 显示歌曲号。
6.2各部分硬件设计及其原理
6.2.1 按键电路设计
按键电路如图6.2所示:P1.0-P1.5控制按键,其中P1.0-P1.1扫描行,P1.4-P1.5扫描列。
图6.2 按键电路
6.2.2 LCD显示电路设计与原理
如图6.3所示文字型LCD (16×2)的D0-D07端口与AT89C51端口P0.0-P0.7相连接VSS 与VEE 两端接地。P2.0-P2.2作为LCD 的RS,R/W,E的控制信号。用P0.0-P0.7作为LCD 的D0-D7的控制信号。
图6.3 LCD显示电路
6.2.3 时钟振荡电路
AT89C51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或者陶瓷谐振器一起构成自然振荡器。外接石英晶体及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。对外接电容C1,C2虽然没有什么严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性。如果使用石英晶体,我们推荐电容使用30PF ±10PF ,而如果使用陶瓷振荡器建议选择40PF ±10PF 。用户也可以采用外部时钟。采用外部时钟的电路如图示。这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。振荡器电路图如下:
图6.4 单片机内部、外部振荡电路
6.3 硬件电路图及功能
总体硬件电路实现功能如下,如图6.5所示
电路中用P1.0~P1.5控制按键。P0.0~P0.7控制LED 。P3.0控制蜂鸣器。电路为12MHZ 晶振频率工作,起振电路中C1、C2均为30PF 。
图6.5 硬件电路图
7 软件设计
7.1 软件程序设计
7.1.1 程序流程图
7.1.2 程序源代码(见附录)
8 调试
8.1 检查硬件连接
在PROTUES 检查各硬件管脚是否连接正确,线路逻辑是否正确,例如:晶振电路的连接,复位电路是否设计正确。
8.2 检查软件系统
1.根据系统的原理结构检查各流程图是否正确,再根据流程图来检查程序是否也正确。
2.将所有程序组织起来,在软件环境下运行,检查程序是否正确。通过对硬件和软件系统的认真检查,反复测试,如果没有出现问题即可把源程序编译成HEX 文件装载到单片机中,对硬件进行仿真。
8.3 测试结果
图8.1 系统总体运行图
课程设计体会
这学期学习单片机的课时不多,对单片机的硬件设计,软件设计掌握的深度不够,但通过此次课程设计,明显的改善了,首先对于硬件电路的工作原理有了进一步的学习,同时有了一个提升;软件方面,在程序的设计,程序的调试方面都有了很大的进步。
在一个好的氛围里才能踏下心来做东西,在这一段时间里,同学们都认真对待这次课程设计,除了自己做好自己的课题外,在遇到不懂的地方互相讨论,查阅资料,互助解决问题。另外在编程中出现问题时,一定要戒骄戒躁,脚踏实地,认真看书,仔细分析,仔细调试,就一定会发现错误。我们也是这么做的,这一点在这次的课程设计中十分重要。
通过这次课程设计,我体会到了成功的喜悦,听着自己设计的程序下载到单片机中播放出音乐, 心理非常自豪。这次的课程设计在一定程度上改变了我学习单片机这门课程的态度,从最初的认为学它没有什么实际意义,到如今爱上单片机学习,并希望能将理论运用到实践,设计出更好更完整的系统。我明白了一个人要想做好一件事,就必须具备自信心,耐心,还要有毅力,要胆大心细,要勇于尝试,要手脑并用,最后才能交出一份令人满意的答卷。对我而言,知识上的收获重要,精神上的丰收更加。让我知道了学无止境的道理。我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。挫折是一份财富,经历是一份拥有。这次课程设计必将成为为我人生旅途上一个非常美好的回忆
在设计即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意!
参考文献
[1] 吴亦峰, 陈德伟,单片机原理与接口技术,北京:电子工业出版社,2010年11月
[2] 黄智伟 全国大学生电子设计竞赛系统设计[M],北京:北京航空航天大学出版社,2006.6.
[3] 黄智伟 凌阳单片机课程设计指导[M],北京:北京航空航天大学出版社,2006.11.
[4] 李广弟,朱月秀,王秀山. 单片机基础[M],北京:北京航空航天大学出版社,2001.7.
[5] 赵曙光,郭万有,杨颂华. 可编程逻辑器件原理开发与应用[M],西安:西安电子科技大学, 2000.
[6] 候伯亨.VHDL 硬件描述语言与数字逻辑电路设计[M], 西安:西安电子科技大学出版社, 1999.
[7] 康华光. 模拟电子技术基础(第四版)[M], 武汉:华中理工大学出版社,1999.
附 录
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
;---------------------键盘扫描
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,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
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:
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,AAA
LCALL MODD
MOV 52H,#HIGH TABLE30
MOV 53H,#LOW TABLE30
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
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
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' WELCOME! ',0FEH
TABLE2:DB'DFF WB ',0FEH
TABLE4:DB 'CAU',0FEH
TABLE3:
DB 30H,31H,32H,33H
DB 34H,35H,36H,37H
;------------------------------------------------------------------- ; 播放歌曲程序
;------------------------------------------------------------------- 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
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 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
PUSH PSW
MOV TL0,20H
MOV TH0,21H
CPL P3.0
POP PSW
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
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
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 88H,14H,24H,36H,42H,34H,14H,28H,14H,94H
DB 1FH,88H,14H,24H,34H,32H,42H,54H,14H
DB 46H,32H,54H,22H,32H,32H,22H,2CH,38H,54H,74H
DB 76H,62H,68H,54H,52H,62H,74H,62H,52H,3FH
DB 46H,42H,54H,64H,54H,42H,32H,28H,0A4H,0A2H
DB 92H,84H,94H,1FH,0B8H,68H,46H,52H,68H
DB 74H,72H,72H,74H,62H,52H,3FH,0B8H,68H
DB 46H,52H,68H,64H,62H,62H,64H,42H,32H,2FH
DB 58H,14H,24H,36H,42H,34H,12H,12H,26H,22H,24H,22H,12H
DB
94H,9CH,0A8H,0A6H,92H,84H,64H,54H,22H,22H,46H,42H,44H,32H,22H,5FH DB 00
;-------------------------------------------------------------------
; 第二首>
;-------------------------------------------------------------------
TABLE20:
DB 66H,52H,34H,54H,0B4H,62H,52H,68H,34H,52H,62H,54H,34H,12H,92H,52H, 32H,28H
DB 26H,32H,54H,52H,62H,34H,24H,18H,56H,32H,22H,12H,92H,12H,8FH
DB 66H,52H,34H,54H,0B4H,62H,52H,68H,34H,52H,62H,54H,34H,12H,92H,52H,
32H,28H
DB 26H,32H,54H,52H,62H,34H,24H,18H,56H,32H,22H,12H,92H,12H,8FH
DB 66H,52H,34H,54H,0B4H,62H,52H,68H,34H,52H,62H,54H,34H,12H,92H,52H, 32H,28H
DB 26H,32H,54H,52H,62H,34H,24H,18H,56H,32H,22H,12H,92H,12H,8FH DB 00
;-------------------------------------------------------------------
; 第三首《精忠报国》
;-------------------------------------------------------------------
TABLE30:
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
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
END
物理与电子信息学院课程设计评定意见
注:本页与上一页用A3纸套印成封面和封底,课程设计报告正文用A4纸打印然后装订