电子秒表课程设计报告

电子秒表

1、设计课题任务及指标

1.通过本设计的选题、方案论证、设计计算、安装调试、资料整理、撰写“设计报告”等环节,初步掌握电子工程设计方法和组织实施的基本技能,深化、扩展并综合运用课堂上所学的电子电路分析设计方法以及集成电路知识完成小系统的电路设计。

2.利用基本脉冲发生器及计数、译码、显示等单元电路设计数字秒表。

3.在实验装置上或者利用仿真软件完成数字秒表的线路连接和调试。

功能要求:

基本要求:计时从1s至99s;有置数、复位功能;能用开关灵活启动和停止秒表。

扩展功能:有倒计时功能;能计时从0.1s至9.9s。

2、系统设计方案论证

所作为数字式秒表,所以必须有数字显示。按设计要求,须用数码管来做显示器。题目要求最大记数值为99秒,那则需要两个数码管。要求计数分辨率为1秒,那么则需要相应频率的信号发生器。选择信号发生器时,有两种方案:一种是用晶体震荡器,另一种方案是采用集成电路555定时器与电阻和电容组成的多谐振荡器。由于熟悉程度,本组采用集成电路555定时器与电阻和电容组成的多谐振荡器。秒表功能中要求有复位功能、能用开关灵活启动和停止秒表,则控制电路的方案也有两种:方案一,用74ls08和74ls32及一个3控拨码开关;方案二,用2个单刀双掷开关及多个单刀开关。为了能够灵活的控制秒表,我们选用方案一。计数部分使用两个74LS192十进制计数器,这种计数器能够简捷的进行顺逆计时,为了方便简单译码显示电路采用了74ls48与共阴极七段数码管。

系统框图:

图1 流程图

3、元器件清单

4、单元电路设计

4.1电源与总控开关

图2  电源与总控开关

电源由干电池提供;R1为保护电阻;S1为电路总控开关。

4.2脉冲发生器(由555构成的多些振荡器)

图3 脉冲发生电路图

图4  NE555管脚图

由于频率

                       f=1.43/(R1+2R2)C=1Hz,                 (1)

产生1Hz频率,所以,电容C1=0.33u,电阻R2=100KΩ,R3=2.2MΩ。端口3为脉冲发生器的输出端口。

4.3控制电路

图5 控制电路图

如图5所示四位拨码开关

置数功能:2、4开关断开,3开关闭合;

复位功能:2、4开关闭合;

暂停功能:3、4开关闭合,2开关断开;

顺计时:  2、3开关闭合,4开关断开;

倒计时:  2开关闭合,3、4开关断开;

4.4计数器电路

图6  计数器电路

 

图7  74LS192引脚图

表1 74LS192引脚功能表

74ls192为可预置的十进制同步加/减计时器;74LS192的清除端(MR)是异步的,当清除端为高电平时不管时钟端状态如何,即可完成清除功能;74LS192的预制是异步的,当置入控制端为低电平时,不管时钟CP的状态如何,输出端即可与支撑与数据输入端相一致的状态;计数是同步的,靠时钟端同时加在四个触发器上而实现。

4.5译码显示电路

图8  译码显示电路

74LS48译码器:

74LS48芯片是一种常用的七段数码管译码器驱动器,常用在各种数字电路系统的显示系统中。本设计中,用它与共阴极数码管连接。连接图如下:

图9 译码显示接线图

表2  74LS48功能表

七段数码管(LED)

LED数码管由发光二极管组成,LED数码管有一般亮和超亮等不同之分,也有0.5寸、1寸等不同的尺寸。小尺寸数码管的显示笔画常用一个发光二极管组成,而大尺寸的数码管由二个或多个发光二极管组成,一般情况下,单个发光二极管的管压降为1.8V左右,电流不超过30mA。发光二极管的阳极连接到一起连接到电源正极的称为共阳数码管,发光二极管的阴极连接到一起连接到电源负极的称为共阴数码管。

图10 共阴极LED

5、电路的工作原理

1.电路与总控开关:由电源、一个1KΩ电阻及一个单刀开关组成,为整个电路提供动力及控制整个电路的启动与关闭;

