微机原理电子秒表Word文件下载.docx
- 文档编号:17798721
- 上传时间:2022-12-10
- 格式:DOCX
- 页数:19
- 大小:165.45KB
微机原理电子秒表Word文件下载.docx
《微机原理电子秒表Word文件下载.docx》由会员分享,可在线阅读,更多相关《微机原理电子秒表Word文件下载.docx(19页珍藏版)》请在冰豆网上搜索。
它是一片使用单一+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”按下去的次数,如果是奇数次的话就继续进行秒表计时,如果按下去的是偶数次的话,那么暂停,显示当前秒表的计数值。
程序设计流程图
硬件系统原理图
程序清单
DIS MACRO LOCAT,CODE;
设置图形显示宏定义
PUSH DX
PUSHBX
PUSHAX
MOVDX,LOCAT ;
设置光标位置
MOVBH,00
MOVAH,02H
INT10H
MOV DL,CODE ;
输出字符串
MOVAH,02H
INT21H
POPAX
POPBX
POP DX
ENDM
DATSEGMENT ;
设置数据段
BUFDB'
INPUTSTARTRESET END CONTINUE$'
;
设置功能说明
BUFFERDB10 DUP(?
) ;
定义缓存区
TIPDB '
M EM O RY$'
;
定义记忆提示
NUM DB1
LOD EQU0929H
DATENDS
CODSEGMENT ;
定义代码段
STARTPROCFAR
ASSUMECS:
COD,DS:
DAT
MOVAX,DAT
MOVDS,AX
MOV DX,OFFSETBUF;
输出功能说明
MOVAH,09H
INT21H
CALLDISMER ;
记忆区提示符置光标
MOV DX,OFFSETTIP ;
输出记忆提示字符
MOVAH,09H
INT 21H
CALLCLR ;
图形区清屏并设置颜色
CALLCLRDAT ;
秒表数字区清屏并设置颜色
CALL CLRMER ;
记忆区清屏并设置颜色
DIS0419H,'
<
'
;
通过宏调用显示图形
DIS0517H,'<
'
DIS 0715H,'
DIS0914H,'<'
DIS0B14H,'<
DIS060EH,'_'
DIS 0710H,'
_'
DIS0812H,'
_'
DIS0913H,'_'
DIS 0A14H,'
DIS0915H,'
_'
DIS0816H,'
DIS0718H,'
DIS061AH,'
DIS 071CH,'
*'
DIS 081EH,'
*'
DIS091FH,'
DIS0B20H,'
DIS0D21H,'
*'
DIS0F21H,'
DIS 1120H,'
DIS 131FH,'
DIS 141EH,'*'
DIS 151DH,'
*'
DIS161BH,'
DIS1719H,'
DIS1717H,'_'
DIS 1616H,'_'
DIS1514H,'
DIS 1612H,'
DIS1711H,'_'
DIS 170EH,'*'
DIS160CH,'
DIS150BH,'
DIS 140AH,'
*'
DIS1309H,'
DIS1108H,'
DIS0F07H,'
DIS 0D07H,'
DIS0B08H,'*'
DIS 0909H,'
DIS 080AH,'
DIS070CH,'
DIS0C12H,'
DIS0C13H,'_'
DIS 0C14H,'
_'
DIS0C15H,'
DIS 0C16H,'_'
CALLGO ;
设置初植
LOAD:
CALLIOSET ;
光标定位
CALL HALT ;
等待输入
MOVDX,0
MOVCH,0
AGAIN:
CALL TIME ;
调用延时程序
MOV AL,DL ;
百分之一秒加一
ADDAL,1
DAA
JCNEXT1 ;
满一百进位
MOVDL,AL
JMPDISPY ;
不满一百显示
NEXT1:
MOVDL,0
MOV AL,DH ;
秒位加一
ADD AL,1
MOVDH,AL
CMPAL,60H
JNE DISPY
CALLBELL ;
满60提示铃声并进位
MOV DH,0
MOVAL,CH ;
分位加一
ADDAL,1
MOV CH,AL
CMPAL,60H
JNE DISPY ;
满60清零
MOVCH,0
DISPY:
;
显示电子秒表
MOVBX,OFFSET BUFFER ;
取缓冲区地址
MOVAL,CH
CALLTRAN ;
将分位转变为ASCII码并送缓冲区
INC BX
INCBX
MOVAL,DH ;
将秒位转变为ASCII码并送缓冲区
CALLTRAN
INC BX
MOVAL,DL ;
将百分之一秒位转变为ASCII码并送缓冲区
CALL TRAN
PUSH BX
PUSHCX
PUSH DX
CALLIOSET ;
光标置位
MOVDX,OFFSET BUFFER ;
输出缓冲区字符串
MOVAH,09H
INT 21H
POPDX
POPCX
POPBX
MOV AH,0BH ;
等待键盘输入
INT 21H
ANDAL,AL
JZ AGAIN
MOVAH,08H
INT21H
CMPAL,'
R'
;
判断输入是否为R
JNENEXT2 ;
不是则判断是否为E
CALLMEMORY ;
若是则调用记忆功能保存当前值
MOVCH,0 ;
初值清零重新计数
MOVDL,0
MOVDH,0
JMP AGAIN
NEXT2:
CMPAL,'E'
;
判断是否为E
JNE AGAIN ;
不是则继续计数
NEXT3:
;
若是则暂停计数
MOV AH,08H
INT 21H
CMP AL,'
C' ;
判断是否输入C
JEAGAIN ;
若是则继续计数
CMP AL,'R'
;
判断是否输入R
JNE NEXT3 ;
若不是则继续等待输入
CALLMEMORY ;
若是则调用记忆功能
CALL GO ;
重新设置初值等待重新启动
CALLIOSET
MOVDX,OFFSET BUFFER
MOV AH,09H
INT21H
JMPLOAD
RET
START ENDP
GO PROC ;
设置初值子程序
MOVBX,OFFSETBUFFER
MOVAL,'
0'
MOV[BX],AL
MOV AL,'
0'
MOV[BX],AL
INCBX
MOVAL,'
:
MOV[BX],AL
INCBX
MOVAL,'
MOV[BX],AL
INC BX
MOV AL,'
MOV[BX],AL
INCBX
MOVAL,'
MOV [BX],AL
INC BX
MOVAL,'
MOV [BX],AL
MOVAL,'
MOV [BX],AL
INCBX
MOV AL,'
$'
MOV[BX],AL
RET
GO ENDP
IOSET PROC
MOVDX,0F10H
MOV BH,00
MOV AH,02H
INT10H
RET
IOSET ENDP
HALTPROC
MOVAH,08H
INT 21H
CMPAL,'
S'
JNE HALT
HALT ENDP
TRANPROC ;
十六进制转ASCII码子程序
MOVCL,AL
SHRAL,1
SHR AL,1
SHRAL,1
SHR AL,1
OR AL,30H
MOV[BX],AL
MOV AL,CL
AND AL,0FH
OR AL,30H
MOV [BX],AL
TRAN ENDP
TIME PROC ;
延时子程序
PUSHCX
PUSHAX
MOVAX,0EFH
MOV CX,0FFFFH
A1:
DECAX
JNZ A2
JMPA3
A2:
DEC CX
JNZ A2
JMPA1
A3:
POP AX
TIMEENDP
MEMORY PROC ;
记忆功能子程序
PUSHDX
PUSHBX
PUSHAX
CMP NUM,10
JEX2
ADDNUM,1
X1:
MOVDX,LOD
ADD DH,NUM
MOVBH,00
MOVAH,02H
INT 10H
MOV DX,OFFSETBUFFER
MOV AH,09H
INT21H
POPAX
POP BX
POPDX
X2:
CALL CLRMER
MOVNUM,1
JMP X1
MEMORY ENDP
CLRPROC ;
图形区清屏并设置颜色子程序
MOVAH,06H
MOV AL,14H
MOVCX,0401H
MOVDX,1721H
MOVBH,0CH
INT10H
RET
CLR ENDP
CLRDATPROC ;
数据区清屏并设置颜色子程序
MOVAH,6
MOVAL,1
MOVCX,0F10H
MOV DX,0F18H
MOVBH,0BH
INT10H
CLRDAT ENDP
CLRMER PROC ;
记忆区清屏并设置颜色子程序
PUSHAX
PUSHBX
MOVAH,6
MOVAL,11
MOVCX,0929H
MOVDX,0F32H
MOV BH,0DH
INT 10H
POPDX
POP CX
POPBX
POPAX
RET
CLRMER ENDP
DISMERPROC ;
记忆提示显示子程序
MOV AH,02H
MOV BH,00
MOVDX,0728H
INT10H
DISMERENDP
BELLPROC ;
满分钟提示音设置子程序
PUSHAX
PUSHDX
MOVAL,07H
MOV DL,AL
MOV AH,02H
INT21H
POP DX
BELLENDP
CODENDS ;
结束代码段
ENDSTART ;
结束源程序
所用器件型号:
8086芯片,8255A芯片,8253芯片及相应的仿真 软件。
ﻬ总结体会
微机原理与接口技术的设计主要是要完成一个数字秒表,经过一周的时间的软件设计和仿真,基本完成了本次智能设计的任务和要求1.用于日常生活中各种场所的秒表计时。
使用方便,操作简单。
电路简单,制作成本低。
功耗低,便于长时间持续使用。
我感觉到到对知识真正的掌握制在于应用,这次设计用到了数字电路基础的知识,微机原理知识,电路基础等,当这些知识深深地结合在一起的时候,我感觉到了基础知识是如此的重要,把这些零散的知识组合在一起居然能够实现如此现代化的需求,设计出如此有价值的数字秒表。
还有就是8253这个器件对于微机接口的计数计时的设计有着至关重要的,那要做的就是熟悉这一器件的相关性能和用途,以便对设计来说方便些。
设计的完成要感谢老师的细心指导和尊尊教诲,相信这些经历对我以后的工作乃至于生活都会有着有用的指导意义。
参考文献
1.冯博琴·
微型计算机原理与接口技术(第二版)·
清华大学出版社·
2007年8月第二版
2.王爽《汇编语言》(第二版),清华大学出版社,2008.
3. 张荣标等著《微型计算机原理与接口技术》(第二版),机械工业出版社,2009.2
--
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 电子 秒表