用7段数码管显示9秒倒计时.doc

上传人:牧羊曲112 文档编号:2791998 上传时间:2023-02-25 格式:DOC 页数:18 大小:255.50KB
返回 下载 相关 举报
用7段数码管显示9秒倒计时.doc_第1页
第1页 / 共18页
用7段数码管显示9秒倒计时.doc_第2页
第2页 / 共18页
用7段数码管显示9秒倒计时.doc_第3页
第3页 / 共18页
用7段数码管显示9秒倒计时.doc_第4页
第4页 / 共18页
用7段数码管显示9秒倒计时.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《用7段数码管显示9秒倒计时.doc》由会员分享,可在线阅读,更多相关《用7段数码管显示9秒倒计时.doc(18页珍藏版)》请在三一办公上搜索。

1、精选优质文档-倾情为你奉上1 设计内容及目标1.1设计题目用七段LED数码管显示倒计时1.2设计要求(1)用8255控制七段LED数码管。(2)可选:用8254定时器显示时间。(3)可选:可通过开关控制暂停计时、继续计时或时间清零。1.3设计目的通过本学期对微机原理的学习,掌握的知识还停留在理论的上。但是这是一门实践性较强的课程,让学生在学完该课程之后,进行一次课程设计,使学生将课堂所学的知识和实践有机结合起来,初步掌握计算机应用系统设计的步骤和接口设计的方法,提高分析和解决实际问题的能力。通过设计实践,培养学生查阅专业资料,工具书或参考书,了解有关工业标准,掌握现代设计手段和软件工具,并能以

2、图纸和说明书表达设计思想和结果的能力。通过设计,不但要培养和提高学生解决工程具体问题,动脑动手的技术工作能力,而且还要逐步建立科学正确的设计和科研思想,培养良好的设计习惯,牢固树立实事求是和严肃认真的工作态度。2 设计原理2.1设计思路本次课程设计的题目是用七段LED数码管来显示倒计时。在这个设计中既要用到8255芯片,又要用到8254芯片对脉冲信号进行记数。设定初始值,每隔一秒,秒钟数字减一,每过60秒分钟个位减一。根据需要,需选择的芯片有8255、8259和8254。2.2设计环境与器材(1)PC微机一台。用于对程序的编写、编译和测试等,同时还需要对实验设备进行控制,提供整个程序的运行平台

3、,并且收集和释放硬件信号,实现程序功能。(2)微机原理实验箱一台。此设备必须能提供8254、8255、8259和数码管等必要芯片,并且能通过接受PC机传来的信息,显示出相应的功能,以支持电子时钟的实现。(3)导线若干条。用于电路和芯片之间的连接。2.3电路原理和主要芯片2.3.1电路工作原理首先利用程序硬性规定分、秒的起始时间为9。然后通过8254计时器分频,并将以分得的频率接通8259中断控制器,进而通过CPU响应可屏蔽中断达到按秒计时的效果。具体做法是将四个七段管显示器接到两片可并行接口8255芯片上,以此来控制七段管显示器的位操作以及段操作。并为之在数据段开辟一处空间,专门存放将要显示的

4、数位代码。8254计时器将由PC机给定的频率加以分频,得到的新频率加到8259中断控制器的中断请求输入端。主程序为此可屏蔽中断设置专门的中断向量码。CPU获取此中断向量码后转向待需解决的程序进行操作。而这个程序便是整个主程序的心脏。通过它将使倒计时的显示时间以秒为减位,达到秒、分的减少。2.3.2 8254主要功能8254 是Intel 公司生产的可编程间隔定时器。是8253 的改进型,比8253 具有更优良的性能。8254 具有以下基本功能: 有3 个独立的16 位计数器; 每个计数器可按二进制或十进制(BCD)计数; 每个计数器可编程工作于6 种不同工作方式;每个计数器允许的最高计数频率为

