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

发布者:江上HZ最新更新时间:2018-03-07 来源: eefocus关键字:单片机  矩阵键盘  数码管显示 手机看文章 扫描二维码
随时随地手机看文章

/*****************************************************
    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


关键字:单片机  矩阵键盘  数码管显示 引用地址:基于单片机的读矩阵键盘,用数码管显示相应键值

上一篇:红外接收(模拟串口接收)程序
下一篇:单片机控制的松下伺服电机正反转程序

推荐阅读最新更新时间:2024-03-16 15:56

自制“心形”单片机呼吸灯
所谓的“呼吸灯”,就是通过程序控制led灯的闪烁过程,像呼吸一样有节奏。有亮度渐变的过程。 先来张效果图: 这图片有点大。。。。 这是未加修饰的样子,不过进行了简单的装饰后,就变身超级有爱的东西了 制作过程: 1 //****************************** 2 // 51单片机模拟呼吸灯 3 // 2012.9.23 4 // menglei 5 // p0.0接一个LED灯,状态0为亮 6 //****************************** 7 8 9 #include reg52.h 10 #define N 2 //亮暗的速率
[单片机]
自制“心形”<font color='red'>单片机</font>呼吸灯
51单片机自动打铃C语言程序
51单片机自动打铃C语言程序: #include reg51.h #include intrins.h #define uchar unsigned char #define uint unsigned int uchar code DSY_CODE = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//共阴极总段// uchar DSY_BUFFER ={0,0,0xBF,0,0,0xff,0,0};//时间显示时-分 模式 uchar DSY_BUFFER1 ={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
[单片机]
51<font color='red'>单片机</font>自动打铃C语言程序
基于C504单片机的变频调速系统
    摘要: 介绍了一种以C504专用芯片和智能功率模块IPM为基础的SPWM变频调速系统。它可以实现输出频率在0~60Hz和载波频率在500Hz~10kHz之间变化,有数条V/F曲线、启动时间、载波比和调制方式等选择功能,并具有多种保护功能和人机对话功能,对参数可随时调节。     关键词: C504芯片 SPWM 变频调速 捕捉/比较单元(CCU) 随着变频调速应用的日益广泛,相关技术的日益成熟,人们不仅对变频调速系统的性能要求越来越高,而且对控制芯片的功能要求越来越多,对功能开关元件的智能化要求越来越高,以满足生产的需求并适应不同的工作环境。为此,本文介绍了一种主电路采用智能模块IPM,控制芯片采用西
[应用]
兆易创新:公司MCU产品价格主要受供需关系的影响
今日,有投资者在互动平台问及兆易创新目前8英寸代工产能紧缺,公司产品是否会涨价? 对此,兆易创新回应称,公司MCU产品价格主要受供需关系影响,也会因应供需情况、产业链的供应情况等做调整。 资料显示,兆易创新的产品主要包括存储器(NOR Flash、NAND Flash和正在研发的DRAM)、微控制器(MCU)以及传感器(Sensor)三大类。 在 MCU 产品方面,兆易创新通用产品系列将向高性能、超低功耗两个方向推进。高性能、高可靠性产品主要面向高级工控领域,实现高主频、高速数字信号处理,高精度控制、器件级、系统及可靠性。低功耗产品主要面向可穿戴及其他电池供电低功耗应用,实现片内低功耗系统设计、 器件级功耗优化。
[手机便携]
车规MCU知识梳理大全
一辆传统燃油车需要大约500到600颗芯片,轻混汽车大约需要1000颗,插电混动和纯电动汽车则需要至少2000颗芯片。这就意味着在智能电动汽车快速发展的过程中,不仅对先进制程芯片需求不断增加,而且对传统芯片需求也会持续增加。MCU就是这样,除了单车搭载的数量在不断增长,域控制器也带来了对高安全、高可靠、高算力MCU的新需求增长。 MCU,Microcontroller Unit,中文称单片微型计算机/微控制器/单片机,将CPU、存储器、外围功能整合在单一芯片上,形成具有控制功能的芯片级计算机,主要用于实现信号处理和控制,是智能控制系统的核心。 MCU和汽车电子,工业,计算机和网络,消费电子,家电和物联网等我们生活和工作密切
[嵌入式]
车规<font color='red'>MCU</font>知识梳理大全
如何解决AVR单片机烧写过程中弄错熔丝位而造
在AVR单片机烧写的过程中,难免有弄错熔丝位的时候,结果是AVR单片机无法读写了!这时我们该怎么办呢,将昂贵的芯片丢掉,再用一块新的。其实这一般是没有必要的,写错熔丝位而导致单片机不能读写,一般不外乎(个人愚见)设设置错了时钟模式,比如说本来是用内部晶振的,结果弄成了外部晶振,而单片机的外部有没有接晶振,这时单片机没有了时钟信号,当然就没有办法在读写了,估计大家也猜到了怎么办了吧,是的,就是由外部提供时钟源。 有第一张图的时钟选择,我们就知道我们得准备多种时钟源: 高频石英/陶瓷晶振,这个直接接在 单片机 晶振位置就可以了,注意频率不要太高,4~5M的就可以了,不放心的话,接两个20P~30P的电容也行! 低频晶振,和
[单片机]
如何解决AVR<font color='red'>单片机</font>烧写过程中弄错熔丝位而造
基于ATmega16单片机SPI的串行ADC接口设计
1、AVR单片机的SPI接口     SPI(Serial Peripheral Interface---串行外设接口)总线系统是一种同步串行外设接口,允许MCU与各种外围设备以串行方式进行通信、数据交换,广泛应用于各种工业控制领域。基于此标准,SPI系统可以直接于各个厂家生产的多种标准外围器件直接接口。SPI接口通常包含有4根线:串行时钟(SCK)、主机输入/从机输出数据线(MISO)、主机输出/从机输入数据线(MOSI)和低电平有效的从机选择线SS。在从机选择线SS使能的前提下,主机的SCK脉冲将在数据线上传输主/从机的串行数据。主/从机的典型连接图如图(1)所示:                              
[单片机]
基于ATmega16<font color='red'>单片机</font>SPI的串行ADC接口设计
实时单片机通讯网络中的内存管理
      摘要:为提高单片机通讯的实时性,采用了动态的内存管理方法,并将其应用到AUTO 2000DCS系统中,获得了满意的效果。      关键词: 动态分区 静态分区 最先适应法 内存表      在AUTO 2000 DCS系统中,我们采用了单片机实时通讯网络.这是一种具有不确定控制站监控的主从式总线网络.大致的工作过程是网络系统上电,各站点进行控制权争夺确立控制站和非控制站;控制站轮询各站点,被轮询的站点若有数据发送即成为主站,执行主机/从机的通讯;通讯结束后(无论成功与否)主站将控制权归还给控制站;控制站然后轮询下一个站点,周而复始。        为了提高通讯效率,采取了
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved