《东华微机硬件产品包装计数卡设计(5页).doc》由会员分享,可在线阅读,更多相关《东华微机硬件产品包装计数卡设计(5页).doc(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-东华微机硬件产品包装计数卡设计-第 5 页题目:产品包装计数卡设计1.主电路的工作流程图74LS161计数计数送入8529中8529请求中断,8088响应调用中断程序,计数并为LED寻址和分配数据LED显示个数当脉冲送入74LS161计数,8529,8088响应中断后,调用中断程序,记录数据在LED 数码管上显示。流程图,如图:2.主电路中主要器件分析1.多谐振荡器发出脉冲,从8259中的IRQ2上进入8259,并进行优先级选择,74LS138(U1)为8259编译地址,8259的地址为20H或21H 。如图:图中的14号引脚上的端口信号接到8259的片选信号上。在初始化命令字和操作命令字时
2、,需要对8259寻址。2.8259将中断请求从INT送入8088,8088与8259的连接方式如图:3.A D0AD7采用分时复用,先将地址送入74LS373保存,然后用74LS30和74LS138(U2)分配端口地址,74LS273是数据输出寄存器,保存8088输出的数据。其中8088与74LS373的连接如图:74LS373将地址先保存起来,以免在传输数据时,发生冲突。74LS30和74LS138配合使用,产生端口选择信号PS0,PS1,PS2,PS3,PS4分别74LS273的CLK上。如图:74LS30的2号引脚接AEN,12号引脚接8088的读信号和写信号相与非后的信号。在写数据的时
3、候就会寻址端口。4.LED数码管采用动态显示接口,用VCC拉高电压。四个数码管分别显示个位数,十位数,百位数,千位数。74LS273是数据输出寄存器,有四个(A1,A2,A3,A4)作为段选寄存器和一个(A5)做为位选寄存器。如图:上图是显示个位的数码管的连接方法,其他位显示管类似。数码管是共阴极连接的,当位信号(高电平有效)从A5发出,高电平经非门后变为低电平选接在数码管的com端,使得数码管可以点亮;A3发出段选信号,为低电平有效,电流从对应引脚流入,从芯片的接地端流出,那么对应的二极管就不会点亮,剩余的二极管就会显示出个位数数字。3.电路原理设计图经上述分析后,作出完整电路原理图,如图(
4、附录在原理图中):4.元件清单表元件名称个数元件名称个数74LS161174LS16118088174LS30174LS373174LS1382定值电阻2874LS2735可调电阻2LED数码管4与非门2非门7二极管2电容2程序设计程序设计包括主程序和中断程序两个部分,现分别阐述这两部分的设计思路。1. 中断程序中断程序主要完成脉冲的计数,其流程图,如图:累加器CX加1判断是否大于将清零一般中断结束返回地址主程序部分主程序用来设置初始化命令字和操作命令字,将中断程序送入中断向量表,等待中断,为LED数码管分配数据和寻找地址,完成计数后可以退出程序。具体流程图,如图:将AX转换为十进制数,并存在
5、变量OBUF中,准备输出采用查表法,在变量OBUF中提取段选信号,从对应端口输出每个数码管的段选信号从对应端口输出位选信号将为选信号DX赋给AH保存当数码管点亮后,检查键盘是否有输入恢复中断屏蔽字设置8259的初始化命令字将中断程序送入中断向量表修改OCW2允许IRW2屏蔽等待脉冲中断,调用中断程序将累加脉冲数CX赋给确定AX十进制数的位数,设置LED数码管点亮数DX程序代码stack segment stack stack dw 32 dup(0)stack endsdata segmentOBUF DB 4 DUP(0) SEGPT DB 3FH,06H,5BH,4FH,66H,6DH,7
6、DH,07H,7FH,67Hdata endscode segmentmain proc far assume ss:stack,cs:code,ds:data push ds sub ax,ax push ax mov ax,data mov ds,ax MOV AL,13H;边沿触发,单片,设置IC4 OUT 20H,AL MOV AL,0AH;中断向量码为0AH OUT 21H,AL MOV AL,0DH;全嵌套,缓冲,非自动结束中断方式 OUT 21H,AL MOV AX,SEG IRQ2IS;中断程序送入中断向量码 MOV DS,AX MOV DX,OFFSET IRQ2IS MOV
7、 AX,250AH INT 21H IN AL,21H;读屏蔽字 AND AL,0FBH;改变屏蔽字,允许IRQ2中断 OUT 21H,AL MOV CX,0INTRUPT: JMP $;等待中断NEXT: MOV AX,CX CMP AX,0AH;确定确定数码管点亮的个数 JAE L1 MOV DX,01H;当脉冲小于10,亮一个L1: CMP AX,64H JAE L2 MOV DX,03H;当脉冲个数小于100,亮两个L2: CMP AX,3EBH JAE L3 MOV DX,07H;当脉冲个数小于1000,亮三个L3: MOV DX,0FH;当脉冲个数大于等于1000,亮四个灯PUSH
8、 CX MOV BX,OFFSET OBUF+3;将脉冲数转换为十进制数,从右向左存在OBUF中 MOV CX,10 PUSH DXAGAIN: MOV DX,0 DIV CX MOV BX,DL DEC BX OR AX,AX JNZ AGAIN POP DX POP CX MOV BX,0DISPLAY: MOV AH,DL;将数码管点亮数输给AH,以便最后输出 MOV BP,OFFSET OBUF+3;输出个位数段码 MOV BL,BP MOV AL,SEGPTBX MOV DX,380H OUT DX,AL DEC BP MOV BL,BP MOV AL,SEGPTBX;输出十位数段码
9、 MOV DX,384H OUT DX,AL DEC BP MOV BL,BP;输出百位数段码 MOV AL,SEGPTBX MOV DX,388H OUT DX,AL DEC BP MOV BL,BP MOV AL,SEGPTBX;输出千位数段码 MOV DX,38CH OUT DX,ALA1: MOV AL,AH;选定数码管点亮个数 MOV DX,390H OUT DX,AL MOV AH,11;检查键盘是否有输入,选择是否继续计数 INT 21H CMP AL,0 JE INTRUPT;无输入,则等待下一中断 IN AL,21H;恢复屏蔽字,禁止IRQ2中断 OR AL,04H OUT 21H,AL RetIRQ2IS: INC CX;检查到中断,脉冲个数加一 CMP CX,270FH;判断个数是否超过9999,如超过清零 JBE OVER MOV CX,0OVER: MOV AL,20H;一般中断结束指令 OUT 20H,AL POP AX;修改返回地址 INC AX INC AX PUSH AX IRETmain endpcode ends end main总原理图: