工业控制 | 能源技术 | 汽车电子 | 通信网络 | 安防监控 | 智能电网 | 移动手持 | 无线技术 | 家用电器 | 数字广播 | 消费电子 | 应用软件 | 其他方案

电路设计->光电电路图->其他光电实用电路图->用P110C制作的四路时间控制器

用P110C制作的四路时间控制器

作者:dolphin时间:2016-09-22

  1.电路工作原理
  
  电路见下图。BCD1~BCD4是共阴极BCD码编码器。其中,BCDl设定J1的工作时间,BCD2没定J2的工作时间,BC,D3设定J3的工作时间,BCD4设定J4的工作时间。P004~P007分别是BCD1~BCD4的选通端。当要选通某个编码器时,该编码器的选通端为低电平,其他编码器的选通端均为高电平。
  
  在断电状态下,通过BCD1~BCD4设定Jl~J4的工作时间。
  
  上电后,PLLOC模块等待起动按钮Kl的接通。起动按钮Kl接通后,p110C模块的P018端输出低电平,继电器J1工作,同时起动内部定时器;当定时器的延迟时间到达BCD1的设定时间时,P018端口输出高电平,继电器Jl断开,P008端输出低电平,继电器J2工作,内部定时器再次起动:当延迟时间到达BCD2的设定时间时,P008端口输出高电平,继电器J2断开,P009端输出低电平,燃电器J3工作,内部定时器再次起动;当延迟时间到达BCD3的设定时间时,P009端口输出高电平,继电器J3断开,P010端输出低电平,继电器j4工作,内部定时器再次起动;当延迟时间到达BCD4的设定时间时,P010端口输出高电平,继电器14断开,程序又从继电器J1工作处开始运行,如此循环。
  
  在工作过程中,只要按下停止按钮K2,时间控制器立刻停止工作,所有继电器均断开。只有再次按下起动按钮时,才可重新从第一步开始工作。
  
  K3~K6分别是BCD1~BCD4的最小时间选择开关。当K.3~K6断开时,最小时间为0.1S接通时最小时间为1s。

