微机原理电子秒表.docx

上传人:b****7 文档编号:11303809 上传时间:2023-02-26 格式:DOCX 页数:21 大小:175.91KB
下载 相关 举报
微机原理电子秒表.docx_第1页
第1页 / 共21页
微机原理电子秒表.docx_第2页
第2页 / 共21页
微机原理电子秒表.docx_第3页
第3页 / 共21页
微机原理电子秒表.docx_第4页
第4页 / 共21页
微机原理电子秒表.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

微机原理电子秒表.docx

《微机原理电子秒表.docx》由会员分享,可在线阅读,更多相关《微机原理电子秒表.docx(21页珍藏版)》请在冰豆网上搜索。

微机原理电子秒表.docx

微机原理电子秒表

 

中文摘要

微机原理与接口技术是一门实践性很强的电子信息工程专业的技术基础课程。

因此,微机接口课程设计是一项实践性很强的实训环节,结合运用所学的汇编语言及8086微处理芯片设计一个电子秒表,通过实践能够加深对汇编语言的理解以及对8086微处理器、8253可编程定时器、8259A可编程中断控制器、8255A可编程并行I/O接口芯片等的基本功能的认识。

本实验利用8253可编程定时器等芯片的定时和记数的原理,结合实验箱上的集成电路芯片8086、LED数码管以及实验箱上的按键来设计秒表。

将软、硬件有机地结合起来,要求实现计时单位为1/100秒,利用功能键进行启/停控制,上电后计时器清0,当第一次按下KEY1启/停键时开始计数,按一下KEY2键清零,重新开始计时,在系统能够正确地进行计时,使5位LED数码管能够正确地显示时间。

关键字:

电子秒表、百分之一秒、停启控制。

 

方案论证

根据课程设计的要求和我们所要增加的功能写好程序流程图,在程序流程图的基础上,结合芯片的功能写出相应的程序。

然后再进行程序调试和相应的修改,以达到能够实现所要求实现的功能的目的。

在微机原理定汇编调试软件上编辑源程序,并进行汇编,在汇编成功无误后,选择端口进行调试,然后装入程序,至此,本次设计的软件工作准备完毕。

再根据硬件原理设计图完成各芯片之间的连接,打开实验箱电源开关总体进行调试。

在整个实验过程中,在8253可编程定时器CLK端输出管脚处接上一个计数的频率为10KHZ的时钟信号,由8253定时/计数器产生0.01秒的中断并进行计数,可编程并行I/O接口芯片8255A将偏移地址写入内存单元,进中断更新数据,然后将内存数据送给LED数码管显示。

定时器中断就是定义初值,然后开中断,剩下的就在中断里写了。

保存数据段后,取中断程序入口地址,定义可编程中断控制器8259中断7中断矢量,读8259中断屏蔽字,开8259中断7,六位数码管用动态显示,挨个点亮,六个I/O控制位,十二个I/O控制段码,将8259的定时器设置在0.01秒进入一次中断,交替输出高低电平(形成时钟频率),在计数器输出使用组合逻辑电路连接LED灯的各个控制输入端。

 

相应的存储单元;8255的A口接七段数码管的段选信号,B口接七段数码管的位选信号,秒的数值通过对8255的编程可以显示在七段数码管上面。

该方案是利用微机接口技术的典范案例,就可行性而言,也是行之有效的。

硬件系统设计

8086简介

Intel8086拥有四个16位的通用寄存器,也能够当作八个8位寄存器来存取,以及四个16位索引寄存器(包含了堆栈指标)。

资料寄存器通常由指令隐含地使用,针对暂存值需要复杂的寄存器配置。

它提供64K,8位元的输出输入(或32K,16位元),以及固定的向量中断。

大部分的指令只能够存取一个内存位址,所以其中一个操作数必须是一个寄存器。

运算结果会储存在操作数中的一个。

Intel8086有四个内存区段(segment)寄存器,可以从索引寄存器来设定。

