基于单片机汇编编程的音乐提示定时器课程设计报告_第1页
基于单片机汇编编程的音乐提示定时器课程设计报告_第2页
基于单片机汇编编程的音乐提示定时器课程设计报告_第3页
基于单片机汇编编程的音乐提示定时器课程设计报告_第4页
基于单片机汇编编程的音乐提示定时器课程设计报告_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录第一章 概述1一 单片机的组成及特点1二 定时器的应用1第二章 系统总体设计2第三章 硬件模块方案设计3一 必要元器件选择3二 蜂鸣器电路设计3三 晶振电路设计4四 系统原理图设计4第四章 系统软件设计6一 主程序设计6二 键盘处理子程序8第五章 系统调试10一 硬件部分调试10二 软件部分调试101编辑、编译102 程序下载113 运行调试11第六章 总结体会12附录113程序清单13附录222参考文献22第一章 概述一 单片机的组成及特点单片机是将CPU、存储器、定时器/计数器、输入/输出接口电路、中断、串口通信接口等主要计算机部件集成在一块大规模集成电路芯片上,组成单片机微型计算机,

2、简称单片机。单片机具有集成度高、功能强、可靠性高、体积小、功耗低、使用方便、价格低廉等特点。二 定时器的应用随着社会的进步,电子行业的发展,定时器的应用极大的方便了人们的生活。定时关闭家用电器(如:空调,微波炉,电磁炉,洗衣机),定时提醒(如:约会,小憩)。本篇设计讨论了基于单片机的音乐提示定时器,从降低硬件成本,方便用户操作出发,以软件为主,同时兼顾软硬件升级。第二章 系统总体设计本系统基于STC 89C52RC单片机,4个8段数码管采用动态显示倒计时时间,定时时间输入采用4x4矩阵键盘(虽然在本设计中只用到4个按键,考虑到系统升级故采用4x4矩阵键盘),单片机中的系统总线与存储器已足够满足

3、系统要求故不需扩展。本系统要求以单片机为核心设计一个音乐提示定时器,具备倒数计时、时间设置、音乐演奏等功能。设计60分钟、20分钟、10分钟、5分钟的设置开关或按键,例如20分钟,显示为“20.00”,内定倒数计时时间为5分钟,显示为05:00。一旦按键后则开始倒计时,当计时为0则演奏一曲音乐,而且可循环播放,可随时停止。简易系统框图如图1所示:89C52单片机4个八段数码管4*4矩阵键盘蜂鸣器复位电路 图1 简易系统框图第三章 硬件模块方案设计一 必要元器件选择开发板1块、PC机及单片机调试软件Keil、仿真软件proteus、220V交流电源及导线若干。二 蜂鸣器电路设计蜂鸣器有长声有短声

4、两种,可以根据需要进行选择,通过软件编程控制。在程序里可以设计不同的歌曲来通过播放器进行播放,由于89C52型号单片机内部已经连接好蜂鸣器电路,因此不需要额外接线。蜂鸣器电路如图2所示:图2 蜂鸣器电路三 晶振电路设计单片机工作的时间基准是由时钟电路控制的。在单片机的XTAL1和XTAL2两个引脚上接一只晶振及两只电容就构成了单片机的时钟电路。电路中,电容器C14和C15对振荡频率有微调作用,通常的取值范围为30PF左右。石英晶体选择12MHZ。晶振电路图如图3所示:图3 晶振电路四 系统原理图设计系统原理图如图4所示:图4 系统原理图第四章 系统软件设计软件设计包括信息输入、信息处理、显示输

5、出等,为了使程序清晰明了,采用调用子程序设计方式。本系统用P1口作为4个8段数码管显示的输出,采用共阳极接法;S1S4控制8段数码管的位选。定义30H单元存放倒计时时间值,31H单元用于矩阵键盘键盘扫描,32H单元存放分钟的第一位,33H单元存放分钟的第二位,34H单元存放秒钟的第一位,35H单元存放秒钟的第二位,用定时器T1定时,工作在方式1下。一 主程序设计MAIN: CLR F0 ;清零用户标志位 MOV 33H , #5H ;默认5分钟倒计时 S1 BIT P2.0 ;标号位地址 S2 BIT P2.1 ;P1口显示输出 S3 BIT P2.2 ;S为矩阵键盘列 S4 BIT P2.3

