江西理工大学应用科学学院信息工程系
单片机原理与应用课程设计报告
设计题目:
基于 51 单片机的秒表设计
专
业:
电子信息工程
班
级:
电信 121
学
号:
08060312109
参与人员:
贺佳、周代元、周昶旭 、张浥中
指导老师:
王苏敏
完成日期:
2015 年1 1 月 20 日
指导老师评语:
得分:
指导教师签名:
目录
1 设计任务和性能指标
................................ .....
0 0
1.1 课题内容
.........................
错误!未定义书签。
1.2 课题要求
..........................
错误!未定义书签。
2 设计方案
...............................
错误!未定义书签。
2.1 需求分析
................................ ..........
2 2
2.2 方案论证
................................ ..........
2 2
3 3 系统软件设计
................................ ...........
4 4
4.1 系统软件流程图
....................
错误!未定义书签。
4.2 实验程序清单
......................
错误!未定义书签。
4 4
系统硬件设计
................................ ..........
10
5. 1 调试步骤
................................ .........
11
5.2 性能分析
..........................
错误!未定义书签。
5 5 系统硬件设计
...........................
错误!未定义书签。
参考文献
................................ ................
14
1 设计任务和性能指标
1 课题内容要求及目的
1 1.1 课题内容
用 AT89C51 设计一个秒表,该秒表课可显示 0.0~99.9 秒的时间,进行相应的单片机硬件电路的设计并进行软件编程利用单片机定时器/计数器中断设计秒表,从而实现秒、十分之一秒的计时。综合运用所学的《单片机原理与应用》理论知识,通过实践加强对所学知识的理解,具备设计单片机应用系统的能力。通过本次系统设计加深对单片机掌握定时器、外部中断的设置和编程原理的全面认识复习和掌握。
本系统利用单片机的定时器/计数器定时和记数的原理,通过采用 proteus 仿真软件来模拟实现。模拟利用 AT89C51 单片机、LED数码管以及控件来控制秒表的计数以及计位!其中有三位数码管用来显示数据,显示秒(两位)和十分之一秒,十分之一秒的数码管计数从 0~9,满十进一后显示秒的数码管的数字加一,并且十分之一秒显示清零重新从零计数。计秒数码管采用三位的数码管,当计数超过范围是所有数码管全部清零重新计数。
2 1.2 课题要求
本课题是基于单片机的秒表系统设计,它的具体要求有以下几点:
(1)用单片机 AT89C51 实现;
(2)以 0.1 秒为最小单位进行显示;
(3)秒表量程为 0.0-99.9 秒,用 LED 显示;
(4)有清零、开始、停止功能。
3 1.3 课题目的
通过课程设计,进一步熟悉和掌握 AT89C51 单片机的结构及工作原理,掌握以单片机核心的电路设计的基本方法和技术,了解表关电路参数的计算方法。通过完成一个包括电路设计和程序开发的完整过程,进一步了解开发一单片机应用系统的全过程,通过此综合训练,为以后毕业设计打下一定的基础。
(1)利用单片机定时器计数器中断设计秒表,从而实现秒、十分之一秒的计时。
(2)综合运用所学的《单片机原理与应用》理论知识,通过实践加强对所学知识的理解,具备设计单片机应用系统的能力,加深对单片机课程的全面认识。
(3)通过本次课程设计能够对程序进行编辑,校验。
(4)通过本次系统设计加深对单片机掌握定时器、外部中断的设置和编程原理的全面认识复习和掌握,对单片机实际的应用作进一步的了解。
(5)通过本次系统设计,增强自己的动手能力。认识单片机在日常生活中的应用的广泛性,实用性。
(6)该实验通过单片机的软件延时设计,设计简单的计时器系统,能正确的计时。
2.1 需求分析
近年来,随着科学技术的进步和时代的发展,人们对秒表的功能和精度提出了越来越高的要求,各种秒表的设计也越来越重要。秒表计时器是在一种计时器上实现两种功能的一种器件。它广泛应用于各种场所,同时它的小巧,价格廉价,精确度高,使用方便,功能齐全,便于集成化。而受广大消费者的喜爱。
2.2 方案论证
现今的计时器通常只能通过启/停按键实现断点计时的功能,即通过启/停按键来记录一段时间。这种计时器查看的时间只能为计时结束时刻。实际的应用中往往需要在不影响正常计时的基础上,能查看记录过程中的某些点的时间。
本课设即针对此问题,设计了一种能通过按键方式查看记录过程
中任一时刻值的计时器。这种计时器在查看中间值时不会影响整个记录过程,并且能把相应数据送入存储模块及显示模块,以便查看。
本系统采用 AT89C51 单片机作控制器,LED 数码管,实现显示时、分、秒,以 24 小时计时方式。为了实现 LED 显示器的数字显示,可以采用静态显示法和动态显示法。由于静态显示法需要数据锁存器等硬件,结构较为复杂,考虑时钟显示只有六位,且系统没有其他复杂的处理任务,所以采用动态扫描法实现 LED 的显示。单片机采用 AT89C51系列,有足够的空余硬件资源实现其它的扩充功能。
3 3 系统软件设计
1 3.1 软件程序流程图
根据课题内容,可作出主流程序树状图如图 3.1 所示:
开 始 有进位吗? 初始化 有暂停指令吗? Y 有清零指令吗? 0.1 秒位加一 N N N Y 有进位吗? N Y 秒位加一 十秒位加一 Y 有进位吗? N Y 声音提示
图 3.1
3.2 实验程序清单:
HAOMIAO
EQU
34H MIAO
EQU 35H
SHIMIAO
EQU
36H ORG 0000H AJMP START ORG 0030H START:
CLR C
SETB P1.6
SETB P1.5
SETB P1.4
MOV HAOMIAO,#0
MOV MIAO,#0
MOV SHIMIAO,#0
MOV DPTR,#TABLE
MOV A,#00H
MOVC A,@A+DPTR
CLR P1.6
MOV
P2,A
MOV A,#00H
MOVC A,@A+DPTR
CLR P1.4
MOV P2,A
MOV DPTR,#TABLE1
MOV A,#00H
MOVC A,@A+DPTR
CLR P1.5
MOV
P2,A
LCALL KAISHI
LCALL MAIN
SHIWEI :
SETB P1.5
MOV DPTR,#TABLE
;十秒位显示
MOV MIAO,#0
;使秒位从零位重新循环
INC SHIMIAO
MOV A,SHIMIAO
CLR C
SUBB A,#6
JZ START
AJMP MAIN
RET
TINGZHI:
MOV A,#00H
;判断是否有清零指
MOV A,P3
ANL A,#04H
JZ START
MOV A,#00H
;判断是否有停止指令
MOV A,P3
CLR C
ANL A,#02H
LCALL YANSHI
JZ MAIN
LJMP TINGZHI
START1 :
LJMP START
SHIWEI1:
LJMP SHIWEI
MAIN
:
SETB P1.5
SETB P1.4
SETB P1.6
MOV A,#00H
; 判断是否有清零指令
MOV A,P3
ANL A,#04H
JZ START1
MOV A,#00H
; 判断是否有停止指令
MOV A,P3
CLR C
ANL A,#02H
JZ TINGZHI
MOV DPTR,#TABLE
; 0.1 位秒显示
I NC
HAOMIAO
;加一,可查下一位数据
MOV A, HAOMIAO
; 判断是否进位
CLR C
SUBB A,#10
JZ
MIAOZHEN
LCALL YANSHI
;延时 0.1 秒
AJMP MAIN
RET
;继续计时 MIAOZHEN:
SETB P1.4
MOV DPTR,#TABLE1
;秒位显示
MOV HAOMIAO,#0
;使 0.1 秒从零重新循环
INC
MIAO
;加一,可查下一位数据
MOV A,MIAO
;判断是否进位
CLR C
SUBB A,#10
JZ
SHIWEI1
LCALL
SND
AJMP MAIN
;返回 0.1 秒计 YANSHI: MOV R6,#30
DL2:
MOV A,#00H
;判断是否有清零指令
MOV A,P3
ANL A,#04H
JZ START1
MOV DPTR,#TABLE
MOV A,SHIMIAO
MOVC A,@A+DPTR
CLR P1.6
MOV
P2,A
ACALL YIHAOMIAO
SETB P1.6
MOV A,HAOMIAO
MOVC A,@A+DPTR
CLR P1.4
MOV P2,A
ACALL YIHAOMIAO
SETB P1.4
MOV DPTR,#TABLE1
MOV A,MIAO
MOVC A,@A+DPTR
CLR P1.5
MOV
P2,A
ACALL YIHAOMIAO
SETB P1.5
DJNZ R6,DL2
RET
YIHAOMIAO:
MOV R7,#250
CV:NOP
NOP
DJNZ R7,CV
RET
KAISHI: MOV A,#0
MOV A,P3
ANL A,#01H
JNZ KAISHI
RET SND:
SETB P1.0
MOV R1,#1EH DL:
MOV R0,#0F9H DL1:
DJNZ R0,DL1
DJNZ R1,DL
CLR P1.0
RET
TABLE:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH, 6FH;0,1,2,3,4,5,6,7,8,9 TABLE1:DB0BFH,086H,0DBH,0CFH,0E6H,0EDH,0FDH, 087H,0FFH,0EFH
END
}
4 系统硬件设计
1 AT89C51 单片机简介
AT89C51 是一种低功耗、高性能的片内含有 4KB 快闪可编程/擦除只读存储 器(FPEROM-Flash Programmable and Eraseable Read Only Memory)的 8 位 CMOS 微控制器,使用高密度、非易失存储技术制造,并且与 89C51 引脚和指令系统完全兼容。引脚分别如图 2.1 所示。
图 2.1
图 2.1 所示的单片机是引脚双列直插封装方式,电源引脚 40 脚与接地脚 20。
P0 口作输入口使用时,应先向口锁存器写入 1。P1 口是一个带有内部上拉电阻的 8 位双向 I/O 端口。P1 的输出缓存可驱动 4 个 TTL 输入。P2 口是一个带有内部上拉电阻的 8 位双向 I/O 端口。P3 口也是一个带有内部上拉电阻的 8 位双向 I/O 端口, P3 端口还用于一些复用功能。
5 5 系统硬件设计
5.1 调试步骤
(1) 分析各单元电路图,并分析其各部分的功能;
(2) 用仿真软件仿真电路的功能,并检查是否有错,无误后进行下步工作;
(3) 查找有关文献了解各元件的功能及引脚和有关的资料;
2 5.2 设计实验电路图
设 计 的 实 验 原 理 图 如 下 所 示 :
实验设计总结
为期两周的课程设计,主要是以上机操作为主,在实验室查资料,编程序,画图。
设计语言主要是采用c语言和汇编语言的自上而下的设计方法。Proteus中,自上向下的设计,就是在整个设计流程中各设计环节逐
步精益求精的过程,应用Proteus运行自上而下的设计,就是使用Proteus模型在所有综合级别上对硬件进行说明和仿真测试。顶层文件采用了原理图的方法设计,使各模块之间的层次关系清晰。
在秒表计时器实际设计过程中,所有的模块都是通过不同进制的计数器来实现其主要功能的,各模块之间是通过进位信号连接在一起的。一开始由于没有一定的合理的思路,走了不少弯路。在查阅了相关资料之后,解决了相关的问题,使我的程序更加优化。
通过这次课程设计,我进一步熟悉了Proteus软件的使用和操作方法。对c语言和汇编语言的自上向下的设计方法有了进一步的认识,在底层文件具备的条件下,使原理图可以使设置更加简单,使程序清晰,增加可读性。当然这次课程设计也存在着不足之处,计时不够足够的精确等。
单片机课程设计,是对单片机知识的验证,可以帮助我们理解巩固所学知识,激发我们对单片机课程的兴趣,更锻炼了我们独立思考、开拓创新的能力。通过这次课程设计我也发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。这也激发了我今后努力学习的兴趣,我想这将对我以后的学习产生积极的影响。
其次,这次课程设计让我充分认识到合作的重要性,只有合作才能保证整个项目的有条不絮。在设计过程中,非常感谢同学们的指导,才使设计进展的比较顺利。
另外在课程设计的过程中,当我们碰到不明白的问题时,指导老师总是耐心的讲解,给我的设计以极大的帮助,使我获益匪浅。因
此非常感谢王苏敏老师的教导。
通过这次设计,我懂得了学习的重要性,了解到理论知识与实践相结合的重要意义,学会了坚持、耐心和努力,这将为自己今后的学习和工作做出了最好的榜样。
参考文献:
1、单片机原理及应用; 2、数字电子技术基础; 3、模拟电子技术基础; 4、高频电子线路;