单个数码管显示4x4矩阵按键

最新更新时间:2022-01-13来源: eefocus关键字:数码管显示  4x4  矩阵按键 手机看文章 扫描二维码
随时随地手机看文章

代码:


#include

#define uchar unsigned char

#define uint unsigned int

sbit BEEP = P3^7;


uchar code DSY_CODE[]=

{

  0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x00

};

uchar Pre_KeyNO = 16,KeyNO = 16;


void DelayMS(uint ms)

{

  uchar t;

while(ms--)

{

for(t=0;t<120;t++);

}

}


void Keys_Scan()

{

  uchar Tmp;

P1 = 0x0f;

DelayMS(1);

Tmp = P1 ^ 0x0f;

switch(Tmp)

{

case 1: KeyNO = 0; break;

case 2: KeyNO = 1; break;

case 4: KeyNO = 2; break;

case 8: KeyNO = 3; break;

default: KeyNO = 16;

}

P1 = 0xf0;

DelayMS(1);

Tmp = P1 >> 4 ^ 0x0f;

switch(Tmp)

{

case 1: KeyNO += 0; break;

case 2: KeyNO += 4; break;

case 4: KeyNO += 8; break;

case 8: KeyNO += 12;

}

}


void Beep()

{

  uchar i;

for(i=0;i<100;i++)

{

DelayMS(1);

BEEP = ~BEEP;

}

BEEP = 1;

}


void main()

{

  P0 = 0x00;

while(1)

{

P1 = 0xf0;

if(P1 != 0xf0)

Keys_Scan();

if(Pre_KeyNO != KeyNO)

{

P0 = ~DSY_CODE[KeyNO];

Beep();

Pre_KeyNO = KeyNO;

}

DelayMS(100);

}

}


硬件连接:

在这里插入图片描述

关键字:数码管显示  4x4  矩阵按键 编辑:什么鱼 引用地址:单个数码管显示4x4矩阵按键

上一篇:单片机INT0及INT1计数器
下一篇:INTO中断计数器

推荐阅读

用单片机AT89C51驱动两位数码管显示00--99依次循环程序代码
;两位数码管显示00--99依次循环org 0000ha_bit equ 20h ;数码管个位数存放内存位置b_bit equ 21h ;数码管十位数存放内存位置temp equ 22h ;计数器数值存放内存位置star: mov temp,#0 ;初始化计数器,从0开始stlop: acall display;调用显示子程序inc temp;对计数器加1mov a,tempcjne a,#100,next ;判断计数器是否满100?mov temp,#0;满100就清零重新开始next: ljmp stlop;不满就循环执行;显示子程序display: mov a,temp ;将temp中的十六进制数转换成10进制mov b,#1
发表于 2023-01-12
51单片机数码管静态显示和动态显示原理及实验 夜猫子
数码管多位数码管,即是两个或两个以上单个数码管并列集中在一起形成一体的数码管。当多位一体时,它们内部的公共端是独立的,而负责显示什么数字的段线全部是连接在一起的,独立的公共端可以控制多位一体中的哪一位数码管点亮,而连接在一起的段线可以控制这个能点亮数码管亮什么数字,通常我们把公共端叫做“位选线”,连接在一起的段线叫做“段选线”有了这两个线后,通过单片机及外部驱动电路就可以控制任意的数码管显示。一般一位数码管有10个引脚,二位数码管也是10个引脚,四位数码管是12个引脚。为了更方便区分段选和位选,请看下原理图:如图为两个4位一体的数码管,可以看到与8个com相连的是两个数码管的位选,位选与引脚相连,所以位选控制那个灯亮。段选可以看到a
发表于 2023-01-12
51单片机<font color='red'>数码管</font>静态<font color='red'>显示</font>和动态<font color='red'>显示</font>原理及实验 夜猫子
51单片机独立按键和矩阵按键实现
独立按键实验按键是一种电子开关,使用时轻轻按开关按钮就可使开关接通,当松开手时,开关断开。我们开发板上使用的按键及内部简易图如下图所示管脚与管脚之间(注意是距离)距离长的是导通状态,短的是接通状态。通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,电压信号如下图所示:如图所示,按键闭合式不会立刻稳定的接通,断开时也不会一下子断开,会伴随一些抖动。抖动的时间长短有按键特性决定,一般为5Ms到10ms.按键抖动会引起按键被误读多次。为了确保 CPU 对按键的一次闭合仅作一次处理,必须进行消抖。消抖消抖可分为硬件消抖和软件消抖。为了使电路更加简单,通常采用软件消抖。一般来说一个简单的按键消抖就是先读取按键的状态, 如果得到按键按下
发表于 2023-01-12
ADC0832数码管显示电压表汇编程序
;***********************************************************;* *;* 数字电压表演示程序 *;* *;***********************************************************;功能: 数码管显示ADC0832采样值;适用于 MCS-51 开发板;创作人: Jihao;=====================================================AD_CLK EQU P1.5AD_DAT EQU P1.6AD_CS EQU P1.4DISSTART EQU 30H ;显示单元首地址LED_DATA
发表于 2023-01-04
单片机数码管显示0~9
任务描述:某企业承担了一个LED数码显示设计任务;要求单片机控制一个数码管显示0→1→2→3→4→5→6→7→8→9,每个状态停留1秒。请用单片机设计其控制系统并调试运行。硬件电路原理图元件清单数码管显示数的字形码(根据选用数码管的型号使用,共阳极与共阴极)C语言程序#include<reg51.h>void delay1s();unsigned char LED[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};void main(){unsigned char i;TMOD=0X10;while(1){for(i=0;i<10;i++){P1=LED[i
发表于 2022-12-20
单片机<font color='red'>数码管</font><font color='red'>显示</font>0~9
51单片机实现数码管动态显示60~0
硬件电路原理图元件清单C语言程序#include <reg51.h>unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //数码管字符码void show(unsigned char n);void delay(unsigned int k);void main(){unsigned char i;int j;while(1){for(i=60;j=60,i>0;i--)while(j--)show(i);}}void show(unsigned char n){P0=table[n%10];P1=0x01;delay
发表于 2022-12-20
51单片机实现<font color='red'>数码管</font>动态<font color='red'>显示</font>60~0

