单片机课程设计报告
单 片 机 秒 表 系 统 课 程 设 计
班级:
课程名称: 秒表设计 成员:
实训地点:北校机房
实训时间:6月4日至6月15日
目录
1课程设计的目的和任务
1.1 单片机秒表课程设计的概述 1.2课程设计思路及描述 1.3 课程设计任务和要求
2硬件与软件的设计流程
2.1系统硬件方案设计 2.2所需元器件
3 程序编写流程及课程设计效果
3.1源程序及注释 3.2原理图分析 3.3课程设计效果
4 心得体会
1. 课程设计的目的和任务
1.1单片机秒表课程设计的概述
一、课程设计题目
秒表系统设计——用STC89C51设计一个4位LED数码显示“秒表”,显示时间为000.0~9分59.9秒,每10毫秒自动加一,每1000毫秒自动加一秒。
二、增加功能
增加一个“复位”按键(即清零),一个“暂停”和“开始”按键。 三、课程设计的难点
单片机电子秒表需要解决几个主要问题,一是有关单片机定时器的使用;二是如何实现LED的动态扫描显示;三是如何对键盘输入进行编程;四是如何进行安装调试。
四、课程设计内容提要
本课程利用单片机的定时器/计数器定时和记数的原理,结合集成电路芯片8051、LED数码管以及课程箱上的按键来设计计时器。将软、硬件有机地结合起来,使得系统能够正确地进行计时,数码管能够正确地显示时间。其中本课程设计有三个开关按键:其中key1按键按下去时开始计时,即秒表开始键,key2按键按下去时数码管清零,复位为“00.00”. key3按键按下去时数码管暂停。 五、课程设计的意义
1) 通过本次课程设计加深对单片机课程的全面认识复习和掌握,对单片机课程的
应用进一步的了解。
2) 掌握定时器、外部中断的设置和编程原理。
3) 通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。 4) 该课程通过单片机的定时器/计数器定时和计数原理,设计简单的计时器系统,
拥有正确的计时、暂停、清零,并同时可以用数码管显示,在现实生活中应用广泛,具有现实意义
1.2课程设计思路及描述
该课程设计要求进行计时并在数码管上显示时间,则可利用MCS-51系列单片机的芯片AT89C51的P3.2,P3.3,RST作为按键的入口;定时器T1作为每0.1秒加一的定时器。其中“开始”按键当开关由上向下拨时开始计时,此时若再拨“暂停”按键则数码管暂停;“清零”按键当开关由上向下拨时数码管清零,此时若再拨“开始”按键则又可重新开始计时。
1.3 课程设计任务和要求
1.3.1 设计指标 。
了解8051芯片的的工作原理和工作方式 ,使用该芯片对LED数码管进行显示控制,实现用单片机的端口控制数码管,显示分、秒,并能用按钮实现秒表起动、停止、9分59.9秒、清零等功能,精确到0.1秒。
要求选用定时器的工作方式,画出使用单片机控制LED数码管显示的电路图,并实现其硬件电路,并编程完成软件部分,最后调试秒表起动、停止、清零等功能。
2.软件与硬件设计
2.1系统硬件方案设计
单片机应用系统由硬件系统和软件系统两部分组成。硬件系统是指单片机以及扩展的存储器、I\\O接口、外围扩展的功能芯片以及接口电路。软件系统包括监控程序和各种应用程序。
在单片机应用系统中,单片机是整个系统的核心,对整个系统的信息输入、处理、信息输出进行控制。与单片机配套的有相应的复位电路、时钟电路以及扩展的存储器和I\\O接口,使单片机应用系统能够运行。
在一个单片机应用系统中,往往都会输入信息和显示信息,这就涉及键盘和显示器。在单片机应用系统中,一般都根据系统的要求配置相应的键盘和显示器。配置键盘和显示器一般都没有统一的规定,有的系统功能复杂,需输入的信息和显示的信息量大,配置的键盘和显示器功能相对强大,而有些系统输入/输出的信息少,这时可能用几个按键和几个LED指示灯就可以进行处理了。在单片机应用系统在中配置的键盘可以是独立键盘,也可能是矩阵键盘。
2.2 所需原器件
名称 四位数码管 200欧电阻 1千欧电阻 开关 电容 晶振 三极管 AT89C51 导线 数量 1个 13个 4个 3个 3个 1个 4个 1个 若干 AT89C51的接口连接示意图 四位数码管的接口连接示意图
共阴级数码管编码
主程序流程图:
子程序流程图
3.程序编写的流程及课程设计效果
3.1 源程序及注释
ORG 0000H AJMP TOU
ORG 000BH 外部中断0入口地址 LJMP MIAO
ORG 0003H 外部中断0入口地址 LJMP KG
ORG 0030H 定时器中0断入口地址 TOU:MOV B,#02H MOV R3,#00H MOV R4,#00H MOV R5,#00H MOV R6,#00H
MOV TMOD,#01H 定时器0工作在方式1
MOV TL0,#0B0H 初始值为3CB0H ,即计数50000 MOV TH0,#3CH CLR IT1
SETB EA 总中断EA=1
SETB ET0 定时器T0的溢出中断允许控制位 SETB TR0 定时器0开始计数
SETB EX0 外部中断0中断请求允许控?制位 SETB PX0 外部中断0为优先级 S1:
S1:LCALL XS
SJMP S1 短跳转 MIAO:MOV TL0,#0B0H MOV TH0,#3CH
次
DJNZ B,FH MOV B,#02H INC R3
CJNE R3,#0AH,FH 判断毫秒值是否为10 MOV R3,#00H INC R4
CJNE R4,#0AH,FH 判断个位秒值是否为10 MOV R4,#00H INC R5
CJNE R5,#06H,FH 判断十位秒值是否为6 MOV R5,#00H INC R6
CJNE R6,#0AH,FH 判断分值是否为10 MOV R3,#00H MOV R4,#00H MOV R5,#00H MOV R6,#00H
FH:LCALL XS 调用显示子程序 RETI 中断返回
XS:MOV DPTR ,#TAB MOV A,R3
MOVC A,@A+DPTR 查得字形码 MOV P2,A
CLR P1.0 ;P1.0 清零 LCALL DEL 调用延时子程序 SETB P1.0 ;P1.0置1 MOV A,R4
MOVC A,@A+DPTR 查得字形码
MOV P2,A CLR P1.1
LCALL DEL 调用延时子程序 SETB P1.1 MOV A,R5
MOVC A,@A+DPTR 查得字形码 MOV P2,A CLR P1.2
LCALL DEL SETB P1.2 MOV A,R6
MOVC A,@A+DPTR MOV P2,A CLR P1.3
LCALL DEL SETB P1.3 RET
KG:CLR TR0 ;CLR ET0 S2:LCALL XS
JB P3.3,S2 ;P3.3SETB TR0 ;SETB ET0 RETI
DEL: MOV R1,#10 DE:MOV R2,#60 DJNZ R2,$
调用延时子程序 查得字形码 调用延时子程序 关闭定时器0 为跳转到S2 开定时器0 延时函数
DJNZ R1,DE RET
TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END
3.2原理图
4 心得体会
经过两个星期的课程设计,使我们加深了单片机课程的了解,我们花费了很多的时间和精力,比如说单片机书籍和以前不太懂的知识,我觉得这几天让我们过得十分充实,我相信其余的队友也有相同的看法,下面是我们的一些心得体会:
1. 将学习的理论知识通过实验融会贯通,让我对它的理解更加深刻,对程序的编译过程也有一定了解。
2. 本次课程设计是以团队为主,没有团队的力量,在较短的时间内完成是难以实现的,因此培养了我们积极合作、认真的态度,每个人都有不同分工和任务,做好一个电子秒表成为了一件很开心的事情,增进了同学们之间的沟通与交流。
3. 本次课程设计不仅设计了编程和单片机的知识,也涉及其他两门学科上的知
识,真是学海无涯啊。
4.在实训过程中,遇到了许多的问题。主要是程序的编写、编译、还有下载,一开始由于自己的粗心大意和对单片机知识掌握的不够,导致程序不断出错无法编译,一开始我们无法理清头绪,但是我们通过寻找资料,向老师咨询,同学帮助总算是把程序编写完成。程序编完以后下一个问题就是用用面包板接线路,新的问题也就随之而来,本以为对着画好的的电路直接接就可以圆满成功的,但是由于自己的实践经验不好,线路总是接不好,勉强接好程序也没办法运行,本来原定周四就能完成的一直拖到了周五晚上加班,最后在全组人竭尽全力,老师的精心指导下,程序基本编写成功,这是我们共同努力的结果,在享受我们成果之时,不得不感慨单片机的重要性与高难度性,所以为期两周的单片机课程设计没有浪费,我们从中学到了很多知识,也让我们对单片机有了更深一步的了解。总而言之,通过本次实验不仅加深了我们对单片机理论知识的理解,将理论更好的应用到实践中,而且锻炼了我们各个方面的能力,培养了坚强的意志和做事的耐心和细心,认识到合作的重要性,虽然过程中还有不足之处,这需要在实践中不断的锻炼才能提高,希望各位老师和同学多多知道,促进我们进步。
本次实验也让我们了解到自己的不足之处,很多的东西还是没有学好。所以说实验可能有瑕疵之处。
因篇幅问题不能全部显示,请点此查看更多更全内容