四路时间控制器

  2.四路时间控制器程序
  
  程序清单如下:
  
  (1)初始化程序
  
  P018-OUT(设P018为输出模式)
  
  P008=OUT(设P008为输出模式)
  
  P009=OUT(设P009为输出模式)
  
  P010=0UT(设P010为输出模式)
  
  P004=OUT(设P004为输出模式)
  
  P005=OUT(设P005为输出模式)
  
  P006=OUT(设P006为输出模式)
  
  P007=OUT(设P007为输出模式)
  
  POOO=IN:1(设P000为带上拉电阻的输入模式)
  
  PO01=IN:1(设PO01为带上拉电阻的输入模式)

  P002=IN:l(设P002为带上拉电阻的输入模式)
  
  P003=IN:1(设P003为带上拉电阻的输入模式)
  
  P011=IN:1f设P011~P016为带上拉电阻的输入模式)
  
  P012=IN:l
  
  P013=IN:l
  
  P014=IN:l
  
  P015=IN:1
  
  P016=IN:l
  
  INT018=1,STO(激活INT018任意电平中断,如“停止”按钮接通就转STO)
  
  (2)主程序
  
  LCALL,BCl(BCD1的设定值存储到R0100中)
  
  LCALL,BC2(BCD2的设定值存储到R0101中)
  
  LCALL,BC3(BCD3的设定值存储到R0102中
  
  )LCALL,BC4(BCD4的设定值存储到R0103中)
  
  LCALL,A01(调起动按钮子程序)
  
  MOLCALL,M1(调Jl延迟工作控制子程序)  
  
  LCALL,M2(调J2延迟工作控制子程序)
  
  LCALL,M3(调J3延迟工作控制子程序)
  
  LCALL,M4(调J4延迟工作控制子程序)
  
  LJMP,MO(转MO)
  
  起动按钮子程序//在本程序中通过2次判起动按钮是否接通且中间加lOms延迟的方法,有效防止按键抖动带来的不稳定。
  
  A01P011==1,A01(未按起动按钮转A01)
  
  NOP(延迟10ms)
  
  P011==1,A01(未按起动按钮转A01)
  
  RET(返回)
  
  (3)读BCD1设定值子程序
  
  将BCD1的设定值存储在R0100中。
  
  BClP004=0(P004输出低电平,选通BCDl)
  
  P005=1(P005输出高电平,不选通BCD2)
  
  P006=1(P006输出高电平,不选通BCD3)
  
  P007=1(P007输出高电平,不选通BCD4)R0100=000(R0100清零)
  
  R0100:O=POOO(POOO的值送R0100第0位)
  
  R010O:l=P00l(PO01的值送R0100第1位)
  
  R0100:2=P002(P002的值送R0100第2位)
  
  R0100:3=P003(P003的值送R0100第3位)RET(返回)
  
  (4)读BCD2设定值子程序
  
  将BCD2的设定值存储在R0101中。
  
  BC2P005=0(P005输出低电平,选通BCD2)
  
  P004=1(P004输出高电平,不选通BCDl)
  
  P006=1(P006输出高电平,不选通BCD3)
  
  P007=1(P007输出高电平,不选通BCD4)
  
  R0101=000(R0101清零)
  
  R0101:O=POOO(将POOO的值传送给R0101的第0位)
  
  R0101:1=PO01c将PO01的值传送给R0101的第1位)
  
  R0101:2=P002(将P002的值传送给R0101的第2位)
  
  R0101:3=P003(将P003的值传送给R0101的第3位)
  
  RET(子程序返回)
  
  (5)读BCD3设定值子程序
  
  将BCD3的设定值存储在R0102中。
  
  BC3P006=0(P006输出低电平,选通BCD3)
  
  P005=1(P005输出高电平,不选通BCD2)
  
  P004==1(P004输出高电平,不选通BCDl)
  
  P007=1(P007输出高电平,不选通BCD4)R0102=000(R0102清零)
  
  R0102:O=POOO(PO0O的值送R0102第0位)
  
  R0102:1=PO01(PO01的值送R0102第1位)
  
  R0102:2=P002(P002的值送R0102第2位)
  
  R0102:3=P003(P003的值送R0102第3位)
  
  RET(返回)
  
  (6)读BCD4设定值子程序
  
  将BCD4的设定值存储在R0103中。
  
  BC4P007=0(P007输出低电平,选通BCD4)
  
  P005=1(P005输出高电平,不选通BCD2)

  P006=1 (P006输出高电平,不选通BCD3)
  
  P004=1 (P004输出高电平,不选通BCDl)
  
  R0103=OOO(R0103清零)
  
  R0103:O=POOO (POOO的值送R0103第0位)
  
  R0103:1=PO01 (PO01的值送R0103第1位)
  
  R0103:2=P002 (P002的值送R0103第2位)
  
  R0103:3=P003 (P003的值送R0103第3位)
  
  RET(返回)
  
  (7)J1延迟工作控制子程序
  
  Ml P018-0 (Jl工作)
  
  P013-=0,C01(K3接通转C01)
  
  C-ON:2(激活延迟定时器时钟并设最小时钟为1s)
  
  LJMP,Mll隈Mll)
  
  C01 C=ON:1 (激活延迟定时器时钟并设最小时钟为O.ls)
  
  Mll CO=-R0100,M12(激活定时器CO,如果CO延迟到由R0100设定的时间就转M12)
  
  LJMP,Mll (转Mll)M12 P018=1 (Jl不工作)
  
  RET(返回)
  
  (8 )J2延迟工作控制子程序
  
  M2 P008=0 (J2工作)
  
  P014= =0,C02(K4接通转C02)
  
  C=ON:2 (激活延迟定时器时钟并设最小时钟为1秒)
  
  LJMP,M21(转M21)C02
  
  C=ON:1(激活延迟定时器时钟并设最小时钟为0.1秒)
  
  M21 CO==R0101,M22(激活定时器CO,如果CO延迟到由ROl01设定的时间就转M22)
  
  LjMP,M21(转M21)
  
  M22 P008=1(J2不工作)
  
  RET (返回)

  (9)J3继电器延迟工作控制子程序
  
  M3P009=0(J3工作)
  
  P015=-0,C03(K5接通转C03)
  
  C=ON:2(激活延迟定时器时钟并设最小时钟为1s)
  
  LJMP,M31(转M31)
  
  C03C,=ON:l(激活延迟定时器时钟并设最小时钟为0.1s)
  
  M31CO==R0102,M32(激活定时器C0,如果CO延迟到由R0102设定的时间就转M32)  
  
  LJMP,M31(转M31)
  
  M32P009=1(J3不工作)
  
  RET(返回)
  
  (10)J4延迟工作控制子程序
  
  M4P010=0(J4工作)
  
  P016==0,C04(K6接通转C04)
  
  C=ON:2(激活延迟定时器时钟并设最小时钟为1S)
  
  LJMP,M41(跳转到M41处)
  
  C04C=ON:l(激活延迟定时器时钟并设最小时钟为O.ls)
  
  M41CO==R0103,M42(激活定时器C0,如果C0延迟到由R0103设定的时间就转M42)
  
  LJMP,M41(转M41)
  
  M42P010=1(J4不工作)
  
  RET(返回)
  
  (11)停止按钮中断服务程序
  
  STOP018=1(Jl不工作)
  
  P008=1(J2不工作)
  
  P009=1(J3不工作)
  
  P010=1(J4不工作)
  
  STlP012==0,ST1(未按停止按钮转STl)
  
  NOP(延迟lOms)
  
  P012==0,ST1(未按停止按钮转STl)
  
  RETIO(中断返回)



评论

技术专区