单片机模拟流水线控制设计演示教学.docx

上传人:b****7 文档编号:11390105 上传时间:2023-02-28 格式:DOCX 页数:11 大小:60.30KB
下载 相关 举报
单片机模拟流水线控制设计演示教学.docx_第1页
第1页 / 共11页
单片机模拟流水线控制设计演示教学.docx_第2页
第2页 / 共11页
单片机模拟流水线控制设计演示教学.docx_第3页
第3页 / 共11页
单片机模拟流水线控制设计演示教学.docx_第4页
第4页 / 共11页
单片机模拟流水线控制设计演示教学.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

单片机模拟流水线控制设计演示教学.docx

《单片机模拟流水线控制设计演示教学.docx》由会员分享,可在线阅读,更多相关《单片机模拟流水线控制设计演示教学.docx(11页珍藏版)》请在冰豆网上搜索。

单片机模拟流水线控制设计演示教学.docx

单片机模拟流水线控制设计演示教学

 

单片机模拟流水线控制设计

 

第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章.程序流程图

 

 

N

 

Y

 

第3章实验接线图

图3.1实验原理接线图

 

第4章.程序清单及说明

ORG0000H;给定程序的首地址

LJMPMAIN;跳转到主程序

ORG0003H;外部中断源INT0首地址

LJMPZD;跳转到中断程序

ORG0100H

MAIN:

SETBEA;打开总中断允许

SETBEX0;打开外部中断源INT0允许

CLRP1.2;工作运行指示灯(绿灯)?

MOVA,#80H

MOVDPTR,#7FFFH

MOVX@DPTR,A;对8255的初始化

MOVA,#80H

MOVDPTR,#0FFFDH

MOVX@DPTR,A;运行第一道工序

LCALLYS2S;第一道工序工作2秒(子程序调用)

MOVA,#40H

MOVDPTR,#0FFFDH

MOVX@DPTR,A;运行第二道工序并且

;停止第一道工序

LCALLYS3S;第二道工序工作3秒(子程序调用)

MOVA,#20H

MOVDPTR,#0FFFDH

MOVX@DPTR,A;运行第三道工序并且

;停止第二道工序

LCALLYS2S

LCALLYS2S;第三道工序工作4秒(子程序调用)

MOVA,#10H

MOVDPTR,#0FFFDH

SJMPMAIN;返回到主程序

YS2S:

MOV12H,#08H

L8:

MOV11H,#0FAH

L7:

MOV10H,#64H

L6:

NOP

NOP

NOP

DJNZ10H,L6;共延时1m秒

DJNZ11H,L7;共延时250m秒

DJNZ12H,L8;共延时2秒

RET;延时2秒子程序返回

YS3S:

MOVR6,#0CH

L5:

MOVR5,#0FAH

L4:

MOVR4,#64H

L3:

NOP

NOP

NOP

DJNZR4,L3;共延时1m秒

DJNZR5,L4;共延时250m秒

DJNZR6,L5;共延时3秒

RET;延时3秒子程序返回

YS0S:

MOV13H,#64H

LP1:

MOV14H,#64H

LP0:

NOP

NOP

NOP

DJNZ14H,LP0;共延时1m秒

DJNZ13H,LP1;共延时100m秒即0.1秒

RET;延时0.1秒子程序返回

ZD:

SETBP1.2;运行指示灯(绿灯)灭

CLRP1.5;中断停止灯(绿灯)闪

LCALLYS0S;中断停止灯亮0.1秒

SETBP1.5;中断停止灯(绿灯)亮

LCALLYS0S;中断停止灯灭0.1秒

JNBP3.2,ZD;中断识别(手动开关控制)

CLRP1.2;运行指示灯(绿灯)亮

RETI;中断返回

END

 

第5章指令说明

1.伪指令:

在汇编语言源程序中用MCS-51指令助记符编写的程序,都回一一应地产生目标程序。

但另外还有一类指令,并不产生目标程序,不影响程序的执行,仅仅产生供汇编用的某些命令,以便在汇编是执行一些特殊的操作,通常将这类指令称为伪指令。

(1).设置起始地址ORG:

一般形式为:

ORGnn

ORG其中是伪指令的操作码助记符,操作数nn是16位二进制数。

该条伪指令给出汇编语言源程序的其实地址值。

因此,ORG伪指令总是出现在每段源程序或数据的开始。

特别注意,在编写源程序时,要求ORG定义空间地址必须由小到大,且不能重叠。

否则汇编拒绝执行,并给出错误信息。

若在源程序开始不用ORG命令,则汇编将从0000H单元开始。

(2)结束汇编END:

它是一个汇编结束标志,它告诉汇编该程序段已结束。

因此,在一个程序设计中必须要有END语句。

且END语句必须放在整个程序(包括伪指令)的后面。

若END语句出现在代码块的中间,那么汇编程序不汇编END后面的语句。

2.判直接寻址位转移指令:

JNBbit,rel;若(bit)=0,则(PC)→(PC)+3+rel

;若(bit)=1,则(PC)→(PC)+3