区段寄存器可以让CPU利用特殊的方式存取1MB内存。

8086把段地址左移4位然后把它加上偏移地址。

而8086的寻址方式改变让内存扩充较有效率。

8086处理器的时钟频率介于4.77MHz(在原先的IBMPC)和10MHz之间。

8086没有包含浮点指令部分(FPU),但是可以通过外接数学辅助处理器来增强浮点计算能力。

其I/O分配如下图所示:

CPU8086及I/O接口电路

8255简介

Intel8086/8088系列的可编程外设接口电路(ProgrammablePeripheralInterface)简称PPI,型号为8255(改进型为8255A及8255A-5),具有24条输入/输出引脚、可编程的通用并行输入/输出接口电路。

它是一片使用单一+5V电源的40脚双列直插式大规模集成电路。

8255A的通用性强,使用灵活,通过它CPU可直接与外设相连接。

8255A在使用前要写入一个方式控制字,选择A、B、C三个端口各自的工作方式,共有三种;方式0:

基本的输入输出方式,即无须联络就可以直接进行的I/O方式。

其中A、B、C口的高四位或低四位可分别设置成输入或输出。

方式1:

选通I/O,此时接口和外围设备需联络信号进行协调,只有A口和B口可以工作在方式1,此时C口的某些线被规定为A口或B口与外围设备的联络信号,余下的线只有基

本的I/O功能,即只工作在方式0。

方式2:

双向I/O方式,只有A口可以工作在这种方式,该I/O线即可输入又可输出,此时C口有5条线被规定为A口和外围设备的双向联络线,C口剩下的三条线可作为B口方式1的联络线,也可以和B口一起方式0的I/O线。

8255A是一个并行输入、输出器件,具有24个可编程设置的I/O口,包括3组8位的I/O为PA口、PB口、PC口,又可分为2组12位的I/O口:

A组包括A口及C口高4位,B组包括B口及C组的低4位。

 8086与8255连接图

8253简介

Intel8253是NMOS工艺制成的可编程计数器/定时器,有几种芯片型号,外形引脚及功能都是兼容的,只是工作的最高计数速率有所差异,例如8253(2.6MHz),8253-5(5MHz),8253内部有三个计数器,分别成为计数器0、计数器1和计数器2,他们的机构完全相同。

每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。

每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。

每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。

执行部件实际上是一个16位的减法计数器,它的起始值就是初值寄存器的值,而初始值寄存器的值是通过程序设置的。

输出锁存器的值是通过程序设置的。

输出锁存器OL用来锁存计数执行部件CE的内容,从而使CPU可以对此进行读操作。

顺便提一下,CR、CE和OL都是16位寄存器,但是也可以作8位寄存器来用:

          

一段程序写完成后不能急于上机调试,而是先进行逻辑分析、可行性分析。

用EMU8086软件进行调试,不能出现错误,警告可以有,只要不影响生成HEX文件即可。

理解其实现的功能,预想程序应该出现的结果。

先进行软件仿真,出现错误马上修改,不断进行。

先一个模块一个模块的仿真,准确后再连线总体仿真。

仿真完后出现预期的效果后再下载程序到硬件进行验证,往往还有问题,还得反复修改,编译,调试,下载,验证。

可以一个模块一个模块的下载调试这样就可以知道问题的所在。

采用Proteus和EMU8086结合仿真的可以大大简化软、硬件电路的设计过程。

Proteus是英国Labeenterelectronics公司研发的EDA工具软件。

Proteus不仅是模拟电路、数字电路、模/数混合电路的设计与仿真平台,更是目前世界最先进、最完整的多种型号微控制器系统的设计与仿真平台。

它真正实现了在计算机上完成从原理图设计、电路分析与仿真、单片机代码级调试与仿真、系统测试与功能验证到形成PCB的完整电子设计与研发过程。

Proteus产品系列也包含了革命性的VSM技术,可以对基于微控制器的设计连同所有的外围电子器件一起仿真。

