51单片机程序——4乘4矩阵键盘使用方法

发布者:勾剑寒最新更新时间:2016-01-22 来源: eefocus关键字:51单片机  4乘4  矩阵键盘 手机看文章 扫描二维码
随时随地手机看文章
#include
 
#define uint unsigned int
#define uchar unsigned char
#define dula P0 
#define wela P1 
 
unsigned char code DuanMa[]={0xc0,0xf9,0xa4,0xb0, 
                    0x99,0x92,0x82,0xf8, 
                    0x80,0x90,0x88,0x83,
    0xa7,0xa1,0x86,0x8e,0xff};
 
uchar num,temp;
 
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
 
uchar keyscan();
void display(uchar aa);
 
void main()
{
num=16;
while(1)
{
display(keyscan());
}
}
 
void display(uchar aa)
{
wela=0xff;
dula=DuanMa[aa];
}
 
uchar keyscan()
{
P2=0xef;
temp=P2;
temp=temp&0x0f;
while(temp!=0x0f)                 //确认是否按下
{
delay(5);
temp=P2;
temp=temp&0x0f;
while(temp!=0x0f)
{
temp=P2;
switch(temp)
{
case 0xee:num=0;
     break;
case 0xed:num=1;
     break;
case 0xeb:num=2;
     break;
case 0xe7:num=3;
     break;
}
while(temp!=0x0f)          //松手检测
{
temp=P2;
temp=temp&0x0f;
}
}
 
}
P2=0xdf;
temp=P2;
temp=temp&0x0f;
while(temp!=0x0f)
{
delay(5);
temp=P2;
temp=temp&0x0f;
while(temp!=0x0f)
{
temp=P2;
switch(temp)
{
case 0xde:num=4;
     break;
case 0xdd:num=5;
     break;
case 0xdb:num=6;
     break;
case 0xd7:num=7;
     break;
}
while(temp!=0x0f)
{
temp=P2;
temp=temp&0x0f;
}
}
 
}
P2=0xbf;
temp=P2;
temp=temp&0x0f;
while(temp!=0x0f)
{
delay(5);
temp=P2;
temp=temp&0x0f;
while(temp!=0x0f)
{
temp=P2;
switch(temp)
{
case 0xbe:num=8;
     break;
case 0xbd:num=9;
     break;
case 0xbb:num=10;
     break;
case 0xb7:num=11;
     break;
}
while(temp!=0x0f)
{
temp=P2;
temp=temp&0x0f;
}
}
 
}
P2=0x7f;
temp=P2;
temp=temp&0x0f;
while(temp!=0x0f)
{
delay(5);
temp=P2;
temp=temp&0x0f;
while(temp!=0x0f)
{
temp=P2;
switch(temp)
{
case 0x7e:num=12;
     break;
case 0x7d:num=13;
     break;
case 0x7b:num=14;
     break;
case 0x77:num=15;
     break;
}
while(temp!=0x0f)
{
temp=P2;
temp=temp&0x0f;
}
}
 
}
return num;
}

关键字:51单片机  4乘4  矩阵键盘 引用地址:51单片机程序——4乘4矩阵键盘使用方法

上一篇:51单片机程序——按键控制单个数码管显示
下一篇:51单片机程序——数码管动起来

推荐阅读最新更新时间:2024-03-16 14:45