2.1S脉冲发生器:它由555集成定时器元件和外围的2.2M电阻和0.33uF电容等元件构成。为整个系统产生一个1Hz的脉冲信号,并从3脚输出。

3.控制电路:它是整个电路的控制核心,由一个74LS08和一个74LS32及一个四控开关构成,控制着整个电路的各项功能的实施。

4.计数电路:接收各种从控制电路传来的信号,将其记录并实现或通过信号线传输给译码显示电路。

5.译码显示电路:接收计数电路传来的信号将其翻译并通过显示器直观展示出来。

6、组装调试

故障1:脉冲发生器(555定时器构成的多谐振荡器)没法实现1s的脉冲信号。

原因:参数不对。

排除方法:利用f=1.43/R1+2R2)C适当的选取定值电阻、电容的大小和可变电阻的最大阻值。

故障2:不通电的情况下用万用表检测部分电路显示电阻无穷大。

原因:热转印不完全或腐铜时间过久导致电路线断开。

排除方法:用焊锡替代铜线将短路连接。

故障3:显示器不显示或显示部分。

原因:焊接时温度过高烧毁芯片或通电电压过大导致显示器部分损坏。

排除方法:焊接时添加底座并加上限流电阻,通电时严格控制电压。

7、电子设计的收获、体会

通过这次电子设计,得到了很多收获和体会。第一,巩固和加深了对电子线路基本知识和理解,提高了综合运用所学知识的能力。第二,增强了根据课程需要选学参考资料,查阅手册,图表和文献资料的自学能力。通过独立思考,深入研究有关问题,学会自己分析解决问题的方法。第三,通过实际电路方案的分析比较,设计计算,元件选取,安装调试等环节,初步掌握了简单使用电路的分析方法和工程设计方法。第四,在这次电子设计大赛设计过程中,光有理论知识是不够的,还必须懂一些实践中的知识。所以在电子设计的实践中,我们应将实验课与课堂教学结合起来,锻炼自己的理论联系实际的能力与实际动手能力。第五,掌握了比较常用的仪器的使用方法,提高了动手能力。第六,培养了严谨的工作作风和科学态度。第七,在这次设计过程中,我对仿真软件Multisim、word、protel等软件有了更进一步的了解,这使我在以后的学习中更加熟练。

通过这次对数字式秒表的设计与制作,让们我了解了设计电路的程序,也让我们了解了关于数字秒表的原理与设计理念。在此次的数字秒表设计过程中,我们更进一步地熟悉了芯片的结构、管脚图、功能表及掌握了各芯片的工作原理和其具体的使用方法。总体来说这些知识是对我们大学生来说十分宝贵的实践经验,是无法在课堂上获得的,是现今社会最重视的同时也是我们最需要提高的部分。

8、致谢

    在整个设计过程中,有很多人对任务的完成给予了重要的支持和帮助。感谢老师给了我本次设计的机会并提供指导;感谢许多同学在电子设计遇到问题时给予的帮助使团队能够顺利地进行设计的工作。在本次电子设计的过程中,曾得到过老师与几位同学的悉心指导与帮助,才使得我们的设计非常圆满的完成,在此对他们表示我们最衷心的感谢,谢谢你们!因学习知识的能力和时间有限,并且此次电子设计对于我们来说还只是初体验,因此在本次的电子设计过程中,难免存在错误,恳请老师给以批评指正,并再次感谢曾帮助过我们的老师和同学。

9、参考文献

《电子技术基础(第五版)》数字部分   康光华主编   高等教育出版社20##年2月

《电子技术电子设计指导》            彭介华主编   高等教育出版社20##年4月

《数字电路实验指导书》

10、附录

附录一 原理图

附录二  PCB图

 

第二篇:微机原理课程设计(电子秒表的)

 

微机原理与应用

课程设计

目    录

一、   设计任务

1、            计时秒表,具有分、秒和百分之一秒的计时功能。

2、            可以在屏幕中央显示计时结果,屏幕显示彩色图案和文字。

3、        秒表具有键控启/停功能,而且可以随时通过键盘复位,清零。

二、   设计原理

1、HALT(启动子程序)

2、DIS(宏定义——苹果显示程序)

3、DISS(宏定义——字符串的输出)

4、CLOUR(字体颜色设置程序)

5、IOSET(设置光标位置子程序)

