电机走拍子程序 :控制电机的实时运转,根据方向按拍表的内容走步,由既定的步数走到相应的楼层,
根据请求表,做相关的处理。
重量检测子程序:通过对 ADC0809 的模拟量检测,滤波(采集 8 次求平均值)判断是否超重(模拟量
的大于 4.5V),如超重,则进行相应的错误处理(该子程序不在主流程中,在关门按键按下时调用一次)
关于方案改进:
实时系统中尽量少软件延时,本系统中键处理中防抖动,步进电机拍与拍之间间隔都用了软件延时,用
此方法因为系统实时性并不高,只有控制台键盘输入,但软件延时会影响显示,所以延时的地方用调用显示
来完成,这样延时的精度会受影响,改进的方法就是用定时中断,可使用 8253,8259 来完成,特别是步进
电机的走步程序,如按此方案,走步程序就在中断服务程序里完成,同时可根据步进电机的特性,走出升降
曲线,使电机控制在更佳状态。
3、源程序代码
DATA
SEGMENT
;数据段
KCROW DB 0
;
键盘扫描 行设置
KEYID
DB 0
;键值
DRSTAT DB 0FFH
;电机开关门状态(0 表示开门,0FFH 表示关门,1 表示走拍)
ALARM DB 0
;电机故障指示 (0 无故障,0FFH 有故障)
FLOOR
DW 1
;电机当前运行的楼层
DIRECT DB 0
;电机运行方向 (0 表示正走,0FFH 表示反走)
STEP
DB 0
;电机在走拍程序中 4 拍的位置
STPNUM DW 0
;电机走拍次数
STPTAB DB 08H,04H,02H,01H ;拍表
FLRQ
DB 8 DUP(0);楼层请求 (0 无请求,1 有请求)
DCACHE DB 4 DUP(0FH);显示缓存
(4 个字节)
;LED 段码表
LCODE
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;[0123456789]
000H~009H
DB 79H,50H,73H,37H,5CH,00H
;[ErPNo ] 00AH~00FH
;8255(1)端口定义 A
键盘输入 B
片选输出 C 屏幕输出
PA1
EQU 208H
PB1
EQU 209H
PC1
EQU 20AH
P1CTL
EQU 20BH
;8255(2)端口定义 A
电机输出 B LED
输出
PA2
EQU 218H
PB2
EQU 219H
PC2
EQU 21AH
P2CTL
EQU 21BH
;CSAD 端口定义
CSAD
EQU 202H;???
TRHLD
EQU 0E6H;0.0V=00H 5.0V=FFH
FLSTPN EQU 0C70H
;有效键值表
KID_FL1 EQU 000H
;一楼
KID_FL2 EQU 001H
; |
KID_FL3 EQU 002H
; |
KID_FL4 EQU 003H
; |
KID_FL5 EQU 004H
; |
KID_FL6 EQU 005H
; |