51单片机烧写详细全部过程
软件:Easy 51Pro v2.0; 工具: 1.5V电源; 2.Easy ISP下载线(制作过程参见《自制Easy ISP下载线》一文; 3.51单片机最小实验板(带光柱),制作过程参见《自制51单片机最小系统板》一文; 4..Hex文件,生成过程参见《Keil Uv2.0生成51单片机的Hex 文件详细过程》一文 ; 准备工作: 1.确定Easy ISP下载线并口已连接上计算机,ISP接口与实验板相接; 2.确定5V电源连接实验板(技巧:查看电源指示灯是否亮,接通则亮,否则不亮); 步骤: 1.首先打开Easy 51Pro应用程序; 2.选择单片机型号“AT89S51”,并观察软件右边“状态”信息;
[单片机]
<font color='red'>51单片机</font>烧写详细全部过程
51单片机定时时间的计算
单片机根据计时/计数模式的不同,来进行计算 举例:当我们选择模式1,16位计时计数器,16位计数器最大十进制数值为65536。来计算定时50ms所定义TH0与TL0的值 首先计算计数值: 计数值=50000us(50ms转换成微秒)*11.0592(晶振大小)/12 计算结果=46080 再计算TH0=(65536-46080)/256 TL0=(65536-46080)%256 //8位逢256进位,整除的结果为高位,取余的结果为低位
[单片机]
<font color='red'>51单片机</font>定时时间的计算
51单片机实验12:EEPROM(IIC总线) 应用
开发板EEPROM模块电路图如下: 目的:实现单片机与开发板AT24C02芯片通信。 实验现象:下载程序后数码管后4位显示0,按K1保存显示的数据,按K2读取上次保存的数据,按K3显示数据加一,按K4显示数据清零。最大能写入的数据是255。 开发板独立按键的使用及原理图参考:https://blog.csdn.net/cax1165/article/details/86566884 开发板数码管的使用及原理图参考:https://blog.csdn.net/cax1165/article/details/86557551 EEPROM(IIC总线) 以及AT24C02工作原理参考:https://blog.cs
[单片机]
<font color='red'>51单片机</font>实验12:EEPROM(IIC总线) 应用
一款简易示波器的设计方案
  随着电子通信以及教学事业的发展,示波器的应用越来越广泛,它在教学中所起到的作用越来越重要,示波器可以测量信号的幅度,频率以及波形等等,但是高精度的示波器非常昂贵,对于非盈利事业的教学组织来说无疑不合适,所以提出了一种以单片机为控制核心的简易示波器设计方案。它由前向控制部分,数据采集和存储部分,51单片机控制部分以及按键和MS12864R显示部分组成。   1 简易数字示波器的工作原理以及总体框架   本设计硬件电路部分由单片机控制系统电路,前向输入调理电路,模数转换和存储电路,以及按键显示电路组成。其工作的基本思路就是以单片机为控制核心,让AD芯片完成数据的离散化,采集数据经过缓冲暂存于存储器里面,当波形显示时,单片机从存
[单片机]
一款简易示波器的设计方案
51单片机--LED类编程技巧
首先点阵:(以最简单的8X8为例,16X16的以后再说) 8X8点阵 个人感觉点阵需要注意的地方有: 第一个就是驱动点阵的方式 我认为8X8点阵的驱动程序分为行扫描和列扫描两种。 比如行扫描就是用一层for循环: 先选中第一行,然后送入这一行的数据,再选择第二行,然后送入第二行数据,如此循环下去,直至显示完一个屏幕(即8行),同时记得要消隐和微延时(后面会说消隐和微延时),列扫描同理。如图是代码示例: 8X8点阵,无滚动效果 第二个就是滚动效果的实现。 思路是: 一:扫描函数不变,每扫描一个屏幕,所有数据移动一位;(代码实现简单) 二:数据不变,每次读取数据的起始位置移动一
[单片机]
<font color='red'>51单片机</font>--LED类编程技巧
8051单片机架构类型有哪些
8051单片机使用8位数据总线,因此它们最多可以支持64K的外部数据存储器和64k的外部程序存储器。总的来说,8051单片机可以寻址128k的外部存储器。 当数据和代码位于不同的内存块时,这种架构被称为哈佛架构。如果数据和代码位于同一内存块中,则该架构称为冯诺依曼架构。 冯诺依曼架构 冯诺依曼架构最早由计算机科学家约翰冯诺依曼提出。在这种架构中,指令和数据都存在一个数据路径或总线。因此,CPU一次执行一项操作。它要么从内存中获取指令,要么对数据执行读/写操作。因此取指令和数据操作不能同时发生,共享公共总线。 冯诺依曼架构支持简单的硬件,它允许使用单个顺序存储器。今天的处理速度大大超过了内存访问时间,只使用了非常快且数量
[单片机]
80<font color='red'>51单片机</font>架构类型有哪些
AT89C51单片机应用于数控车床切削力测量
  本文就介绍了应用AT89C51单片机测量数控车床切削力的新方法,重点阐述了单片机实现连续自动采样、A/D转换、标度变换及数据处理的方法。   1 问题的提出   在数控车床的加工中,切削力的测量甚为重要。通过对切削力的测量可以分析与研究数控车床各零部件、机构或结构的受力情况和工作状态,验证设计和计算结果的正确性,确定整机工作过程中的负载谱和某些物理现象的机理。因此,他对发展设计理论、保证数控机床安全可靠地运行以及实现数控机床自动加工、自动检测、自动控制和切削力过载报警等都具有十分重要的作用和适用价值。   2 系统硬件接口电路的设计   系统硬件原理框图如图1所示。系统以AT89C51单片机为控制核心,外围电路针对单片
[测试测量]
AT89C<font color='red'>51单片机</font>应用于数控车床切削力测量
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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