5、10MHz; 8254 有读回命令,除了可以读出当前计数单元的内容外,还可以读出状态寄存器的内容。 计数脉冲可以是有规律的时钟信号,也可以是随机信号。计数初值公式为n=fCLKi fOUTi,其中fCLKi是输入时钟脉冲的频率,fOUTi是输出波形的频率。图1 内部结构框图和引脚图上图是8254 的内部结构框图和引脚图,它是由与CPU 的接口、内部控制电路和三个计数器组成。8254 的工作方式如下述: (1) 方式0 :计数到0 结束输出正跃变信号方式。 (2) 方式1:硬件可重触发单稳方式。 (3) 方式2 :频率发生器方式。 (4) 方式3 :方波发生器。 (5) 方式4 :软件触发选通方

6、式。 (6) 方式5 :硬件触发选通方式。8254 的控制字有两个:一个用来设置计数器的工作方式,称为方式控制字;另一个用来设 置读回命令,称为读回控制字。这两个控制字共用一个地址,由标识位来区分。当读回控制字的D4 位为0 时,由该读回控制字D1D2 位指定的计数器的状态寄存器内容将被锁存到状态寄存器中。状态字格式如图2.6所示:图2 8254状态字格式2.3.3 8255的主要功能8255 可编程外围接口芯片是 Intel 公司生产的通用并行I/O 接口芯片,它具有A、B、C 三个并行接口,并行接口是以数据的字节为单位与I/O 设备或被控制对象之间传递信息。CPU 和接口之间 的数据传送总

7、是并行的,即可以同时传递8 位、16 位、32 位等。用+5V 单电源供电,能在以下三种方式下工作:方式0-基本输入/出方式、方式1-选通输入/出方式、方式2-双向选通工作方式。8255的内部结构及引脚如图2.1所示:图3 内部结构及引脚如图2.1所示,D0D7为双向数据信号线,用来传送数据和控制字。为读信号线,与其他信号线一起实现对8255接口的读操作。通常接系统总线的信号。为写信号线,与其他信号一起实现对8255的写操作,通常接系统总线的。为片选信号线,当它为低电平时,才能选中该8255芯片,也才能对8255进行操作。A0、A1为口地址选择信号线。本次设计使其分别与系统总线的XA1、XA2

8、相连,它们的不同编码可分别寻址3个口和一个控制寄存器,具体规定如下:A1A0选择00A口01B口10C口11控制寄存器RESET为复位输入信号。此端上的高电平可使8255复位。复位后,8255的A口、B口和C口均被定义为输入状态。PA0PA7为A口的8条输入输出信号线,该口的这8条线是工作于输入、输出还是双向(输入、输出)方式,可由软件编程来决定。PB0PB7为B口的8条输入输出信号线,利用软件编程可指定这8条线是输入还是输出。2.3.4 8259主要功能终端控制器8259是Intel 公司专为控制优先级中断而设计开发的芯片。它将中断源优先级 排队、辨别中断源以及提供中断矢量的电路集于一片中,

9、因此无需附加任何电路,只需对8259A 进行编程,就可以管理8 级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编 程来设定。同时,在不需增加其他电路的情况下,通过多片8259A 的级连,能构成多达64 级的矢量中断系统。它的管理功能包括:1)记录各级中断源请求,2)判别优先级,确定是否响应 和响应哪一级中断,3)响应中断时,向CPU 传送中断类型号。8259A 的内部结构和引脚如图2.3所示:图4 内部结构和引脚8259的命令共有7 个,一类是初始化命令字,另一类是操作命令。8259A 的编程就是根据 应用需要将初始化命令字ICW1-ICW4 和操作命令字OCW1- OCW3 分别

10、写入初始化命令寄存器 组和操作命令寄存器组。OCW1-OCW3 各命令字格 式如图2.4所示,其中OCW1 用于设置中断屏蔽操作字,OCW2 用于设置优先级循环方式和 中断结束方式的操作命令字,OCW3 用于设置和撤销特殊屏蔽方式、设置中断查询方式以及设 置对8259 内部寄存器的读出命令。图5 OCW1-OCW3 各命令字格3设计步骤3.1实验接线图系统的连线图主要由五个部分构成。8259中断控制器、8255并口控制器、8254定时计数器、键盘及数码管显示单元、开关及LED显示单元构成。如下图所示:芯片8254 系统总线 芯片8255 LED数码管 D0 PB0D1 PB1D2 PB2D3