6、 H1 BIT P2.4 ;H为矩阵键盘行 H2 BIT P2.5 H3 BIT P2.6 H4 BIT P2.7 W1 BIT P0.0 ;W为8段数码管位选 W2 BIT P0.1 W3 BIT P0.2 W4 BIT P0.3 SETB W1 SETB W2 SETB W3 SETB W4 BELL BIT P3.7MAIN1: LCALL CHECK_KEYDOWN ;键盘扫描子程序 LCALL TIME_COUNTDOWN_VALUE ;倒计时初值子程序 AJMP MAIN1程序调用关系如图5所示:去抖子程序倒计时处理子程序显示子程序键盘扫描子程序主程序按键处理子程序定时器0初始化子

7、程序音乐播放子程序定时器1初始化子程序图5 程序调用关系二 键盘处理子程序W1H1H4控制键盘矩阵的行,S1S4控制键盘矩阵的列。CHECK_KEYDOWN: LCALL SHOW ;显示子程序NOKEY0: MOV P2 , #0FFH ;扫描第一行 CLR H1 LCALL KEYDOWN ;扫描键盘按下子程序 JZ NOKEY1 LCALL SHOW MOV P2 , #0FFH CLR H1 LCALL KEYDOWN JZ NOKEY1 MOV 31H , #00H LJMP NOKEY4NOKEY1: MOV P2 , #0FFH ;扫描第二行 CLR H2 LCALL KEYDO

8、WN JZ NOKEY2 LCALL SHOW MOV P2 , #0FFH CLR H2 LCALL KEYDOWN JZ NOKEY2 MOV 31H , #04H LJMP NOKEY4NOKEY2: MOV P2 , #0FFH ;扫描第三行 CLR H3 LCALL KEYDOWN JZ NOKEY3 LCALL SHOW MOV P2 , #0FFH CLR H3 LCALL KEYDOWN JZ NOKEY3 MOV 31H , #08H LJMP NOKEY4NOKEY3: MOV P2 , #0FFH ;扫描第四行 CLR H4 LCALL KEYDOWN JZ NOKEY4

9、 LCALL SHOW MOV P2 , #0FFH CLR H4 LCALL KEYDOWN JZ NOKEY4 MOV 31H , #0CHNOKEY4: JB F0 , MUSIC ;用户标志位 为 1 则 播放音乐 JZ CHECK_KEYDOWN LCALL CHECK ;键盘 列扫描 子程序 ADD A , 31H ;至此可以知道哪个键被按下 RET按键扫描流程图如图6所示:开始 N是否有键被按下 Y 键值计算键值为0倒计时5分钟键值为0倒计时5分钟键值为0倒计时5分钟键值为0倒计时5分钟 图6 按键扫描流程图第5章 系统调试完成了硬件的设计、制作和软件编程之后,要使系统能够按设计

10、意图正常运行,必须进行系统调试。系统调试包括硬件调试和软件调试两个部分(硬件部分调试即开发板的测试)。一 硬件部分调试如果在调试按功能划分的器件上出现问题,可以按以下步骤进行:检查原理图连接是否正确;检查原理图与PCB图是否一致;检查原理图与器件的DATASHEET上引脚是否一致;用万用表检查是否有虚焊,引脚短路现象;查询器件的DATASHEET,分析一下时序是否一致,同时分析一下命令字是否正确。二 软件部分调试用Keil软件将程序输入计算机,经过反复编辑、修改、编译、下载、调试、运行,直至运行正确。1编辑、编译打开Keil软件,首先新建工程文件,选择Atmel-AT89C51-否;然后新建文

11、件,并以(.asm)扩展名保存;最后添加文件到源代码组,开始编辑输入程序。程序输入完成后,点击快捷窗口中的编译快捷按钮对程序进行编译,编译后再显示器下方的输入窗口显示编译结果,并能明确的指出错误的语句,可以根据错误的提示对程序进行修改,然后再编译,一直到编译无误,生成HEX文件。2 程序下载将单片机开发板用数据线与电脑连接,并接上电源线,打开STC软件,选择单片机型号(即89C52),选择生成的HEX文件,点击下载将程序下载到单片机开发板上。3 运行调试按下单片机的开关按键,分别对矩阵键盘的0-3按键进行测试,数码管分别显示倒计时时间05:00、10:00、20:00、60:00,再次按键开始

