. . .
第1章.设计思路
按照设计要求,采用8255芯片来控制发光二极管的循环工作,8255在单片机应用系统中被广泛用作可编程外部I/O扩展接口。
首先,采用8031与8255的连接,有利于数据的处理与远距离的通讯。此项程序用8255A作为控制口电路,由PB口提供控制码,所以在8255的B口输出。同时,利用发光二极管代替流水线中的各个工序,设计要求利用3个发光二极管来代替。其中用PB0控制灯L1,PB1控制灯L2,PB2控制灯L3,PB3控制灯L4,PB4控制灯L5 ,分别用3根导线一一对应的连接他们。工序按顺序进行,也就是说3个二极管的亮灭也是顺序进行,工序轮流循环,控制时间间隔 2秒3秒4秒,所以在控制两个相邻的二极管的程序中加上准确的延时程序,为了实现工业流水线的循环执行从而在主程序后加上循环语句,根据设计的要求,3个发光二极管的亮灭不但有时间间隔而且有强行中断,所以添加中断程序以实现中断,同时在设计基本要求的基础上添加了发挥部分使得工序正常运行时绿色指示灯亮,工序中断时红色报警灯闪烁报警。
另外设置另一排发光二级管的灯L5 为工作运行指示灯用P1.2 控制,当程序开始正常运行时P1.2输出为0,代表五道工序的三盏小灯开始依次亮灭,所以工作运行指示灯在工作过程中(非中断)一直亮,直至中断返回。还有设置灯L8为中断停止灯用P1.5控制,当程序中断后,P1.5输出0亮0.1秒输出1灭0.1秒,这样会一直循环下去(中断停止灯闪烁),直至中断返回P1.5输出1一直亮着。至关重要的外部中断源INT0(P3.2)接一手动开关,可以用来控制执行中断和退出中断,当执行工序过程中P3.2一直为1(不会执行中断),为0时开始执行中断里的命令(中断时,p1.5对应的灯一直处于闪烁状态)直至手动开关退出中断(中断停止闪烁改为持续亮的状态,工作运行指示灯亮)。综上所述我们共用到一个外部中断源INT0,两个普通A/O接口(P1.2和P1.5),三个延时子程序,一个开关,若干根导线。以上为我本次设计的基本设计思路。
这次单片机课程设计,我组的题目为“8255模拟工业流水线控制(软件延时)”,经过大家几天的努力在老师的指导下终于按要求完成设计题目
. . . .
. . .
第2章. 程序流程图
开始 工序1延时 工序2延时
工序3延时
. . 中断 保护现场 报警 N 故障消除了吗? Y 恢复现场 返回 . .
. . .
第3章 实验接线图
图3.1 实验原理接线图
. . . .
. . .
第4章.程序清单及说明
ORG 0000H ; 给定程序的首地址
LJMP MAIN ; 跳转到主程序
ORG 0003H ; 外部中断源INT0首地址 LJMP ZD ; 跳转到中断程序 ORG 0100H
MAIN:SETB EA ; 打开总中断允许
SETB EX0 ; 打开外部中断源INT0允许 CLR P1.2 ; 工作运行指示灯(绿灯)? MOV A,#80H MOV DPTR,#7FFFH
MOVX DPTR,A ; 对8255的初始化 MOV A,#80H
MOV DPTR,#0FFFDH
MOVX DPTR,A ; 运行第一道工序
LCALL YS2S ; 第一道工序工作2秒(子程序调用) MOV A,#40H
MOV DPTR,#0FFFDH
MOVX DPTR,A ; 运行第二道工序并且 ; 停止第一道工序
LCALL YS3S ; 第二道工序工作3秒(子程序调用) MOV A,#20H
MOV DPTR,#0FFFDH
MOVX DPTR,A ; 运行第三道工序并且 ; 停止第二道工序 LCALL YS2S
LCALL YS2S ; 第三道工序工作4秒(子程序调用) MOV A,#10H
MOV DPTR,#0FFFDH
SJMP MAIN ; 返回到主程序 YS2S :MOV 12H,#08H L8 : MOV 11H,#0FAH L7 : MOV 10H,#64H L6 : NOP NOP NOP
DJNZ 10H,L6 ; 共延时1m秒 DJNZ 11H,L7 ; 共延时250m秒
. . . .
. . .
DJNZ 12H,L8 ;共延时2秒
RET ; 延时2秒子程序返回 YS3S :MOV R6,#0CH L5 : MOV R5,#0FAH L4 : MOV R4,#64H L3 : NOP NOP NOP
DJNZ R4,L3 ; DJNZ R5,L4 ; DJNZ R6,L5 ; RET ;YS0S:MOV 13H,#64H LP1 :MOV 14H,#64H LP0 :NOP NOP NOP
DJNZ 14H,LP0 ; DJNZ 13H,LP1 ; RET ; ZD: SETB P1.2 ; CLR P1.5 ; LCALL YS0S ; SETB P1.5 ; LCALL YS0S ; JNB P3.2,ZD ; CLR P1.2 ; RETI ; END
. . 共延时1m秒 共延时250m秒 共延时3秒
延时3秒子程序返回 共延时1m秒
共延时100m秒即0.1秒 延时0.1秒子程序返回 运行指示灯(绿灯)灭 中断停止灯(绿灯)闪 中断停止灯亮0.1秒
中断停止灯(绿灯)亮 中断停止灯灭0.1秒
中断识别(手动开关控制) 运行指示灯(绿灯)亮 中断返回 . .