11、PB3D4 PB4D5 PB5D6 PB6D7 PB7WR RD PA0CS PA1A0 PA2A1 PA3XD0XD1XD2XD3XD4XD5XD6XD7IOW#IOR#IOY3 IOY0XA1XA2ClkMir7+5VABCDEFGHX1X2X3X4D0D1D2D3D4D5D6D7WRRDCSA0A1CLK0OUT0GATE0 图6 实验接线图3.2主程序流程图的设计主程序的流程图是对整个程序的逻辑的图象表示。首先是设置8254、8255、8259的各个端口地址。接着初始化各个芯片,开始计时,并通过8259中断控制时间的正确显示。在整个过程中都在检测是否有铵键响应。有则停止,没有则返回继续

12、执行。开始计数单元清零TH0,TL0装入初值开中断,并允许T0中断开始倒计时SENOND减SECOND=0吗?SECOND=60显示数据处理MINTE减1MINTE=60MINTE=0吗?显示数据处理T0中断,调用子程序显示数据处理中断返回结束图7 主程序流程图 3.3子程序流程图通过查表方式显示数据数码位选加1位选数值=8吗?位选数值=0秒计数减1秒计数=0秒计数=500吗?SECOND减1SECOND=0吗?SECOND=0并MINITE减1MINITE=0显示数据处理中断返回T0中断开始图8 子程序流程图3.4倒计时源程序的设计MY8255_A EQU 0600H MY8255_B EQ

13、U 0602H MY8255_C EQU 0604H MY8255_MODE EQU 0606H A8254 EQU 06C0H B8254 EQU 06C2HC8254 EQU 06C4HCON8254 EQU 06C6HSSTACK SEGMENT STACK DW 32 DUP(?)SSTACK ENDSDATA SEGMENT DTABLEDB 6FH,7FH DB 07H,7DH,6DH,66H,4FH,5BH,06H,3FHMSECDW 0 SEC DB 0 MINDB 0DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:SSTACK

14、START: PUSH DSMOV AX, 0000HMOV DS, AXMOV AX, OFFSET MIR7;取中断入口地址MOV SI, 003CH;中断矢量地址MOV SI, AX;填IRQ7的偏移矢量 确定地址 MOV AX, CS ;段地址MOV SI, 003EHMOV SI, AX;填IRQ7的段地址矢量CLIPOP DS ;初始化主片8255MOV DX,MY8255_MODE MOV AL,81H OUT DX,AL;初始化主片8254MOV DX,CON8254 MOV AL,36H OUT DX,AL MOV DX,A8254 MOV AL,0E8H OUT DX,AL

15、 MOV AL,03H OUT DX,AL ;初始化主片8259MOV AL, 11HOUT 20H, AL;ICW1MOV AL, 08HOUT 21H, AL;ICW2MOV AL, 04HOUT 21H, AL;ICW3MOV AL, 01HOUT 21H, AL;ICW4MOV AL, 6FH;OCW1OUT 21H, ALSTI MOV AX,DATA MOV DS,AX MOV SI,3000H MOV AL,00H MOV SI,AL MOV SI+1,AL MOV SI+2,AL MOV SI+3,AL MOV DI,3003HBEGIN: CALL DIS CALL CLEA

16、RJMP BEGINMIR7:STI PUSH AXPUSH SIMOV AX,MSEC INC AX MOV MSEC,AX CMP AX,1000 JB MRET MOV AX,0MOV MSEC,AX MOV AL,SECADD AL,1DAA MOV SEC,ALCMP AL,60HJB MTODISMOV AL,0MOV SEC,ALMOV AL,MINADD AL,1DAAMOV MIN,ALMTODIS: MOV AL,SECMOV AH,ALMOV SI,3000HAND AL,0FHMOV SI,ALROR AH,1ROR AH,1ROR AH,1ROR AH,1AND AH

17、,0FHMOV SI+1,AHMOV AL,MINMOV AH,ALAND AL,0FHMOV SI+2,ALROR AH,1ROR AH,1ROR AH,1ROR AH,1AND AH,0FHMOV SI+3,AHMRET:MOV AL, 20HOUT 20H, AL;中断结束命令POP SIPOP AXIRETCLEAR: MOV DX,MY8255_B MOV AL,00H OUT DX,AL RETDIS: PUSH AX MOV SI,3000HMOV DL,0F7HMOV AL,DLAGAIN: PUSH DX MOV DX,MY8255_A OUT DX,AL MOV AL,SI

