基于单片机的读矩阵键盘 ,用数码管显示相应键值 - 深圳led背光源生产厂家,lcd显示屏,lcm液晶显示模块|模组厂-尊龙凯时

  • 尊龙凯时


  • 

    •  深圳市尊龙凯时产品分类列表

      联系我们

      公司名称:深圳市尊龙凯时光电有限公司
      厂址:中国.广东省.深圳市宝安西乡臣田工业区

      营销专线
      吴先生 手机:13538278608
      胡先生 手机 :13823360976
      固定电话:86-0755-28246146/
      28246906/28246536/28247229
      电话传真:86-0755-89715671
      投诉与售后咨询 黄小姐:13823217679
      胡先生:13928021976

      Email:bly@zgquming.com

      公司网址:https://www.zgquming.com/

      基于单片机的读矩阵键盘,用数码管显示相应键值

      基于单片机的读矩阵键盘 ,用数码管显示相应键值

      /*****************************************************

      007.ASM

      接线 :P0口接数码管

      P2接矩阵键盘

      用定时中断,若一段时间无操作,数码管进入自到循环显示

      *******************************************************/

      ORG 0000H

      LJMP MAIN

      ORG 000BH

      LJMP INT_T0

      ORG 0020H

      MAIN: ;主程序

      MOV SP,#50H

      MOV DPTR,#LED_DATA ;取表首地址

      MOV TMOD,#01H ;设置定时器T0工作模式

      MOV TH0,#15H ;写计时初值

      MOV TL0,#9FH

      MOV P2,#0FFH ;P2口赋初值

      MOV R4,#00H ;赋定时计数初值

      SETB 00H ;00H为键值改变标志位

      SETB TR0 ;启动定时器T0

      MOV IE,#82H ;开中断

      LCALL SHOW ;数码管初始化

      loop: ;主循环

      LCALL KEY_READ ;读键盘

      JBC 00H,LOOP0 ;判断是否有键被按下 ,有则转去刷新输出并清零定时计数

      CJNE R4,#0C8H,LOOP ;没有键被按下,则判断定时时间是否达到 ,到,则进入数码管循环输出

      LCALL SHOW1 ;没到,则回到主循环,重新扫描键盘

      SJMP LOOP

      LOOP0:

      LCALL SHOW

      MOV R4,#00H

      SJMP LOOP ;输出刷新完毕,回到主循环 ,重新扫描键盘

      /*键盘扫描程序*/

      KEY_READ:

      CLR P2.6 ;P2.6输出低

      JB P2.0,N0_0

      MOV R0,#01H

      LCALL DELAY

      JB P2.0,N0_0

      JNB P2.0,$

      MOV R5,#04H

      SETB 00H

      SETB P2.6

      LJMP NEAT

      N0_0:

      JB P2.1,N0_1

      MOV R0,#01H

      LCALL DELAY

      JB P2.1,N0_1

      MOV R5,#03H

      JNB P2.1,$

      SETB 00H

      SETB P2.6

      LJMP NEAT

      N0_1:

      JB P2.2,N0_2

      MOV R0,#01H

      LCALL DELAY

      JB P2.2,N0_2

      JNB P2.2,$

      MOV R5,#02H

      SETB 00H

      SETB P2.6

      LJMP NEAT

      N0_2:

      JB P2.3,N1_0

      MOV R0,#01H

      LCALL DELAY

      JB P2.3,N1_0

      JNB P2.3,$

      MOV R5,#01H

      SETB 00H

      SETB P2.6

      LJMP NEAT

      N1_0:

      SETB P2.6

      CLR P2.5

      JB P2.0,N1_1

      MOV R0,#01H

      LCALL DELAY

      JB P2.0,N1_1

      JNB P2.0,$

      MOV R5,#08H

      SETB 00H

      SETB P2.5

      LJMP NEAT

      N1_1:

      JB P2.1,N1_2

      MOV R0,#01H

      LCALL DELAY

      JB P2.1,N1_2

      JNB P2.1,$

      MOV R5,#07H

      SETB 00H

      SETB P2.5

      LJMP NEAT

      N1_2:

      JB P2.2,N1_3

      MOV R0,#01H

      LCALL DELAY

      JB P2.2,N1_3

      JNB P2.2,$

      MOV R5,#06H

      SETB 00H

      SETB P2.5

      LJMP NEAT

      N1_3:

      JB P2.3,N2_0

      MOV R0,#01H

      LCALL DELAY

      JB P2.3,N2_0

      JNB P2.3,$

      MOV R5,#05H

      SETB 00H

      SETB P2.5

      LJMP NEAT

      N2_0:

      SETB P2.5

      CLR P2.4

      JB P2.0,N2_1

      MOV R0,#01H

      LCALL DELAY

      JB P2.0,N2_1

      JNB P2.0,$

      MOV R5,#0CH

      SETB 00H

      SETB P2.4

      LJMP NEAT

      N2_1:

      JB P2.1,N2_2

      MOV R0,#01H

      LCALL DELAY

      JB P2.1,N2_2

      JNB P2.1,$

      MOV R5,#0BH

      SETB 00H

      SETB P2.4

      LJMP NEAT

      N2_2:

      JB P2.2,N2_3

      MOV R0,#01H

      LCALL DELAY

      JB P2.2,N2_3

      JNB P2.2,$

      MOV R5,#0AH

      SETB 00H

      SETB P2.4

      LJMP NEAT

      N2_3:

      JB P2.3,NEAT

      MOV R0,#01H

      LCALL DELAY

      JB P2.3,NEAT

      JNB P2.3,$

      MOV R5,#09H

      SETB 00H

      SETB P2.4

      LJMP NEAT

      NEAT:

      SETB P2.4

      RET

      /*显示子程序*/

      SHOW:

      MOV A,R5

      MOVC A,@A+DPTR

      MOV P0,A

      RET

      /*循环显示子程序*/

      SHOW1: ;

      MOV R3,#00H

      LOOP1:

      MOV A,R3

      MOVC A,@A+DPTR

      MOV P0,A

      MOV R0,#35H

      LCALL DELAY

      INC R3

      LCALL KEY_READ

      JB 00H,RETUN1

      CJNE R3,#10H,LOOP1

      MOV R3,#00H

      SJMP LOOP1

      RETUN1:

      RET

      /*延时子程序*/

      DELAY:

      D0: MOV R2,#0FH

      D1: MOV R1,#0BFH

      D2: DJNZ R1,D2

      DJNZ R2,D1

      DJNZ R0,D0

      RET

      /*定时中断T0处理子程序*/

      INT_T0:

      CLR EA

      PUSH ACC

      INC R4

      MOV TH0,#15H

      MOV TL0,#9FH

      POP ACC

      SETB EA

      RETI

      /*数码管显示代码,0~F*/

      LED_DATA:

      DB 03H,9FH,25H,0DH,99H,49H,41H,1FH

      DB 01H,09H,11H,0C1H,63H,85H,61H,71H

      END

      
      首 页 | 公司简介 | 企业荣誉 | 产品中心 | 新闻中心 | 联系我们 | 集团首页

      版权所有 深圳市尊龙凯时光电有限公司     粤ICP备08129267号-1

    • XML地图