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

    1. 
        •  深圳市z6尊龙官网产品分类列表

          联系我们

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

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

          Email:bly@tuanm9.com

          公司网址:https://www.tuanm9.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

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

          版权所有 深圳市z6尊龙官网光电有限公司     粤ICP备08129267号-1
          1. XML地图