18、 MOV BX,OFFSET DTABLE AND AX,00FFH ADD BX,AX MOV AL,BX MOV DX,MY8255_B OUT DX,AL CALL DALLYINC SI POP DX MOV AL,DLTEST AL,01H JZ OUT1ROR AL,1 MOV DL,ALJMP AGAINOUT1: POP AXRETDALLY : PUSH CX MOV CX,000FH T1: MOV AX,002FHT2: DEC AX JNZ T2 LOOP T1 POP CX RETCODE ENDS END START3.5源程序的调试过程经过小组成员共同努力编写完源

19、程序,我们开始了上机调试过程,发现了许多细节上的错误,还有许多程序的用途和我们设计的不同。由于程序过于庞大,主程序和子程序的链接做的不是很理想,我们的第一次程序没能完成我们要求达到的作用,经过不断改进和了解每一部分的具体作用,我们的程序最终实现了我们设定的倒计时功能。 MY8255_A EQU 0600H MY8255_B EQU 0602H MY8255_C EQU 0604H MY8255_MODE EQU 0606H A8254 EQU 06C0H B8254 EQU 06C2HC8254 EQU 06C4HCON8254 EQU 06C6HSSTACK SEGMENT STACK DW

20、 32 DUP(?)SSTACK ENDSDATA SEGMENT从最开始的段定义,我们设定了8254,8255和8259的功能实现,为以后的程序实现做基础。DTABLEDB 6FH,7FH DB 07H,7DH,6DH,66H,4FH,5BH,06H,3FH 做初始定义,定义最大值9999,重99分99秒开始倒计时PUSH DSMOV AX, 0000HMOV DS, AXMOV AX, OFFSET MIR7MOV SI, 003CHMOV SI, AX MOV AX, CS MOV SI, 003EHMOV SI, AXCLIPOP DS MOV DX,MY8255_MODE MOV A

21、L,81H OUT DX,ALMOV DX,CON8254 MOV AL,36H OUT DX,AL MOV DX,A8254 MOV AL,0E8H OUT DX,AL MOV AL,03H OUT DX,AL 具体定义了8254,,8255和8259的功能,给8254,8255和8259初始化。后面开始了倒计时的设计,先设计秒计时,从99秒开始递减60秒到39秒后分减1变成98,然后秒再变成99从新递减,重复循环。4实现方法及个人设计 4.1控制功能的实现 控制功能的实现,主要采用8254的控制功能。主要用到了8254控制计数器的功能,用8254控制8255,从而实现倒计时的功能。 4.2

22、个人在设计小组中的作用 倒计时程序的实现,需要实验箱的接线。在小组设计中,我们各有侧重,在程序编写中,我主要负责8254控制设计的部分,和实验箱的连线。 总结体会时光飞逝,眨眼间一周的微机原理课设结束了,一周的时间虽然短暂,但我觉得自己过得很充实,不仅仅收获好多知识,强化了自己的动手能力,同时心理上也更加成熟,也让我知道了团结协作的重要性,互相帮助也是我们能很好的完成课设的关键。原来以为课程设计只要做了就行,但经过这周的微机原理课程设计使我明白了设计并不是想象中的那么简单,我需要把所学的知识合理的运用并且要和实践有效的结合起来,不仅要做出所需要的程序还要让他真正的可以运行。同时也使我认识到个人

23、的能力是有限的,集体的能量是无穷的,在我迷茫和疑惑时,是老师和小组成员给予我最多的帮组,正是他们的帮组,才是我克服很多困能,完成了许多自己不可能完成的设计。在这次设计中,细心也是不可或缺的,由于程序很长,每一个小小的失误都可能造成严重的后果,导致程序无法运行,所以我们要仔细再仔细。这次的课程设计让我学会了很多东西,以前感觉自己危机原理学的还可以,现在才发现原来自己还有很多的不足,不仅仅是要听懂老师在课堂上讲的,同时也要自己动手做出来,实践是检验真理的唯一标准。在以后的学习生活中我会认真的学习并且细心做好每一件事情。最后再次感谢老师和同学们的帮组,是你们的帮组使我很好的完成了此次课设。专心-专注-专业

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号