上述指令为检测寻址位。

转移分为两种情况,一种为位变量1;另一种为位变量0,则程序转向目标地址去执行。

否则地址为(PC)←(PC)+3与第三字节所给常符号的相对偏移量之和。

测试位变量时,不影响任何标志。

前条指令不影响原变量植,但指令在检测到后自动完成清0。

3.长转移指令

指令格式:

LJMPaddr16;(PC)←addr0—15

该指令又称为无条件转移指令,指令提供16位转移地址,因此,执行这条指令可以使程序从当前地址转移到64K程序存储器地址空间的任何单元,即0000H—FFFFH。

指令的结果是将16位目的地址送入程序计数器PC。

该指令位三字节指令:

操作码、16位地址的高8位、16位地址的低8位。

4.短调用子程序指令:

ACALLDELAY

这条指令是2K字节范围内的调用子程序指令。

执行时先把PC加2获得下一条指令的地址,栈指针SP加1,PC7-0进栈保护,SP再加1,使PC15-8进栈保护。

最后把PC的高5位和adrll连续获得子程序入口地址送入PC,转移到执行子程序.

5.子程序返回指令:

RET(PC15-8)←((SP))

(SP)←(SP)-1

PC(7-0)←((SP))

(SP)←(SP)-1

这条指令的功能是从堆栈中退出PC的高位和低位字节,把栈指针减2,并以新的PC值开始执行程序,不影响任何标志。

6.位变量修改指令:

(1).清0指令CLRbit(bit)←0

(2).置1指令SETB

该两条指令的功能是分别是将操作数指出的位清0,置1。

不影响标志位。

7.中断返回指令

指令格式:

RETI

该指令表示中断程序结束需要返回主程序,执行过程类似RET

8.循环减1转移指令

指令格式:

DJNZ<字节>,rel

这是一条减1并与0比较指令,程序每执行一次指令,就把第一操作数字节变量减1,结果送回到第一操作数中,并根据字节变量是否为0,决定程序走向:

不为0则转移;为0则顺序执行。

如果字节变量原为00,则执行该指令后,内容变为0FFH,不影响标志位。

 

总结

一周的单片机实习在紧张的忙碌与学习中结束了。

我学到了很多知识,也深刻的了解到实践不但完善了我在课堂上所学的,同时也增长了我的见识,开拓了我的视野使我对单片机知识的了解更加深刻。

这也将为我以后的学习鉴定了坚实的基础。

在这一周,通过编译程序设计,掌握了什么是编译单片机程序,编译程序工作的基本过程及其各阶段的基本任务,熟悉了编译程序总流程图,懂得了编译程序的生成过程、构造工具及其相关的技术和应用,对课本上的知识有了更深的理解。

这次我的单片机实习的题目是电子时钟,当时真是让我无从下手,不知该怎样才能实现这样的功能,怎样编写这个程序。

但是根据老师指导下安排我们第一天下午去图书馆查阅资料。

但是最后,还是没有找到我所需要的,只能找一些相关的资料和其中的一个子程序或一个模块。

接下来的两天我们小组一直都在编写程序,功夫不负有心人,我们终于编写出了时钟程序,之后去机房调试程序,结果出现多处错误的情况,但是我们没有灰心,而是共同把错误一一改正过来了。

最后运行可结果还不尽人意,运行显示时虽然进行计数。

但是扫描的速度太快,也不合适,但经过我们认真查找原因最后终于调试成功了。

通过这次课程设计对我们学习单片机有很大的帮助,能够让我们更好的掌握单片机知识,让我们对它产生兴趣,让学习不再是一件乏味的事,让我们很好的把书本上的知识和实际联系起来,并且设计能够让我们更进一步的掌握知识和灵活的运用知识。

现在我可以用多种方法实现同一个功能,并能扩展更加丰富的内容而且言简意赅。

所以,我在此非常感谢老师能够为我们提供这次实习的机会,我会把握好每一次学习的机会,让自己所学到的知识得已升华。

我希望以后学校能够多次的为我们提供这样的机会,让我们更好的把理论和实际结合起来,以后成为一名有用的人,为电力事业,为人民,为国家做一份贡献。

再设计过程中我还遇到了很多麻烦的问题,在我们组员的共同努力下都没有解决,但是在曲乐声老师与王德君老师的耐心与孜孜不倦的教导与讲解下,终于被顺利解决,在这里我想各位指导老师表示衷心的感谢,你们辛苦了。

通过这次实习,让我明白了很多不足,在今后的学习生活中我会更加的努力学习,取得更加优异的成绩。

 

参考文献

[1]钱显毅.MCS-51单片机原理及应用.南京:

东南大学出版社,2010

[2]万福君.MCS-51单片机原理、系统设计与应用.北京:

清华大学出版社,2010

[3]公茂法.MCS-51\52单片机原理与实践.北京:

北京航空航天大学出版社,2009

[4]申忠如.MCS51单片机原理及系统设计.陕西:

西安交通大学出版,2008

[4]梁炳东单片机原理与应用北京:

人民邮电出版社,2009

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1