最好的电子音响科技diy制作网站

haoDIY_音响电子电脑科技DIY小制作发明

当前位置: 主页 > 电子DIY > led显示/灯光 >

改进版8位数码管汇编数字钟 附视频(2)

时间:2012-12-29 17:46来源:未知 作者:admin 点击:
SWAP A MOV 2EH,A;转换出秒十位,存入2EH JB 46H,MIN;如果长按按键(调时快进),则跳过闪烁处理程序 CJNE R1,#3,MIN;如果R1为3,闪烁秒位待调整 JB 48H,MIN MOV 2FH,#0AH;使该位为10,查表得到使该位不显示的输出

  SWAP A
  MOV 2EH,A   ;转换出秒十位,存入2EH
  JB 46H,MIN   ;如果长按按键(调时快进),则跳过闪烁处理程序
  CJNE R1,#3,MIN  ;如果R1为3,闪烁秒位待调整
  JB 48H,MIN
  MOV 2FH,#0AH  ;使该位为10,查表得到使该位不显示的输出
  MOV 2EH,#0AH

MIN:
  MOV A,22H    ;分
  ANL A,#0FH
  MOV 2DH,A   ;转换出分个位,存入2DH
  MOV A,22H
  ANL A,#0F0H
  SWAP A
  MOV 2CH,A   ;转换出分十位,存入2CH
  JB 46H,HOUR   ;如果长按按键(调时快进),则跳过闪烁处理程序
  CJNE R1,#2,HOUR  ;如果R1为2,闪烁分位待调整
  JB 48H,HOUR
  MOV 2DH,#0AH  ;使该位为10,查表得到使该位不显示的输出
  MOV 2CH,#0AH

HOUR:
  MOV A,23H    ;时
  ANL A,#0FH 
  MOV 2BH,A   ;转换出时个位,存入2BH
  MOV A,23H
  ANL A,#0F0H
  SWAP A
  MOV 2AH,A   ;转换出时十位,存入2AH
  JB 46H,DISP   ;如果长按按键(调时快进),则跳过闪烁处理程序
  CJNE R1,#1,DISP  ;如果R1为1,闪烁时位待调整
    JB 48H,DISP
  MOV 2BH,#0AH  ;使该位为10,查表得到使该位不显示的输出
  MOV 2AH,#0AH

/*****数码管动态扫描显示*****/
DISP:
  MOV DPTR,#TABLE
  MOV A,2FH
  MOVC A,@A+DPTR
  MOV P0,A
  CLR P2.7
  LCALL DELAY
  SETB P2.7   ;显示秒个位

  MOV A,2EH
  MOVC A,@A+DPTR
  MOV P0,A
  CLR P2.6
  LCALL DELAY
  SETB P2.6   ;显示秒十位

  MOV A,#0BFH
  MOV P0,A
  CLR P2.5
  LCALL DELAY
  SETB P2.5   ;显示“-”

  MOV A,2DH
  MOVC A,@A+DPTR
  MOV P0,A
  CLR P2.4
  LCALL DELAY
  SETB P2.4   ;显示分个位

  MOV A,2CH
  MOVC A,@A+DPTR
  MOV P0,A
  CLR P2.3
  LCALL DELAY
  SETB P2.3   ;显示分十位

  MOV A,#0BFH
  MOV P0,A
  CLR P2.2
  LCALL DELAY
  SETB P2.2   ;显示“-”

  MOV A,2BH
  MOVC A,@A+DPTR
  MOV P0,A
  CLR P2.1
  LCALL DELAY
  SETB P2.1   ;显示时个位

  MOV DPTR,#TABLE1 ;该位使用TABLE1以消除前置0
  MOV A,2AH
  MOVC A,@A+DPTR
  MOV P0,A
  CLR P2.0
  LCALL DELAY
  SETB P2.0   ;显示时十位
  RET
  
/*****按键检测子程序*****/
KEY_SCAN:
  CLR 46H    ;关闭长按调整(调时快进)标志
  MOV P1,#0FFH   ;将P1口设置成输入状态
  MOV A,P1
  CPL A
  ANL A,#07H   ;P1口低3位连接3个按键,只判断该3位
  JZ EXIT_KEY   ;无键按下则返回
  LCALL DELAY   ;延时去抖动
  MOV A,P1   ;重新判断
  CPL A
  ANL A,#07H
  JZ EXIT_KEY   ;键盘去抖动
  MOV R5,A    ;临时将键值存入R5
  MOV R4,#00H   ;用于控制调时快进速度
  ;设置为00H是为了在进入长按处理前加长延时区分用户的长按与短按,防止误快进
  
LOOP:      ;进入长按处理
  LCALL DISPLAY  ;使长按时显示正常 
  MOV A,P1
  CPL A
  ANL A,#07H
  JB 47H,LOOP1
  INC R4    ;调时快进间隔时间基准加1

LOOP1:
  CJNE R1,#03H,LOOP2 ;如果调秒时长按,则不处理
  LJMP LOOP3

LOOP2:
  CJNE R4,#99H,LOOP3 
  MOV R4,#70H   ;确认用户长按后,重新设定起始值,加快调时快进速度
  SETB 46H   ;长按调整(调时快进)标志   
  LCALL ADD_KEY
  LCALL DEC_KEY

LOOP3:
  JNZ LOOP    ;等待键释放
  MOV A,R5   ;输出键值
  RET   

EXIT_KEY:
  RET

/*****延时子程序*****/
DELAY:  
  MOV R7,#150 
  DJNZ R7,$
  RET
  
/*****选择键处理子程序*****/
SET_KEY:
  CJNE R5,#01H,EXIT ;选择键键值
  INC R1    ;调整选择功能标志加一
  CJNE R1,#4,EXIT
  MOV R1,#0
  MOV 24H,#00H  ;调时闪烁基准清零
  RET

/*****增加键处理子程序*****/
ADD_KEY:
  CJNE R5,#02H,EXIT ;增加键键值
  CJNE R1,#01H,NEXT1 ;选择键功能标志为1,调时,否则跳出
  MOV A,23H
  ADD A,#01H
  DA A (责任编辑:admin)

织梦二维码生成器
顶一下
(0)
0%
踩一下
(1)
100%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容