由于我们的设计外围电路比较简单实现的功能叶不是很复杂,所以在Proteus仿真时我们是将主程序直接下载到芯片中仿真,主要是验证是否采集到温度还有温度是否显示正确。

仿真可以在实物没有出来前进行先期的验证。

最后加上我们的扩展功能一起仿真调试。

由于没有做硬件,我们采用Proteus仿真调试,通过将软件编译通过的程序下载到画好的仿真图中,这样便于检查软、硬件设计的不足。

但是Proteus仿真也存在不足的情况,仿真模拟的是理想的环境,不会差生误差但是实际的测试会出现一定的误差。

由于程序设计的是,当系统运行后,数码管开始显示计数时间,根据仿真结果。

说明此设计工作正常。

软件系统设计

软件设计要求及介绍

这是一个利用微机原理与接口技术完成秒表的设计方案,该方案主要是选择8253A的计数器2与计数器1进行1s的定时,其输出于OU1与8086的NMI相连,当定时到1s的时候产生一个中断信号,在中断服务程序进行秒的计数,并送入相应的存储单元;8255的A口接七段数码管的段选信号,B口接七段数码管的位选信号。

我的数值通过对8255的编程可以显示在七段数码管上面。

因此可以利用8086等器件的功能来完成设计。

EMU8086是学习汇编必不可少的工具,它结合了一个先进的原始编辑器、组译器、反组译器、具除错功能的软件模拟工具(虚拟PC),还有一个循序渐进的指导工具。

该软件包含了学习汇编语言的全部内容。

Emu8086集源代码编辑器,汇编/反汇编工具以及可以运行debug的模拟器(虚拟机器)于一身,此外,还有循序渐进的教程。

这里是软件设计的流程,首先对所要用到的逻辑元器件的控制端口,I/O口进行初始化,接着通过按下按键“1”来调用赋值子程序,这中间必须要应用一个延时程序来防抖,完成后就开始中断,接着判断按键“2”按下去的次数,如果是奇数次的话就继续进行秒表计时,如果按下去的是偶数次的话,那么暂停,显示当前秒表的计数值。

 程序设计流程图

 硬件系统原理图

 程序清单

DISMACROLOCAT,CODE;设置图形显示宏定义

PUSHDX

PUSHBX

PUSHAX

MOVDX,LOCAT;设置光标位置

MOVBH,00

MOVAH,02H

INT10H

MOVDL,CODE;输出字符串

MOVAH,02H

INT21H

POPAX

POPBX

POPDX

ENDM

DATSEGMENT;设置数据段

BUFDB'INPUTSTARTRESETENDCONTINUE$';设置功能说明

BUFFERDB10DUP(?

);定义缓存区

TIPDB'MEMORY$';定义记忆提示

NUMDB1

LODEQU0929H

DATENDS

CODSEGMENT;定义代码段

STARTPROCFAR

ASSUMECS:

COD,DS:

DAT

MOVAX,DAT

MOVDS,AX

MOVDX,OFFSETBUF;输出功能说明

MOVAH,09H

INT21H

CALLDISMER;记忆区提示符置光标

MOVDX,OFFSETTIP;输出记忆提示字符

MOVAH,09H

INT21H

CALLCLR;图形区清屏并设置颜色

CALLCLRDAT;秒表数字区清屏并设置颜色

CALLCLRMER;记忆区清屏并设置颜色

DIS0419H,'<';通过宏调用显示图形

DIS0517H,'<'

DIS0715H,'<'

DIS0914H,'<'

DIS0B14H,'<'

DIS060EH,'_'

DIS0710H,'_'

DIS0812H,'_'

DIS0913H,'_'

DIS0A14H,'_'

DIS0915H,'_'

DIS0816H,'_'

DIS0718H,'_'

DIS061AH,'_'

DIS071CH,'*'

DIS081EH,'*'

DIS091FH,'*'

DIS0B20H,'*'

DIS0D21H,'*'