12、倒计时,观察倒计时,并注意在倒计时在00:00能否正确播放音乐,如果发现错误,修改程序编译后重新下载并调试。也可用仿真软件proteus进行仿真。经过系统各方面的调试,系统运行正确,说明该设计合理。第六章 总结体会经过两周的课程设计实训,虽然在准备考试的同事感觉很忙,但还是舍不得放弃这次提升自己的机会,在这两周不长不短的时间里学会了很多,尤其是更加系统的掌握了上课的理论知识,一级提升了自己动手实践的能力。学校每次课程设计都能让我全身心投入,废寝忘食也不为过,因为我始终觉得实践才能让我们成长。同时还能学到很多专业知识,加深对课本内容的理解,虽然会遇到很多困难,却总能得到收获。课程设计是培养学生综

13、合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。如今电子行业已经慢慢取代手工业了,而单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。因此作为电子信息工程专业的学生来说掌握单片机的开发技术是十分重要的。我的题目是音乐提示定时器的设计,对于我们这些工科学生来说,这是一次小小的锻炼。在设计的过程中发现了自己的不足之处,以及对以前所学过的知识理解得不够深刻,掌握得不够牢固,对单片机C语言掌握得不够熟练等。这次课程设计通过自己的努力,同学的帮助,还有老师的辛勤指导下,最终顺利完成了。谢谢老师!附录1程序清单 OR

14、G 0000H AJMP MAIN ORG 000BH LJMP TIMER0_INT ORG 001BH LJMP TIMER1_INT ORG 0030HSAVE: DB 00H , 00H , 00H , 00H ,00H , 00H ;预留空间备用MAIN: CLR F0 ;清零用户标志位 MOV 33H , #5H ;默认5分钟倒计时 S1 BIT P2.0 ;标号位地址 S2 BIT P2.1 ;P1口显示输出 S3 BIT P2.2 ;S为矩阵键盘列 S4 BIT P2.3 H1 BIT P2.4 ;H为矩阵键盘行 H2 BIT P2.5 H3 BIT P2.6 H4 BIT P

15、2.7 W1 BIT P0.0 ;W为矩阵8段数码管的位选 W2 BIT P0.1 W3 BIT P0.2 W4 BIT P0.3 SETB W1 SETB W2 SETB W3 SETB W4 BELL BIT P3.7MAIN1: LCALL CHECK_KEYDOWN ;键盘扫描子程序 LCALL TIME_COUNTDOWN_VALUE ;倒计时初值子程序 AJMP MAIN1;*;子程序集;键盘扫描子程序CHECK_KEYDOWN: LCALL SHOW ;显示子程序NOKEY0: MOV P2 , #0FFH ;扫描第一行 CLR H1 LCALL KEYDOWN ;扫描键盘按下子

16、程序 JZ NOKEY1 LCALL SHOW MOV P2 , #0FFH CLR H1 LCALL KEYDOWN JZ NOKEY1 MOV 31H , #00H LJMP NOKEY4NOKEY1: MOV P2 , #0FFH ;扫描第二行 CLR H2 LCALL KEYDOWN JZ NOKEY2 LCALL SHOW MOV P2 , #0FFH CLR H2 LCALL KEYDOWN JZ NOKEY2 MOV 31H , #04H LJMP NOKEY4NOKEY2: MOV P2 , #0FFH ;扫描第三行 CLR H3 LCALL KEYDOWN JZ NOKEY3

17、 LCALL SHOW MOV P2 , #0FFH CLR H3 LCALL KEYDOWN JZ NOKEY3 MOV 31H , #08H LJMP NOKEY4NOKEY3: MOV P2 , #0FFH ;扫描第四行 CLR H4 LCALL KEYDOWN JZ NOKEY4 LCALL SHOW MOV P2 , #0FFH CLR H4 LCALL KEYDOWN JZ NOKEY4 MOV 31H , #0CHNOKEY4: JB F0 , MUSIC ;用户标志位 为 1 则 播放音乐 JZ CHECK_KEYDOWN LCALL CHECK ;键盘 列扫描 子程序 ADD

18、 A , 31H ;可以知道0-F中的哪个键被按 RET;*;扫描键盘按下子程序KEYDOWN: MOV A,P2 ;检查是否有键被按下 ANL A,#0FH ;有键按下A不为0 XRL A,#0FHRET;*;键盘 列扫描 子程序CHECK: CJNE A , #01H , ZERO ;第一列被按下? MOV A , #00H LJMP OVERZERO: CJNE A , #02H , ONE ;第二列被按下? MOV A , #01H LJMP OVERONE: CJNE A , #04H , TWO ;第三列被按下? MOV A , #02H LJMP OVERTWO: CJNE A

