电子秒表课程设计

摘要

基于数字电子技术基础、模拟电子技术基础和电路原理有关知识,对电子秒表电路进行设计和制作。该电子秒表可以实现准确显示00.00—99.99制时间,手动调节时间,随时启动、清零、置时间等功能,使用方便,制作简单。

本文针对电子秒表进行初步框架设计,并对多种方案进行了认真比较和验证,在此基础上,又进一步详细介绍了时间脉冲发生器、秒计数器、译码及驱动显示电路。在总体电路图组装完成以后,针对设计好的电路,用Multisim软件进行了仿真与调试,逐步解决设计过程中出现的一系列问题。

在电路设计过程中,特意将选做部分即校时电路部分作为电路设计的主要内容。最后对应的电子秒表设计方案对制作好的电子秒表功能进行总体验证。

关键词:数字电子技术   脉冲发生器  计数器电路   Multisim软件

电子秒表的设计与制作

1.设计目的

1.1设计目的一

为了培养学生运用有关课程的基础理论和技能解决实际问题,并进一步提高学生专业基本技能、创新能力的重要实践教学环节。

1.2设计目的二

通过课程设计,学生受到设计写作方法的初步训练,能用文字、图形和现代设计写作方法系统地、正确地表达课程设计和研究成果。

1.3设计目的三

为了培养学生正确的设计思想与方法、严谨的科学态度和良好的工作作风,树立自信心。

2.设计思路

2.1总体设计思路

设计脉冲发生器电路产生脉冲;设计秒逻辑电路实现时间的正确显示功能;设计秒校时电路对电子秒表显示时间进行基本校正。

2.2具体设计思路

根据已学知识,我们可以用由集成电路定时器555与RC组成的多谐振荡器作为时间标准信号源构成我们需要的脉冲发生器;以时基电路555定时器为核心,可以直接作为计数器输入脉冲信号使其进行计数 ,配合译码显示电路构成电子秒表的主要部分,控制部分则可以通过直接用开关与40192、40192等一系列芯片的清零端相连接,直接控制清零,使系统具有随时启动、停止、清零、 计时;校时电路可以通过开关通断控制各芯片脉冲信号的通断,加以手动脉冲,实现准确校时。

3.设计过程

3.1总体设计框图

该数字式秒表电路的工作原理:由方波信号发生器产生稳定的高频脉冲信号,经分频电路输出标准的100Hz脉冲信号,作为10毫秒的计时脉冲;10毫秒计数器计满10后,向100毫秒计数器产生进位脉冲;100毫秒计数器计满10后,向1秒计数器产生进位脉冲;1秒计数器计满10后,向10秒计数器产生进位脉冲。计数器的输出经显示译码器译码后送显示器显示。该电路设置两个控制键“A”,“B”。键A控制电路的清零与开始功能,键B控制电路的暂停与继续功能。

 


图3-1  数字式秒表电路的结构框图

3.2设计方案与说明

3.2.1方案一

时间计数器电路:74LS90

