摘要:详细讨论和分析基于单片机AT89C51的秒表系统现状以及发展,单片机AT89C51概念,单片机AT89C51在界面和功能上发生的变化.设计带计时器功能的秒表系统的原理结构各组件功能以及技术路线。
关键词: AT89C51;计时器;秒表
Key words: AT89C51; timer; stopwatch
引言:了解基于单片机AT89C51的秒表系统的成因及其影响因素对认识基于单片机AT89C51的秒表系统有重要的意义,带计时器功能的秒表的应用也很重要.通过以下的介绍可以了解带计时器功能的秒表的发展现状和相关技术理论。以下介绍了和基于单片机AT89C51的秒表系统相关的设计用以比较,重点是单片机AT89C51的秒表。
1 .单片机AT89C51以及秒表概念理解 1.1秒表概念
1.1.1秒表是一种常用的测时仪器。它是利用摆的等时性控制指针转动而计时的。在它的正面是一个大表盘,上方有小表盘.秒针沿大表盘转动,分针沿小表盘转动。分针和秒针所指的时间和就是所测的时间间隔。在表正上方有一表把,上有一按钮。旋动按钮,上紧发条,这是秒表走动的动力。用大拇指控下按钮,秒表开始计时;再按下按钮,秒表停止走动,进行读数;再按一次,秒表回零,准备下一次计时。(注意:使用这类秒表一定要完成这一程序后才能进行下一次计时。这类表不能在按停后又重新开动秒表连续计时。为了解决这一问题,有的秒表在表把左侧装有一按钮,当表走动时将此按钮向上推,表停走;向下推,即继续累计计时。)
秒表的精度一般在0.1-0.2秒,计时误差主要是开表、停表不准造成的。秒表
在使用前上发条时不宜上得过紧,以免断裂。使用完后应将表开动,使发条完全放开。不同型号的秒表,分针和秒针旋转一周所计的时间可能不同,使用时要注意。
1.1.2使用秒表的注意事项:
1.使用前先上紧发条,但不要过紧,以免损坏发条; 2.按表时不要用力过猛,以防损坏机件;
3.回表后,如秒针不指零,应记下其数值(零点读 书),试验后从测量值中将其减去(注意符号);
4.要特别注意防止摔破秒表,不使用时一定将表放 在实验后中央的盒中. 1.2 单片机概念理解
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。
单片机内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元即可......用它来做一些控制电器一类不是很复杂的工作足矣了。我们现在用的全自动滚筒洗衣机、排烟罩、VCD等等的家电里面都可以看到它的身影!......它主要是作为控制部分的核心部件。
它是一种在线式实时控制计算机,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,这也是和离线式计算机的(比如家用PC)的主要区别。
单片机是靠程序的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板!但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性!
由于单片机对成本是敏感的,所以目前占统治地位的软件还是最低级汇编语言,它是除了二进制机器码以上最低级的语言了,既然这么低级为什么还要用呢?很多高级的语言已经达到了可视化编程的水平为什么不用呢?原因很简单,就是单片机没有家用计算机那样的CPU,也没有像硬盘那样的海量存储设备。一个可视化高级语言编写的小程序里面即使只有一个按钮,也会达到几十K的尺寸!对于家用PC的硬盘来讲没什么,可是对于单片机来讲是不能接受的。 单片机在硬件资源方面的利用率必须很高才行,所以汇编虽然原始却还是
在大量使用。一样的道理,如果把巨型计算机上的操作系统和应用软件拿到家用PC上来运行,家用PC的也是承受不了的。
可以说,二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。不过,这种电脑,通常是指个人计算机,简称PC机。它由主机、键盘、显示器等组成。还有一类计算机,大多数人却不怎么熟悉。这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)。顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。因为它体积小,通常都藏在被控机械的“肚子”里。它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了。现在,这种单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。现在有些工厂的技术人员或其它业余电子开发者搞出来的某些产品,不是电路太复杂,就是功能太简单且极易被仿制。究其原因,可能就卡在产品未使用单片机或其它可编程逻辑器件上。单片机诞生于20世纪70年代末,经历了SCM、MCU、SoC三大阶段。 1.SCM即单片微型计算机(Single Chip Microcomputer)阶段,主要是寻求最佳的单片形态嵌入式系统的最佳体系结构。“创新模式”获得成功,奠定了SCM与通用计算机完全不同的发展道路。在开创嵌入式系统独立发展道路上,Intel公司功不可没。
2.MCU即微控制器(Micro Controller Unit)阶段,主要的技术发展方向是:不断扩展满足嵌入式应用时,对象系统要求的各种外围电路与接口电路,突显其对象的智能化控制能力。它所涉及的领域都与对象系统相关,因此,发展MCU的重任不可避免地落在电气、电子技术厂家。从这一角度来看,Intel逐渐淡出MCU的发展也有其客观因素。在发展MCU方面,最著名的厂家当数Philips公司。
Philips公司以其在嵌入式应用方面的巨大优势,将MCS-51从单片微型计算机迅速发展到微控制器。因此,当我们回顾嵌入式系统发展道路时,不要忘记Intel和Philips的历史功绩。
3.单片机是嵌入式系统的独立发展之路,向MCU阶段发展的重要因素,就是寻求应用系统在芯片上的最大化解决;因此,专用单片机的发展自然形成了SoC化趋势。随着微电子技术、IC设计、EDA工具的发展,基于SoC的单片机应用系统设计会有较大的发展。因此,对单片机的理解可以从单片微型计算机、单片微控制器延伸到单片应用系统。
2.用硬件描述语言设计数字秒表和FIR滤波器
(1)随着计数的进步,电子产品的更新换代速度可谓日新月异,传统的手工设计过程已经被先进的自动化设计工具(从CAD到EDA及ESDA:Electronic System Design Automation)所代替。因而熟悉并掌握这些现代设计工具,已成为电子信息设计人员所必备的一门技术。
本设计侧重点是用硬件语言Verilog HDL 来实现数字秒表和FIR数字滤波器功能,偏
重于软件设计,所以本文首先介绍了Verilog HDL 语言的发展和由来,它的基本结构,规定和其他优点,接着简单介绍了Verilog HDL 的应用平台MAX+PLUS II软件,然后通过软硬件结合的方法阐述了数字秒表和滤波器结构化的设计思想和大体的设计流程,之后,对可编程逻辑器件进行简单的说明,最后进入本设计的核心设计部分,用Verilog HDL 语言设计数字秒表和FIR滤波器电路,着重对有限长单位冲激响应数字秒表和(FIR)滤波器设计过程进行了详尽的介绍。
用硬件描述语言设计数字秒表和FIR滤波器,电子设计自动化(EDA)工程是电子产品开发研制的动力源和加速器,也是现代电子设计的核心。EDA工程的理论基础是自动化理论,软件工程,编译原理,电路理论,微电子学,半导体工艺学等科学。它的知识利息结构为:现代电子设计理论,硬件描述语言,EDA设计方法,EDA工具开发及应用,可编程器件原理,结构及应用和EDA工程应用及实践。微电子技术发展的目标是不断提高继承系统的性能及性能价格比,因此便要求提高芯片的集成度,要求将完整的电子系统或子系统集成在单个芯片内。技术的发展使得集成电路的制造能力不断提高,工业的发展需要规模越来越大,性能越来越好的集成电路。因此,EDA技术就成为电子工程设计的重要手段。
(2)利用计算机进行辅助设计的优点:一是验证电路方案设计的正确性。二是电路特性的优化设计。三是实现电路特性的模拟测试。
这种技术可以方便的实现电路结构及性能的优化设计,并提供相当完整而详细的数据资料。较之传统的电路设计方法,要优越的多,经济的多。
另外,采用结构化的设计思想越来越得到人们的重视。数字系统可结构化地划分为从顶向下的不同层次,对于每个人设计层次构造的系统模型,向上可以作为更大系统的子系统,使得更大系统的设计进程独立于本层次的设计过程:向下可以作为子系统的设计规范,使得各个子系统的设计过程相互独立;采用结构话的设计,数字集成系统的设计就可以重复使用不同层次的IP(intellectual property)芯核,完整的少数子集成系统的设计就不在局限在单一的设计部门;采用结构化的设计技术,可以有效地提高设计方案的可重复行,从而提高人们的设计能力。
3 基于数字逻辑多功能计时器的设计及实现
计时器在许多领域中均得到普遍应用,诸如在体育比赛、公共汽车到站时间统计中需进行计时和统计。现今的计时器通常只能通过启/停按键实现断点计时的功能,即通过启/停按键来记录一段时间。这种计时器查看的时间只能为计时结束时刻。实际的应用中往往需要在不影响正常计时的基础上,能查看记录过程中的某些点的时间,即中途计时,如记录长跑运动员跑每圈所用时间,以便了解其各阶段的情况。
本文即针对此问题,设计了一种能通过按键方式查看记录过程中任一时刻值的计时器。这种计时器在查看中间值时不会影响整个记录过程,并且能把相应数据送入存储模块及显示模块,以便查看。
整个系统的设计借助于VHDL和数字逻辑电路,在EDA设计工具MaxplusII下进行仿真,得到了良好的结果。由于采用模块化的设计思想,使设计变得简单、方便、灵活性强。
3.1模块设计
(1)键输入模块
计时器的输入控制为按键方式,由于手动按键,会产生开关簧片反弹引起的电平抖动现象,为保证系统能捕捉到输出脉冲,在每一个开关后面安排一个消抖和同步电路,以并保证每按一键,只形成一个宽度为系统时钟周期的脉冲。采用兼具消抖和同步功能的电路,它能产生与系统时钟周期相同宽度的1ms时钟脉冲。
(2)时钟分频模块
时钟分频模块的功能是将频率为1000Hz的外部时钟信号clk进行分频,从而产生用来消除抖动的25Hz的时钟信号clk1和用于计时器内部定时计数的100Hz的时钟信号clk0。
由于计时器系统使用的时钟信号clk1和时钟信号clk0的有效脉冲宽度均为1ms,则需对分频产生的信号进行处理 。本系统将4分频产生的信号clk1_tmp与10分频产生的信号clk0_tmp相与,来得到有效脉冲宽度为1ms的25Hz时钟信号clk1。
(3)控制模块
控制模块的功能是用来控制计时模块的工作。当系统电源复位信号sysreset或内部复位信号reset0有效时,控制模块的输出enable信号无效;当reset0和sysreset都无效,且on/off 0有效时,enable信号有效,直到下一次on/off 0有效时enable才变成无效。(reseto 、on/off0为去抖后的信号)
在此,采用了一个乒乓信号,该信号在启停信号on/off 0有效时就进行一次反相操作,然后以这个信号作为选通信号,从而得到计数允许信号enable。
(4)秒表计时模块
秒表计时模块用来实现秒表内部定时计数功能。该模块受复位信号reset0、使能信号enable和时钟信号clk0的控制。在使能信号enable有效时,计时模块开始计时,并产生相应的计时输出和进位信号。模块内部采用三进制、四进制、十进制和六进制计数器实现时、分、秒的计时,最长可记录24小时。
(5)时间存储模块
时间存储模块的作用是对计时数据进行存储。当en键未按下时,系统将计时模块产生的计时值送入存储模块进行锁存同时送给显示模块进行显示;当en键按下时,存储模块则不锁存计时值,而保留按键时刻的时间并送给显示模块,实现中途计时的功能。当en按键复位时,存储模块再一次重复前面的过程,实现对下一中途时刻进行计时。
(6)显示译码模块
显示模块用来显示计时模块输出的即时计时和中途计时结果。为了降低功耗,采用循环点亮LED七段显示数码管的方法来显示计时输出,即用choose(7 downto 0)信号选择位显示,segment(6 downto 0)信号用以确定相应位上显示的数据和段。
显示模块由四个部分构成:
八进制计数器count8、计时位选择电路、七段显示译码电路和显示位选择译码电路。 其中显示位选择译码电路是根据八进制计数count8的计数输出信号sel,产生用来选通一个LED七段显示数码管的choose信号。计时位选择电路则根据八进制计数器输出信号sel,选择对应计时显示位的计时数据,确定LED七段显示数码管的segment信号。
对于计时位选择电路,由于其输出端口的计时数据q的位数既有2位的、3位的还有4位的,而七段显示译码电路的输入端口接收四位宽度数据,因此在计时位选择电路中还需将计时数据转化为4位宽度的数据。
本设计从总体要求出发,采用自顶向下逐步细化的方法,将系统模块化,使得系统具有很强的扩充性,并且在实现设计的基础上,采用maxplus的仿真环境得到理想的仿真效果。本设计完成的中途计时功能,实现了在许多特定场合进行时间追踪的功能,在社会生活中具有广泛的应用价值。
4.基于单片机AT89C51秒表系统历史现状以及发展带计时器功能的秒表系统组成结构和特征,各个组件功能以及技术路线单片机AT89C51的秒表系统现状
4.1基于单片机AT89C51的秒表系统历史现状
AT89C51是一种低功耗、高性能的片内含有4KB快闪可编程/擦除只读存储器
(FPEROM-Flash Programmable and Eraseable Read Only Memory)的8位CMOS微控制器,使用高密度、非易失存储技术制造,并且与80C51引脚和指令系统完全兼容。
4.2基于单片机AT89C51的秒表系统发展
早期的单片机都是8位或4位的。其中最成功的是INTEL的8031,因为简单可靠而性能不错获得了很大的好评。此后在8031上发展出了MCS51系列单片机系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大发展,单片机技术得到了巨大的提高。随着INTEL i960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。目前,高端的32位单片机主频已经超过300MHz,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端的型号也只有10美元。当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows和Linux操作系统。
4.3带计时器功能的秒表系统组成结构和特征,各个组件功能以及技术路线 4.3.1带计时器功能的秒表系统特征 (1)用户可设置的热指数报警
(2)秒表/计时器模式 分辨率1/100秒 (3)最快/最慢/平均圈速的记录显示 (4)99圈的计时。30圈的单独计算存储功能 (5)10小时倒计时功能。最后5秒蜂鸣提示 (6)可编程报警
(7)日历功能,显示年、月、日 (8)12/24小时时钟显示转换 4.3.2带计时器功能的秒表的组成部分:
1) 显示屏,由6 个七段数码管组成,用于显示计时时间。
2) 输入数字键,用于设置计时器的计时时间(以min 为单位,不超过1 h) 。 3) START 键,用于启动秒表计时。 4) RESET 键,用于计时清零(复位) 。 5) ALARM 键,用于启动秒表的计时器功能。 6) 扬声器,在计时器计时结束时发声报警。
4.3.3带计时器功能的秒表各部分的功能
(1) 秒表系统时间计数器功能根据需要,要设计一个计时范围为0.01s~1 h 的秒表,命名为CLOCK。首先需要获得一个比较精确的计时基准信号,这里是周期为1/100 s 的计时脉冲。其次,除了对每一计数器需设置清零信号CLR输入外,还需在6 个计数器设置时钟使能信号,即计时允许信号ENA ,以便作为秒表的计时启停控制开关。
另外,为了完成计时器功能,需要一个控制减法计数功能的计时使能信号
SET-TIME ,以作为计时器的启停控制开关。因此,秒表可由1 个分频器(用来提供计时基准信号) 、4 个十进制计数器(1/100 s ,1/10 s ,1 s ,1min) 以及2 个六进制计数器(10 s ,10 min)
组成1.3 接收键盘输入的缓冲器
缓冲器命名为KEYPAD。计时时间的输入利用两个按键分别代表1 min、10 min ,每按动一次,设置值加1 (相当于一个计数器,其最大值分别为9 、5) 。
(2)接收键盘输入的缓冲器功能缓冲器命名为KEYPAD。计时时间的输入利用两个按键分别代表1 min、10 min ,每按动一次,设置值加1 (相当于一个计数器,其最大值分别为9 、5) 。
(3) 显示驱动器功本模块的功能是:当SHOW-NEW-TIME 端口输入信号有效(高电平) 时,根据NEW-TIME 端口输入信号(时间数据) 在DISPLAY 端口输出该信号。当
SHOW-NEW-TIME 端口输入信号无效(低电平) 时,根据TIME 端口的输入信号判断输出。
(4)计时时间寄存器功能 本模块的功能是在时钟上升沿同步下, 根据
LOAD-NEW-TIME 端口的输入信号控制TIME 端口的输出,当控制信号有效(高电平) 时,把NEW- TIME端口输入的信号值输出。
4.3.4 基于单片机AT89C51的秒表系统外部端口如下:
2、用
51单片机实现数字秒表工作源程序
OUTBIT EQU 08002H ;位控制口 OUTSEG EQU 08004H ;段控制口 LSEC EQU 31H ;
SEC EQU 32H ; MIN EQU 33H ; FLAG BIT 20H.0 ;位定义 KEY1 BIT P3.6 ; KEY2 BIT P3.7 ; ORG 0000H ;
LJMP START ORG 000BH LJMP TIMER0 ORG 0060H
START: LCALL INITIAL LOOP: LCALL DISPLAY JNB KEY1,WAIT JNB KEY2,RESET LJMP LOOP CONTROL: CLR TR0 LCALL DISPLAY JNB KEY1,CONTROL CPL FLAG JB FLAG,BEGIN SETB TR0 LJMP LOOP WAIT: LCALL DISPLAY JNB KEY1,CONTROL LJMP LOOP BEGIN: CLR TR0 LJMP LOOP RESET: JNB TR0,CLE LCALL LOOP CLE: LCALL CLEAR ;初始程序入口地址 ;
;加一子程序入口地址 LCM子程序进行初始化 ;判断KEY1.等待 ; ;
;关定时器 ; ; ; ;
;重置定时器 ; ; ; ; ; ; ; ; ;
;调用启动 ;退出时钟调整时键释放等待 LJMP LOOP ; INITIAL: LCALL CLEAR ; SETB FLAG ; MOV DPTR,#TAB ;
MOV TMOD,#01H ;定时器0,方式一 MOV TL0,#0F0H ; MOV TH0,#0D8H SETB EA SETB ET0 RET TIMER0:CLR TR0 MOV TL0,#0F0H MOV TH0,#0D8H SETB TR0 INC LSEC MOV A,LSEC CJNE A,#100,EXIT MOV SEC,#00H INC SEC MOV A,SEC CJNE A,#60,EXIT MOV SEC,#00H INC MIN MOV A,MIN CJNE A,#60,EXIT MOV MIN,#00H EXIT: SETB TR0 RETI CLEAR: MOV A,#00H MOV LSEC,A ; ;开中断 ;开T0中断 ;
;
; 重新赋值 ; ; ; ; ; ; ; ; ; ; ; ; ;
;
;
;
;
; MOV SEC,A ; MOV MIN,A ; RET ;
DISPLAY: MOV R3,#01H ;
MOV R0,#31H ;
MOV R4,#3 ;选择3组工作寄存器
DISPLAY1: MOV A,@R0 MOV B,#0AH DIV AB MOV R5,A MOV A,B MOV DPTR,#TAB MOVC A,@A+DPTR MOV DPTR,#OUTSEG MOVX @DPTR,A MOV DPTR,#OUTBIT MOV A,R3 MOVX @DPTR,A LCALL DELAY100US MOV A,#00H MOVX @DPTR,A MOV A,R3 RL A MOV R3,A MOV A,R5 MOV DPTR,#TAB MOVC A,@A+DPTR MOV DPTR,#OUTSEG MOVX @DPTR,A MOV DPTR,#OUTBIT ;
; ; ; ; ;
;查字形码表 ;设置显示起始位置 ;设定显示位置 ; ;
;显示数据 ; ; ; ; ; ; ; ; ; ; ; ;
MOV A,R3 ; MOVX @DPTR,A ; LCALL DELAY100US ; MOV A,#00H ; MOVX @DPTR,A ; MOV A,R3 ; RL A ; MOV R3,A ; INC R0 ; DJNZ R4,DISPLAY1 ; RET ;
DELAY100US:MOV R7,#50 ;循环50次
DJNZ R7,$ ;r7- 1不为0,执行本指令 RET ;
;//////////查表指令
TAB: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH DB 7DH, 07H, 7FH, 6FH
一、 总结
本文主要从硬件方面说明设计的总体思路和设计的实现过程,预期的设计目的是:能够实现时钟的基本功能,正常显示时分秒.在设计过程中,曾经遇到很多的障碍,设计图经过许多次的修改最后才定下来,但在调试的过程中又出现了问题,需要修改原理图;比如硬件的布局,要作到使连接的线路最短,并不没有想象中的那么容易;再焊接过程中稍不注意就会出现管脚的错位,有些在硬件测试过程中才检查出来。
在设计中有好多问题都是因为理论知识不扎实,在有些管脚的置零置一上,概念的模糊,这使作者明白要把所学到的理论转化为实践需要一段努力学习的过程;在做一个设计的过程中,一定要注意理论和实践同步进行,光有理论知识还是远远不够的,要用时间去检验理论,用理论指导实践。
最近几年,科学发展很快,渗透在工农业生产的许多领域。通过毕业论文的设计我们有
了更深的认识,只有在设计制作的过程中不断的学习才能有更新的进步.不论在什么地方,什么岗位我门都要以学为主.学以学以置用.才能把我们的工作做的更好.
参考文献
[1] 吴金戎,沈庆阳,郭庭吉. 8051单片机实践与应用[M]. 北京:清华大学出版社,2002 [2] 楼然苗,李光飞. 51系列单片机设计实例[M]. 北京:航空航天大学出版社,2003 [4] 李鸿. 单片机原理及应用[M]. 湖南:湖南大学出版社,2004
[5] 何立民. 单片机高级教程[M]. 第1版.北京:北京航空航天大学出版社,2001 [6] 徐惠民、安德宁. 单片微型计算机原理接口与应用[M]. 第1版. 北京:北京邮电大学出版社,1996
[7] 肖洪兵. 跟我学用单片机[M]. 北京:北京航空航天大学出版社,2002.8
[8]李广第. 单片机基础[M]. 第1版.北京:北京航空航天大学出版社,1999 [9] 赵晓安. MCS-51单片机原理及应用[M]. 天津:天津大学出版社,2001.3 [10]何立民.从Cygnal 80C51F看8位单片机发展之路[M]. 单片机与嵌入式系统应用,2002年,第5期:P5~8
[11]夏继强. 单片机实验与实践教程[M]. 北京:北京航空航天大学出版社, 2001
因篇幅问题不能全部显示,请点此查看更多更全内容