DIS0F21H,'*'

DIS1120H,'*'

DIS131FH,'*'

DIS141EH,'*'

DIS151DH,'*'

DIS161BH,'*'

DIS1719H,'*'

DIS1717H,'_'

DIS1616H,'_'

DIS1514H,'_'

DIS1612H,'_'

DIS1711H,'_'

DIS170EH,'*'

DIS160CH,'*'

DIS150BH,'*'

DIS140AH,'*'

DIS1309H,'*'

DIS1108H,'*'

DIS0F07H,'*'

DIS0D07H,'*'

DIS0B08H,'*'

DIS0909H,'*'

DIS080AH,'*'

DIS070CH,'*'

DIS0C12H,'_'

DIS0C13H,'_'

DIS0C14H,'_'

DIS0C15H,'_'

DIS0C16H,'_'

CALLGO;设置初植

LOAD:

CALLIOSET;光标定位

CALLHALT;等待输入

MOVDX,0

MOVCH,0

AGAIN:

CALLTIME;调用延时程序

MOVAL,DL;百分之一秒加一

ADDAL,1

DAA

JCNEXT1;满一百进位

MOVDL,AL

JMPDISPY;不满一百显示

NEXT1:

MOVDL,0

MOVAL,DH;秒位加一

ADDAL,1

DAA

MOVDH,AL

CMPAL,60H

JNEDISPY

CALLBELL;满60提示铃声并进位

MOVDH,0

MOVAL,CH;分位加一

ADDAL,1

DAA

MOVCH,AL

CMPAL,60H

JNEDISPY;满60清零

MOVCH,0

DISPY:

;显示电子秒表

MOVBX,OFFSETBUFFER;取缓冲区地址

MOVAL,CH

CALLTRAN;将分位转变为ASCII码并送缓冲区

INCBX

INCBX

MOVAL,DH;将秒位转变为ASCII码并送缓冲区

CALLTRAN

INCBX

INCBX

MOVAL,DL;将百分之一秒位转变为ASCII码并送缓冲区

CALLTRAN

PUSHBX

PUSHCX

PUSHDX

CALLIOSET;光标置位

MOVDX,OFFSETBUFFER;输出缓冲区字符串

MOVAH,09H

INT21H

POPDX

POPCX

POPBX

MOVAH,0BH;等待键盘输入

INT21H

ANDAL,AL

JZAGAIN

MOVAH,08H

INT21H

CMPAL,'R';判断输入是否为R

JNENEXT2;不是则判断是否为E

CALLMEMORY;若是则调用记忆功能保存当前值

MOVCH,0;初值清零重新计数

MOVDL,0

MOVDH,0

JMPAGAIN

NEXT2:

CMPAL,'E';判断是否为E

JNEAGAIN;不是则继续计数

NEXT3:

;若是则暂停计数

MOVAH,08H

INT21H

CMPAL,'C';判断是否输入C

JEAGAIN;若是则继续计数

CMPAL,'R';判断是否输入R

JNENEXT3;若不是则继续等待输入

CALLMEMORY;若是则调用记忆功能

CALLGO;重新设置初值等待重新启动

CALLIOSET

MOVDX,OFFSETBUFFER

MOVAH,09H

INT21H

JMPLOAD

RET

STARTENDP

GOPROC;设置初值子程序

MOVBX,OFFSETBUFFER

MOVAL,'0'

MOV[BX],AL

INCBX

MOVAL,'0'

MOV[BX],AL

INCBX

MOVAL,':

'

MOV[BX],AL

INCBX

MOVAL,'0'

MOV[BX],AL

INCBX

MOVAL,'0'

MOV[BX],AL

INCBX

MOVAL,':

'

MOV[BX],AL

INCBX

MOVAL,'0'

MOV[BX],AL

INCBX

MOVAL,'0'

MOV[BX],AL

INCBX

MOVAL,'$'

MOV[BX],AL

RET

GOENDP

IOSETPROC

