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

上传人:hao****an 文档编号:156917405 上传时间:2022-09-28 格式:DOC 页数:21 大小:396.01KB
收藏 版权申诉 举报 下载
单片机课程设计可编程序控制器_第1页
第1页 / 共21页
单片机课程设计可编程序控制器_第2页
第2页 / 共21页
单片机课程设计可编程序控制器_第3页
第3页 / 共21页
资源描述:

《单片机课程设计可编程序控制器》由会员分享,可在线阅读,更多相关《单片机课程设计可编程序控制器(21页珍藏版)》请在装配图网上搜索。

1、设计题目: 可编程序控制器 一,顺序控制器主要功能 1, 19260屏显示画面待机界面 主菜单界杭州500中文控制器 1 程序编程 5 技术支持设定计数 2000米 2 系统设置 执行数值 1080米 3 手动脉冲 正在运行程序 34步 4 手动I/O 编程单界 脉冲手动输出000 输出指令 开Y0 脉冲 X:-0000 Y:+0000001 延迟指令 00230 Z:-0000002 设定计数 00150 速度F X:038 Y:035003 输出指令 关Y0 Z:028 输入输出手动I/O 技术支持X0o,X1o,X2o,X3o,X4o,X5o, X6o,X7o,X8o,X9o,X10o,

2、X11o, 联系人:薛工Y0o,Y1o,Y2o,Y3o,Y4o,Y5o, 地址:杭州滨江高新开发区Y6o,Y7o,Y8o,Y9o,Y10o,Y11o, QQ:2.程序名称电机方向设定X,Y,Z,:+正方向,-反方向。 电机运行速度F: 000三位。 2.1.1、启动:按“启动”键后,顺序控制器依序执行用户程序中的每一程序步,当被执行的程序步的条件(时间条件或输入条件)满足时,转至下一程序步执行,直至结束。 2、复位:按“复位”键后,顺序控制器终止执行用户程序,处于初始待命状态,显示待命提示符。 可编程顺序控制器要求1、按下模式键,进入编程状态。2、从键盘输入步序号,数码管显示对应的用户程序内容

3、。3、按下保存键,可将键盘输入的信息进行保存。4、按下next键,可对下一步程序进行修改。5、按下last键,可对上一步程序进行修改。6、再按下模式键,可进入运行状态。2.2控制器主要指标 (1)采用AT89S51系列单片机控制(2)输出控制信号:12点 (3)输入条件信号:12点(4)程序步容量:100步(5)程序步定时范围:099秒2.3控制码的规定 00空操作 01时间条件 10输入条件 11结束2.4给定参数的规定 时间参数099秒 输入参数8位3.设计构思3.1用户程序介绍用户程序即控制字序列由用户预先输入程序存储区,控制器运行时,根据用户程序各控制字的规定条件条件为时间条件或输入条

4、件顺序逐步推进控制过程。 1执行时间条件控制字时,按照控制字给定的输出参数更新控制信号,启动定时功能,以给定的时间参数开始倒计时,显示器显示当前步序号 099 和倒计时值 099 。若定时时间到则转入下一程序步。2执行输入条件控制字时,按照控制字给定的输出参数更新输出控制信号,显示器显示当前步序号 099 和给定输入条件 0FFH ,同时以给定的输入条件与实际的输入信号比较,若一致则转入下一程序步,否则等待。3执行空操作控制字时,不进行任何操作而直接转入下一程序步。4执行结束控制字时,终止控制进程,等待新的启动命令 即初始待命 。34电路设计说明、电原理图 单片机选用AT89S51,它与805

