微机课程设计数字秒表.doc_第1页
微机课程设计数字秒表.doc_第2页
微机课程设计数字秒表.doc_第3页
微机课程设计数字秒表.doc_第4页
微机课程设计数字秒表.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微型计算机课程设计目 录1.中文摘要22.方案论证33.总体设计方案43.1硬件系统设计53.1.1 8086简介.53.1.2 8255简介.63.1.3 8083简介.83.1.4 硬件系统原理图.93.2软件系统设计103.2.1 软件设计要求及介绍.113.2.2 程序设计流程.123.2.3 程序清单.134.实验结果及分析245.总结体会256.参考文献26一、中文摘要微机原理与接口技术是一门实践性很强的电子信息工程专业的技术基础课程。因此,微机接口课程设计是一项实践性很强的实训环节,结合运用所学的汇编语言及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灯的各个控制输入端。三、总体设计方案设计一个利用微机原理与接口技术完成秒表的设计方案, 该方案主要是选择8253A的计数器2与计数器1产生一个1Hz的中断脉冲,其输出端与不可屏蔽中断请求信号端相连接。利用1.19318MHz脉冲方波输入CLK2,设置CLK2的初值为59659,将CLK2的输出端连接到CLK1,设置CLK1的初值为20,将OUT1连接到8086CPU的NMI端。将NMI端有一个低电平信号输入时,8086CPU将产生中断进行秒计数。8086通过8255A将PA口作为段选信号输出端,将PB口作为片选信号输出端。此方案的核心内容是利用微机原理与接口技术完成秒表的设计方案,该方案主要是选择8253A的计数器2和计数器1进行1s的定时,其输出于OUT1与8086的NMI相连,当定时到1s的时候产生一个中断信号,在中断服务程序进行秒的计数,并送入相应的存储单元;8255的A口接七段数码管的段选信号,B口接七段数码管的位选信号,秒的数值通过对8255的编程可以显示在七段数码管上面。该方案是利用微机接口技术的典范案例,就可行性而言,也是行之有效的。总体设计方框图3.1硬件系统设计3.1.1 8086简介Intel 8086拥有四个16位的通用寄存器,也能够当作八个8位寄存器来存取,以及四个16位索引寄存器(包含了堆栈指标)。资料寄存器通常由指令隐含地使用,针对暂存值需要复杂的寄存器配置。它提供64K,8位元的输出输入(或32K,16位元),以及固定的向量中断。大部分的指令只能够存取一个内存位址,所以其中一个操作数必须是一个寄存器。运算结果会储存在操作数中的一个。Intel 8086有四个 内存区段(segment)寄存器,可以从索引寄存器来设定。区段寄存器可以让CPU利用特殊的方式存取1MB内存。8086把段地址左移4位然后把它加上偏移地址。而 8086 的寻址方式改变让内存扩充较有效率。8086处理器的时钟频率介于4.77MHz(在原先的IBM PC)和10 MHz之间。8086没有包含浮点指令部分(FPU),但是可以通过外接数学辅助处理器来增强浮点计算能力。其I/O分配如下图所示: 3.1.2 8255简介Intel 8086/8088 系列的可编程外设接口电路(Programmable Peripheral Interface)简称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位。3.1.3 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位寄存器来用:3.1.4.硬件系统原理图3.2软件系统设计3.2.1软件设计要求及介绍这是一个利用微机原理与接口技术完成秒表的设计方案,该方案主要是选择8253A的计数器2与计数器1进行1s的定时,其输出于OU1与8086的NMI相连,当定时到1s的时候产生一个中断信号,在中断服务程序进行秒的计数,并送入相应的存储单元;8255的A口接七段数码管的段选信号,B口接七段数码管的位选信号。我的数值通过对8255的编程可以显示在七段数码管上面。因此可以利用8086等器件的功能来完成设计。EMU8086是学习汇编必不可少的工具,它结合了一个先进的原始编辑器、组译器、反组译器、具除错功能的软件模拟工具(虚拟PC),还有一个循序渐进的指导工具。该软件包含了学习汇编语言的全部内容。Emu8086集源代码编辑器,汇编反汇编工具以及可以运行debug的模拟器(虚拟机器)于一身,此外,还有循序渐进的教程。这里是软件设计的流程,首先对所要用到的逻辑元器件的控制端口,I/O口进行初始化,接着通过按下按键“1”来调用赋值子程序,这中间必须要应用一个延时程序来防抖,完成后就开始中断,接着判断按键“2”按下去的次数,如果是奇数次的话就继续进行秒表计时,如果按下去的是偶数次的话,那么暂停,显示当前秒表的计数值。3.2.2程序设计流程3.2.3程序清单DIS MACRO LOCAT,CODE ;设置图形显示宏定义 PUSH DX PUSH BX PUSH AX MOV DX,LOCAT ;设置光标位置 MOV BH,00 MOV AH,02H INT 10H MOV DL,CODE ;输出字符串 MOV AH,02H INT 21H POP AX POP BX POP DX ENDMDAT SEGMENT ;设置数据段BUF DB INPUT START RESET END CONTINUE $ ;设置功能说明BUFFER DB 10 DUP(?) ;定义缓存区TIP DB M E M O R Y$ ;定义记忆提示NUM DB 1 LOD EQU 0929HDAT ENDSCOD SEGMENT ;定义代码段START PROC FARASSUME CS:COD,DS:DAT MOV AX,DATMOV DS,AXMOV DX,OFFSET BUF ;输出功能说明MOV AH,09HINT 21HCALL DISMER ;记忆区提示符置光标MOV DX,OFFSET TIP ;输出记忆提示字符MOV AH,09HINT 21HCALL CLR ;图形区清屏并设置颜色CALL CLRDAT ;秒表数字区清屏并设置颜色CALL CLRMER ; 记忆区清屏并设置颜色DIS 0419H, ;通过宏调用显示图形DIS 0517H,DIS 0715H,DIS 0914H,DIS 0B14H,DIS 060EH,_DIS 0710H,_DIS 0812H,_DIS 0913H,_DIS 0A14H,_DIS 0915H,_DIS 0816H,_DIS 0718H,_DIS 061AH,_DIS 071CH,*DIS 081EH,*DIS 091FH,*DIS 0B20H,*DIS 0D21H,*DIS 0F21H,*DIS 1120H,*DIS 131FH,*DIS 141EH,*DIS 151DH,*DIS 161BH,*DIS 1719H,*DIS 1717H,_DIS 1616H,_DIS 1514H,_DIS 1612H,_DIS 1711H,_DIS 170EH,*DIS 160CH,*DIS 150BH,*DIS 140AH,* DIS 1309H,*DIS 1108H,*DIS 0F07H,*DIS 0D07H,*DIS 0B08H,*DIS 0909H,*DIS 080AH,*DIS 070CH,*DIS 0C12H,_DIS 0C13H,_DIS 0C14H,_DIS 0C15H,_DIS 0C16H,_CALL GO ;设置初植LOAD: CALL IOSET ;光标定位CALL HALT ;等待输入MOV DX,0MOV CH,0AGAIN: CALL TIME ;调用延时程序 MOV AL,DL ;百分之一秒加一ADD AL,1DAAJC NEXT1 ;满一百进位MOV DL,ALJMP DISPY ;不满一百显示NEXT1: MOV DL,0MOV AL,DH ;秒位加一ADD AL,1DAAMOV DH,ALCMP AL,60H JNE DISPYCALL BELL ;满60提示铃声并进位MOV DH,0MOV AL,CH ;分位加一ADD AL,1DAAMOV CH,ALCMP AL,60HJNE DISPY ;满60清零MOV CH,0DISPY: ;显示电子秒表MOV BX,OFFSET BUFFER ;取缓冲区地址 MOV AL,CHCALL TRAN ;将分位转变为ASCII码并送缓冲区INC BXINC BXMOV AL,DH ;将秒位转变为ASCII码并送缓冲区CALL TRANINC BXINC BXMOV AL,DL ;将百分之一秒位转变为ASCII码并送缓冲区CALL TRANPUSH BXPUSH CXPUSH DXCALL IOSET ;光标置位MOV DX,OFFSET BUFFER ;输出缓冲区字符串MOV AH,09HINT 21HPOP DXPOP CXPOP BXMOV AH,0BH ;等待键盘输入INT 21HAND AL,ALJZ AGAINMOV AH,08HINT 21HCMP AL,R ;判断输入是否为RJNE NEXT2 ;不是则判断是否为ECALL MEMORY ;若是则调用记忆功能保存当前值MOV CH,0 ;初值清零重新计数MOV DL,0MOV DH,0JMP AGAINNEXT2:CMP AL,E ;判断是否为E JNE AGAIN ;不是则继续计数NEXT3: ;若是则暂停计数MOV AH,08HINT 21HCMP AL,C ;判断是否输入CJE AGAIN ;若是则继续计数CMP AL,R ;判断是否输入RJNE NEXT3 ;若不是则继续等待输入CALL MEMORY ;若是则调用记忆功能CALL GO ;重新设置初值等待重新启动CALL IOSETMOV DX,OFFSET BUFFERMOV AH,09HINT 21HJMP LOADRETSTART ENDPGO PROC ;设置初值子程序MOV BX,OFFSET BUFFERMOV AL,0MOV BX,ALINC BXMOV AL,0MOV BX,ALINC BXMOV AL,:MOV BX,ALINC BXMOV AL,0MOV BX,ALINC BXMOV AL,0MOV BX,ALINC BXMOV AL,:MOV BX,ALINC BXMOV AL,0MOV BX,ALINC BXMOV AL,0MOV BX,ALINC BXMOV AL,$MOV BX,ALRETGO ENDPIOSET PROCMOV DX,0F10HMOV BH,00MOV AH,02HINT 10HRETIOSET ENDPHALT PROCMOV AH,08HINT 21HCMP AL,SJNE HALTRETHALT ENDPTRAN PROC ;十六进制转ASCII码子程序MOV CL,ALSHR AL,1SHR AL,1SHR AL,1SHR AL,1OR AL,30HMOV BX,ALINC BXMOV AL,CLAND AL,0FHOR AL,30HMOV BX,ALRETTRAN ENDPTIME PROC ;延时子程序PUSH CXPUSH AXMOV AX,0EFHMOV CX,0FFFFHA1:DEC AXJNZ A2JMP A3A2:DEC CXJNZ A2JMP A1A3:POP AXPOP CXRETTIME ENDPMEMORY PROC ;记忆功能子程序PUSH DXPUSH BXPUSH AXCMP NUM,10JE X2ADD NUM,1X1:MOV DX,LODADD DH,NUMMOV BH,00MOV AH,02HINT 10HMOV DX,OFFSET BUFFERMOV AH,09HINT 21HPOP AXPOP BXPOP DXRETX2: CALL CLRMERMOV NUM,1JMP X1MEMORY ENDPCLR PROC ;图形区清屏并设置颜色子程序MOV AH,06HMOV AL,14HMOV CX,0401HMOV DX,1721HMOV BH,0CHINT 10HRETCLR ENDPCLRDAT PROC ;数据区清屏并设置颜色子程序MOV AH,6MOV AL,1MOV CX,0F10HMOV DX,0F18HMOV BH,0BHINT 10HRETCLRDAT ENDPCLRMER PROC ;记忆区清屏并设置颜色子程序PUSH AXPUSH BXPUSH CXPUSH DXMOV AH,6MOV AL,11MOV CX,0929HMOV DX,0F32HMOV BH,0DHINT 10HPOP DXPOP CXPOP BXPOP AXRETCLRMER ENDPDISMER PROC ;记忆提示显示子程序MOV

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论