乘矩阵键盘按键输入数码管显示

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

*
*判断键是否按下
*
*
*
*************************************************************/
void keydown(void)
{
P1=0xF0;
//将高 4 位全部置 1 低四位全部置 0
if(P1!=0xF0) //判断按键是否按下 如果按钮按下 会拉低 P1 其中的一个端口
key=2; //第 2 个按键键值
else if(temp==4) // p1.6 被拉低
key=3; //第 3 个按键键值
else if(temp==8) // p1.7 被拉低
key=4; //第 4 个按键键值
else
key = 16;
行为低电平
P1=0x0F;
//低四位输入 行为高电平 列为低电平
{
keyscan(); //调用按键扫描程序
}
}
/*************************************************************
*
*
* 主程序
*
*
*
*************************************************************/
key=key+8;
else if(temp==8) //第四行 p1.3 被拉低
key=key+12;
else
key = 16;
dis_buf = key;
//键值入显示缓存
dis_buf = dis_buf & 0x0f;
}
/************************************************************* *
乘矩阵键盘按键输入数码管显示
/********************************************************************
************
*
4*4 的键盘 按键输入 同时数码管显示数字
*
* 2013 年 9 月 1 日
made by musen
*********************************************************************
uchar dis_buf; uchar temp; uchar key; void delay(uchar x);
//显示缓存
//键顺序码 //x*0.14MS
// 此表为 LED 的字模
0 1 23 4 5
6
7
89 a
b cd e f
unsigned
char
code
LED7Code[]
=
{~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F,~0x77,~0x7C,~0x3
} }
*
*
* 键扫描子程序 (3*4 的矩阵) P1.4 P1.5 P1.6 P1.7 为列
*
*
P1.1 P1.2 P1.3 为行
*
*
*
*************************************************************/
void keyscan(void)
{ temp = 0;
delay(1);
//延时
temp=P1;
//读 P1 口
temp=temp&0x0F;
temp=~(temp|0xF0);
if(temp==1)
//第一行 p1.0 被拉低
key=key+0;
else if(temp==2)
//第二行 p1.1 被拉低
key=key+4;
else if(temp==4) //第三行 p1.2 被拉低
9,~0x5E,~0x79,~0x71};
/*************************************************************
*
*
* 延时子程序
*
*
*
*************************************************************/
void delay(uchar x) { uchar j; while((x--)!=0) //CPU 执行 x*12 次 { for(j=0;j<125;j++) {;} } }
Байду номын сангаас
/*************************************************************
P1=0xF0;
//高四位输入 列为高电平
delay(1);
//延时
temp=P1;
//读 P1 口
temp=temp&0xF0;
//屏蔽低四位
temp=~((temp>>4)|0xF0);
if(temp==1) // p1.4 被拉低
key=1; //第 1 个按键键值
else if(temp==2) // p1.5 被拉低
main()
{
P0=0xFF;
//置 P0 口
P1=0xFF;
//置 P1 口
delay(10);
//延时
while(1) { keydown(); //调用按键判断检测程序 P0 = LED7Code[dis_buf%16]&0x7f; 处也是不一样; %16 表示输出 16 进制
//LED7 0x7f 为小数点 共阴和共阳此
***********/
#include <reg51.h>
#define uchar unsigned char //宏的定义变量类型 uchar 代替 unsigned char #define uint unsigned int //宏的定义变量类型 uint 代替 unsigned int
相关文档
最新文档