基于AT89S51单片机的工业顺序控制的综合设计.docx
《基于AT89S51单片机的工业顺序控制的综合设计.docx》由会员分享,可在线阅读,更多相关《基于AT89S51单片机的工业顺序控制的综合设计.docx(12页珍藏版)》请在冰豆网上搜索。
基于AT89S51单片机的工业顺序控制的综合设计
基于AT89S51单片机的工业顺序控制的综合设计
摘要:
中断在工业顺序控制中的应用是非常基础而且频繁的。
本次设计是中断在工业顺序控制中的综合设计,在设计过程中通过中断来实现二极管循环亮灯以及故障报警等功能。
通过汇编语言,仿真模拟软件等多种软件来完成的。
关键词:
中断;工业顺序控制;汇编;仿真
Abstract:
Thisdesignisinterruptedintheindustrialapplicationofsequencecontrol,cycleinthedesignprocessbyinterruptdiodelightsandfaultalarmandotherfunctions.Throughtheassemblylanguage,simulationsoftwareandothersoftwaretocomplete.Thedesignresultsareinconformitywithrequirements,overallisquitesuccessful。
Keywords:
interrupt;Industrialsequencecontrol;Assembly;Thesimulation
1引言
中断(Interrupt)是一种被广泛使用的计算机技术。
中断技术实质上是一种资源共享技术,是解决资源竞争的有效方法,最终实现多项任务共享一个资源。
而中断系统又叫作中断管理系统,其功能是使处理机对外界异步事件具有处理能力。
在实际的工业控制中对中断的实时性要求是比较高的,也应用得很普遍。
怎么样实时响应中断,并在中断服务程序中及时完成相应任务是本次设计的重点。
本次设计是中断在工业顺序控制中的应用,主要目的是为了让我们了解中断在生活中的应用并且让我们对知识的学习和巩固有进一步的加深。
这次课程设计是通过89S51位单片机实现,用单片机的P1—P7做输出口接八只发光二极管,用两个外部中断控制运行和模拟故障,编写程序,使发光二极管循环点亮模拟顺序控制,有故障时使P7发光点亮报警。
同时需要面对两方面的问题:
一个是软件的设计,也就是使发光二极管循环亮灯和故障报警控制功能的程序编辑;另一个是硬件的设计,。
首先我需要通过protel将设计的实物的电路图画出来,再根据电路图连接实物电路。
在软件编辑技术方面,需要灵活的掌握汇编语言并合理有效的利用汇编语言编程实现我们预期的软件功能;
2系统总体设计
2.1涉及的基础知识
中断:
在单片机系统中,中断技术主要用于实时监测与控制,也就是要求单片机能及时地响应中断请求源提出的服务请求,并作出快速响应和及时处理。
这些工作就是由单片机内的中断系统来实现的。
当中断请求源发出中断请求时,如果中断请求被允许的话,单片机暂时中止当前正在执行的主程序,转到中断服务处理程序处理中断服务请求。
中断服务处理程序处理完中断请求后,再回到原来被中止的程序处继续执行被中断的主程序。
如果单片机没有中断系统,单片机的大量时间可能会浪费在查询是否有服务请求发生的定时查询操作上,即否认是否有服务请求发生,都必须去查询。
采用中断技术完全消除了单片机在查询方式中的等待现象,大大提高了单片机的工作效率和实时性。
由于中断工作方式的优点极为明显,所以,单片机的片内硬件中都带有中断系统。
AT89S51单片机指令系统:
规定89S51单片机内操作的语句或命令。
指令是CPU按人们的意图来完成某种操作的命令,以英文名称或缩写形式作为助词符。
用助记符、符号地址、标号等表示的书写程序的语言,即汇编语言指令。
2.2解决问题的思路
单片机可以实现时序控制、时间控制等,用单片机可以构成形式多样的控制系统、数据采集系统,因此选择单片机作为控制芯片。
按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。
89S51单片机是本次课程设计运用的主要原件。
中断设计是用一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个系统。
为了实现在编程中使用循环移位法来实现亮灯的程序,通过增加亮灯程序中循环的次数来保证亮灯的时间不是太快以至于难以观察,所以选择通过调用中断来解决出现故障时的亮灯方式以及鸣喇叭的控制等。
2.2.1设计原理图
图2-1设计原理
2.2.2电路板PCB图
图2-2电路板PCB图
2.3总体方案
89S51的P1.0-P1.6控制控制发光二极管的闪烁,为低电平有效,设定每道工序时间转换为延时,P3、P4为开工启动开关,高电平启动。
P3.3为外部故障输入模拟开关,低电平报警,P1.7为报警声音输出,低电平有效。
3硬件设计
3.189S51单片机引脚图及引脚功能介绍
本次设计的中断功能就是基于89S51单片机的基础上实现的,首先我们了解一下该单片机的基本信息:
首先,AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,AT89S51在众多嵌入式控制应用系统中得到广泛应用。
并且它具有完整的输入输出、控制端口、以及内部程序存储空间。
与我们通常意义上的微机原理类似,可以通过外接A/D,D/A转换电路及运放芯片实现对传感器传送信息的采集,且能够提供以点阵或LCD液晶及外接按键实现人机交互,能对内部众多I/O端口连接步进电机对外围设备进行精确操控,具有强大的工控能力。
我们先来简单认识一下,它的引脚如图2-1所示:
图3-189S51引脚示意图
单片机89S51的40个引脚大致可分为以下几类:
1电源及时钟引脚——Vcc、Vss;XTAL1、XTAL2.控制和I/O引脚。
2控制引脚——
、ALE/
、
/Vpp、RST(即RESET)。
3I/O口引脚——P0、P1、P2、P3,为4个8位I/O口外部引脚。
接着我们了重点了解一下AT89S51单片机的I/O口:
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89S51的一些特殊功能口,如下所示:
口管脚备选功能P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2
(外部中断0)
P3.3
(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6
(外部数据存储器写选通)
P3.7
(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/
:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次
有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/VPP:
当
保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,
将内部锁定为RESET;当
端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
在了解这些端口的功能后,我们就可以根据这些来编写与之相应的程序了。
3.2软件设计
本次课程设计的系统由硬件和软件组成,在硬件原理图搭建完成上电之后,我们还不能看到二极管循环亮灯的现象,我们还需要编写程序控制单片机管脚电平的高低变化,来实现发光二极管的一亮一灭。
软件编程是本次课程设计的重点和难点。
我编程实现二极管亮灯的方法是循环移位法,循环移位法是采用循环程序结构进行编程。
我们在程序一开始就给P1口送一个数,这个数本身就让P1.0先低,其他位为高,然后延时一段时间,再让这个数据向高位移动,然后再输出至P1口,这样就实现亮灯循环的效果了。
另外,就是报警程序中对于蜂鸣器工作时高低电平的控制以及第七个信号灯亮灯的控制。
由于蜂鸣器的一端接电源,则其运作时是需要低电平,而二极管运作也是需要一个低电平,我们只需要在启动报警程序的时候给其赋予低电平即可正常工作。
其主程序的流程图如图3-2,中断服务子程序的流程图如图3-3。
3-2主程序流程图图3-3中断服务子程序
4运行与测试
使用软件编写程序,使用KeiluVision软件将生成的Uv2项目导入到软件中,并按电路图连接好线路,接线图如图4-1,确认无误后进行调试。
图4-1电路接线图
运行开始时发光二极管无变化,需要波动开关s1,使它置于高电位这时会发现发光二极管会自右往左的依次闪烁,并且循环,如图4-2、图4-3所示。
图4-2循环示意图(部分)图4-3循环示意图(部分)
此时按下开关s2,发光二极管的亮灯情况会停止在由P1.6端口输出地第七个灯上,与此同时另一端的蜂鸣器会发出报警信息,如图4-4所示。
当再次点击s2时示意故障排除后二极管会像开始的时候一样循环亮灯。
图4-4中断示意图
至此,整个设计的运行环节顺利完成,达到预期目的。
总结
由于本次课程设计含括了软件和硬件知识,并让我切实体会到了中断在实际中的应用,所以在完成课程设计的同时也让我们了解到知识在生活中的重要性,还间接地反映了我们在软硬件设计和制作方面的不足。
在这一段时间的设计过程中我从对原理图的设计、程序的编译到对电路板各元器件的连接和程序的运行等工作,让我充实的体会到了课程设计的乐趣。
一些原理虽然看似简单,但做起来却是一个细致的工作。
另外,通过本次课程设计,我对Protel99SE软件的认识达到了一个新的层次,当然,在课程设计的过程中我也遇到了诸多的困难,一些是经过自己的摸索得到解决,一些是在同学和老师的帮助下理解运用,总之这是个不断学习,不断尝试,不断进步的过程,也是我们发挥我们想象力和创造力的过程,在这个过程中,不断地磨练自己的耐心,耐性,无论是理论还是现实都让我获益匪浅。
通过这一次的设计让我深深的了解了我在软件、硬件方面的许多不足之处,对于今后的学习和工作都有了一次很好的借鉴经验。
参考文献
[1]李广弟,朱月秀,冷祖祁.单片机基础.第3版.北京:
北京航空航天大学出版社,2007.
[2]蔡美琴,张为民.MCS-51系列单片机系统及其应用.第2版.北京:
高等教育出版社,2004.
[3]张培仁.基于C语言编程MCS-51单片机原理与应用[M].北京:
清华大学出版社,2003.
[4]张毅刚,彭喜元彭宇.单片机原理及应用.第二版.北京:
高等教育出版社,2010.
[5]赵娜,赵刚,于珍珠等.基于51单片机的温度测量系统[J].微计算机信息,2007.
[6]周润景,张丽娜.基于PROTEUS的电路及单片机系统设计与仿真[M].北京:
航空航天大学出版社,2006.
附件
代码编写
ORG0000H
SJMPMAIN
ORG0013H
LJMPINTO
MAIN:
MOVP1,#OOH
ORLP3,#00H
P001:
JNBP3.4,P011;开工吗?
ORLIE,#84H
ORLIP,#04H
MOVPSW,#OOH;初始化
MOVSP,#53H
P012:
MOVP1,#01H;第一道工序
ACALLP01BH
MOVP1,#02H;第二道工序
ACALLP01BH
MOVP1,#04H;第三道工序
ACALLP01BH
MOVP1,#08H;第四道工序
ACALLP01BH
MOVP1,#10H;第五道工序
ACALLP01BH
MOVP1,#20H;第六道工序
ACALLP01BH
MOVP1,#40H;第七道工序
ACALLP01BH
SJMPP012
INTO:
MOVB,R2;保护现场
P017:
MOVP1,#00H;关输出
MOV20H,#0A0H;振荡次数
P018:
SETBP1.7;振荡
ACALLP01A;延时
CLRP1.7;停止
ACALLP01A;延时
DJNZ20H,P018;不为0转
CLRP1.7
ACALLP01A
JNBP3.3,P017;故障消除吗?
MOVR2,B;恢复现场
RETI
P019:
MOVR2,#10H;延时1
ACALLDELY
RET
P01A:
MOVR2,#06H;延时2
ACALLDELY
RET
P01BH:
MOVRE,#30H;延时3
ACALLDELY
RET
DELY:
PUSH02H;延时子程序
DEL2:
PUSH02H
DEL3:
PUSH02H
DEL4:
DJNZR2,DEL4
POP02H
DJNZR2,DEL3
POP02H
DJNZR2,DEL2
POP02H
DJNZR2,DELY
RET
END