实验三 单片机工业顺序控制
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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);