微机原理课程设计题目名称:周期测量计班级:自动化0902学号:200904134064姓名:指导教师:日期:2011-12-18周期测量计一、设计任务和要求用555集成电路实现周期可调的多谐振荡器。用8088设计一个能实现对脉冲周期进行测量的电路。周期值用4位LED数码显示。具体要求:1.画出连接线路图或功能模块引脚连接图。2.采用8088CPU作为主控制器,8259作为外扩中断的管理,8053作为测量周期的定时器。3.采用4个共阴极型LED。二.题目分析为了完成需求,我们需要先设计一个8088的最小系统作为基本的硬件平台,再加上外部芯片扩展来实现周期测量的部分。设计8088的最小系统包括8088CPU芯片,8284作为时钟发生器,74LS373作为地址锁存器提供I/O端口寻址,74LS245作为双向总线驱动器为CPU和外设进行数据交流。要实现周期测量功能,我们需要加上的外部扩展有中断管理的8259A,用作计数器的8253,扩展的并行接口芯片8255。为了显示测量的结果,我们还需要加上了4个共阴极型的LED数码管。在这里,我们可以采用555定时器组成多谐振荡器作为被测量的信号源以完成测量。三.整体构思1.硬件设计8088工作在最小组态下,8284为它提供时钟和复位信号。用3片74LS373为20根地址线提供锁存保护,74LS245提供数据接口给外设。8253中的计数器0作为标准时钟,工作在方式2上。外接外部标准时钟信号;计数器1作为被测信号的计数器,工作在方式3上。8259A传递来自8253计数器0的计数结束信号,来对8088发出中断请求。8255提供两个端口分别为4个共阴极型的数码管提供位选和段码从而实现4个数码管的动态显示。硬件设计框图如下:图1硬件设计框架图由标准时钟信号和8253的定时器0的中断响应,再从8253读取定时器1的计数状态,可以得到单位时间内555定时器产生的脉冲数,由此,我们可以计算得到被测信号的周期。2.软件设计采用8086宏汇编语言来完成软件部分的实现。程序中使用了8253,8259a,8255等IC芯片,在使用时需要对这些芯片进行初使化控制字设置。程序中需要采用中断方式进行,中断信号由8253经过8259请求传入8088中,在使用中断服务程序时,需要先将中断服务程序的入口地址送到中断向量表的指定位置。程序正常循环时,在不断地点亮四个数码管以显示当前测量的周期值,由8255给数码管传送段码和位码。软件流程图如下:图2程序流程图程序中调用的中断类型码是8号。在初使化的时候要保存系统原有的8号中断入口地址,以便在程序执行完之后可以及时恢复系统原有的时钟中断程序。每次中断读取计数器1中的数据,由于计数器是16位的,所以要分两次来读取数值,为了防止读取过程中的数据被改变,先要将计数值锁存,再分两次来读。读取完计数值后,要立即重新设定计数器2的初值。四.具体实现1.硬件设计(1)8088最小系统图38088的最小系统AD016A88AD115A97AD214A106AD313A115AD412A124AD511A133AD610A142AD79A1539A16/S338NMI17A17/S437INTR18A18/S536A19/S635RD32S0/DEN26WR/LOC29S1DT/R27HOLD31S2IO/M28HLDA30ALEQS025MN/MX33INAQS124SSO34TEST23CLK19READY22RESET21U18088OE1LE11D13Q12D24Q25D37Q36D48Q49D513Q512D614Q615D717Q716D818Q819VCC20GND10U4SN74LS373NOE1LE11D13Q12D24Q25D37Q36D48Q49D513Q512D614Q615D717Q716D818Q819VCC20GND10U5SN74LS373NOE1LE11D13Q12D24Q25D37Q36D48Q49D513Q512D614Q615D717Q716D818Q819VCC20GND10U3SN74LS373NVCCVCCVCCGNDOE19T/R1A13B117A24B216A35B315A46B414A57B513A68B612A79B711A02B018VCC20GND10U6SN74LS245NVCCAD0AD1AD2AD3AD4AD5AD6AD7AD8AD9AD10AD11AD12AD13AD14AD15AD16AD17AD18AD19AD0AD1AD2AD3AD4AD5AD6AD7AD8AD9AD10AD11AD12AD13AD14AD15AD16AD17AD18AD19AD0AD1AD2AD3AD4AD5AD6AD7A0A1A2A3A4A5A6A7D0D1D2D3D4D5D6D7RESETF/C13READY5EFI14CLK8CSYNC1PCLK2ASYNC15OSC12RESET10X117X216RDY14RDY26AEN13RES11AEN27U28284GND14.318MVCCGNDS133pFC333pFC20.1uFC110KR1GNDA8A9A10A11A12A13A14A15A16A17A18A19AD[0..20]123U12ASN74LS00N564U12BSN74LS00N12U13ASN74LS04D34U13BSN74LS04DVCCIOWIOR上图是8088的最小系统,包括8284时钟产生电路和74LS373的地址锁存,以及74LS245双向数据总线驱动器构成最小组态的最小系统。(2)8253计数器及标准时钟产生电路图48253计数器和标准时钟发生电路由外接时钟芯片74HC4040外接晶振产生所需要的时钟信号。标准时钟信号接在8253的CLK0上,每隔一定周期OUT0产生一次脉冲。CLK1端接555电路产生的被测方波信号。GATE0和GATE1直接接高电平让两计数器工作。(3)8255和LED动态显示D08OUT010D17GATE011D26CLK09D35D44D53D62OUT113D71GATE114CLK115CS21RD22WR23OUT217A019GATE216A120CLK218U98253D0D1D2D3D4D5D6D7VCCCLR11CLK10QA9QB7QC6QD5QE3QF2QG4QH13QI12QJ14QK15QL1VCC16GND8U14SN74HC4040N12U15ASN74LS04N34U15BSN74LS04NGND51R71MR551R6128MHzXTAL30pFC630pFC7GND4M2M1M500K250K125K62.5K31.25K15.625K781239061953IR000C~00FA0A1IOWIOR555a1b2c3d4e5f6g7Dp89101112comcomcomcomL14_8SegLedD034D133D232D331D430D529D628D727PA04PA13PA22PA31PA440PA539PA638PA737PB018PB119PB220PB321PB422PB523PB624PB725PC014PC115PC216PC317PC413PC512PC611PC710RD5WR36A09A18RESET35CS6U88255AD0D1D2D3D4D5D6D7RESET000~004A0A1IOWIOR图58255和LED动态显示利用8255的多个端口的输入输出,可以分别为数码管提供段码和位码,让数码管不断地点亮从而实现动态的显示。这里的4个数码管均是共阴极型。(4)555定时器图6555多谐振荡器用555芯片构成多谐振荡器,产生方波。这里方波的周期是由电阻R2、R3以电容C4来决定的。让R2=1k,R3=1k,C4=1uF。所以有T=0.7(R1+2*R2)*C4≈2.1ms,所以我们设计的周期测量计是以微秒作为单位,即实际测量大概显示为2100。2.软件设计程序代码及注释; 周期测量计 ; 测量单位时间内的脉冲数 ;‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ stack segment stack 'stack' dw 32 dup(0) stack ends ;‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ data segment store dw 0,0 ;临时存储系统中断向量表 display db 0, 0, 0, 0 ;低位在前 segpt db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h, 7fh, 6fh ;0~9的共阴极段码 data ends ;‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ code segment main proc far TRI2OUT3RST4CVT5THR6DIS7VCC8GND1U11SE555N0.01uFC510uFC41KR31KR2 assume cs: code, ds: data, ss: stack push ds sub ax, ax push ax mov es, ax mov ax, data mov ds, ax ;保存系统时钟的中断服务程序 mov di, offset store mov ax, es: 20h ;中断类型码为8 mov [di], ax ;偏移地址 inc di inc di mov ax, es: 22h mov [di], ax ;段地址 ;8259设置(端口地址为1eh和1fh) mov al, 13h ;icw1: 边沿触发,单片,设置ic4 out 1eh, al mov al, 8 ;icw2: 中断类型码为08h~0fh out 1fh, al mov al, 0dh ; icw4: 全嵌套、缓冲、 out 1fh, al ;非自动结束中断方式 ;8255设置(端口地址为00h~03h) mov al, 80h ;8255控制字,端口A工作方式0 out 03h, al ;输出,端口C输出 ;8253设置(端口地址为0ch~0fh) mov al, 36h ;计数器0:工作方式3、二进制 out 0fh, al mov al, 50h ;计数器十六位初值为c350h out 0ch, al ;即50000 mov al, 0c3h out 0ch, al mov al, 76h ;计数器1:工作方式3、二进制 out 0fh, al mov al, 10h ;计数器十六位初值为2710h, out 0dh, al ;即10000 mov al, 27h out 0dh, al ;中断程序入口地址 mov di, 20h ;中断类型码为8 mov ax, offset timerx ;偏移地址 mov [di], ax inc di