6、GO(初始化显示子程序)

7、TIME(延时子程序)

8、TRAN(压缩BCD码转ASCII码程序)

9、复位、停止等功能的实现

三、   流程图

a)  主程序流程图

b)  压缩BCD转ASCII码子程序流程图

c)  延时子程序流程图

四、   程序段

五、   程序调试

六、   程序运行结果

七、   心得体会

八、   参考文献

一、设计任务:

1.计时秒表,具有分、秒和百分之一秒的计时功能,并可以在屏幕中央显示计时结果。

2.屏幕显示彩色图案和文字。

3.秒表具有键控启/停功能,而且可以随时通过键盘复位,清零。

二、设计原理:

本程序的主要设计原理是用主程序完成百分之一秒与秒之间的转换,显示计时结果,实现暂停,暂停再启动,复位,复位再启动的功能,并通过调用一些附加程序,缩减主程序的长度,提高运行效率和精度,现将用到的所有附加程序的原理及其在运行过程中所起到的作用汇总如下:

1.DIS(宏定义——苹果显示程序)

通过宏调用,实现苹果图案的显示。在宏定义里,设置一个形参变量,作为移动光标的位置,在下面调用宏中,给予变量X不同的实参,输出苹果图案。

2.DISS(宏定义——字符串的输出)

原理同上。

3.CLOUR(字体颜色设置程序)

通过字体颜色设置程序,实现屏显字体颜色的改变。当改变BX值时,字体颜色会改变。

     4.HALT(启动子程序)

     通过启动子程序,实现计时的开始,当从键盘输入一个字符时,判断是否等于S,如果不等,则在循环执行启动子程序中动态等待,直到输入的字符为S时,计时开始。

   5.IOSET(设置光标位置子程序)

     通过设置光标子程序,来设置显示的区域。一般整个屏幕可显示25行,80列,屏幕左上角字符位置为0行0列,右下脚字符为24行79列,对应十六进制为:左上脚为(0,0),右下脚为(18,4F)。入口信息为:(AH)=2 要设置光标;(BH)=0 页号;(DH,DL)=00要置光标于0行0列。DX赋值为0D27H,光标置位于屏幕中央。

    6.GO(初始化显示子程序)

     通过将在数据段定义的BUFFER数组的首址赋给BX,将待显示初值字符串00:00存入数组中的相应位置,当每次复位以后,重新调用该子程序,将程序的执行结果修正为00:00,并显示于屏幕上,从而实现了程序的初值设定和复位功能。

7.TIME(延时子程序)

计算机每执行一条指令,虽然很快,但是需要一些时间,因此在本程序中可以通过延时程序,让计算机去执行一些无关的程序,来达到时钟秒与百分之一秒转换时的时间延迟。每条指令执行时间的长短,是以计算机的时钟周期为基本单位的,因此不同的计算机可以通过修改延时程序数值来使其达到准确计时。

  8.TRAN(压缩BCD码转ASCII码程序)

计算机显示数据时使用的是数据的ASCII码,而在程序设计当中程序的计时数值是BCD码,因此,需要通过此子程序实现将BCD码转变为ASCII码,以备送屏幕显示。因为时钟计时的压缩BCD码每一个数都有8位,因此将其右移四位并加30H,将其高位数字取出,送BX存放,再将其低位数字取出,加30H,送BX存放,达到不同码制之间转换的目的。

9.复位、停止等功能的实现

通过对输入字符的判断和各种循环的嵌套调用实现。

整体上本程序的主要设计原理是先在数据段中定义“S START R RESET E END C CONTINUE”控制字符串,并定义缓冲区。将数据段的段基址送DS,并将“S START R RESET E END C CONTINUE”显示,同时调用GO子程序,将显示结果初始化。同时设置光标,启动计时,启动延时程序,将百分之一秒加1并将其设置为压缩BCB码,当其CF不为1时,送屏幕显示,当其为1时,将其设置为0,并在秒上加1,当秒等于60时,其置0,当其小于60时,送屏幕显示。在计时过程中,如果键入R,则将其复位,并重新开始计时,当键入E时,计时暂停,如果键入C,则继续计时,如果键入R,则复位,设置为00:00,当再次键入S时,再次计时开始。