19、, #08H , OVER ;第四列被按下? MOV A , #03HOVER: RET;*;倒计时初值子程序TIME_COUNTDOWN_VALUE:LED0: CJNE A , #00H , LED1 ;30H中存放倒计时时间值 MOV 30H , #5 LJMP LED4LED1: CJNE A , #01H , LED2 MOV 30H , #10 LJMP LED4LED2: CJNE A , #02H , LED3 MOV 30H , #20 LJMP LED4LED3: CJNE A , #03H , LED4 MOV 30H , #60LED4: MOV A , 30H LCA

20、LL TIME_SHOW ;倒计时初值处理子程序 LCALL INTTIMER0 RET;*;倒计时初值处理子程序TIME_SHOW: MOV B , #10 ;32H存放显示倒计时值分钟的高位 DIV AB ;33H存放显示倒计时值分钟的低位 MOV 32H , A MOV 33H , B RET;*;音乐播放子程序MUSIC:MOV TMOD , #10H SETB EA SETB ET1 MOV DPTR , #MUSICTABLEMUSIC_VALUE: CLR A MOVC A , A+DPTR MOV R1 , A INC DPTR CLR A MOVC A , A+DPTR MO

21、V R0 , A ORL A , R1 JZ MUSIC_STOP MOV A , R0 ANL A , R1 CJNE A , #0FFH , MUSIC_TIME_START SJMP MUSIC;*;定时器1初始化MUSIC_TIME_START: MOV TH1 , R1 MOV TL1 , R0 SETB TR1 SJMP MUSIC_T_LONGMUSIC_STOP: CLR TR1MUSIC_T_LONG: CLR A INC DPTR MOVC A , A+DPTR MOV R7 , ATIME_VALUE: ACALL MUSIC_TIME_DELAY; DJNZ R7 ,

22、TIME_VALUE ;R7 控制节拍延时次数 INC DPTR LJMP MUSIC_VALUE;*;定时器1中断服务程序TIMER1_INT: MOV TH1 , R1 MOV TL1 , R0 CPL BELL ;晶振发声 RETI;*;节拍延迟子程序MUSIC_TIME_DELAY:; 节拍 延时 187ms MOV R6 , #02D2: MOV R5 , #187D3: MOV R4 , #248 DJNZ R4 , $ DJNZ R5 , D3 DJNZ R6 , D2 RET;*;倒计时处理子程序 六十进制处理TIME_COUNTDOWN: MOV A , 35H CJNE A

23、 , #-1 , COUNTDOWN1 MOV 35H , #9 DEC 34HCOUNTDOWN1:MOV A , 34HCJNE A , #-1 , COUNTDOWN2MOV 34H , #5DEC 33HCOUNTDOWN2:MOV A , 33HCJNE A , #-1 , COUNTDOWN3MOV 33H , #9DEC 32HCOUNTDOWN3:RET;*;8段显示管显示子程序SHOW: LCALL TIME_COUNTDOWN CLR W1 ;显示第一个字符 MOV A , 32H LCALL SHOW1SETB W1 CLR W2 ;显示第二个字符 MOV A , 33H

24、LCALL SHOW1 SETB W2 CLR W3 ;显示第三个字符 MOV A , 34H LCALL SHOW1 SETB W3 CLR W4 ;显示第四个字符 MOV A , 35H LCALL SHOW1 SETB W4 RET;*;字符显示子程序SHOW1: MOV DPTR , #TABLE ;送显示的字符 MOVC A , A+DPTR MOV P1 , A JB W2 , DELAY CLR P1.7DELAY: ;延时1ms子程序 MOV R6 , #66HDL0: MOV R5 , #03H DJNZ R5 , $ DJNZ R6 , DL0 SETB P1.7 RET;

25、*;定时器0 初始化子程序INTTIMER0: ;基础定时一分钟,改R4的值即可改变定时时间 MOV R4 , 30H ;30H单元存放初值 MOV R3 , #60 ;定时一分钟 MOV R2 , #100 ;定时一秒钟 MOV TMOD , #01H MOV TH0 , #0DCH;利用基础定时的一秒钟显示倒计时效果 MOV TL0 , #00H ; SETB EA SETB ET0 SETB TR0 RET;*;定时器0 中断服务程序TIMER0_INT:MOV TH0 , #0DCHMOV TL0 , #00HCJNE R2 , #1 , L1DEC 35HMOV R2 , #100 CJNE R3 , #1 , L2MOV R3 , #60DJNZ R4 , RTN SETB F0 ;用户标志位置1 CLR TR0 AJMP RTNL2:DEC R3AJMP RTNL1: DEC R2RTN: RETI;*;待显示字

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论