说明: @Z4($54XORN$W`78RPQQ{3N

图3-2 74LS90引脚图

74LS90是异步二—五—十进制加法计数器,它既可以作二进制加法计数器,又可以作五进制和十进制加法计数器。

通过不同的连接方式,74LS90可以实现四种不同的逻辑功能;而且还可借助R0(1)、R0(2)对计数器清零,借助S9(1)、S9(2)将计数器置9。其具体功能详述如下:

(1)计数脉冲从CP1输入,QA作为输出端,为二进制计数器。

(2)计数脉冲从CP2输入,QDQCQB作为输出端,为异步五进制加法计数器。

(3)若将CP2和QA相连,计数脉冲由CP1输入,QD、QC、QB、QA作为输出端,则构成异步8421码十进制加法计数器。

(4)若将CP1与QD相连,计数脉冲由CP2输入,QA、QD、QC、QB作为输出端,则构成异步5421码十进制加法计数器。

(5)清零、置9功能。

图3-3 555组成脉冲信号发生器

图3-4 555组成脉冲信号发生器脉冲信号图

由555组成的脉冲产生电路:R2=2.0kΩ,R3=5.1 kΩ,R5=2.05 kΩ。C1=1μF。可以算出f = 1/T = 100Hz。

3.2.2方案二

时间计数器电路:74LS192

说明: D]77I0[64J{LEH9T9I%P(F0

图3-5 74LS192引脚图

TCD 借位输出端(低电平有效) TCU 进位输出端(低电平有效)

CPD 减计数时钟脉冲输入端(上升沿有效)CPU 加计数时钟脉冲输入端(上升沿有效)

MR 异步清除端  P0~P3 并行数据输入端   Q0~Q3并行数据输出端

PL 异步并行置入控制端(低电平有效)

                    表3-1 74LS192逻辑功能表

图3-6 555组成脉冲信号发生器

图3-7 555组成脉冲信号发生器脉冲信号图

由555组成的脉冲产生电路:R1=10.5 KΩ,C1=0.68μF

3.3分解电路的设计与说明

3.3.1时间脉冲发生器的设计

图3-8 555组成脉冲信号发生器

图3-9 555组成脉冲信号发生器脉冲信号图

接通电源后,电容C2被充电,当Vc上升到2Vcc/3时,使Vo为低电平,同时放电三极管T导通,此时电容C2通过R2和T放电,Vc下降。当Vc下降到Vcc/3时,Vo翻转为高电平。电容器C2放电所需时间为

tPL=0.7R3C2          (1)

当放电结束时,T截止,Vcc将通过R2、Rp、R1向电容C2充电,Vc由Vcc/3上升到2Vcc/3,所需时间为:

tPH=0.7(R2+R3+R5)C    (2)

当Vc上升到2Vcc/3时,电路又翻转为低电平。如此周而复始,于是,在电路的输出端就得到一个周期性的矩形波,电路的工作波形如上图3.2.2所示,其振荡周期为:

T=Tph+Tpl=0.7(R2+2R3+R5)C  (3)

f=1/T=100Hz       (4)

                                                                                 

输出方波占空比为:

D=TPH/T=( R2+R3+R5)/( R2+2R3+R5)    (5)

                                                                                     

脉冲源电路的职能是为秒表提供脉冲源以驱动芯片40192工作。

3.3.2计数器的设计

计数器是一个用以实现计数功能的时序部件,它不仅可用来计脉冲数,还常用作数字系统的定时,分频和执行数字运算以及其它特定的逻辑功能. 计数器种类很多.按构成计数器中的各触发器是否使用一个时钟脉冲源来分,有同步计数器和异步计数器.根据计数制的不同,分为二进制计数器,十进制计数器和任意进制计数器.根据计数的增减趋势,又分为加法,减法和可逆计数器.还有可预置数和可编程序功能计数器等等。

40192是十进制计数器,40192的集成计数器的逻辑符号如图 3.3.2.1所示。图中,Rd端控制端是异步清零端,高电平有效;Ld输入端是异步预置数控制端,低电平有效;预置数数据输入端包括D3、D2、D1和D0,D3为最高位,D0为最低位;C0端是进位输出端,低电平有效;B0端是借位输出端,低电平有效;计数结果从Q3、Q2、Q1和Q0端输出,Q3为最高位,Q0为最低位。当计数时钟脉冲从CPU输入时,集成芯片实现加法计数过程,计数过程为0000-1001-0000。40192集成计数器的逻辑功能如表3.3.2.1所示。表中“↑”表示时钟脉冲的上升沿。

表3-2 40192逻辑功能表

计数功能主要利用十进制加法计数器40192来实现。因要求电子秒表显示时间为00:00—99:99秒,因此需四片40192芯片,其与译码显示单元的相应输入端连接,可显示00:00—99:99秒。图2.4.1为40192引脚排列。

通过不同的连接方式,40192可以实现四种不同的逻辑功能;而且还可借助RD对计数器清零,借助LD将计数器置数。

由四片40192芯片构成的计数器电路如图4.3.3所示

图3-10  40192构成的计数器

3.3.3译码及驱动显示电路的设计

计数器实现了对时间的累计以8421BCD码形式输出,选用显示译码电路将计数器的输出数码转换为数码显示器件所需要的输出逻辑和一定的电流,选用74××48作为显示译码电路,选用LED数码管作为显示单元电路。

图3-11 7448引脚图          图3-12 LED数码显示管

7448管脚功能介绍如下:

LT:试灯输入端,当T=0时,不管其他各个输入端输入如何,输出显示为‘8’,正常显示时该端应输入高电平。RBI端称为动态消零输入端。BI/RBO动态清零输出端,该端主要作为多位显示中的多个译码器动态消零连接。

A、B、C、D、为8421BCD码输入端。

a、b、c、d、e、f、g:为译码输出端,输出为高电平1有效。

8421BCD码对应的显示图 :

图3-13   8421BCD码对应的显示图

图3-14  译码显示器电路

4仿真、调试及结果分析

数码管显示如下:

图3-15电子秒表调试图

数码显示电路统一采用共阴的数码管及其配套的7448N,U5、U6可以准确显示十进制00秒位;U7、U8可以准确显示十进制0.00秒;

脉冲发生器产生波形如下图所示:

555脉冲信号发生器脉冲信号图

5 小结、体会及建议

小结、体会:在这次课程设计中,自己亲自动手查阅资料、设计方案、软件仿真和与组员一起完成多功能数字钟的制作,最后看到老师的好评时心里感到由衷地欣慰。

课程设计进一步加深了对数字电子技术的认识,熟悉了对Multisim软件的学习和使用,在仿真过程中出现较多的问题,通过自己的努力和同学的帮助都一一解决了。首先在仿真时发现数码管不能正常显示,经过查验发现,555与RC构成的脉冲发生器的封装存在问题。其次,因电子电路中用网络编号表示线路连接不如手绘电路直观,检查起来不是很方便,最后在组员的指导下,看熟了之后很容易的就能看出线路分布,从而进行进一步调试改善电路功能。

调试时有的器件在理论上可行,但在实际运行中就无法看到效果,所以得换不少器件,有时无法找出错误便更换器件重新接线以使电路正常运行

通过这次对数字时钟的设计与仿真及制作,为以后的电路设计打下良好的基础,得到了一些宝贵经验和教训,加强了自己的动手能力和协同合作能力,为以后的学习和工作提供了良好的范例,我会把这种认真和实在带到以后的生活当中去。

建议:课程设计中应该加强对学生主动性、灵活性、合作方面的锻炼,做到在学中做,在做中学,使学生在课程设计投入更多的兴趣与激情。

6器件表               

集成芯片        74LS192—4片,74LS48—4片,555定时器一片

参考文献:

康华光. 《电子技术基础》. 北京:高等教育出版社,1999年

       伍时和.《数字电子技术基础》.北京:清华大学出版社,20##年

       陈明义.《电子技术教程设计实用教程》.中南大学出版社,20##年

附录1电子秒表设计电路图1

附录2 电子秒表设计电路图2

 

第二篇:基于89C51单片机的秒表课程设计

单片机原理及系统课程设计

专    业:  电气工程及其自动化   

班    级:   113       

姓    名:       34     

学    号:      112342   

指导教师:      22      

兰州交通大学自动化与电气工程学院

 年 月 日

1 引言

随着电子技术的发展,电子技术在各个领域的运用也越来越广泛,人们对它的认识也逐步加深。秒表计时器常常用于体育竞赛及各种其他要求有较精确时间的各领域中。其中启/停开关的使用方法与传统的机械计时器相同,即按一下启/停开关,启动计时器开始计时,再按一下启/停开关计时终止。而复位开关可以在任何情况下使用,即使在计时过程中,只要按一下复位开关,计时应立即终止。

2 设计方案及原理

以单片机为核心,设计一个秒表,具有计时功能,按键有启动计时、数据清零、停止、时间显示。

采用3个LED数码管显示时间,计时范围设置为0~99.9秒,即精确到0.1秒,用按键控制秒表的“开始”、“暂停”、“复位”,按“开始”按键,开始计时;按“暂停”按键,系统暂停计时;再按“开始”键,系统继续计时;数码管显示当前计时值;按“复位”按键,系统清零。

3 硬件设计

MCS-51系列单片机是8位单片机产品,89C51是其中的典型代表,基本模块包括以下几个部分:

(1)CPU:89C51的CPU是8位的,另外89C51内部有1个位处理器;

(2)R0M:4KB的片内程序存储器,存放开发调试完成的应用程序;

(3)RAM:256B的片内数据存储器,容量小,但作用大;

(4)I/O口:P0-P3,共4个口32条双向且可位寻址的I/O口线;

(5)中断系统:共5个中断源,3个内部中断,2个外部中断;

(6)定时器/计数器:2个16位的可编程定时器/计数器;

(7)通用串行口:全双工通用异步接收器/发送器;

(8)振荡器:89C51的外接晶振与内部时钟振荡器为CPU提供时钟信号;

(9)总线控制:89C51对外提供若干控制总线,便于系统扩展。

89C51单片机内部的振荡电路是一个高增益反相放大器,引线XTAL1和XTAL2分别为反相振荡放大器的输入及内部时钟工作电路的输入和来自反相振荡器的输出,该反相放大器可以配置为片内振荡器。

采用上电复位,上电后,由于电容充电,使RST持续一段时间的高电平,从而实现上电复位操作。

采用3个LED数码管,LED是七段显示器,内部有7个条形发光二极管和1个小圆点发光二极管,根据各管的亮暗组成字符。用Proteus软件画出主电路图见附录一。

4 软件设计

(1)秒表的初始化

根据程序流程图,先进行秒表的初始化,即:①将I/O口P3全写一,为秒表的控制输入做好准备;②将数码管全部置零,使其处于秒表计时的初始状态;③将工作寄存器R0~R2以及30H初始化,留待后面的计时程序备用;④将定时器0置于工作方式1,并为其装入计时预置数D8FE(因为程序运行过程中占用的时间会导致一定误差,此为经实物测试之后的修正值),即将定时器定为每10ms溢出;⑤开总中断允许和定时器0中断允许。初始化完成后,即进入之后的按键扫描程序。

(2)按键检测程序

轮流检测开始计时(P3.2)、暂停计时(P3.3)、秒表清零(P3.4)三个按键。若发现有一个按键出现低电平(可能被按下),则延时10ms(调用延时子程序DELAY),延时完成后,若发现低电平消失,则说明该按键实际上未被按下,此时转回按键检测处继续检测;若发现仍然是低电平,则说明此键确实被按下了,此时就跳转至相应的程序标号处,执行相应的功能。

(3)开始计时

若确认“开始计时”键被按下,则跳转至程序标号“RUN”处,将定时器0计时允许控制位TR0置位,则定时器开始运行。此动作完成后,返回按键检测程序,等待操作者的下一次指令。

(4)计时程序

定时器0计时至10ms,溢出,引发中断,程序跳转至定时器0中断服务程序入口000BH处执行。程序跳转至中断服务程序TIME0。由于秒表的最小计时单位是0.1s,即100ms,因此需加入软件计时,使定时器0溢出10次之后才改变数码管的显示状态。因此每来一次中断就将30H中的数加1,若30H中的数没有到10,则给定时器0重新装入预置数,之后中断返回并继续等待中断;到10了,才进入显示程序,改变数码管的显示状态,执行完毕之后中断返回并继续等待中断。

(5)显示程序

将数码管的段选码放在数表TAB中。每次100ms计时完成后,将R0中的值(初值为0)送入A,然后自加1。若R0中的值没到10,则使用累加器A查表,并将查得的数码管段选码送入毫秒位数码管。之后将30H中的数置零,中断返回。若发现R0中的数到10了,则将R0置零,并转入秒位进位子程序SECOND,向秒位进位,之后,继续照常向毫秒位送数。

(6)暂停计时

若确认“暂停计时”键被按下,则跳转至程序标号“PAUSE”处,将定时器0计时允许控制位TR0置零,则定时器暂停运行。此动作完成后,返回按键检测程序,等待操作者的下一次指令。

(7)秒表清零

若确认“秒表清零”键被按下,则跳转至程序标号“STOP”处,将TR0置零,关闭定时器0运行。并且将数码管、工作寄存器、定时器0预置数全部重置,使其处于秒表计时的初始状态。此动作完成后,返回按键检测程序,等待操作者的下一次指令。

(8)延时程序

用于按键延时防抖,延时10ms。程序清单见附录二。

程序流程图如图1所示。

图1 程序流程图

4.3 程序仿真

将以上程序清单导入先前做好的Proteus仿真电路,汇编之后,按

键开始进行仿真。

仿真结果如图2。

图2 仿真结果图

仿真开始后,第一个按钮为计时按钮,点击开始计时;第二个按钮为暂停按钮,点击则暂停计时;第三个按钮为复位按钮,点击后秒表复位归零。三个显示器分别是十秒、秒、微秒的显示。如图2显示的为21.9秒。

5 总结

在此次课程设计中秒表虽然是一个非常简单的功能,但要在单片机中使用汇编语言来实现这个功能,仍然花了我不少心思。

首先是计时的问题,由于单片机计时器最大只能计时65.5ms,因此要实现毫秒位的变化,我采用了软件计时的方法,单片机只需计时10ms,然后用软件重复10次,即可达到计时100ms的目的。

显示方面,为了使编程简单,我使用了静态显示。不过这使得占用I/O口线过多,而且连线复杂繁琐,为实物的制作带来了不便。在以后的学习和应用中我会努力加深动态扫描显示的理解,争取熟练运用。

根据书本知识,我们一开始只给P0口加上了上拉电阻,但是实物做成后我们发现P1和P2口得输出显示非常暗,初步确定是驱动能力不足的问题后,我们给二者也加上了上拉电阻,结果使得显示正常了。由此我们了解到,实践才是检验真理的唯一标准,有时候书本上的知识需要经过实践的改进,才能运用到实际中。

此次课程设计巩固了我的基础知识,提高了我的应用水平,锻炼了我的动手能力,使我受益匪浅。然而,在吸取经验的同时,我也吃了不少教训。在编程、仿真、焊接方面都走了不少弯路。但是,学则要有所收获,经过此次的锻炼,我在很多方面都已经有所提高,知识也掌握得更加扎实了。

   在今后的学习和实践中,我将继续努力钻研,提高自己,争取在学术和记忆上获得更大的进步。

参考文献

[1]张毅刚, 彭喜元.单片机原理及接口技术[M].人民邮电出版社.

[2]单片机课程设计实例指导  李光飞等.   北京航空航天大学出版社

[3]51系列单片机原理、开发与应用实例   孙进平等编著

[4]单片机程序设计实例   先锋工作室编著   清华大学出版社 

.

7 附录

附录一主电路图

附录二 主程序

ORG 0000H          ;程序开始

AJMP START         ;跳转到主程序START

ORG 000BH          ;定时器0中断的地址入口

AJMP TIME0         ;定时器0溢出,跳转到中断程序TIME0

START:             ;主程序

MOV P3,#0FFH       ;输入端口P3全写1

MOV P0,#3FH        ;

MOV P1,#3FH        ;

MOV P2,#0BFH       ;数码管初始化

MOV 30H,#00H       ;

MOV R0,#00H        ;

MOV R1,#0AH        ;

MOV R2,#00H        ;工作寄存器初始化

MOV TMOD,#01H      ;定时器0工作于方式1

MOV TH0,#0D8H      ;

MOV TL0,#0FEH       ;定时器0预置数(D8FEH=55550D)

SETB EA            ;开总中断允许

SETB ET0           ;开定时器0中断允许

READ:              ;读键程序

L1:JB P3.2,L2      ;

LCALL DELAY        ;按键延时防抖

JB P3.2,L1         ;

AJMP RUN           ;确认计时键被按下,开始/继续计时

L2:JB P3.3,L3      ;

LCALL DELAY        ;按键延时防抖

JB P3.3,L2         ;

AJMP PAUSE         ;确认暂停键被按下,暂停计时

L3:JB P3.4,L1      ;

LCALL DELAY        ;按键延时防抖

JB P3.4,L3         ;

AJMP STOP          ;确认清零键被按下,秒表重置

RUN:               ;计时键按下,跳转至此

SETB TR0           ;定时器0开始/继续运行

AJMP READ          ;

PAUSE:             ;暂停键按下,跳转至此

CLR TR0            ;

AJMP READ          ;   

TIME0:             ;定时器0溢出,中断,跳转至此

INC 30H            ;

MOV A,30H          ;

CJNE A,#0AH,TIME1  ;30H单元中的值到10了吗?(计时到10毫秒了吗,也就是说,该向毫秒位送数了吗?)

MOV DPTR,#TAB      ;30H中的值到10了,顺序执行

MOV A,R0           ;

INC R0             ;

CJNE R0,#0AH,GET   ;R0中的值到10了吗?(该向秒位进位了吗?)

MOV R0,#00H        ;

LCALL SECOND       ;到了,R0清零,调用进位子程序SECOND,向秒位进位

GET:               ;没到,跳过进位子程序

MOVC A,@A+DPTR     ;

MOV P1,A           ;查表并向数码管毫秒位送数

MOV 30H,#00H       ;重置30H单元

TIME1:             ;

MOV TH0,#0D8H      ;

MOV TL0,#0FEH       ;给定时器0重新预置数

RETI               ;中断返回

SECOND:            ;秒位进位子程序

PUSH ACC           ;

PUSH PSW           ;将ACC和PSW推入堆栈保护

MOV A,R1           ;

INC R1             ;

CJNE R1,#14H,GET1  ;R1中的值到20了吗,也就是说,该向十秒位进位了吗?

MOV R1,#0AH        ;

LCALL SECOND1      ;到了。R1重置,调用进位子程序SECOND1,向十秒位进位

GET1:              ;没到,跳过进位子程序

MOVC A,@A+DPTR     ;

MOV P2,A           ;查表并向数码管秒位送数

POP PSW            ;

POP ACC            ;PSW,ACC出栈

RET                ;子程序返回

SECOND1:           ;十秒位进位子程序

PUSH ACC           ;

PUSH PSW           ;将ACC和PSW推入堆栈保护

MOV A,R2           ;

INC R2             ;

CJNE R2,#0AH,GET2  ;R2中的值到10了吗,也就是说,该将此位归零了吗?

MOV R2,#00H        ;到了,R2清零

GET2:              ;没到,跳过清零程序

MOVC A,@A+DPTR     ;

MOV P0,A           ;查表并向数码管十秒位送数

POP PSW            ;

POP ACC            ;PSW,ACC出栈

RET                ;子程序返回

STOP:              ;清零键按下,跳转至此

MOV P3,#0FFH       ;

MOV P0,#3FH        ;

MOV P1,#3FH        ;

MOV P2,#0BFH       ;数码管清零

MOV 30H,#00H       ;

MOV R0,#00H        ;

MOV R1,#0AH        ;

MOV R2,#00H        ;工作寄存器初始化

CLR TR0            ;计时器0停止计时

MOV TH0,#0D8H      ;

MOV TL0,#0FEH       ;定时器0预置数

AJMP READ          ;

DELAY:             ;延时10ms子程序

MOV R3,#50D        ;

D1:MOV R4,#100D    ;

D2:DJNZ R4,D2      ;

DJNZ R3,D1         ;

RET                ;子程序返回

TAB: DB 06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,3FH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH,0BFH ;数码管段选码数表

END                ;程序结束

相关推荐