5、1系列单片机全兼容,但其内部带有4KB的FLASH ROM,设计时无需外接程序存储器,为设计和调试带来极大的方便。 5程序设计构思说明:程序粗框图、细框图程序流程图粗框图开始初始化调用显示子程序启动动?取用户指令N结束?YYN空操作作?N输出更新时间条件件?Y定时初始化调用显示子程序定时到?YYN输入一致致?NYN调用显示子程序调整指针定时中断重装定时初值倒计时单元内容减11S时间到?更新显缓返回NY细框图初始化开始步序单元清08255初始化向显缓单元送待命提示符结束取用户指令开始取用户指令第一字节保存第一字节取用户指令第二字节保存第二字节屏蔽第一字节低6位结束定时初始化开始安装定时初始值倒计

6、时单元赋值设置TMOD寄存器启动定时设置中断允许寄存器结束定时中断开始重装定时初值倒计时单元内容减11S时间到?调用拆送程序更新显缓返回NY保护现场恢复现场拆送程序开始 取条件参数高4位、低4位分离分别送相应显缓单元取步序单元内容结束高4位、低4位分离分别送相应显缓单元6可编程序控制器使用说明PLC的基本构成从结构上分,PLC分为固定式和组合式(模块式)两种。固定式PLC包括CPU板、I/O板、显示面板、内存块、电源等,这些元素组合成一个不可拆卸的整体。模块式PLC包括CPU模块、I/O模块、内存、电源模块、底板或机架,这些模块可以按照一定规则组合配置。 PLC实质是一种专用于工业控制的计算机

7、,其硬件结构基本上与微型计算机相同,基本构成为: 电源 PLC的电源用于为PLC各模块的集成电路提供工作电源,在整个系统中起着十分重要的作用。如果没有一个良好的、可靠的电源系统是无法正常工作的,因此PLC的制造商对电源的设计和制造也十分重视。一般交流电压波动在+10%(+15%)范围内,可以不采取其它措施而将PLC直接连接到交流电网上去。同时,有的还为输入电路提供24V的工作电源。电源输入类型有:交流电源(220VAC或110VAC),直流电源(常用的为24VDC)。 中央处理单元(CPU) 中央处理单元(CPU)是PLC的控制中枢,是PLC的核心起神经中枢的作用,每套PLC至少有一个CPU。

8、它按照PLC系统程序赋予的功能接收并存储从编程器键入的用户程序和数据;检查电源、存储器、I/O以及警戒定时器的状态,并能诊断用户程序中的语法错误。当PLC投入运行时,首先它以扫描的方式接收现场各输入装置的状态和数据,并分别存入I/O映象区,然后从用户程序存储器中逐条读取用户程序,经过命令解释后按指令的规定执行逻辑或算数运算的结果送入I/O映象区或数据寄存器内。等所有的用户程序执行完毕之后,最后将I/O映象区的各输出状态或输出寄存器内的数据传送到相应的输出装置,如此循环运行,直到停止运行。 为了进一步提高PLC的可靠性,近年来对大型PLC还采用双CPU构成冗余系统,或采用三CPU的表决式系统。这

9、样,即使某个CPU出现故障,整个系统仍能正常运行。 CPU速度和内存容量是PLC的重要参数,它们决定着PLC的工作速度,IO数量及软件容量等,因此限制着控制规模。 存储器 存放系统软件的存储器称为系统程序存储器。 存放应用软件的存储器称为用户程序存储器。 输入输出接口电路(I/O模块) PLC与电气回路的接口,是通过输入输出部分(I/O)完成的。I/O模块集成了PLC的I/O电路,其输入暂存器反映输入信号状态,输出点反映输出锁存器状态。输入模块将电信号变换成数字信号进入PLC系统,输出模块相反。I/O分为开关量输入(DI),开关量输出(DO),模拟量输入(AI),模拟量输出(AO)等模块。 底

10、板或机架 大多数模块式PLC使用底板或机架,其作用是:电气上,实现各模块间的联系,使CPU能访问底板上的所有模块,机械上,实现各模块间的连接,使各模块构成一个整体。 功能模块 如计数、定位等功能模块 编程设备 编程器是PLC开发应用、监测运行、检查维护不可缺少的器件,用于编程、对系统作一些设定、监控PLC及PLC所控制的系统的工作状况,但它不直接参与现场控制运行。小编程器PLC一般有手持型编程器,目前一般由计算机(运行编程软件)充当编程器。 人机界面 最简单的人机界面是指示灯和按钮,液晶屏(或触摸屏)式的一体式操作员终端应用越来越广泛,由计算机(运行组态软件)充当人机界面非常普及。 7程序清单

