数码管显示4X4键盘矩阵按键

发布者:advancement3最新更新时间:2021-12-22 来源: eefocus关键字:数码管显示  4X4键盘  矩阵按键 手机看文章 扫描二维码
随时随地手机看文章

功能:数码管显示4X4键盘矩阵按键 PROTEUS 和51单片机教程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

程序源代码如下:


/*

数码管显示4X4键盘矩阵按键

*/

#include

typedef unsigned char uint8;

typedef unsigned int uint16;


#define BUZZER() P3 ^= 0x01


code uint8 LED_CODE[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,

0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};


void delay(uint16 x)

{

uint16 i,j;

for(i = x; i > 0; i --)

for(j = 114; j > 0; j --);

}


uint8 Pre_KeyNO = 16,KeyNO = 16;


void Keys_Scan()

{

uint8 Tmp;

P1 = 0x0f;

delay(1);

Tmp = P1 ^ 0x0f;//高4位输出,低4位输入

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;

delay(1);

Tmp = P1 >> 4 ^ 0x0f;//高4位输入,低4位输出

switch(Tmp)

{

case 1: KeyNO += 0; break;

case 2: KeyNO += 4; break;

case 4: KeyNO += 8; break;

case 8: KeyNO += 12;

}

}


void Beep()

{

uint8 i;

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

{

delay(1);BUZZER();

}

}


void main()

{

P0 = 0x00;

while(1)

{

P1 = 0xf0;

if(P1 != 0xf0)

Keys_Scan();

if(Pre_KeyNO != KeyNO)

{

P0 = LED_CODE[KeyNO];

Beep();

Pre_KeyNO = KeyNO;

}

delay(10);

}

}


关键字:数码管显示  4X4键盘  矩阵按键 引用地址:数码管显示4X4键盘矩阵按键

上一篇:单只按键控制单只数码管滚动显示
下一篇:单片机控制蜂鸣器唱生日快乐歌曲

推荐阅读最新更新时间:2024-10-28 11:41

基于AVR单片机的DS1302数码管时间显示C语言程序设计
#include iom16v.h #include macros.h #define uchar unsigned char #define uint unsigned int #include DS1302_drive.h uchar K1_FLAG=0; //定义按键标志位,当按下K1键时,该位置1,K1键未按下时,该位为0。 uchar const bit_tab ={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位选表,用来选择哪一只数码管进行显示 uchar const seg_data ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0
[单片机]
MSP430F149流水灯闪烁以及数码管显示
今天下午写了一个流水灯闪烁的实验,总的来说,不难,因为这块板子集合的电路图没有上一块那么复杂,所以总的来说,还是比较顺手,开始的时候,出现流水灯没有流转的现象,原来是没有加入延时函数,后来经过调整,结果很快就出来了 电路示意图: 示例代码: #include msp430x14x.h #define CPU_F ((double)8000000) #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) #define delay_ms(x) __delay_cycles((long)(CPU_F*(do
[单片机]
MSP430F149流水灯闪烁以及<font color='red'>数码管</font>的<font color='red'>显示</font>
我也玩单片机:8只数码管滚动显示单个数字
滚动显示0~7 源代码 1 #include reg52.h 2 #define uchar unsigned char 3 #define uint unsigned int 4 uchar code table ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0xff};//数字0~F的编码表。本程序只用了0~7 5 uchar code tab ={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//从左到右位置的地址变。1~8对应管脚高电平有效。本程序用位左移操作更佳。 6 void delay(uint z) 7 { 8
[单片机]
我也玩单片机:8只<font color='red'>数码管</font>滚动<font color='red'>显示</font>单个数字
数码管显示数字之C语言模拟
#define N 10 //最多可以输入10个数字 #i nclude stdio.h int check(char array ,int n) { //检查输入是否全为数字 int i; for(i=0;i n;i++) if(array '0'||array '9') return -1; return 1; } main() { char alpha ={{'*','*','*','*'},{'*',' ',' ','*'},{'*&
[单片机]
单片机系统中八段LED数码管显示器设计基础
在单片机系统中,常常用LED数码数码管显示器来显示各种数字或符号。由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。 引言:还记得我们小时候玩的“火柴棒游戏”吗,几根火柴棒组合起来,能拼成各种各样的图形,LED数码管显示器实际上也是这么一个东西。 八段LED数码管显示器 单片机静态显示接口 八段LED数码管显示器由8个发光二极管组成。基中7个长条形的发光管排列成“日”字形,另一个贺点形的发光管在数码管显示器的右下角作为显示小数点用,它能显示各种数字及部份英文字母。LED数码管显示器有两种不一样的形式:一种是8个发光二极管的阳极都连在一起的,称之为共阳极LED数码管显示器;另一种是8个发光二极管的阴极
[单片机]
单片机系统中八段LED<font color='red'>数码管</font><font color='red'>显示</font>器设计基础
stc15f104e单片机+max7219+ds18B02数码管温度显示
成品 电路图 PCB 图 CAD 外壳 热转印制PCB板 显微镜改台钻打洞 元件电路板 运行程序 15f104e是1T运行速度,晶体速度11.0529M 使用12T芯片延时降低10倍 #include reg52.h #include intrins.h #define uchar unsigned char bit flag1s = 0; //1s 定时标志 unsigned char T0RH = 0; //T0 重载值的高字节 unsigned char T0RL = 0; //T0 重载值的低字节 void ConfigTimer0(unsigned int ms); unsigned c
[单片机]
stc15f104e单片机+max7219+ds18B02<font color='red'>数码管</font>温度<font color='red'>显示</font>
51实验6:最后一个数码管显示0-9的任意一个数(不要求会变
#include reg52.h typedef unsigned int u16; typedef unsigned char u8; sbit LSA=P2^2; sbit LSB=P2^3; sbit LSC=P2^4; void delay(u16 i) { while(i--); } u8 code smgduan ={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f, 0x77,0x7c,0x39,0x5e,0x79, 0x71}; void DigDisplay() { //位置 switch(0)
[单片机]
(五).单片机输出电路的实践——数码管显示电路的设计
一.数码管显示电路设计 数码管分为共阴和共阳两种,一种是将LED内部所有的阳极连到一起,并通过com端引出。共阴则反之。 当锁存使能端为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。 数码管显示有静态显示和动态显示两种,静态显示即为对数码 管的每一段进行编码控制达到显示指定数字的目的。动态显示即通过锁存的方法利用人的视觉暂留,通过有限的单片机IO口显示更多的数码管。 如图,利用两个锁存器分别控制数码管的段选和位选,即利用了有限的IO口资源实现了控制多个数码管动态扫描显示的功能。 注:74HC573的D0-D7口分别接在单片机的IO口上。
[单片机]
(五).单片机输出电路的实践——<font color='red'>数码管</font><font color='red'>显示</font>电路的设计
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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