三.框图(见附页)

四、程序清单(附显示结果)

DAT SEGMENT

SPACE  DB 20## DUP (' ')

FU1  DB  'Where there is a will$'

FU2  DB  'There is a way$'

FU3  DB  'Made  By:$'

FU4  DB  'Sun  and  Feng$'

FU5  DB  '12 / 28 / 2008$'

FU6  DB  "INPUT  S START  R RESET  E END  C CONTINUE$";设置控制字符串

BUFFER DB  10 DUP(?)   ;定义缓冲区

DAT ENDS

COD SEGMENT

START  PROC  FAR

ASSUME  CS:COD,DS:DAT

MOV  AX,DAT

MOV  DS,AX

CLOUR:                           ;字体颜色设置

       MOV AX,0003H                     

       INT 10H

       MOV AX,DAT

       MOV DS,AX

       MOV ES,AX

       MOV BP,OFFSET SPACE    

       MOV DX,0E00H

       MOV CX,2000

       MOV BX,0004H

       MOV AX,1300H

INT 10H

MOV  AH,02H

MOV  BH,00

       MOV  DX,182DH

       INT  10H

       MOV  DL,'~'

       MOV  AH,02H

       INT  21H

       MOV  AH,02H

       MOV  BH,00

       MOV  DX,1823H

       INT  10H

       MOV  DL,'~'

       MOV  AH,02H

       INT  21H

DIS   MACRO X                               ;用宏显示苹果图案

       MOV  AH,02H

       XOR  BH,BH

       MOV  DX,X

       INT  10H

       MOV  DL,'*'

       MOV  AH,02H

       INT 21H

       ENDM

 PUSH DX

 PUSH AX

 PUSH BX

    

 DIS  0A28H

 DIS  0928H

 DIS  0829H

 DIS  0729H

 DIS  062AH

 DIS  052AH

 DIS  042BH

 DIS  032CH

DIS  0B28H

DIS  0A2AH

DIS  092CH

DIS  082EH

DIS  0730H

DIS  0732H

DIS  0834H

DIS  0936H

DIS  0A38H

DIS  0B39H

DIS  0C3AH

DIS  0D3BH

DIS  0E3CH

DIS  0F3CH

DIS  103CH

DIS  113BH

DIS  1239H

DIS  1337H

DIS  1435H

DIS  1533H

DIS  1631H

DIS  172FH

DIS  172BH

DIS  1629H

DIS  1528H

DIS  1627H

DIS  1725H

DIS  1721H

DIS  161FH

DIS  151DH

DIS  141BH

DIS  1319H

DIS  1217H

DIS  1115H

DIS  1014H

DIS  0F14H

DIS  0E14H

DIS  0D15H

DIS  0C16H

DIS  0B17H

DIS  0A18H

DIS  091AH

DIS  081CH

DIS  071EH

DIS  0720H

DIS  0822H

DIS  0924H

DIS  0A26H

 POP   BX

 POP   AX

 POP  DX

DISS   MACRO X,Y                           ;用宏显示字符串

    MOV AH,02H

    XOR BH,BH

    MOV DX,X

   INT  10H                    

    MOV DX,OFFSET Y     

    MOV AH,09H

    INT 21H

    ENDM

PUSH  AX

PUSH  BX

PUSH  DX

DISS  0F1AH,FU1

DISS  1227H,FU2

DISS  1439H,FU3

DISS  163FH,FU4

DISS  1842H,FU5

DISS  0004H,FU6

POP  DX

POP  BX

POP  AX

CALL  GO                   ;赋值程序调用

LOAD: 

CALL  IOSET              ;光标置屏中央程序调用

CALL  HALT                      ;等待开始信号程序调用

MOV  DX,0

MOV  CX,0                ;1/100秒与秒初值赋0

AGAIN:

CALL  TIME        ;延时程序调用

MOV  AL,DL               ;1/100秒值加1

ADD  AL,1

DAA                      ;BCD码调整

JC  NEXT1                ;1/100秒等于100时清零

MOV  DL,AL               ;1/100秒值存DL

JMP  DISPY               ; 1/100秒不等于100时显示

NEXT1:

MOV  DL,0         ;1/100秒值回零        

MOV  AL,DH               ;秒值加1