11、及注释7.1 用户程序 ORG 0000H;复位入口LJMP MAINORG 000BH;定时器0中断服务子程序入口(进行时钟倒计时) LJMP IT0PORG 0030HMAIN: 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口输出驱动字段、

12、字位,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单

13、元为10mS计数单元,清0 MOV 3AH,#00H;倒计时单元初值 MOV 3BH,#00H;步序单元初值 MOV TMOD,#02H ;初始化T0为定时方式2,TM=121/11.0592MHZ=1.085069444 S MOV TL0,#48H;置T0计数初值。00H-48H=184,184TM200uS(199.6527778S) MOV TH0,#48H MOV R2,#00H ;读取用户程序地址偏移量LOOP: LCALL DISP ;调用显示更新子程序 (动态驱动4位数码显示器一遍,约8mS) LJMP PB ;调用独立按键PB0-7的检测START0: INC R2 ;当为空

14、操作时需跳过用户指令第三个字节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 ;取出用户

15、程序第二个字节头两位 JZ START0 ;当为空操作时,跳转到下一步 ORL A,#3FH ;与00111111B相或 CPL A ;将A值求反 JZ MAIN ;当为结束符时,跳转到主程序待命CJNE A,#80H,INPUT ;若A不等于80H,则跳转到输入条件,若相等则为时间条件(继续往下运行)MOV A,R4 ;将用户程序第二个字节送往AANL A,#3FH ;取出用户程序第二个字节后六位MOV P1,A ;送往P1口显示MOV A,R2 ;将用户程序地址偏移量赋给A MOVC A,A+DPTR ;取用户程序第三个字节INC R2 ;用户程序地址偏移量增1MOV 3AH,A ;将倒计

16、时内容送往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 ;将后六位输出到

17、P1显示 MOV A,R2 ;将用户程序地址偏移量送给A MOVC A,A+DPTR ;取用户程序第三个字节 MOV 3AH,A ;将第三个字节的内容送往3AH INC R2 ;将用户程序地址偏移量增1CHECK: 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

18、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

19、位(个位)MOV R1,A ;送显缓当前个位单元INC R1 ;指向显缓当前十位单元MOV A,R0 ;再取当前数据单元BCD码ANL A,#0F0H ;保留高4位(十位)SWAP A ;交换到低4位MOV R1,A ;送显缓当前十位单元INC R1 ;指向显缓下一个个位单元,中间隔两个数码管INC R1INC R1INC R0 ;指向下一个数据单元CJNE R0,#3CH,CZ1;未完继续RET ;子程序返回DISP: MOV R0,#30H ;显示更新子程序。置显示缓冲单元首地址(对应最右位显示内容单元) MOV R3,#01H ;字位码初值(从最右位起) MOV A,R3 ;将字位码初值

20、赋给ADISP1: 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 ; 未

21、完,字位码左移1位 MOV R3,A ; 回存新字位码 LJMP DISP1 ; 转下一位的显示驱动DISP2: RETTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;显示字段码表。09 DB 88H,83H,0C6H,0A1H,86H,8EH,0BFH,00H,0FFH ;AF,-,全亮,全灭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

22、 ;每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,ADONE: 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.1mSD30MS0: NOP DJNZ R5,D30MS0 DJNZ R6,D30MS1 RETD1MS: MOV R7,

23、#115 ;软件延时1mS子程序D1MS1: NOP;(1+8*115+2)*12/11059.2=1.0015mS NOP NOPNOPNOPNOPDJNZ R7,D1MS1RET 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

24、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,结束 END7.2 可编程程序ORG 0000H;复位入口LJMP MAIN O

