基于AT89C51单片机的矩阵键盘

发布者:BlossomJoy最新更新时间:2024-08-15 来源: cnblogs关键字:AT89C51  单片机  矩阵键盘 手机看文章 扫描二维码
随时随地手机看文章

/* Main.c file generated by New Project wizard
*
* Created: ?? 5? 18 2017
* Processor: AT89C51
* Compiler: Keil for 8051
*/

#include
#include
#define uchar unsigned char
void delay()
{

uchar j = 1000;
while(j--);
}
void liushuideng(void)
{
uchar duan[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar kkk = 0;
uchar i = 0;
P2 = 0xfe;
i = P2;
i = i&0xf0;
if(i!=0xf0)
{
delay();
i = P2;
i = i&0xf0;
if(i!=0xf0)
{
i = P2;
switch(i)
{
case 0xee:kkk = 0;break;
case 0xde:kkk = 4;break;
case 0xbe:kkk = 8;break;
case 0x7e:kkk = 12;break;
}
P1 = duan[kkk];
while(i!=0xf0)
{
i = P2;
i = i&0xf0;
}
}

}
P2 = 0xfd;
i = P2;
i = i&0xf0;
if(i!=0xf0)
{
delay();
i = P2;
i = i&0xf0;
if(i!=0xf0)
{
i = P2;
switch(i)
{
case 0xed:kkk = 1;break;
case 0xdd:kkk = 5;break;
case 0xbd:kkk = 9;break;
case 0x7d:kkk = 13;break;
}
P1 = duan[kkk];
while(i!=0xf0)
{
i = P2;
i = i&0xf0;
}
}

}
P2 = 0xfb;
i = P2;
i = i&0xf0;
if(i!=0xf0)
{
delay();
i = P2;
i = i&0xf0;
if(i!=0xf0)
{
i = P2;
switch(i)
{
case 0xeb:kkk = 2;break;
case 0xdb:kkk = 6;break;
case 0xbb:kkk = 10;break;
case 0x7b:kkk = 14;break;
}
P1 = duan[kkk];
while(i!=0xf0)
{
i = P2;
i = i&0xf0;
}
}

}
P2 = 0xf7;
i = P2;
i = i&0xf0;
if(i!=0xf0)
{
delay();
i = P2;
i = i&0xf0;
if(i!=0xf0)
{
i = P2;
switch(i)
{
case 0xe7:kkk = 3;break;
case 0xd7:kkk = 7;break;
case 0xb7:kkk = 11;break;
case 0x77:kkk = 15;break;
}
P1 = duan[kkk];
while(i!=0xf0)
{
i = P2;
i = i&0xf0;
}
}

}
}
void main(void)
{
while(1)
{
liushuideng();
}

}


关键字:AT89C51  单片机  矩阵键盘 引用地址:基于AT89C51单片机的矩阵键盘

上一篇:A/D转换
下一篇:单个数码管显示

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

业界七大主流单片机最细剖析
-- 51、MSP430、STM32、PIC、AVR、STC、Freescale 单片机现在可谓是铺天盖地,种类繁多,让开发者们应接不暇,发展也是相当的迅速,从上世纪80年代,由当时的4位8位发展到现在的各种高速单片机…… 各个厂商们也在速度、内存、功能上此起彼伏,参差不齐~~同时涌现出一大批拥有代表性单片机的厂商:Atmel、TI、ST、MicroChip、ARM…国内的宏晶STC单片机也是可圈可点… 下面为大家带来51、MSP430、TMS、STM32、PIC、AVR、STC单片机之间的优缺点比较及功能体现…… 51单片机 应用最广泛的8位单片机当然也是初学者们最容易上手学习的单片机,最早由Intel推出,由于其典型
[单片机]
单片机与键盘接口程序
单片机与键盘接口程序 void int1proc() interrupt IE1_VECTOR using 1 { unsigned char i, key; code unsigned char PS2TAB = {//20键PS2小键盘键码表 0x70,//0 0x69,//1 0x72,//2 0x7a,//3 0x6b,//4 0x73,//5 0x74,//6 0x6c,//7 0x75,//8 0x7d,//9 0x05,//F1 0x06,//F2 0x04,//F3 0x0c,//F4 0x03,//F5 0x0b,//F6 0x5a,//Enter 0x76,//Esc 0
[单片机]
嵌入式学习笔记21——AVR单片机之片内EEPROM
1. ATmega16单片机内部具有512字节的EEPROM,它是一个独立的数据空间。数据读写以一字节为单位,通过专用的指令来实现对EEPROM的操作,也可通过ISP,JTAG,并行编程的方式实现EEPROM的读写;采用内部RC振荡器的1MHz作为访问的定时时钟,其编程使用周期8848个周期,时间大约8.5ms;操作过程中尽量关闭中断,保证时序不被打断。 2. EEPROM存储器相关的寄存器 程序中可直接对地址寄存器EEAR赋值,如EEAR=0x01BA。 控制寄存器EECR用于控制单片机对EEPROM的操作 位3 EERIE:EEPROM中断准备好使能位。当EERIE置1而且全局中断I置
[单片机]
嵌入式学习笔记21——AVR<font color='red'>单片机</font>之片内EEPROM
MCS-51单片机内部RAM可分为几个区?以及作用?
00H-1FH为工作寄存器区,里面就是通用寄存器组R0-R7,每八个分一组,如第一组为R0-R7,地址位00-07H;假设第一组叫1(R0-R7),那么08-0FH为第二组,就叫2(R0-R7),依次类推共有4组。这个区域是最常用的数据区,数据的操作大部分在这里进行。通用寄存器分组的好处是:当程序切换(特别是被中断或抢占的时候)只需要切换一组寄存器就可以获得一组新的寄存器,而不必担心和别的程序冲突,也可以尽量少的进行入栈和出栈操作,提高运行效率。作用?当然是放数据,只不过这个地方最好用。 20H-2FH为可位寻址区,这里和通用寄存器组一样可以进行位寻址,也就是说可以比较方便的进行位操作,个人认为它和通用寄存器组的区别是,没有逐个
[单片机]
用89C51单片机的P1口输出正脉冲编程
用89C51的P1口,监测某一按键开关,使每按键一次,输出一个正脉冲(脉宽随意)。编出汇编语言程序。 解: ORG 0100H ABC:SETB P1.0 SETB P1.7 JB PI.7,$ JNB P1.7,$ CLR P1.0 MOV R2,#0 DAY: NOP NOP DJNZ R2,DAY SJMP ABC
[单片机]
米尔基于STM32MP135开发板裸机开发应用笔记,MCU友好过渡MPU
以前微处理器(MPU)与微控制器(MCU)是截然不同的两种设备,MPU支持丰富的软件系统,如Linux和相关的软件堆栈,而MCU通常将专注于裸机和RTOS。 近年来,随着MCU的性能越来越高,MCU和MPU之间的区别变得越来越模糊。 STM32MP135是一款入门级的高性价比MPU,适用于MCU性能达不到要求或者需要跑Linux的场景。 米尔的STM32MP135开发板提供基于STM32Cube的Bare metal裸机开发的软件,能够进一步加强实时性能支持以满足用户实现硬实时应用的需求。这一点尤其对习惯于使用MCU开发的用户来说非常友好,可以让开发者在使用MPU强大性能的同时获得类似MCU的开发体验。米尔提供了支持
[嵌入式]
米尔基于STM32MP135开发板裸机开发应用笔记,<font color='red'>MCU</font>友好过渡MPU
单片机低功耗几点内容
有做过低功耗产品开发的读者都应该知道,一个产品的功耗不光是硬件功耗的事,其实软件也是影响整个产品功耗的一个关键因素。 我之前也开发过几款使用电池供电的产品,调试起来,那叫一个痛苦,软件和硬件各种因素都要考虑。 当你确信软件没问题了,可能硬件某个地方又存在漏电流,这其中的“痛苦”我也不再这里描述了。 今下面以STM32为例,简单描述下低功耗时IO引脚的注意事项。 将未使用的GPIO输入配置为模拟输入 GPIO始终有一个输入通道,可以是数字或模拟通道。 如果不需要读取GPIO数据,则优先配置为模拟输入。这节省了输入施密特触发器的消耗。 在STM32CubeMX配置中都有这么一个选项:将不用引脚配置为模拟状态。
[单片机]
瑞萨推出全新RX261/RX260 MCU产品群, 具备卓越能效、先进触控功能及强大安全特性
2024 年 1 0 月 22 日,中国北京讯 - 全球半导体解决方案供应商瑞萨电子(TSE:6723)今日宣布推出RX261与RX260微控制器(MCU)产品群。这两款全新的64MHz MCU带来出色的能效比——工作模式下仅为69μA/MHz,待机模式下为1μA。此外,它们还能帮助设计人员轻松实现防水的电容式触控传感器设计,并提供强大的安全特性。得益于卓越性能与功能的完美结合,RX261/RX260产品群适用于家用电器、楼宇和工厂自动化等应用,以及智能锁、电动自行车和移动式热敏打印机等众多应用场景。 RX261/RX260产品群基于瑞萨的RXv3 CPU内核,在64MHz运行频率下可获得355CoreMark的评分
[单片机]
瑞萨推出全新RX261/RX260 <font color='red'>MCU</font>产品群,  具备卓越能效、先进触控功能及强大安全特性
小广播
设计资源 培训 开发板 精华推荐

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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