可编程顺序控制器
- 格式:docx
- 大小:390.58 KB
- 文档页数:20
1 课程设计说明书 课程名称 微机原理与接口技术 设计题目 可编程顺序控制器 学生姓名 林苏云 学号 0208105104 专 业 通信工程 指导教师 王亚林
2012年 6 月 28 日 2
目录 一、系统以及需求分析 ................... 错误!未定义书签。 (一)顺序控制器主要指标 ............... 错误!未定义书签。 (二)顺序控制器主要功能 ............... 错误!未定义书签。 二、设计构思 .......................................... 1 三、电路设计说明、电路原理图 ........................... 1 四、软件流程图............................................3 五、程序清单及注释 .......................................5 (一)顺序控制器..........................................5 (二)可编程顺序控制器:....................................9 六、总结 .............................. 错误!未定义书签。 六、调试报告 .......................... 错误!未定义书签。 七、顺序控制器使用说明 ................................ 17 八、结语....................... .........................17 1
一、系统以及需求分析 (一)顺序控制器主要指标 1、采用AT89S51系列单片机控制 2、输出〈控制〉信号:6点 3、输入〈条件〉信号:8点 4、程序步容量:100步 5、程序步定时范围:0~99秒 (二)顺序控制器主要功能 1、启动:按“启动”键后,顺序控制器依序执行用户程序中的每一程序步,当被执行的程序步的条件(〈时间条件〉或〈输入条件〉)满足时,转至下一程序步执行,直至结束。 2、复位:按“复位”键后,顺序控制器终止执行用户程序,处于初始待命状态,显示〈待命提示符〉。 (三)可编程顺序控制器要求 1、按下模式键,进入编程状态。 2、从键盘输入步序号,数码管显示对应的用户程序内容。 3、按下保存键,可将键盘输入的信息进行保存。 4、按下next键,可对下一步程序进行修改。 5、按下last键,可对上一步程序进行修改。 6、再按下模式键,可进入运行状态。
二、设计构思
1、一个控制过程可以由若干程序步〈1~100〉构成,每一程序步的操作由一个控制字规定。一个用户程序即能够实现一定控制要求的控制字的序列。 2、每一程序步的功能由一个控制码规定,每一程序步都包含对控制信号的更新 3、每一个控制字由2个字节组成: 第一个字节包括2位控制码〈控制参数〉和6位输出控制信号〈输出参数〉; 第二个字节为给定的时间条件〈时间参数〉或给定的输入 条件〈输入参数〉。 4、控制码的规定 00—空操作 01—时间条件 10—输入条件 11—结束 5、给定参数的规定 时间参数—0~99秒 输入参数—8位 6、用户程序〈即控制字序列〉由用户预先输入程序存储区,控制器运行时,根据用户程序各控制字的规定条件〈条件为时间条件或输入条件〉顺序逐步推进控制过程。 1〉执行时间条件控制字时,按照控制字给定的输出参数更新控制信号,启动定时功能,以给定的时间参数开始倒计时,显示器显示当前步序号〈 0~99 〉和倒计时值〈 0~99 〉。若定时时间到则转入下一程序步。 2〉执行输入条件控制字时,按照控制字给定的输出参数更新输出控制信号,显示器显示当前步序号〈 0~99 〉和给定输入条件〈 0~FFH 〉,同时以给定的输入条件与实际的输入信号比较,若一致则转入下一程序步,否则等待。 3〉执行空操作控制字时,不进行任何操作而直接转入下一程序步。 4〉执行结束控制字时,终止控制进程,等待新的启动命令〈 即初始待命 〉 。 2
三、电路设计说明、电原理图 单片机选用AT89S51,它与8051系列单片机全兼容,但其内部带有4KB的FLASH ROM,设计时无需外接程序存储器,为设计和调试带来极大的方便。 根据设计要求,可编程顺序控制系统的硬件由8位单片机、6个数码管及其驱动电路、8个LED指示灯及其驱动电路、键盘(16个数字键、2个功能键)、电源电路等组成。
电路原理图: 3 (二)、程序流程图 四、软件流程图 粗框图 开始
初始化 调用显示 子程序
启动?
取用户令令
N 结束?Y Y N 空操作N 输出更新 时间条件Y 定时初始化化调用显示 子程序 定时到? Y Y N 输入一致?N Y N
调用显示 子程序
调整指针 4
定时初始化 开始
安装定时初始值 倒计时单元赋值 设置TMOD寄存器
启动定时 设置中断允许寄存器
结束
定时中断 开始
重装定时初值
倒计时单元内容减1 1S时间
调用拆送程序更新显缓 返回
N Y
保护现场
恢复现场
细框图 初始化 开始
步序单元清8255初始化 向显缓单元 送待命提示符
结束 取用户指令 开始 取用户指令第一字节 保存第一字节 取用户指令第二字节 保存第二字节 屏蔽第一字节低6位 结束 5 、 五、程序清单及注释 (一)顺序控制器 ORG 0000H ;复位入口 LJMP MAIN ORG 000BH ;定时器0中断服务子程序入口(进行时钟倒计时) LJMP IT0P ORG 0030H MAIN: MOV SP,#6FH ;总初始化。设定栈底指针 LCALL D30MS ;稍加延时(30mS),等待各芯片均上电复位结束 SETB IT0 ;设INT0中断信号输入下降沿有效 SETB EA ;开中断总允许 SETB EX0 ;开外部INT0中断允许 MOV A,#89H ;数码管显示与矩阵键盘接口8255A(U3)初始化 MOV DPTR,#0FEFFH ;8255A(U3) MOVX @DPTR,A ;A、B口输出驱动字段、字位,C口输入 MOV A,#8BH ;LED显示、开关、按键接口8255A(U5)初始化 MOV DPTR,#0FDFFH ;8255A(U5) MOVX @DPTR,A ; B口输入按键PB0-7,C口输入电平开关SW0-7 MOV 30H,#12H ;30H-37H为显示缓冲单元,初始置' D ' MOV 31H,#12H MOV 32H,#12H MOV 33H,#12H MOV 34H,#12H MOV 35H,#0DH MOV 36H,#12H 6
MOV 37H,#12H MOV 38H,#00H ;38H单元为倒计时200uS计数单元,清0 MOV 39H,#00H ;39H单元为10mS计数单元,清0 MOV TMOD,#02H ;初始化T0定时方式2,TM=12×1/11.0592MHZ=1.085 μS MOV TL0,#48H ;置T0计数初值00H-48H=184,184×TM≈200uS MOV TH0,#48H MOV R2,#00H LOOP: LCALL DISP ;调用显示更新子程序 (动态驱动4位数码显示器一遍) LJMP PB ;调用独立按键PB0-7的检测 START0: INC R2 START: CLR TR0 ;关闭T0定时工作 MOV A,R2 MOV DPTR,#USER MOVC A,@A+DPTR MOV 3BH,A INC R2 MOV A,R2 MOVC A,@A+DPTR MOV R4,A INC R2 ANL A,#0C0H JZ START0 ;当为空操作时,跳转到下一步 ORL A,#3FH CPL A JZ MAIN ;当为结束符时,跳转到主程序待命 CJNE A,#80H,INPUT MOV A,R4 ;将输出参数送往P1显示 ANL A,#3FH CPL A MOV P1,A MOV A,R2 MOVC A,@A+DPTR INC R2 MOV 3AH,A SETB ET0 ;开T0中断允许 SETB TR0 ;启动T0定时工作 TIME: LCALL CZ ;调用显示内容送显缓子程序(拆字子程序) LCALL DISP ;调用显示更新子程序 (动态驱动4位数码显示器一遍) MOV A,3AH CJNE A,#00H,TIME LJMP START INPUT: MOV A,R4 ;将输出参数送往P1显示 ANL A,#3FH CPL A