25、RG 000BH;定时器0中断服务子程序入口(进行时钟倒计时) LJMP IT0PORG 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,#

26、8BH;LED显示、开关、按键接口8255A(U5)初始化 MOV DPTR,#0FDFFH;8255A(U5) MOVX DPTR,A;A口输出驱L8-15,B口输入按键PB0-7,C口输入电平开关SW0-7hyl: 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,#

27、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=121/11.0592MHZ=1.085069444 S MOV TL0,#48H;置T0计数初值。00

28、H-48H=184,184TM200uS(199.6527778S) MOV TH0,#48H MOV 28H,#35H ;显示缓存单元起始地址 MOV R2,#02H ;用户程序每输入两个字符存储一次LOOP: LCALL DISP ;调用显示更新子程序 (动态驱动4位数码显示器一遍,约8mS) LCALL PB;调用独立按键PB0-7的检测 SJMP LOOPSTART0: INC 3FH ;空操作时须跳过用户程序的第三个字节START: CLR TR0 ;关闭T0定时工作 MOV 37H,#12H ;灭数码管最高位 MOV R0,3FH ; MOV A,R0 MOV 3CH,A INC

29、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 ;调用显示内容送显缓

30、子程序(拆字子程序) 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 3FHCHECK: LCALL CZ ;调用显示内容送显缓子程序(拆字子程序)(将时分秒送右6位显示缓冲单元) LCALL DISP0 ;调用显示更新子程序 (动态驱动4位数码显示器一遍,约8mS) MOV DPTR,#0FDFEH;电平开关

31、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,RT2LCALL D30MS MOVX A,DPTR CJNE A,#0FEH,RT2 LCALL DJSF2 CPL (20H).0MOV 3FH,#40HJNB (20H).0,STARTMOV 35H,#12HLJMP KEYRT2:RET KEY: MOV 37H,#0BH LCALL DISP LCALL PBLCALL PB3 MOV

32、 A,#81H;键盘扫描子程序(反转法)MOV DPTR,#0FEFFH MOVX DPTR,A ;C口先初始化为高4位输出方式驱键行线、低4位输入方式键列线 MOV DPTR,#0FEFEHMOV A,#00H;键盘行线(高4位)输出驱动全0MOVX DPTR,AMOVX A,DPTR;输入键盘列线电平(低4位)存3DH单元MOV 3DH,AMOV A,#88H;C口改初始化为高4位输入驱键行线、低4位输出驱键列线MOV DPTR,#0FEFFH MOVX DPTR,A MOV DPTR,#0FEFEHMOV A,#00H;键盘列线(低4位)输出驱动全0 MOVX DPTR,AMOVX A,

33、DPTR;输入键盘行线电平(高4位)在A中ANL 3DH,#0FH;列线电平值保留所在的低4位ANL A,#0F0H;行线电平值保留所在的高4位ORL 3DH,A;两次输入的列线电平值、行线电平值组合成8位行列码CJNE A,#0FFH,KEYCONTI:MOV 3EH,#00H;置键号初值为00HMOV R3,#10H;设定最多进行16次的键码查表MOV DPTR,#KEY_N;键码表首地址KY: MOV A,#00H;A清0MOVC A,A+DPTR;查表读取键码表中当前位置键码CJNE A,3DH,NK;与8位行列码比较,不同则转NK查下一个SJMP KN;相同则转KN根据已获取的键号进

34、行相应处理 NK: INC 3EH;键号加1 INC DPTR;指向键值表下一个位置DJNZ R3,KY ;未查完,继续LJMP KEY;查完,说明无按键或出现异常行列码则返回 KN: MOV A,3EH;根据查表获得的键号00H0FH之一转向相应的处理 MOV R0,21H DJNZ R2,NEXT MOV R2,#02H ORL A,R0 MOV R0,A INC 21H NEXT: MOV A,3EH MOV R1,28H MOV R1,A SWAP AMOV R0,21H MOV R0,A MOV A,28HCJNE A,#34H,NEXT3 LCALL DISPCXNEXT3:CJN

