资源简介
例LY-K4矩阵键盘程序
代码片段和文件信息
/***************************************************************************
标题: 4*4键盘程序
效果: 按键盘,数码管显示键号
工作于:LY5A-L2A开发板
作者: 林洋电子-单片机
网站: lydz8.taobao.com
说明: 板使用12M晶振
******************************************************************************/
#include
#include
#define KEY4_4 P2
//引脚定义:
sbit SMG_q = P1^0; //定义数码管阳级控制脚(千位)
sbit SMG_b = P1^1; //定义数码管阳级控制脚(百位)
sbit SMG_s = P1^2; //定义数码管阳级控制脚(十位)
sbit SMG_g = P1^3; //定义数码管阳级控制脚(个位)
sbit SPK=P1^5; //蜂鸣器
sbit JDQ=P1^4; //继电器
//变量定义:
code unsigned char table[]=
{0xc00xf90xa40xb00x990x920x820xf80x800x90};
//表:共阳数码管 0-9
unsigned char l_posit=2; //显示位置
code unsigned char key_tab[17]={0x000xee0xde0xbe0x7e
0xed0xdd0xbd0x7d
0xeb0xdb0xbb0x7b
0xe70xd70xb70x77};
// 1 2 3 4
// 5 6 7 8
// 9 10 11 12
// 13 14 15 16
unsigned char l_key=0x0; //定义变量,存放键值
unsigned char l_keyold=0xFF; //做为按键松开否的凭证
//函数声明:
void ReadKey(void); //扫描键盘 获取键值,并将键值重新编码
void display(unsigned int da);//定义显示函数,参数为显示内容
void delay(unsigned int timer);
//主函数,C语言的入口函数:
void main(void)
{
while(1){
ReadKey(); //调用键盘扫描
display(l_key); //输出显示获取的键号
if(l_key==1) //按1键继电器启动
JDQ=0;
if(l_key==2)
JDQ=1; //按2键继电器关闭
}
}
//扫描键盘 获取键值
void ReadKey(void) //分三个部份来理解,
{
unsigned char ikey;
//**************第一部份,扫描读取键值******************************/
key=0xff; //设定初值
KEY4_4=0xfe; //第一行扫描
if(KEY4_4!=0xfe)
key=KEY4_4;
KEY4_4=0xfd; //第二行
if(KEY4_4!=0xfd)
key=KEY4_4;
KEY4_4=0xfb; //第三行
if(KEY4_4!=0xfb)
key=KEY4_4;
KEY4_4=0xf7; //第四行
if(KEY4_4!=0xf7)
key=KEY4_4;
KEY4_4=0XFF; //复位接口
/****************第二部份,检测是否干扰或无按键按下********************/
if (key==0xff){ //如果读取不到接口的值
l_keyold=0xff;
SPK=1; //按键有松开关闭蜂鸣器
return;
}
else
SPK=0; //否则打开蜂鸣器,继续处理
/****************第三部份,检测是否新按键按下,获取新的键盘编码值*******/
if(l_keyold!=key){ //检测是否为新的键被按下
l_keyold=key; //保存键码做为下次检测
for(i=0;i<17;i++){ //查表获得相应的键号存放l_key变量中
if (key==key_tab[i]){
l_key=i;
break;
}
}
}
//转换的键号放于l_key变量中,主程序就可以检测此变量做相应外理
}
//显示函数,参数为显示内容
void display(unsigned int da)
{
P0=0XFF; //
da=da%10000;
switch(l_posit){
case 0: //选择千位数码管,关闭其它位
SMG_q=0;
SMG_b=1;
SMG_s=1;
SMG_g=1;
P0=table[da/1000]; //输出显示内容
break;
case 1: //选择百位数码管,关闭其它位
SMG_q=1;
SMG_b=0;
SMG_s=1;
SMG_g=1;
P0=table[da%1000/100];
break;
case 2: //选择十位数码管,关闭其它位
SMG_q=1;
SMG_b=1;
SMG_s=0;
SMG_g=1;
P0=table[da%100/10];
break;
case 3: //选择个位数码管,关闭其它位
SMG_q=1;
SMG_b=1;
SMG_s=1;
SMG_g=0;
P0=table[da%10];
break;
}
l_posit++; //每调用一次将轮流显示一位
if(l_posit>3)
l_posit=2; //从2开始,表示只显示后两位
}
//延时子函数
void delay(unsigned int timer){
while(timer--);
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 191 2012-11-12 11:12 例LY-K4矩阵键盘程序\lhj.plg
文件 1859 2009-08-24 10:25 例LY-K4矩阵键盘程序\lhj.Uv2
文件 3498 2012-11-15 17:53 例LY-K4矩阵键盘程序\l_key.c
文件 5169 2012-11-12 11:10 例LY-K4矩阵键盘程序\l_key.OBJ
文件 48 2012-11-12 11:10 例LY-K4矩阵键盘程序\lhj.lnp
文件 4879 2012-11-12 11:10 例LY-K4矩阵键盘程序\lhj
文件 1607 2012-11-12 11:10 例LY-K4矩阵键盘程序\lhj.hex
文件 1012 2012-11-12 11:11 例LY-K4矩阵键盘程序\lhj.Opt
文件 151830 2012-06-19 15:36 LY-K4矩阵键盘使用说明.pdf
文件 130865 2012-11-15 17:55 LY-K4短阵键盘连接参考图.jpg
目录 0 2011-11-25 21:24 例LY-K4矩阵键盘程序
----------- --------- ---------- ----- ----
300958 11
相关资源
- 4×4矩阵键盘键值LCD1602显示汇编语言
- STM32 矩阵键盘扫描
- 矩阵键盘4*3
- 51单片机双机通信
- 基于Verilog的低功耗矩阵键盘扫描设计
- 用FPGA实现16位矩阵键盘键值在数码管
- 4乘4矩阵键盘扫描加数码管显示代码
- 矩阵键盘程序基于proteus的设计与仿真
- 矩阵键盘简易计算器Keil+proteus仿真.
- EDA实验——矩阵键盘的VHDL程序
- 基于51单片机矩阵键盘的实现含仿真原
- 矩阵键盘扫描 汇编语言 代码 反转法
- 4*4矩阵键盘+四位数码管PCB图
- STM32矩阵键盘HAL库实现,轮询方式,方
- 基于VHDL的矩阵键盘及显示电路设计
- 不跳线大按键矩阵键盘PCB原理图+PCB
- AT89C51的矩阵键盘、跑马灯和呼吸灯设
- 51单片机矩阵键盘扫描程序
- 51矩阵键盘程序及电路连接图
- STC89C52实现矩阵键盘输入密码并在12
- Verilog HDL 矩阵键盘扫描
- 单片机矩阵键盘计算器
- 单片机设计——功能:矩阵键盘输入
- 数码管显示4X4矩阵键盘按键号
- verilog矩阵键盘扫描程序
- stm32矩阵键盘
- 基于stm32的矩阵键盘程序
- 基于stm32f103X的8X8矩阵键盘
- 4*4矩阵键盘扫描数码管显示程序
- msp430f5529矩阵键盘
评论
共有 条评论