推荐帖子

【行空板 Python编程学习主控板】开源-行空板扩展板(转换板)设计
行空板的IO接口是3.3V电压等级的,而且,我自己的一些模块,与DF的模块接口并不是一样的,所以,设计了一个转接板,一方面,可以连接行空板。也可以将行空板上的信号转换一下,只取信号,电源另外供电。扩展板除了有micro:bit立式的插座,还有一个pice-x4的连接器,可以连接自己设计的主控板反向连接DF的模块。金手指设计,为了兼容自己设计的另一块扩展板。板载5V-3.3V的DCDC电源,根据使用的DCDC芯片不同,2A的输出能力是足够的。正面是一些连接器,电源。背面是一个Typ
jinyi7016 嵌入式系统
8051系列单片机BASIC语言开发环境简介
BASIC语言已经发展到QuickBASIC、VisualBasic以后,已经具备了很多结构化思想和编程方式,如函数、模块、局部变量、全局变量、数据传递等。  早期的BASIC语言由于生成的代码不是最终目标机器的代码,而是经过一个RUNTIME程序解释后运行的,因而执行效率低。而单片机的BASIC编译器直接将代码编译成相应芯片的机器码,不需要在单片机的内存中驻留RUNTIME程序,执行效率与其他编译器编译出来的一样。   MCS-Electronics公司开发的BASCOM-8051开发环
程序天使 51单片机
跪求zrtech的PERII_8KD的资料
跪求zrtech的PERII_8KD的资料,各位大大,谢谢啦跪求zrtech的PERII_8KD的资料
a972043362 FPGA/CPLD
PCB的封装
今天画一个无线模块的封装,有于模块有天线所以在封装的过程中,文中提及到屏蔽焊盘,“屏蔽焊盘不要将主机的PCB顶层覆铜置于屏蔽焊盘下方”这是什么意思,没有看明白,林外屏蔽焊盘怎么画,球大神解答!! PCB的封装
李嘉辉 PCB设计
国产M0芯片移植FreeRTOS笔记一
本帖最后由LONGSHEN1于2020-9-1017:14编辑 笔者趁着闲暇将FreeRTOS移植到一个国产MCU上,FreeRTOS还是非常容易移植的,网上的参考资料也非常多,FreeRTOS在全球嵌入式市场分析报告中一直是小型嵌入式操作系统使用率最高的,以下是移植记录:一、前期准备准备一个简单的工程模板,比如一个点亮LED的程序即可;二、源码下载从网址https://sourceforge.net/projects/freertos/files/FreeRT
LONGSHEN1 实时操作系统RTOS
小广播
设计资源 培训 开发板 精华推荐

何立民专栏 单片机及嵌入式宝典

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

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