35、E R1,#33H,NEXT2 MOV 32H,#12H MOV 31H,#12H MOV 30H,#12H NEXT2: DEC 28H MOV R1,28H CJNE R1,#2FH,RT2 MOV 28H,#35HMOV 21H,#22HLJMP PB2RT1: LJMP KEYDISPCX:MOV A,22H DEC A MOV B,#03H MUL AB ADD A,#40H MOV 26H,A ;保存需改变程序首地址 MOV R0,26H MOV 3CH,R0 INC R0 MOV 3BH,R0 INC R0 MOV 3AH,R0 LCALL CZ RETPB2: LCALL DI

36、SP ;保存用户程序键 MOV DPTR,#0FDFDH;独立按键PB0-7检测 MOVX A,DPTR;输入PB0-7电平 CJNE A,#0FDH,PB2 LCALL D30MS CJNE A,#0FDH,PB2 MOV 30H,#12H;30H-37H为显示缓冲单元,初始全灭 MOV 31H,#12H MOV 32H,#12H MOV 33H,#12H MOV 34H,#12H MOV 35H,#12H MOV 36H,#12H MOV 37H,#12H MOV R0,26H MOV R0,22H INC 26H MOV R0,26H MOV R0,23H INC 26H MOV R0,

37、26H MOV R0,24H LJMP KEYPB3: MOV DPTR,#0FDFDH;独立按键PB0-7检测 MOVX A,DPTR;输入PB0-7电平 CPL A MOV 27H,A ;储存输入电平求反值 JZ RET0 LCALL D30MS JZ RET0 SJMP CHOOSERET0: RETCHOOSE:MOV A,27H CJNE A,#04H,CHOOSE1 INC 22H INC 21H DEC 28H DEC 28H LCALL DISPCXCHOOSE1:CJNE A,#08H,RET0 DEC 22H INC 21H DEC 28H DEC 28H LCALL DI

38、SPCX RET KEY_N: DB 0EEH,0EDH,0EBH,0E7H;键码表。K0,K1,K2,K3键码 DB 0DEH,0DDH,0DBH,0D7H;K4,K5,K6,K7键码DB 0BEH,0BDH,0BBH,0B7H;K8,K9,K10,K11键码DB 7EH,7DH,7BH,77H;K12,K13,K14,K15键码 CZ: MOV R0,#3AH ;显示内容送显缓子程序(拆字子程序)MOV R1,#30H ;置显示缓冲单元首地址(对应于最右位) CZ1: MOV A,R0 ;取当前数据单元BCD码ANL A,#0FH ;保留低4位(个位)MOV R1,A ;送显缓当前个位单元

39、INC R1 ;指向显缓当前十位单元MOV A,R0 ;再取当前数据单元BCD码ANL A,#0F0H ;保留高4位(十位)SWAP A ;交换到低4位MOV R1,A ;送显缓当前十位单元INC R1 ;指向显缓下一个单元INC R0 ;指向下一个数据单元CJNE R0,#3DH,CZ1;未完继续RET ;子程序返回DISP0: MOV 32H,#12H ;灭第三个第四个数码显示器MOV 33H,#12H DISP: MOV R0,#30H ;显示更新子程序。置显示缓冲单元首地址(对应最右位显示内容单元)MOV R3,#01H ;字位码初值(从最右位起)MOV A,R3DISP1: MOV

40、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 ; 回

41、存新字位码 LJMP DISP1 ; 转下一位的显示驱动 DISP2: RETTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;显示字段码表。09 DB 88H,83H,0C6H,0A1H,86H,8EH,0BFH,00H,0FFH;AF,-,全亮,全灭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计数单元清0MOV A,3AH ;秒单元(按BCD码)减1ADD A,#99H DA A MOV 3AH,ADONE: POP PSW ;恢复现场

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!