MOVDX,0F10H

MOVBH,00

MOVAH,02H

INT10H

RET

IOSETENDP

HALTPROC

MOVAH,08H

INT21H

CMPAL,'S'

JNEHALT

RET

HALTENDP

TRANPROC;十六进制转ASCII码子程序

MOVCL,AL

SHRAL,1

SHRAL,1

SHRAL,1

SHRAL,1

ORAL,30H

MOV[BX],AL

INCBX

MOVAL,CL

ANDAL,0FH

ORAL,30H

MOV[BX],AL

RET

TRANENDP

TIMEPROC;延时子程序

PUSHCX

PUSHAX

MOVAX,0EFH

MOVCX,0FFFFH

A1:

DECAX

JNZA2

JMPA3

A2:

DECCX

JNZA2

JMPA1

A3:

POPAX

POPCX

RET

TIMEENDP

MEMORYPROC;记忆功能子程序

PUSHDX

PUSHBX

PUSHAX

CMPNUM,10

JEX2

ADDNUM,1

X1:

MOVDX,LOD

ADDDH,NUM

MOVBH,00

MOVAH,02H

INT10H

MOVDX,OFFSETBUFFER

MOVAH,09H

INT21H

POPAX

POPBX

POPDX

RET

X2:

CALLCLRMER

MOVNUM,1

JMPX1

MEMORYENDP

CLRPROC;图形区清屏并设置颜色子程序

MOVAH,06H

MOVAL,14H

MOVCX,0401H

MOVDX,1721H

MOVBH,0CH

INT10H

RET

CLRENDP

CLRDATPROC;数据区清屏并设置颜色子程序

MOVAH,6

MOVAL,1

MOVCX,0F10H

MOVDX,0F18H

MOVBH,0BH

INT10H

RET

CLRDATENDP

CLRMERPROC;记忆区清屏并设置颜色子程序

PUSHAX

PUSHBX

PUSHCX

PUSHDX

MOVAH,6

MOVAL,11

MOVCX,0929H

MOVDX,0F32H

MOVBH,0DH

INT10H

POPDX

POPCX

POPBX

POPAX

RET

CLRMERENDP

DISMERPROC;记忆提示显示子程序

MOVAH,02H

MOVBH,00

MOVDX,0728H

INT10H

RET

DISMERENDP

BELLPROC;满分钟提示音设置子程序

PUSHAX

PUSHDX

MOVAL,07H

MOVDL,AL

MOVAH,02H

INT21H

POPDX

POPAX

RET

BELLENDP

CODENDS;结束代码段

ENDSTART;结束源程序

 

所用器件型号:

8086芯片,8255A芯片,8253芯片及相应的仿真软件。

 

总结体会

微机原理与接口技术的设计主要是要完成一个数字秒表,经过一周的时间的软件设计和仿真,基本完成了本次智能设计的任务和要求1.用于日常生活中各种场所的秒表计时。

使用方便,操作简单。

电路简单,制作成本低。

功耗低,便于长时间持续使用。

我感觉到到对知识真正的掌握制在于应用,这次设计用到了数字电路基础的知识,微机原理知识,电路基础等,当这些知识深深地结合在一起的时候,我感觉到了基础知识是如此的重要,把这些零散的知识组合在一起居然能够实现如此现代化的需求,设计出如此有价值的数字秒表。

还有就是8253这个器件对于微机接口的计数计时的设计有着至关重要的,那要做的就是熟悉这一器件的相关性能和用途,以便对设计来说方便些。

设计的完成要感谢老师的细心指导和尊尊教诲,相信这些经历对我以后的工作乃至于生活都会有着有用的指导意义。

参考文献

1.冯博琴·微型计算机原理与接口技术(第二版)·清华大学出版社·2007年8月第二版

2.王爽《汇编语言》(第二版),清华大学出版社,2008.

3.张荣标等著《微型计算机原理与接口技术》(第二版),机械工业出版社,2009.2

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1