ADD  AL,1

DAA

MOV  DH,AL               ;秒值存DH 

CMP  AL,60H              ;秒值与60比较

 JE  NEXT4                ;秒值为60时,向分值进一

MOV  DH,AL

JNE  DISPY               ;秒值不为60时显示

NEXT4:                         ;秒值回零

     MOV  DH,0

       MOV  AL,CH

       ADD  AL,1

       DAA

       MOV  CH,AL

       CMP  CH,60H

       JNE  DISPY               ;分值不为60时显示

       MOV  CH,0                ;分值回零

DISPY:

MOV BX,OFFSET  BUFFER    ;显示程序

MOV  AL,CH               ;分值BCD码转ASCII码

 CALL  TRAN

 INC  BX

 INC  BX

MOV  AL,DH

CALL  TRAN                ;秒值BCD码转ASCII码

INC  BX

INC  BX

MOV  AL,DL                ;1/100秒值BCD码转ASCII码       CALL  TRAN             

MOV [BX],AL

PUSH  BX

PUSH  CX

PUSH  DX

CALL  IOSET

MOV  DX,OFFSET  BUFFER                          ;时间显示

MOV  AH,09H

INT  21H

POP  DX

POP  CX

POP  BX

MOV  AH,0BH                                ;判断是否有键盘输入

INT  21H

AND  AL,AL

JZ  AGAIN                             ;无键入则转计时程序

MOV  AH,08H                           ;键入控制符

INT  21H

CMP  AL,'R'                          ;判断是否为复位信号

JNE  NEXT2                ;若为非复位信号则判断是否为结束信号

MOV  DL,0                      ;键入为复位信号则复位后继续计时

MOV  DH,0

JMP  AGAIN

NEXT2: CMP  AL,'E'                      ;判断是否为结束信号

JNE  AGAIN                   ;若为非结束信号则计时继续

NEXT3: MOV AH,08H                      ;若为结束信号则计时暂停                  

INT 21H

CMP  AL,'C'                  ;判断计时是否继续

JE  AGAIN                       

CMP  AL,'R'                  ; 判断是否为复位信号       

JNE  NEXT3                   ;若为非复位信号则继续等待键入

CALL  GO                     ;若为复位信号则复位并转至开头等待

CALL  IOSET

MOV  DX,OFFSET  BUFFER

MOV  AH,09H

INT  21H

JMP  LOAD                                      

RET

START   ENDP

GO     PROC                          ;赋值程序

MOV  BX,OFFSET  BUFFER

       MOV  AL,'0' 

       MOV  [BX],AL

       INC  BX

       MOV  AL,'0'

       MOV  [BX],AL

       INC  BX

       MOV  AL,':'

       MOV  [BX],AL

       INC  BX

       MOV  AL,'0'

       MOV  [BX],AL

       INC  BX

       MOV  AL,'0'

       MOV  [BX],AL

       INC  BX

       MOV  AL,':'

       MOV  [BX],AL

       INC  BX

       MOV  AL,'0'

       MOV  [BX],AL

       INC  BX

       MOV  AL,'0'

       MOV  [BX],AL

       INC  BX

       MOV  AL,'$'

       MOV  [BX],AL

RET

GO     ENDP

IOSET  PROC                              ;光标置屏中央程序

MOV  DX,0D27H

MOV  BH,00

MOV  AH,02H

INT  10H

RET

IOSET  ENDP

HALT   PROC                            ;等待开始信号键入程序

MOV AH,08H                        

 INT 21H

CMP  AL,'S'

JNE  HALT

RET

HALT   ENDP

TRAN   PROC                           ;BCD码转ASCII码程序  

 MOV  CL,AL

SHR  AL,1 

SHR  AL,1

SHR  AL,1

SHR  AL,1

OR  AL,30H

MOV  [BX],AL

INC  BX

MOV  AL,CL

AND  AL,0FH

OR  AL,30H

MOV  [BX],AL

RET

TRAN   ENDP

TIME       PROC                         ;延时程序                     

 PUSH CX

 PUSH  AX

MOV AX,00B0H

 MOV CX,0FFFFH                                      

A1:    DEC AX

 JNZ A2

 JMP A3

