收藏 分销(赏)

单片机课程设计-可编程序控制器.doc

上传人:pc****0 文档编号:9010412 上传时间:2025-03-11 格式:DOC 页数:21 大小:455.50KB
下载 相关 举报
单片机课程设计-可编程序控制器.doc_第1页
第1页 / 共21页
单片机课程设计-可编程序控制器.doc_第2页
第2页 / 共21页
点击查看更多>>
资源描述
设计题目: 可编程序控制器 一,顺序控制器主要功能 1, 19260屏显示画面 待机界面 主菜单界 杭州500中文控制器 1 程序编程 5 技术支持 设定计数 2000米 2 系统设置 执行数值 1080米 3 手动脉冲 正在运行程序 34步 4 手动I/O 编程单界 脉冲手动输出 000 输出指令 开Y0 脉冲 X:-0000 Y:+0000 001 延迟指令 00230 Z:-0000 002 设定计数 00150 速度F X:038 Y:035 003 输出指令 关Y0 Z:028 输入输出手动I/O 技术支持 X0o,X1o,X2o,X3o,X4o,X5o, 电话:15157160881 X6o,X7o,X8o,X9o,X10o,X11o, 联系人:薛工 Y0o,Y1o,Y2o,Y3o,Y4o,Y5o, 地址:杭州滨江高新开发区 Y6o,Y7o,Y8o,Y9o,Y10o,Y11o, QQ: 2.程序名称 电机方向设定X,Y,Z,:+正方向,-反方向。 电机运行速度F: 000三位。 2.1. 1、启动:按“启动”键后,顺序控制器依序执行用户程序中的每一程序步,当被执行的程序步的条件(〈时间条件〉或〈输入条件〉)满足时,转至下一程序步执行,直至结束。 2、复位:按“复位”键后,顺序控制器终止执行用户程序,处于初始待命状态,显示〈待命提示符〉。 2.1.2可编程顺序控制器要求 1、按下模式键,进入编程状态。 2、从键盘输入步序号,数码管显示对应的用户程序内容。 3、按下保存键,可将键盘输入的信息进行保存。 4、按下next键,可对下一步程序进行修改。 5、按下last键,可对上一步程序进行修改。 6、再按下模式键,可进入运行状态。 2.2控制器主要指标 (1)采用AT89S51系列单片机控制 (2)输出〈控制〉信号:12点 (3)输入〈条件〉信号:12点 (4)程序步容量:100步 (5)程序步定时范围:0~99秒 2.3控制码的规定 00—空操作 01—时间条件 10—输入条件 11—结束 2.4给定参数的规定 时间参数—0~99秒 输入参数—8位 3.设计构思 3.1用户程序介绍 用户程序〈即控制字序列〉由用户预先输入程序存储区,控制器运行时,根据用户程序各控制字的规定条件〈条件为时间条件或输入条件〉顺序逐步推进控制过程。 1〉执行时间条件控制字时,按照控制字给定的输出参数更新控制信号,启动定时功能,以给定的时间参数开始倒计时,显示器显示当前步序号〈 0~99 〉和倒计时值〈 0~99 〉。 若定时时间到则转入下一程序步。 2〉执行输入条件控制字时,按照控制字给定的输出参数更新输出控制信号,显示器显示当前步序号〈 0~99 〉和给定输入条件〈 0~FFH 〉,同时以给定的输入条件与实际的输入信号比较,若一致则转入下一程序步,否则等待。 3〉执行空操作控制字时,不进行任何操作而直接转入下一程序步。 4〉执行结束控制字时,终止控制进程,等待新的启动命令〈 即初始待命 〉 。 3 4电路设计说明、电原理图 单片机选用AT89S51,它与8051系列单片机全兼容,但其内部带有4KB的FLASH ROM,设计时无需外接程序存储器,为设计和调试带来极大的方便。 5程序设计构思说明:程序粗框图、细框图 程序流程图 粗框图 开始 初始化 调用显示 子程序 启动动? 取用户指令 N 结束? Y Y N 空操作作? N 输出更新 时间条件件? Y 定时初始化 调用显示 子程序 定时到? Y Y N 输入一致致? N Y N 调用显示 子程序 调整指针 定时中断 重装定时初值 倒计时单元 内容减1 1S时间到? 更新显缓 返回 N Y 细框图 初始化 开始 步序单元清0 8255初始化 向显缓单元 送待命提示符 结束 取用户指令 开始 取用户指令第一字节 保存第一字节 取用户指令第二字节 保存第二字节 屏蔽第一字节低6位 结束 定时初始化 开始 安装定时初始值 倒计时单元赋值 设置TMOD寄存器 启动定时 设置中断允许寄存器 结束 定时中断 开始 重装定时初值 倒计时单元内容减1 1S时间到? 调用拆送程序更新显缓 返回 N Y 保护现场 恢复现场 拆送程序 开始 取条件参数 高4位、低4位分离 分别送相应显缓单元 取步序单元内容 结束 高4位、低4位分离 分别送相应显缓单元 6可编程序控制器使用说明 PLC的基本构成   从结构上分,PLC分为固定式和组合式(模块式)两种。固定式PLC包括CPU板、I/O板、显示面板、内存块、电源等,这些元素组合成一个不可拆卸的整体。模块式PLC包括CPU模块、I/O模块、内存、电源模块、底板或机架,这些模块可以按照一定规则组合配置。 PLC实质是一种专用于工业控制的计算机,其硬件结构基本上与微型计算机相同,基本构成为: 电源 PLC的电源用于为PLC各模块的集成电路提供工作电源,在整个系统中起着十分重要的作用。如果没有一个良好的、可靠的电源系统是无法正常工作的,因此PLC的制造商对电源的设计和制造也十分重视。一般交流电压波动在+10%(+15%)范围内,可以不采取其它措施而将PLC直接连接到交流电网上去。同时,有的还为输入电路提供24V的工作电源。电源输入类型有:交流电源(220VAC或110VAC),直流电源(常用的为24VDC)。 中央处理单元(CPU) 中央处理单元(CPU)是PLC的控制中枢,是PLC的核心起神经中枢的作用,每套PLC至少有一个CPU。它按照PLC系统程序赋予的功能接收并存储从编程器键入的用户程序和数据;检查电源、存储器、I/O以及警戒定时器的状态,并能诊断用户程序中的语法错误。当PLC投入运行时,首先它以扫描的方式接收现场各输入装置的状态和数据,并分别存入I/O映象区,然后从用户程序存储器中逐条读取用户程序,经过命令解释后按指令的规定执行逻辑或算数运算的结果送入I/O映象区或数据寄存器内。等所有的用户程序执行完毕之后,最后将I/O映象区的各输出状态或输出寄存器内的数据传送到相应的输出装置,如此循环运行,直到停止运行。   为了进一步提高PLC的可靠性,近年来对大型PLC还采用双CPU构成冗余系统,或采用三CPU的表决式系统。这样,即使某个CPU出现故障,整个系统仍能正常运行。 CPU速度和内存容量是PLC的重要参数,它们决定着PLC的工作速度,IO数量及软件容量等,因此限制着控制规模。 存储器 存放系统软件的存储器称为系统程序存储器。 存放应用软件的存储器称为用户程序存储器。 输入输出接口电路(I/O模块) PLC与电气回路的接口,是通过输入输出部分(I/O)完成的。I/O模块集成了PLC的I/O电路,其输入暂存器反映输入信号状态,输出点反映输出锁存器状态。输入模块将电信号变换成数字信号进入PLC系统,输出模块相反。I/O分为开关量输入(DI),开关量输出(DO),模拟量输入(AI),模拟量输出(AO)等模块。 底板或机架 大多数模块式PLC使用底板或机架,其作用是:电气上,实现各模块间的联系,使CPU能访问底板上的所有模块,机械上,实现各模块间的连接,使各模块构成一个整体。 功能模块 如计数、定位等功能模块 编程设备 编程器是PLC开发应用、监测运行、检查维护不可缺少的器件,用于编程、对系统作一些设定、监控PLC及PLC所控制的系统的工作状况,但它不直接参与现场控制运行。小编程器PLC一般有手持型编程器,目前一般由计算机(运行编程软件)充当编程器。 人机界面 最简单的人机界面是指示灯和按钮,液晶屏(或触摸屏)式的一体式操作员终端应用越来越广泛,由计算机(运行组态软件)充当人机界面非常普及。 7程序清单及注释 7.1 用户程序 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口输入..3 MOV A,#8BH ;LED显示、开关、按键接口8255A(U5)初始化 MOV DPTR,#0FDFFH ;8255A(U5) MOVX @DPTR,A ;A口输出驱L8-15,B口输入按键PB0-7,C口输入电平开关SW0-7 MOV 30H,#0BH ;30H-37H为显示缓冲单元,初始置' B ' MOV 31H,#0BH MOV 32H,#12H MOV 33H,#12H MOV 34H,#0BH MOV 35H,#0BH MOV 36H,#12H MOV 37H,#12H MOV 38H,#00H ;38H单元为倒计时200uS计数单元,清0 MOV 39H,#00H ;39H单元为10mS计数单元,清0 MOV 3AH,#00H ;倒计时单元初值 MOV 3BH,#00H ;步序单元初值 MOV TMOD,#02H ;初始化T0为定时方式2,TM=12×1/11.0592MHZ=1.085069444 μS MOV TL0,#48H ;置T0计数初值。00H-48H=184,184×TM≈200uS(199.6527778μS) MOV TH0,#48H MOV R2,#00H ;读取用户程序地址偏移量 LOOP: LCALL DISP ;调用显示更新子程序 (动态驱动4位数码显示器一遍,约8mS) LJMP PB ;调用独立按键PB0-7的检测 START0: INC R2 ;当为空操作时需跳过用户指令第三个字节 START: CLR TR0 ;关闭T0定时工作 MOV A,R2 ;将用户程序地址偏移量给A MOV DPTR,#HHH ;将用户程序首地址赋给DPTR MOVC A,@A+DPTR ;将当前需要取的用户首地址给A MOV 3BH,A ;将用户程序的步序送个3BH(拆字子程序中的) INC R2 ;将用户程序地址偏移量增1 MOV A,R2 ;将用户程序地址偏移量给A MOVC A,@A+DPTR ;将当前需要取的用户程序第二个字节给A MOV R4,A ;将用户程序第二个字节保存于R4中 INC R2 ;将用户程序地址偏移量增1 ANL A,#0C0H ;取出用户程序第二个字节头两位 JZ START0 ;当为空操作时,跳转到下一步 ORL A,#3FH ;与00111111B相或 CPL A ;将A值求反 JZ MAIN ;当为结束符时,跳转到主程序待命 CJNE A,#80H,INPUT ;若A不等于80H,则跳转到输入条件,若相等则为时间条件(继续往下运行) MOV A,R4 ;将用户程序第二个字节送往A ANL A,#3FH ;取出用户程序第二个字节后六位 MOV P1,A ;送往P1口显示 MOV A,R2 ;将用户程序地址偏移量赋给A MOVC A,@A+DPTR ;取用户程序第三个字节 INC R2 ;用户程序地址偏移量增1 MOV 3AH,A ;将倒计时内容送往3AH(拆字子程序) SETB ET0 ;开T0中断允许 SETB TR0 ;启动T0定时工作 TIME: LCALL CZ ;调用显示内容送显缓子程序(拆字子程序) LCALL DISP ;调用显示更新子程序 (动态驱动4位数码显示器一遍,约8mS) MOV A,3AH ;将倒计时内容送往A CJNE A,#00H,TIME ;判断倒计时是否到0,未到0则跳到TIME继续循环 LJMP START ;若为0,则跳转到START,继续执行下一步 INPUT: MOV A,R4 ;将用户程序第二个字节送往A ANL A,#3FH ;取用户程序第二个字节后六位 MOV P1,A ;将后六位输出到P1显示 MOV A,R2 ;将用户程序地址偏移量送给A MOVC A,@A+DPTR ;取用户程序第三个字节 MOV 3AH,A ;将第三个字节的内容送往3AH INC R2 ;将用户程序地址偏移量增1 CHECK: LCALL CZ ;调用显示内容送显缓子程序(拆字子程序)(将时分秒送右6位显示缓冲单元) LCALL DISP ;调用显示更新子程序 (动态驱动8位数码显示器一遍,约8mS) MOV DPTR,#0FDFEH ;电平开关SW0-7检测 MOVX A,@DPTR ;输入SW0-7电平 CJNE A,3AH,CHECK ;如果输入电平值不等于3AH,继续检测SW0-7的电平开关 LJMP START ;如果相等,则跳到START,继续下一步 PB: MOV DPTR,#0FDFDH ;独立按键PB0-7检测 MOVX A,@DPTR ;输入PB0-7电平 CJNE A,#0EFH,LOOP ;不相等就跳到LOOP继续循环 LCALL D30MS ;延时30MS CJNE A,#0EFH,LOOP ;不相等就跳到LOOP继续循环 SJMP START ;跳转到读取用户程序 CZ: MOV R0,#3AH ;显示内容送显缓子程序(拆字子程序) MOV R1,#30H ;置显示缓冲单元首地址(对应于最右位) CZ1: MOV A,@R0 ;取当前数据单元BCD码 ANL A,#0FH ;保留低4位(个位) MOV @R1,A ;送显缓当前个位单元 INC R1 ;指向显缓当前十位单元 MOV A,@R0 ;再取当前数据单元BCD码 ANL A,#0F0H ;保留高4位(十位) SWAP A ;交换到低4位 MOV @R1,A ;送显缓当前十位单元 INC R1 ;指向显缓下一个个位单元,中间隔两个数码管 INC R1 INC R1 INC R0 ;指向下一个数据单元 CJNE R0,#3CH,CZ1 ;未完继续 RET ;子程序返回 DISP: MOV R0,#30H ;显示更新子程序。置显示缓冲单元首地址(对应最右位显示内容单元) MOV R3,#01H ;字位码初值(从最右位起) MOV A,R3 ;将字位码初值赋给A DISP1: MOV DPTR,#0FEFDH ; 8255-B口(字位码输出口) MOVX @DPTR,A ; 输出当前字位码 MOV A,@R0 ; 取当前位显示数据码 ADD A,#TAB-NEXTPC ; 加TAB与NEXTPC差址 MOVC A,@A+PC ; 查表得相应字段码 NEXTPC: MOV DPTR,#0FEFCH ; 8255-A口(字段码输出口) MOVX @DPTR,A ; 输出字段码 LCALL D1MS ; 保持显示1毫秒 INC R0 ; 指向下一显示缓冲单元 MOV A,R3 ; 取出字位码 JB ACC.7,DISP2 ; 判已显示到最左位否 RL A ; 未完,字位码左移1位 MOV R3,A ; 回存新字位码 LJMP DISP1 ; 转下一位的显示驱动 DISP2: RET TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;显示字段码表。"0"~"9" DB 88H,83H,0C6H,0A1H,86H,8EH,0BFH,00H,0FFH ;"A"~"F","-","全亮","全灭" IT0P: PUSH ACC ;定时器0服务子程序。保护现场 PUSH PSW INC 38H ;每200uS加1 MOV A,38H CJNE A,#50,DONE ;满10mS? MOV 38H,#0 ;200uS计数单元清0 INC 39H ;每10mS加1 MOV A,39H CJNE A,#100,DONE ;满1S? MOV 39H,#0 ;10mS计数单元清0 MOV A,3AH ;秒单元(按BCD码)减1 ADD A,#99H DA A MOV 3AH,A DONE: POP PSW ;恢复现场 POP ACC RETI ;中断返回 D30MS: MOV R6,#46 ;软件延时30mS子程序 D30MS1: MOV R5,#200 ;[1+(1+3*200+2)*46+2]*12/11059.2KHZ=30.1mS D30MS0: NOP DJNZ R5,D30MS0 DJNZ R6,D30MS1 RET D1MS: MOV R7,#115 ;软件延时1mS子程序 D1MS1: NOP ;(1+8*115+2)*12/11059.2=1.0015mS NOP NOP NOP NOP NOP DJNZ R7,D1MS1 RET HHH: DB 01H,00H,00H ;步序:01,空操作 DB 02H,60H,12H ;步序:02,控制码:01(时间条件),输出:100000B,时间参数:12s DB 03H,0A0H,11H ;步序:03,控制码:10 (输入条件),输出:000010B,输入参数:11110001B DB 04H,61H,08H ;步序:04,控制码:01(时间条件),输出:100000B,时间参数:08 s DB 05H,0A1H,03H ;步序:05,控制码:10(输入条件),输出:010000B,输入参数:11110010B DB 06H,0A2H,02H ;步序:06,控制码:10(输入条件),输出:100000B,输入参数:11110100B DB 07H,62H,06H ;步序:07,控制码:01(时间条件),输出:111111B,时间参数:7s DB 08H,60H,04H ;步序:08,控制码:01(时间条件),输出:100000B,时间参数:11s DB 09H,0F0H,00H ;步序:09,控制码:11,结束 END 7.2 可编程程序 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中断允许 LCALL hhh ;初始用户程序储存 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 ;A口输出驱L8-15,B口输入按键PB0-7,C口输入电平开关SW0-7 hyl: MOV P1,#0FFH ;熄L0-7指示灯 MOV 30H,#0BH ;30H-37H为显示缓冲单元,初始置'B ' MOV 31H,#0BH MOV 32H,#12H MOV 33H,#12H MOV 34H,#0BH MOV 35H,#0BH MOV 36H,#12H MOV 37H,#12H MOV 38H,#00H ;38H单元为倒计时200uS计数单元,清0 MOV 39H,#00H ;39H单元为10mS计数单元,清0 MOV 21H,#22H ;用户输入数据暂存地址(3个) MOV 3AH,#00H ;倒计时单元初值 MOV 3BH,#00H ;控制指令初值 MOV 3CH,#00H ;步序单元初值 MOV 3DH,#00H ;储存所按下按键的扫描电平值 MOV 3EH,#00H ;储存所按下按键的键号 MOV 3FH,#40H ;储存用户程序起始地址:40H CLR (20H).0 ;编程/运行状态切换 MOV TMOD,#02H ;初始化T0为定时方式2,TM=12×1/11.0592MHZ=1.085069444 μS MOV TL0,#48H ;置T0计数初值。00H-48H=184,184×TM≈200uS(199.6527778μS) MOV TH0,#48H MOV 28H,#35H ;显示缓存单元起始地址 MOV R2,#02H ;用户程序每输入两个字符存储一次 LOOP: LCALL DISP ;调用显示更新子程序 (动态驱动4位数码显示器一遍,约8mS) LCALL PB ;调用独立按键PB0-7的检测 SJMP LOOP START0: INC 3FH ;空操作时须跳过用户程序的第三个字节 START: CLR TR0 ;关闭T0定时工作 MOV 37H,#12H ;灭数码管最高位 MOV R0,3FH ; MOV A,@R0 MOV 3CH,A INC 3FH MOV R0,3FH MOV A,@R0 MOV R4,A INC 3FH ANL A,#0C0H JZ START0 ;当为空操作时,跳转到下一步 ORL A,#3FH CPL A JZ HYL ;当为结束符时,跳转到主程序待命 CJNE A,#80H,IP ;当为输入条件控制室,跳转到INPUT MOV A,R4 ;将输出参数送往P1显示 ANL A,#3FH CPL A MOV P1,A MOV R0,3FH MOV A,@R0 INC 3FH MOV 3AH,A SETB ET0 ;开T0中断允许 SETB TR0 ;启动T0定时工作 TIME: LCALL CZ ;调用显示内容送显缓子程序(拆字子程序) LCALL DISP0 ;调用显示更新子程序 (动态驱动4位数码显示器一遍,约8mS) MOV A,3AH CJNE A,#00H,TIME LJMP START IP: MOV A,R4 ;将输出参数送往P1显示 ANL A,#3FH CPL A MOV P1,A MOV R0,3FH MOV A,@R0 MOV 3AH,A INC 3FH CHECK: LCALL CZ ;调用显示内容送显缓子程序(拆字子程序)(将时分秒送右6位显示缓冲单元) LCALL DISP0 ;调用显示更新子程序 (动态驱动4位数码显示器一遍,约8mS) MOV DPTR,#0FDFEH ;电平开关SW0-7检测 MOVX A,@DPTR ;输入SW0-7电平 CJNE A,3AH,CHECK LJMP START PB: MOV DPTR,#0FDFDH ;独立按键PB0-7检测 MOVX A,@DPTR ;输入PB0-7电平 CJNE A,#0FEH,RT2 LCALL D30
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服