基于单片机的多功能电子秒表的设计.doc
《基于单片机的多功能电子秒表的设计.doc》由会员分享,可在线阅读,更多相关《基于单片机的多功能电子秒表的设计.doc(28页珍藏版)》请在冰豆网上搜索。
单位代码02
学号1201050021
分类号
密级
课程设计说明书
基于单片机的多功能秒表
院(系)名称
专业名称
学生姓名
指导教师
2015年10月27日
目录
1设计总体方案 1
1.1设计要求与目的 1
1.2设计思路 1
1.3工作原理 2
1.4功能简介 2
2系统硬件设计 3
2.1电源电路 3
2.2晶体振荡电路 3
2.3复位电路 4
2.4显示电路 5
2.5键盘电路 6
3软件设计 8
3.1软件设计概述 8
3.2程序流程图 8
3.3子程序模块设计 10
4系统调试及结果分析 13
4.1基于RS触发器的调试 13
4.2电子秒表的整体调试 13
4.3系统的功能 14
结论 15
参考文献 16
附录A系统电路图 17
附录B源程序 18
第25页
1设计总体方案
1.1设计要求与目的
设计一个单片机控制的多功能秒表系统,利用单片机的定时器/计时器定时和计数的原理,结合显示电路、用两位共阴极LED数码管以及按键来设计秒表计时器,实现暂停与清零功能,并多次计数。
多功能电子秒表具有现实直观、读取方便、精度高等优点,在计时中广泛使用。
本设计用单片机组成多功能电子秒表,力求结构简单、精度高为目标。
并利用AT89C51单片机的计数原理,使其能准确计数。
将软、硬件有机地结合起来,使得系统能够正确的进行加计时,同时数码管能够正确地显示时间。
掌握基本的RS触发器、单稳态触发器、时钟发生器及计数、译码显示等单元电路的综合应用。
1.2设计思路
因为秒表的设计相对较为简单,因此在软件设计中我们一般采用模块化程序设计的方法。
模块式是一个具有独立功能的程序,可以单独设计、调试与管理,模块可以分为功能模块和控制模块两类。
我们通过模块化程序设计可按适当的原则把一个情况复杂、规模较大的程序划分为一个个较小的、功能相关而又相对独立的模块。
每个小的模块完成一个确定的功能,在这些小的模块之间建立必要的联系,互相协作完成整个程序要完成的功能。
它具有有明显的优点,把一个多功能的复杂的程序划分为若干个简单的、功能单一的程序模块,有利于程序的设计和调试,有利于程序的优化和分工,提高了程序的学独行和可靠性,使程序的结构层次一目了然。
其中的模块即为子程序,子程序是功能独立的程序段。
子程序的思想是编写一次,可以重复使用。
子程序的形式可以使一个程序文件,也可以是一个过程函数。
子程序总被其他程序调用而不单独执行,这与主程序相对。
这个主程序也是有多个子程序模块组成,每个子程序模块都要完成一个明确的任务,实现某个具体的功能,复位、多次计数和显示等,在具体需要调用相应的模块即可。
根据电子秒表的设计要求,主要设计一个计数系统、译码驱动、数码显示系统、控制系统。
其主要核心技术在于产生秒表信号的计数脉冲与计数器之间的级联。
在设计系统前,我们主要考虑以下一些原则:
节约元器件,尽量降低系统实现成本;硬件电路尽量简单,使得硬件实现、问题检查、软件编程以及系统调试的难度都降低;能在软件上实现,不采用软将视线,使芯片利用率尽可能高;软件设计方案要优化,变成尽可能简单,方便仿真与检测;设计方案要和当前的试验平台相应;充分利用各种资源,尽量采用成熟与经典的电路。
1.3工作原理
本系统采用AT89C51单片机为中心器件,利用其定时器/计数器定时和记数的原理,结合硬件电路如电源电路,晶振电路,复位电路,显示电路,以及一些按键电路等来设计计时器,将软、硬件有机地结合起来。
其中软件系统采用汇编语言编写程序,包括显示程序,加减计数程序,快加快减程序,中断,延时程序,按键消抖程序等,并在Keil中调试运行,硬件系统利用强大的功能来实现,简单切易于观察。
图1-1系统电路原理
1.4功能简介
(1)开机后,对单片机进行楚书画,然后对按钮进行扫描。
(2)设置按钮为了方便起见,我们设计了一个红色的指示灯,当灯不亮的时候,开始工作。
(3)开始按钮是用来多次计数的,能连续多次技术。
(4)停止按键用来暂停程序的运行,当按下暂停键时,程序停留在原地,等待再次按下暂停键,再次按下暂停键后,程序继续运行。
(4)技术按钮用来记录数据,每按下一次计数按钮,程序自动记录一个数据,并存放到指定内存单元中,当按下四次以后,程序自动停止。
2系统硬件设计
本系统中,硬件电路主要有电源电路,晶振电路,复位电路,显示电路,以及一些按键电路等
2.1电源电路
电源电路是指提供给用电设备电力供应的电源部分的电路设计,使用的电路形式和特点。
电源有交流电源也有直流电源。
电路的大小,可以相差很大,小到硅片上的集成电路,大到高低压输电网。
电源电路分类:
一般可分为开关电源电路,稳压电源电路,稳流电源电路,功率电源电路,逆变电源电路,DC-DC电源电路,保护电源电路等。
电源电路是系统最基本的部分,任何电路都离不开电源部分,由于三端集成稳压器件所组成的稳压电源线路简单,性能稳定,工作可靠,调整方便,已逐渐取代分立元件,在生产中被广泛采用,由于是小系统,我们采用7809电源提供+5V稳压电压。
2.2晶体振荡电路
石英晶体振荡器是利用石英晶体(二氧化硅的结晶体)的压电效应制成的一种谐振器件,它的基本构成大致是:
从一块石英晶体上按一定方位角切下薄片(简称为晶片,它可以是正方形、矩形或圆形等),在它的两个对应面上涂敷银层作为电极,在每个电极上各焊一根引线接到管脚上,再加上封装外壳就构成了石英晶体谐振器,简称为石英晶体或晶体、晶振;而在封装内部添加IC组成振荡电路的。
晶体元件称为晶体振荡器。
其产品一般用金属外壳封装,也有用玻璃壳、陶瓷或塑料封装的。
MCS--51单片机内部的振荡电路是一个高增益反相放大器,引线XTAL1和XTAL2分别为反向振荡放大器的输入及内部时钟工作电路的输入和来自反向振荡器的输出,该反向放大器可以配置为片内振荡器。
这里,我们选用51单片机12MHZ的内部振荡方式,电路如下:
电容器C1,C2起稳定振荡频率,快速起振的作用,C1和C2可在20-100PF之间取,这里取30P,接线时要使晶体振荡器X1尽可能接近单片机。
图2.2晶体振荡电路
2.3复位电路
采用上电+按键复位电路,上电后,由于电容充电,使RST持续一段高电平时间。
当单片机已在运行之中时,按下复位键也能使用使RST持续一段时间的高电平,从而实现上电加开关复位的操作。
这不仅能使单片机复位,而且还能使单片机的外围芯片也同时复位。
当程序出现错误时,可以随时使电路复位。
其电路图如图2-3所示。
图2-3复位电路
2.4显示电路
我们采用的是数码管显示电路。
用2个共阳极LED显示,LED是七段式显示器,内部有7个条形发光二极管和1个小圆点发光二极管组成,根据各管的亮暗组合成字符。
在用数码管显示时,我们有静态和动态两种选择,静态显示程序简单,显示稳定,但是占用端口比较多;动态显示所使用的端口比较少,可以节省单片机的I/O口。
在设计中,我们采用LED动态显示,用P0口驱动显示。
由于P0口的输出级是开漏电路,用它驱动时需要外接上拉电阻才能输出高电平。
其电路图如图2-4所示。
2.5键盘电路
键盘是由若干按钮组成的开关矩阵,它是单片机系统中最常用的输入设备,用户能通过键盘向计算机输入指令、地址和数据。
一般单片机系统中采和非编码键盘,非编码键盘是由软件来识别键盘上的闭合键,它具有结构简单,使用灵活等特点,因此被广泛应用于单片机系统。
按钮开关的抖动问题组成键盘的按钮有触点式和非触点式两种,单片机中应用的一般是由机械触点组成的。
开关S未被按下时,P1.0输入为高电平,S闭合后,P1.0输入为低电平。
由于按钮是机械触点,当机械触点断开、闭合时,会有抖动,图2-4显示电路
这种抖动对于人来说是感觉不到的,但对计算机来说,则是完全能感应到的,因为计算机处理的速度是在微秒级,而机械抖动的时间至少是毫秒级,对计算机而言,这已是一个“漫长”的时间了。
前面我们讲到中断时曾有个问题,就是说按钮有时灵,有时不灵,其实就是这个原因,你只按了一次按钮,可是计算机却已执行了多次中断的过程,如果执行的次数正好是奇数次,那么结果正如你所料,如果执行的次数是偶数次,那就不对了。
为使CPU能正确地读出P1口的状态,对每一次按钮只作一次响应,就必须考虑如何去除抖动,常用的去抖动的办法有两种:
硬件办法和软件办法。
单片机中常用软件法,因此,对于硬件办法我们不介绍。
软件法其实很简单,就是在单片机获得,如果仍为低,说明S1的确按下了,这实际上是避开了按钮按下时的抖动时间。
而在检测到按钮释放后(P1.0为高)再延时5~10个毫秒,消除后沿的抖动,然后再对键值处理。
不过一般情况下,我们常常不对按钮释放的后沿进行处理,实践证明,也能满足一定的要求。
当然,实际应用中,对按钮的要求也是千差万别,要根据不一样的需要来编制处理程序,但以上是消除键抖动的原则。
图2-5键盘连接
第3章软件设计
3.1软件设计概述
在软件设计中,一般采用模块化的程序设计方法,它具有明显的优点。
把一个多功能的复杂的程序划分为若干个简单的、功能单一的程序模块,有利于程序的设计和调试,提高了程序的阅读性和可靠性,使程序的结构层次一目了然。
软件设计的任务是从软件需求规格说明书出发,根据需求分析阶段确定的功能设计软件系统的整体结构、划分功能模块、确定每个模块的实现算法以及编写具体的代码,形成软件的具体设计方案。
各程序模块都要完成一个明确的任务,实现某个具体的功能,如:
加计数、减计数、延时、快加、快减,计数和显示等,在具体需要时调用相应的模块即可。
功能描述:
用2位LED数码显示“秒表”,显示时间为00~99秒,每秒自动加1,具有开始、复位、暂停、快加、快减、上翻、下翻按键,可同时记录四个相对独立的时间;一个“上翻”键,一个“下翻”键,查看四个不同的计时值。
3.2程序流程图
(1)主程序
采用分支结构,通过对按键的扫描,判断要实现什么功能,然后通过调用子程序来实现所需要的功能,如图3-2所示:
(2)定时器1程序
用定时器0实现定时1秒,定时器1实现定时10毫秒,定时初值都是0D8F0H,这里只写定时1秒的流程图,如图3-3所示。
图3-2加1程序流程图
图3-3定时1秒流程图
3.3子程序模块设计
(1)停止子程序
按键后,使秒表停止,即关闭定时器0,1,程序如下:
STOP:
CLRTR0
CLRTR1;关闭定时器0,1
ACALLDISP;显示
(2)暂停记录子程序
按键结束后,将此时显示内存中的数送寄存器中保存,并通过条件转移指令判断是否存够4个数,若存够则停止,否则继续。
JILU:
MOVA,20H
MOV@R1,A
INCR1
DJNZ50H,HERE;是否够四个数?
MOVR1,#71H
MOV50H,#04H
MOV51H,#0