A2:    DEC CX

 JNZ A2

 JMP A1

A3:    POP AX

       POP CX

 RET

TIME        ENDP

COD ENDS      

END  START              ;程序结束

五、程序调试

由于是第一次用汇编语言编写一个较为复杂的程序以实现具体功能,在编写以及调试过程中我们遇到了很多问题,经过组员的努力和同学及老师的帮助问题得以顺利解决,下面列举了我们遇到的问题及其解决方法以供参考。

1.我们将程序打入电脑进行汇编时,发现汇编程序运行后没有生成相应格式的文件,相反却是满页的错误提示,按照软件的提示我们查找问题,发现都是低级错误,只要认真即可避免。

2.经过正确的汇编后,可执行文件生成,开始后进入DOS运行界面,屏幕上显示的全是乱码,经过查找,最终我们找到问题症结所在:缓冲区赋初值后没有在其末尾赋入结束标志字符‘$’,经过重新定义,问题解决。

3.乱码问题解决后,屏幕显示计数结果,但却并没有显示在屏幕中央,这种问题只能是光标定位程序IOSET调用出现错误,在仔细检查该程序后发现DX赋值错误,将0027H改为0D27H后问题解决。

4.重新运行程序时,我们发现1/100秒值未从零开始变化而是从13开始

递变,经过我们三个的努力和同学的帮助我们找到了错误原因:AGING程序开始运行时,DH和DL(分别存放秒值和1/100秒值)在此前的过程之前DH和DL的值发生变化,因此须在AGAIN程序的开始将DH和DL置零,问题解决。

5.屏幕中央显示结果时,只有秒和百分之一秒显示,没有分显示。经检查是显示程序中没有定义分显示,加上分显示程序后分秒正常跳动。

6.我们添加宏定义不能运行,没有得到预期的效果。经过我们组员的努力,发现应该将宏展开置于宏定义后面。我们认为宏展开放于最后,中间程序将其变量改变,使得最后不能将宏展开。

7.在CLOUR程序段中,定义的是字体或屏幕颜色。开始时只有一半的屏幕显示颜色。我们改变中间变量,发现是字符串长度设置的太少,然后定义字符串长度大一些,问题得以解决。

六、程序运行结果

1、程序初始运行

2、        控制字符控制运行中

七、心得体会

经过这次课程设计,我觉得我有了很大的收获,:

1.我大大地锻炼了自己搞科研的能力,作为我们大学生,尤其是工科的大学生,对于科研能力,能够自主开发课题,项目有着很高的要求,而我们很多大学生动手研发的能力还不是很强。而通过这次课程设计,使自己的研发能力有了很大堤提高。

2.我对于工科设计的严谨性,仔细性有了更深地体会。我们本次设计的秒表仅仅是工科设计中非常简单的一个,思想并不是非常复杂,手头也有一定的资料,但是我们在研发,调试过程中还是出现了一些错误。简单的一些程序好检查,但是如果说是以后要设计的一些大型程序,出现故障就不是那么容易检查了。这就要求我们在以后的工程设计当中要更为细致仔细。

3我的专业知识得到了很好的巩固,对于本专业的一些问题有了更深的思考。原来有很多知识只是死学课本,而并没有与实际相结合,而这次课程设计使我的专业知识与实际有了很好的契合。

4.在程序设计中不能够想当然,许多程序,功能在脑子中想得很好,但是将其转变城实际程序就会出现许多问题。如何由脑子里的构想转变成实际的程序,这是我以后需要提高的一点。

5.掌握了一些检查与判断错误的经验与方法,对今后的专业学习与设计有着深刻的影响。

6.对专业设计的许多流程、原则、注意事项以及撰写专业报告的有关事项有了一定的了解。

7.学到了书本上没有的知识,掌握了一些程序设计的技巧,对以后的学习与设计有深远影响。

总之,经过这次课程设计,我对今后的专业学习所要注意的事项有了更深刻地了解,这对我以后的学习必将产生深远的影响。

八、参考文献

 1.杨志坚主编,《Intel8086/8088系列微型计算机原理及接口技术》,北京:中国电力出版社,20##年4月第三次印刷。

2.山东工业大学 张荣祥主编,《微型计算机原理》,北京:中国电力出版社。

相关推荐