实验三-单片机工业顺序控制

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三单片机工业顺序控制(设计型)

一、实验目的与要求

1.学习和掌握单片机工业顺序控制程序的应用编程;

2.熟悉和掌握单片机中断功能的使用。

二、实验仪器

1、DJ-598KC单片机开发系统 1台

2、仿真器(EASYPROBE) 1只

3、PC 机 1台

三、实验容 (2学时)

在工业控制中,象冲压、注塑、轻纺、制瓶等生产过程,都是一些连续生产过程,按某种顺序有规律地完成预定的动作,对这类连续生产过程的控制称顺序控制,象注塑机工艺过程大致按“合模→注射→延时→开模→产伸→产退”顺序动作,用单片机最易实现。

设由单片机P1.0~1.6控制注塑机的七道工序,模拟控制七只发光二极管的点亮,低电平有效,设定每道工序时间转换为延时时间,P3.4为开工启动开关,高电平启动。P3.3为外部故障输入模拟开关,低电平报警,P1.7为报警声音输出,设定前6道工序只有一位输出,第七道工序三位有输出。

(1)实验电路及接线图

(2)实验程序框图

四、实验步骤:

按图接好连线。执行程序,把K1接到高电平,观察发光二极管点亮情况,确定工序执行是否正常,然后把K2置为低电平,看是否有声音报警,恢复中断1.报警停,又从刚才报警时一道程序执行下去。可用单步、单步跟踪,非全速断点、全速断点,连续执行功能调试软件,直到符合自己程序设计要求为止。

五、实验参考程序

①汇编代码程序:(E:\DJ51\598KASM\HW04.ASM)

ORG 0000H

LJMP PO10

ORG 0013H

LJMP PO16

ORG 0190H

PO10:MOV P1,#7FH

ORL P3,#00H

PO11:JNB P3.4,PO11 ;开工吗?

ORL IE,#84H

ORL IP,#04H

MOV PSW,#00H ;初始化

MOV SP,#53H

PO12: M OV P1,#7EH ;第一道工序

ACALL PO1B

MOV P1,#7DH ;第二道工序

ACALL PO1B

MOV P1,#7BH ;第三道工序

ACALL PO1B

MOV P1,#77H ;第四道工序

ACALL PO1B

MOV P1,#6FH ;第五道工序

ACALL PO1B

MOV P1,#5FH ;第六道工序 ACALL PO1B

MOV P1,#0FH ;第七道工序

ACALL PO1B

SJMP PO12

PO16:MOV B,R2 ;保护现场

PO17:MOV P1,#7FH ;关输出

MOV 20H,#0A0H ;振荡次数

PO18: S ETB P1.7 ;振荡

ACALL PO1A ;延时

CLR P1.7 ;停振

ACALL PO1A ;延时

DJNZ 20H,PO18 ;不为0转

CLR P1.7

ACALL PO1A ;停振

JNB P3.3,PO17 ;故障消除吗?

MOV R2,B ;恢复现场

RETI

PO19:MOV R2,#10H

ACALL DELY ;延时1

RET

PO1A:MOV R2,#06H

ACALL DELY ;延时2

RET

PO1B: M OV R2,#30H

ACALL DELY ;延时3

RET

DELY: P USH 02H

DEL2: P USH 02H

DEL3: P USH 02H ;延时

DEL4: D JNZ R2,DEL4

POP 02H

DJNZ R2,DEL3

POP 02H

DJNZ R2,DEL2

POP 02H

DJNZ R2,DELY

RET

END

②C代码程序:(E:\DJ51\51C\HW04.C)

#include

sbit P1_7=P1^7;

sbit P3_3=P3^3;

sbit P3_4=P3^4;

void delay(unsigned int i)

{

unsigned int j,k;

for(k=0;k

for(j=0;j<100;j++);

}

void int1_int(void) interrupt 2 {

EX1=0;

while(P3_3==0)

{

P1_7=1;

delay(1);

P1_7=0;

delay(1);

}

EX1=1;

}

void main(void)

{

EA=1;

EX1=1;

PX1=1;

P1=0x7f;

while(1)

{

while(P3_4==1)

{

1) {

P1=0x7e;

delay(500);

P1=0x7d;

delay(500);

P1=0x7b;

delay(500);

P1=0x77;

delay(500);

P1=0x6f;

delay(500);

P1=0x5f;

delay(500);

P1=0x0f;

delay(500);

相关文档
最新文档