51单片机矩阵键盘扫描和显示按下的次数

发布者:北极星小鹏最新更新时间:2021-06-24 来源: eefocus关键字:51单片机  矩阵键盘 手机看文章 扫描二维码
随时随地手机看文章

KEYCARD     BIT    00H             ;用于标志是否有键按下
KEYCOU  EQU    5AH       ;用于记录按下键的次数
    ORG     0000H     ;程序开始
    AJMP    START
    ORG     30H      ;为避免占用中断向量区,主程序从30H开始
START:
    MOV    SP,#5FH     ;设置堆栈的初始地址
    MOV    P3,#0FH     ;P3,P2,P0的初始化
    MOV    P2,#00H
    MOV    P0,#0FFH
    CLR    KEYCARD     ;有按键标志清0
 MOV    KEYCOU,#0       ;计数初值赋0
LOOP:           ;循环扫描键盘
    ACALL  KEY_CHECK
    JNB    KEYCARD,DISPLAY
    INC    KEYCOU
DISPLAY:          ;显示程序
 MOV    A,KEYCOU     ;选显示第一位高位
 DA     A
 ANL    A,#0xF0        ;获得高四位
 SWAP   A      ;将A的高四位和低四位对调
 MOV    DPTR,#TAB    ;获得对应的显示码
 MOVC   A,@A+DPTR
 MOV    P0,A         ;把显示码传至A口
 MOV    P2,#01H        ;选通P2.0,显示
 ACALL  DELAY1S
 MOV    A,KEYCOU
 DA     A
 ANL    A,#0x0F
 MOVC   A,@A+DPTR
 MOV    P0,A
 MOV    P2,#02H     ;选通P2.1,显示
 ACALL  DELAY1S
    AJMP    LOOP
KEY_CHECK:       ;看有没有键按下
    MOV    A,P3
    ANL    A,#0FH
    CJNE    A,#0FH,KEY_CER   ;如果读入的与写出的不相等,延时消抖
    CLR    KEYCARD
    RET
KEY_CER:       ;延时,再读入,看是否真的有键按下
    ACALL    DELAY1S
    MOV    A,P3
    ANL    A,#0FH
    CJNE    A,#0FH,KEY_CE
    CLR    KEYCARD
    RET
KEY_CE:
 MOV     A,P3     ;直等到按键放下,则算作一次
 ANL     A,#0FH
 CJNE    A,#0FH,KEY_CE
    SETB    KEYCARD        ;真的有键按下,则置标志位
    RET
DELAY1S:       ;延时函数
    MOV    R7,#10
D1:
    MOV    R6,#50
    DJNZ    R6,$
    DJNZ    R7,D1
    RET
KEY_VALUE:                          ;键值表
 DB 0EBH,0DBH,0BBH,7BH,0E7H,0D7H,0B7H,77H
TAB:                                ;显示码
    DB    0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90
    END

关键字:51单片机  矩阵键盘 引用地址:51单片机矩阵键盘扫描和显示按下的次数

上一篇:单片机流水灯小程序
下一篇:实例源码2---基于51单片机的摇摇棒制作

推荐阅读最新更新时间:2024-11-12 19:19

