微机接口秒表设计精品.docx
《微机接口秒表设计精品.docx》由会员分享,可在线阅读,更多相关《微机接口秒表设计精品.docx(19页珍藏版)》请在冰豆网上搜索。
![微机接口秒表设计精品.docx](https://file1.bdocx.com/fileroot1/2022-11/29/7209974c-7608-4a2a-96a6-06eecd159d22/7209974c-7608-4a2a-96a6-06eecd159d221.gif)
微机接口秒表设计精品
微机接口秒表设计-精品
2020-12-12
【关键字】方案、思路、方法、运行、传统、地方、作风、认识、问题、系统、有效、继续、整体、现代、配合、执行、保持、提升、发展、加深、建立、掌握、了解、特点、稳定、地位、需要、氛围、环境、体系、能力、方式、作用、标准、结构、任务、速度、增强、检验、分析、形成、拓展、丰富、严格、开展、管理、服务、指导、帮助、支持、解决、完善、方向、巩固、加强、实现、提高、多方面、衷心、核心、有效性
1前言
随着科学技术的发展和现代生产力的提高,各种竞技体育都在追求更高,更快,更强,而唯有精确的时钟才能反应出竞技体育的准度与精度。
数字化给人们的生产和生活带来了极大的方便,它几乎取代了传统的机械时钟,使得其准确度更高、实用性更强。
因此电子秒表使其功能更加丰富,使用更佳便利。
1943年美国为解决复杂的导弹计算而开始研制电子计算机。
1946年2月,世界上第一台数字式计算机ENIAC在美国宾夕法尼亚大学研制成功。
在其后的60多年里,计算机经历了迅猛的发展,得到了广泛的普及应用,对整个社会的进步和科学的发展产生了极其深远的影响。
通常按照电子计算机采用的电子期件不同将电子计算机的发展氛围四个阶段,习惯上称为四代。
CPU即属于第四代。
按照微型计算机的CUP字长和功能划分,又经历了六代的演化。
第一代4位和低档8位微处理器,代表作品4004/4040/8008;第二代中高档8位微处理器,代表作品Z80、I8085、MC6800;第三代16位微处理器,代表作品8086、8088、80286;
第四代32位微处理器,代表产品80380、80486;第五代超级32位奔腾处理器;第六代64位高档微处理器。
本设计介绍的是应用8086,8253等芯片设计出电子秒表,实现秒表的基本功能。
2整体设计方案
本设计的整体思路是:
利用8254用试验箱上的数码管模拟一个秒表,要求具有一般秒表的功能。
2.1设计方案
方案一:
软件定时
软件定时是根据所需要的时间常数来设计一个延时子程序,该程序中的指令和安排循环次数来实现软件定时。
图2.1方案一方框图
方案二:
硬件定时
基于8253和8259A中断技术的电子秒表利用了可编程计数器/计数器为主要硬件。
图2.2方案二方框图
2.2方案比较
软件定时的优点是节省硬件。
主要缺点是执行延时程序期间,微处理器一直被占用,降低了微处理器的利用率。
软件定时不能单独的使用,他必须在一个硬件平台上运行,所以单纯的软件的定时硬件兼容性较差。
基于8253和8259A中断技术的电子秒表利用了可编程计数器/计数器为主要硬件。
在硬件电路连接完成后,有软件直接初始化定时器8253,并启动定时器工作开始计时,当再次收到脉冲信号时,产生一个中断,自动产生一个规定的时间输出(分--秒--毫秒)。
这种方法的优点是定时器不占用微处理器的时间,大大的提高微处理器的利用率。
并且利用定时器产生的终端信号,在多任务的分时系统中用来作为中断信号实现程序的切换,建立多作业环境。
同时硬件开销不大、功能较强、使用灵活,而且操作十分方便只需要按下按钮产生一个脉冲信号就可以实现计时。
2.3方案选择
通过比较我们得出,硬件计时方案大大优于软件计时方案。
故本次设计采用方案二硬件计时方案。
3单元模块的设计
3.1各单元模块的功能介绍及电路设计
秒表电子系统主要有8086CPU,8253、8255A、8259A等部分组成。
其框图如图3.1所示。
图3.1秒表方框图
3.1.1脉冲信号中断定时模块
8253产生定时脉冲信号,定时脉冲信号让8259A产生中断信号中断服务程序进行定时服务,下面根据语接口电路图说明其作用。
8253接口如图3.2所示。
图3.28253接口电路
3.1.28255A与8086的连接
8253A的管脚包括D7—D0,他们分别与CPU的AD0都AD7相连。
读写控制线WR,RD,以及与CPU地址线相连的片选信号CS,端口地址控制管脚A0和A1。
这两个端口地址显得组合,在这次是与8086CPU的I/O口AD9和AD10相连。
所以8253A的端口选择就受到CPU的AD9和AD10的组合状态控制来提供。
图3.38255A与8086连接电路
3.1.3USB电源模块
在本设计中,了使电路简单,该模块主要是为系统提供电源,因为CPU8086等需要供电5V,而外围电路可以用5V电源。
电路可以由电源变压器T、电桥U、电容C以及芯片7805组成。
电源是由电源变压器T降压后送入电桥U整流再经C滤波,然后由CW7805稳定后提供给电路工作。
由于我们需要在通过计算机下载程序,而USB输出电压也刚好是5V,所以我们为了方便采用USB供电。
如图所示:
图3.4USB供电原理图
3.1.4LED驱动电路模块
8255A芯片是电路的核心元件,利用8255A驱动数码管显示时、分、秒。
从而能够对秒,毫秒,分等时间单位进行精确记时。
电路如图3.5所示:
图3.5LED与8255A连接电路图
3.2电路参数的计算和元器件的选择
3.2.18253可编程定时器/计数器
(一)8253定时/计数器的引脚及功能
8253是NMOS工艺制成,采用单一+5V电源,24引脚双列直插式封装,外部引脚如下所示:
图3.68253元器件
1、8253与CPU的接口引线
D7~D0:
双向数据线:
可直接与数据总线相连,用于传递各种数据信息
/WR:
写信号,输入,低电平有效,用于控制CPU对8253的写操作
/RD:
读信号,输入低电平有效。
用于控制CPU对8253的读操作
A1、A0:
地址线,输入信号
/CS:
片选信号,输入信号,低电平有效。
当/CS为0时,8253被选中,允许CPU对其进行读/写操作
2、8253与外设的接口引线
CLKO~CLK2:
时钟输入信号;GATE0~GATE2:
门控输入信号;OUT0~OUT2:
计数输出端
3、定时与计数方式
(二)内部结构
数据总线缓冲器读/写逻辑电路控制字寄存器计数器
(三)8253方式控制字
定时/计数器8253的每个计数通道根据CPU发命令写入控制寄存器的控制字确定工作方式和计数格式。
8253控制字的格式如下所示:
D7
D6
D5
D4
D3
D2
D1
D0
SC1
SC0
RW1
RW0
M2
M1
M0
BCD
表3.18253控制字
D7、D6:
计数器选择位SC1、SC0。
8253的3个计数器相互独立,并且都有一个控制寄存器。
但这三个控制寄存器占用同一个端口地址,即A1A0=11
D5、D4:
读/写指示位RW1、RW0。
CPU向某个计数器写入初值和读取它们的当前值时不同的格式
D3、D2、D1:
工作方式选择位M2、M1、M0。
8253有6种工作方式,选择哪种工作方式由M2、M1、M0编码确定
DO:
数值计数格式,用来选择计数格式。
DO=O,计数器按二进制格式计数;D0=1,计数器按BCD码格式计数
3.3特殊器件的介绍
3.3.18255A并行接口
(一)8255A的引脚及功能
8255A是一个采用NMOS工艺制造的40个引脚的双列直插式组建,其外部引脚如下图所示:
图3.78255A元器件
功能:
8255A具有面向主机系统总线和面向外设两个方向的连接能力,即通过8255A,CPU可直接同外设相连接,负责CPU和外设之间的数据传送。
1、面向系统总线的信号线
D0~~D7:
双向数据线;CPU通过它向8255A发送命令、数据;8255A通过它向CPU回送状态、数据
/CS:
选片信号线,该信号线低电平有效,由系统总线经I/O地址译码器产生
A1、A0:
芯片内部端口地址信号线,与系统地址总线地位相连
/RD:
读信号线,该信号低电平有效,CPU通过执行IN指令,发读信号将数据或状态信号从8255A读至CPU
/WR:
写信号线,该信号低电平有效,CPU通过执行OUT指令,发写信号,将命令或数据写入8255A
RESET:
复位信号线,该信号高电平有效。
2、面向I/O设备的信号线
PA0~~PA1:
端口A的输入/输出线、PBO~~PB7:
端口B的输入/输出线、PC0~~PC7:
端口C的输入/输出线,这24根信号线均可用来连接I/O设备,通过它们传送数字量信息或开关量信息
(二)内部结构
数据总线缓冲器读/写控制逻辑A组和B组控制电路数据端口A、B、C
(三)8255的工作方式
方式0—基本输入/输出方式;方式1—选通输入/输出方式;方式2—双向输入/输出方式。
3.3.28086的引脚功能特点介绍
Intel8086拥有四个16位的通用寄存器,也能够当作八个8位寄存器来存取,以及四个16位索引寄存器(包含了堆栈指标)。
资料寄存器通常由指令隐含地使用,针对暂存值需要复杂的寄存器配置。
它提供64K8位元的输出输入(或32K16位元),以及固定的向量中断。
大部分的指令只能够存取一个内存位址,所以其中一个操作数必须是一个寄存器。
运算结果会储存在操作数中的一个。
Intel8086有四个内存区段(segment)寄存器,可以从索引寄存器来设定。
区段寄存器可以让CPU利用特殊的方式存取1MB内存。
8086把段地址左移4位然后把它加上偏移地址。
大部分的人都认为这是一个很不好的设计,因为这样的结果是会让各分段有重叠。
尽管这样对组合语言而言大部分被接受(也甚至有用),可以完全地控制分段,,使在编程中使用指针(如C编程语言)变得困难。
它导致指针的高效率表示变得困难,且有可能产生两个指向同一个地方的指针拥有不同的地址。
更坏的是,这种方式产生要让内存扩充到大于1MB的困难。
而8086的寻址方式改变让内存扩充较有效率。
8086处理器的时钟频率介于4.77MHz(在原先的IBMPC)和10MHz之间。
8086没有包含浮点指令部分(FPU),但是可以通过外接数学辅助处理器来增强浮点计算能力。
Intel8087是标准版本。
图3.88086引脚结构图
8086微处理器结构
(1)总线接口单元(BIU)总线接口部件由下列各部分组成:
①4个段地址寄存器;
CS——16位的代码段寄存器;
DS——16位的数据段寄存器;
ES——16位的扩展段寄存器;
SS——16位的堆栈段寄存器;
②16位的指令指针寄存器IP;
③20位的地址加法器;
④6字节的指令队列缓冲器。
(2)执行单元EU执行部件由下列几个部分组成:
①8个通用寄存器:
即AX、BX、CX、DX,BP,SP,SI,DI;其中,4个数据寄存器:
AX、BX、CX、DX;2个地址指针寄存器:
BP,SP;2个变址寄存器:
SI,DI;
②标志寄存器FR;
③算术逻辑单元ALU。
(3)BIU和EU的管理
①BIU和EU可以并行工作,提高CPU效率。
BIU监视着指令队列。
当指令队列中有2个空字节时,就自动把指令取到队列中。
②EU执行指令时,从指令队列头部取指令,然后执行。
如需访问存储器,则EU向BIU发出请求,由BIU访问存储器。
③在执行转移、调用、返回指令时,需改变队列中的指令,要等新指令装入队列中后,EU才继续执行指令。
3.4各单元模块的连接
3.4.18086和8253/8259A的连接
利用了8253产生定时脉冲信号定时脉冲信号让8259A产生中断信号中断服务程序进行定时服务。
图3.9驱动与8086连接图
4软件设计
4.1软件设计原理及使用工具
计算机系统是由硬件和软件两部分组成。
硬件系统是指由中央处理器、内存储器、输入/输出接口和外部设备等部分组成的物理设备。
软件是为实现或完成用户的某种要求和目的按规定的计算机能够运行的指令编写的程序,是控制计算机完成指定工作任务的二进制代码集,这个代码集称为计算机指令或计算机语言。
8086最常用的计算机语言是汇编语言。
用程序和8086共同实现按键的功能,使管脚电平变化,进而触发相应的功能。
汇编语言比机器语言易于读写、调试和修改,同时具有机器语言全部优点。
但在编写复杂程序时,相对高级语言代码量较大,而且汇编语言依赖于具体的处理器体系结构,不能通用,因此不能直接在不同处理器体系结构之间移植。
汇编语言的特点:
1.面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的。
2.保持了机器语言的优点,具有直接和简捷的特点。
3.可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。
4.目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。
5.经常与高级语言配合使用,应用十分广泛。
4.2软件设计流程图
这是一个利用微机原理与接口技术完成秒表的设计方案,该方案主要是选择8253A的计数器2进行100ms的定时,其输出于OUT2与8259的IRQ7相连,当定时到100ms的时候产生一个中断信号,在中断服务程序进行时,分,秒的计数,并送入相应的存储单元;8255的A口接七段数码管的位选信号,B口接七段数码管的段选信号,C口上面接一个按键,实现时钟与秒表的转换以及清零的功能。
时,分,秒的数值通过对8255的编程可以显示在七段数码管上面。
因此可以利用8086等器件的功能来完成设计。
利用这个设计来实现一下功能:
(1)能显示实时时间(利用8253的计数器来计算)。
(2)当按下按键时,数码管显示1/100的秒表计时。
(3)第二次按下按键“1”时,应该是实现秒表的清零。
EMU8086是学习汇编必不可少的工具,它结合了一个先进的原始编辑器、组译器、反组译器、具除错功能的软件模拟工具(虚拟PC),还有一个循序渐进的指导工具。
该软件包含了学习汇编语言的全部内容。
Emu8086集源代码编辑器,汇编/反汇编工具以及可以运行debug的模拟器(虚拟机器)于一身,此外,还有循序渐进的教程。
图4.1流程图
5系统调试
5.1调试
Proteus是英国Labeenterelectronics公司研发的EDA工具软件。
Proteus不仅是模拟电路、数字电路、模/数混合电路的设计与仿真平台,更是目前世界最先进、最完整的多种型号微控制器系统的设计与仿真平台。
它真正实现了在计算机上完成从原理图设计、电路分析与仿真、单片机代码级调试与仿真、系统测试与功能验证到形成PCB的完整电子设计与研发过程。
Proteus产品系列也包含了革命性的VSM技术,可以对基于微控制器的设计连同所有的外围电子器件一起仿真。
由于我们的设计外围电路比较简单实现的功能叶不是很复杂,所以在Proteus仿真时我们是将主程序直接下载到芯片中仿真,主要是验证是否采集到温度还有温度是否显示正确。
仿真可以在实物没有出来前进行先期的验证。
最后加上我们的扩展功能一起仿真调试。
在仿真过程中为了先检验程序的有效性和正确性,我们先用了Proteus进行软件仿真,但是因为Proteus软件的元件库本身不包含8086芯片的元件图,所以仿真的时候我们没有使用8086芯片,而是单单验证程序的可行性。
6系统功能
6.1系统功能介绍
系统实现秒表的功能,利用8253产生定时脉冲信号定时脉冲信号让8259A产生中断信号中断服务程序进行定时服务,并利用8255A驱动数码管显示时、分、秒。
从而能够对秒,毫秒,分等时间单位进行精确记时。
7结论
本次设计的是基于8086的秒表设计,是以8086为基本核心元件,针对8253/8259A、8255A等芯片所构成的秒表系统。
系统硬件电路简单,调试方便,8086的扩展接口较多,便于在用户需要的时候能够扩展它的功能。
而且体积小,使用起来更加方便。
在设计时我们首先对我们需要设计的功能进行了初步定论。
再根据我们的构想及查询了许多资料之后,设计出了我们的原理图。
根据原理图,我们进行代码设计,在代码设计中,我们出现过几次问题,始终不能让我们的功能达到完善,最后经过我们的努力和老师的指导,我们完成了我们的软件设计与实物制作。
8总结与体会
通过这次设计,让我们了解了电路设计与实物制作的整个过程,也让我们了解了关于基于8086的原理与设计理念;使我学到了很多新的知识,如:
8253A的使用,进一步了解了Protel99软件、ISIS软件的一些简单功能的使用;同时,也对微机接口这门课学到的知识加以了巩固。
对微型处理器有了更深的了解,使我们对8086的引脚功能及如何通过编程来控制8086的引脚输出从而控制我们的LED显示等有了更清楚的认识。
本次设计也使我们对电路设计,电路检查等方面的能力有了进一步的加强。
通过解决在设计的过程中遇到了种种的问题,使我们的实践能力得到了很大程度的提高,也使我们对电子设计有了浓厚的兴趣,让我受益匪浅。
我们还学会了该如何查阅资料和利用参考书。
我们在课堂上所学习的知识只是最基本的专业知识,而现在电子科技技术是日新月异,作为信息专业的学生应该时刻关注最新的信息资料,还应该学会把在设计过程中用到的知识有机地结合起来,形成自己的知识体系,然后再灵活地加以运用,让自己的理论与实践能更有效的结合。
总之,一次设计除了能加深我们对理论知识的理解,加强我们的动手能力外,还能提升我们多方面的能力,拓展我们的知识面,掌握更多有用的技能,学会如何面对问题以及解决问题,我们很珍惜这样的机会。
课程设计的开展有利于我们将理论知识运用于实践,将理论与实践紧密的结合在一起,做到理论与实践皆行。
9致谢
接近一个月的课程设计结束了,这次课程设计让我们学到了很多东西。
课程设计是对所学知识的综合运用,尤其是这次设计,虽然是用8086进行主要的控制,但是这不仅仅使我们对8086的运用及编程有了更深的理解,也使我们对电路设计,电路检查等方面的能力有了进一步的加强。
在这次设计中,我们得到了王老师的悉心指导,她的渊博知识、严格要求、严谨作风都给我们留下了很深刻的印象,将是我们受用一生,在此表示衷心的感谢。
另外,在设计中,我们也得到了很多同学的帮助与支持,在此感谢他们。
谢谢!
10参考文献
[1]《微机原理与接口技术》郭兰英赵祥模编著清华大学出版社
[2]《微机原理实验指导》张辉杨鹏编著浙江大学出版社单片机原理及应用
[3]《接口技术实验指导》马光荣刘宋和编著中国电力出版社
[4]《32位微型计算机原理接口技术及应用》冯萍编清华大学出版社
[5]《微型计算机原理与接口技术试验》史新福
[6]《微机原理与接口技术》谢维成牛勇编华中科技大学出版社
[7]《微机接口技术实用教程》秦鹏王积翔编清华大学出版社2009
[8]《微型计算机原理及应用》[M]朱定华编北京电子工业出版社2003.6
[9]《微机接口技术实用教程》任向民编清华大学出版社2008.3
[10]《微机接口技术》王成瑞编高叫京出版社2009.2
[11]《微机接口技术及其应用》李育贤编西安电子科技大学出版社2007.6
[12]《现代微机原理与接口技术》杨全胜编电子工业出版社
[13]《微机原理与接口技术》厉荣卫编科学出版社2006.8
11附录
原理图:
程序
软件调试的程序如下:
;***************根据CHECK配置信息修改下列符号值*******************
IOY0EQU0e000H
IOY1EQU0e040H
;*****************************************************************
MY8255_AEQUIOY0+00H*4
MY8255_BEQUIOY0+01H*4
MY8255_CEQUIOY0+02H*4
MY8255_MODEEQUIOY0+03H*4
MY8254_COUNT0EQUIOY1+00H*4
MY8254_COUNT1EQUIOY1+01H*4
MY8254_COUNT2EQUIOY1+02H*4
MY8254_MODEEQUIOY1+03H*4
STACK1SEGMENTSTACK
DW256DUP(?
)
STACK1ENDS
DATASEGMENT
DTABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H;
TIMETABLEDB0,0,0,0
CLEARKEYDB0FH
STARTKEYDB6
STOPKEYDB7
STATUSDB0
ISRUNINGDB0
WTHOUSANDDB0
WHUNDREDDB0
WTENDB0
WSECDB0
WMSECDB0
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVDX,MY8254_MODE
MOVAL,36H
OUTDX,AL
MOVDX,MY8254_COUNT0
MOVAL,00H
OUTDX,AL
MOVAL,54H
OUTDX,AL
MOVDX,MY8255_MODE
MOVAL,81H
OUTDX,AL
BEGIN:
CALLDIS
CALLCLEAR
CALLCCSCAN
JZNOKEYDOWN
JMPGETKEY1
NOKEYDOWN:
MOVAH,1
INT16H
JZKEYSCANEND
JMPQUIT
KEYSCANEND:
CMPISRUNING,1
JNEBEGIN
TIMESTART:
MOVAL,B
MOVDX,MY8254_MODE
OUTDX,AL
MOVDX,MY8254_COUNT0
INAL,DX
CMPSTATUS,1
JNENOTSTATUS
TESTAL,80H
JZCHANGEWMSEC
JMPBEGIN
NOTSTATUS:
TESTAL,80H
JNZCHANGEWMSEC
JMPBEGIN
CHANGEWMSEC:
TESTAL,80H
JZCHANGESTATUS
MOVSTATUS,1
JMPHASCHANGE
CHANGESTATUS:
MOVSTATUS,0
HASCHANGE:
INCWMSEC
CMPWMSEC,0AH
JNECHANGESEC
MOVWMSEC,0
INCWSEC
CMPWSEC,0AH
JNECHANGESEC
MOVWSEC,0
INCWTEN
CMPWTEN,0AH
JNECHANGESEC
MOVWTEN,0
INCWHUNDRED
CMPWHUNDRED,06H
JNECHANGESEC
MOVWHUNDRED,0
CHANGESEC:
MOVSI,0
;==================存储时间=======================
MOVAL,WHUNDRED