51单片机—8255A详细介绍(全!)—04
这个学期学的微机原理~~ ,课件很是给力啊~~呵呵 8255A的原程序设计什么的网上很多~~也有好多Proteus仿真的,但是这里面的大多数都是简单的几行搞定的~~我晕咧,里面的好多东西其实都没有用到~~ ,呵呵,其实我也就是做个小小的实验,先把原理贴出来,供以后用,其中Proteus仿真真的不给力啊~~浪费了我好多时间,定时计数器竟然一会快,一会慢~~shit,让我白白调了半天~~这么简单的程序 看看我的仿真的程序~~(c语言程序在最后~~) 其中有两个可以控制移位方向的,就是为了验证那个Proteus仿真51的时候定时器不准确的 然后就是详细介绍了 8255A的详细介绍 1、引脚图: 2、内部结构和引脚
[单片机]
<font color='red'>51单片机</font>—8255A详细介绍(全!)—04
51单片机IO口模拟串口通讯6
/*************************************************************** *模拟接收程序,这个程序的作用从模拟串口接收数据,然后将这些数据发送到实际串口 *在单片机上模拟了一个串口,使用P3.2作为发送和接收端 *以P3.2模拟串口接收端,从模拟串口接收数据发至串口 *本程序来源于《单片机IO口模拟串口程序(发送+接收)》 *硬件环境:11.0592MHz, RXD P3.2 ***************************************************************/ #include reg51.h #include stdio.h
[单片机]
基于89C51单片机的机械臂智能抓取系统
摘 要 :在农业发展过程中,果实采摘是极度耗费人力的工作。为了减少农业生产过程中的人工成本,将人工智能应用于农业领域将是一种有效手段。基于单片机的控制设计出一款智能抓取系统,拥有六关节高自由度机械臂 ;爪子采用柔性材料,在加强爪子和果实贴合度的情况下减少对果实的损伤程度 ;采用视觉系统进行图像处理,并采集三位坐标 ;采用避障系统控制小车前进 ;通过增加蓝牙模块让人工参与变得更加简便。本文设计的基于单片机的多关节机械臂抓取系统,有望提高农业采摘的效率,减少人工成本,将农业生产过程智能化。 0 引 言 中国自古是农业大国,以传统农业生产方式为主。然而,随着国际人口的增长,对自然资源的需求也不断加大。这使得传统农业生产出现了越来越严
[单片机]
基于89C<font color='red'>51单片机</font>的机械臂智能抓取系统
51单片机程序——让点阵动起来
#include reg52.h unsigned char code table ={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; void Delay(unsigned int t); void main (void) { unsigned char i; P1 = 0xff; while (1) { for(i=0;i 8;i++) { P0=table ; Delay(50000); P0=0xff; Delay(50000); }
[单片机]
采用51单片机CPLD构建复杂电路系统的设计思想
  一、引言   单片机市场可以用巨无霸来形容,其中51 单片机使用者就更多了,针对51 单片机无需更多的介绍,这里必须强调一点,只要你精通了51 单片机,以后在实际工作中选用其它单片机也很容易了,这就是初学者学习51 单片机的价值。选择51 单片机学习入门容易,倒不是说51 系列单片机比别的型号简单,其实在8 位单片机家族中,51 系列单片机算是复杂的,但51 单片机在中国推广最彻底,教程也是最丰富,基本不用看英文资料就能学好,所以特别适合初学者学习用。   下面说说CPLD,从近来跟学生和爱好者交往中发现,初学者都很“讨厌”它,问我为什么要把单片机和CPLD 放一块儿,那样不是增加了学习的难度吗?其实深入学习单片机后,你就
[单片机]
采用<font color='red'>51单片机</font><font color='red'>和</font>CPLD构建复杂电路系统的设计思想
PIC16F877矩阵键盘的识别
关于矩阵键盘的识别方法在51矩阵键盘识别中已经说过,现在要说的是PIC单片机与51单片机的区别,主要是PIC单片机的口子的输入输出需要TRISn寄存器设置,具体如下: 扫描法: #include pic.h #define uchar unsigned char #define uint unsigned int uchar num; const uchar SSEG ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; void delay1ms(uint z) { uint x; uchar
[单片机]
51单片机系列连载5—定时器
在上一节中我们提到,中断最明显的应用就是定时器,接下来就介绍一下定时器,实际上定时器就是一种计数器,定时/计数器的实质是加1计数器(16)位,由高8位和低8位两个寄存器组成,主要是TMOD与TCON这两个寄存器。 TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。 首先,说一下TMOD寄存器,它的低四位用于T0,高四位用于T1,其格式如下: 其中,GATE:门控位。GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;GATA=1时,要用软件使TR0或TR1为1,同
[单片机]
LCD液晶显示51单片机简单计算器
概述 LCD液晶显示的51单片机简单计算器可实现完成了两个范围在0到255的数加、减、乘、除运算,其中减法可显示负数,除法只保留整数并由LCD液晶显示。并在实验室实验箱,实现上述功能。完成该任务需要熟悉和了解控制LCD液晶屏的显示的方法,矩阵键盘读取按键值的方法、89C51系列单片机的相关知识、C51编程和数字电子技术的相关知识。 完整代码:https://download.csdn.net/download/weixin_43786907/16524021。 方案 我使用实验室试验箱的2×8矩阵键盘作为的16个按键作为输入分别为0到9、“+”、“-”、“*”、“/”、“=”与复位,由单片机计算并通过LCD显示。 矩阵键盘
[单片机]
LCD液晶<font color='red'>显示</font>的<font color='red'>51单片机</font>简单计算器
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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