#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uint i,j,num,temp;
uint jpsmiao(); //声明 键盘扫描语
void jpxshi(uint); //声明 显示
//*******************阳极数码管显示字符
yang[]={ 0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e,0xff };
//***********************延时5ms为一个循环
void dalay(uint x)
{
for(j=x;j>0;j--)
for(i=500;i>0;i--);
}
//************************主程序
void main()
{
//下面三条很重要,缺一不可
num=16;//即没键按下时,不显示 (无此语句一开始就显示0)
P0=0xff; //没键按下时,不显示(无下面两条的任意一条都不会显示)
P3=0x0f; //打开LED的位
while (1)
{
jpxshi(jpsmiao());
}
}
//*************按下相应的键盘显示其字符
void jpxshi(uint a)
{
P0=yang[a];
}
//**********键盘扫描
uint jpsmiao()
{
P2=0xfe;//第一行即0123
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0) //判断是否有键按下
{
dalay(1); //去抖
while(temp!=0xf0) //真的有键按下
{
temp=P2;
switch(temp)
{
case 0xee: num=0;break;
case 0xde: num=1;break;
case 0xbe: num=2;break;
case 0x7e: num=3;break;
}
while(temp!=0xf0) // 很重要:松手检测,没有此语句的话,根本跳
//不出第一个while语句,而只能检测0123;
{
temp=P2;
temp=temp&0xf0;
} //当松手了,temp!=0xf0时,可以执行其他的while语句
}
}
P2=0xfd; //第二行即4567
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0)
{
dalay(1);
while(temp!=0xf0)
{
temp=P2;
switch(temp)
{
case 0xed: num=4;break;
case 0xdd: num=5;break;
case 0xbd: num=6;break;
case 0x7d: num=7;break;
}
while(temp!=0xf0)
{
temp=P2;
temp=temp&0xf0;
}
}
}
P2=0xfb;//第三行即89AB
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0)
{
dalay(1);
while(temp!=0xf0)
{
temp=P2;
switch(temp)
{
case 0xeb: num=8;break;
case 0xdb: num=9;break;
case 0xbb: num=10;break;
case 0x7b: num=11;break;
}
while(temp!=0xf0)
{
temp=P2;
temp=temp&0xf0;
}
}
}
P2=0xf7;//第四行即CDEF
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0)
{
dalay(1);
while(temp!=0xf0)
{
temp=P2;
switch(temp)
{
case 0xe7: num=12;break;
case 0xd7: num=13;break;
case 0xb7: num=14;break;
case 0x77: num=15;break;
}
while(temp!=0xf0)
{
temp=P2;
temp=temp&0xf0;
}
}
}
return num; //放回值
}
键盘扫描(C51程序 Proteus仿真 可以显示扫描结果)
5星 · 超过95%的资源 需积分: 10 101 浏览量
2009-07-14
04:01:16
上传
评论
收藏 82KB RAR 举报
lxy004
- 粉丝: 3
- 资源: 3
最新资源
- 纳什谈判理论下的风、光、氢综合能源系统合作运行策略及交易优化方案,基于纳什谈判理论的风–光–氢多主体能源系统合作运行方法 关键词:合作博弈 纳什谈判 风–光–氢系统 综合能源 参考文档:基于纳什
- "飞剪Ver3.1-1控制系统设计与实现:基于西门子Smart200的主轴从轴协同控制系统",飞剪Ver3.1-1(凸轮) 0.一个主轴外部编码器+一个从轴伺服(上刀轴) 1.西门子200smart
- SSA-CNN-LSTM网络超参数优化实现高精度预测,SSA-CNN-LSTM,即麻雀搜索算法优化CNN-LSTM网络做预测的程序,优化网络的超参数,预测精度很高 ,SSA; CNN-LSTM; 麻
- 力士乐伺服调试软件IndraWorks Ds:14V24 P5与15V16版本详解及力士乐伺服资料汇编,力士乐伺服调试软件IndraWorks Ds 14V24 P5,15V16,力士乐伺服资料 ,核
- 数据库管理:MySQL8.0配置远程连接的方法与步骤
- 基于最小二乘法的轮胎侧偏刚度估计模型仿真图解,轮胎侧偏刚度估计模型,采用最小二乘法 图片为仿真效果 ,核心关键词:轮胎侧偏刚度估计模型; 最小二乘法; 仿真效果; 图片 ,"基于最小二乘法估计轮胎侧
- CNN-BiLSTM多特征分类预测算法在Matlab中的高效实现与分类准确率展示,CNN-BiLSTM多特征分类预测(Matlab) 所有程序经过验证,保证有效运行 1.运行环境Matlab2020
- C#多线程上位机源码:替代PLC触摸屏的工业屏幕一体机智能控制软件,C#全自动多线程上位机源码 0, 纯源代码 1, 替代传统plc搭载的触摸屏 2, 工控屏幕一体机直接和plc通信 3
- 三菱FX3U五轴钻孔机搭配威纶通触摸屏与PLC程序,深度与每刀深度可调,注释齐全含IO分配表,上手即用全套解决方案,三菱两台fx3u五轴钻孔机,含威纶通触摸屏和plc程序,深度速度、每刀深度可调 注
- 西门子S7-200 Smart追剪程序-高速同步追剪,电子凸轮算法,精准锯切控制,西门子S7-200Smart追剪程序,触摸屏是MCGS编写 高速追剪,当前设备跟踪同步追剪速度最高可达每分钟150
- TMS320F28335微控制器FOC与VF程序源代码详解:工程实践与硬件原理图解析,TMS320F28335的FOC程序、VF程序源代码,工程,带硬件原理图 ,核心关键词:TMS320F28335
- 无人驾驶车辆局部路径规划仿真研究:基于Matlab实现的Astar与RRT算法的优化与应用分析,无人驾驶车辆自动驾驶局部路径规划matlab仿真设计 (1)建立Astar和RRT算法的逻辑 (2)基于
- FPGA电机控制源码解析:底层Verilog与Nios II架构实践及其算法探索,FPGA电机控制源码(verilog+nios2架构)FPGA电机控制源码, 方案为单FPGA方案才用底层verilo
- 基于主从博弈理论的共享储能与综合能源微网优化运行研究:策略性博弈模型构建与算法求解实现,基于主从博弈的共享储能与综合能源微网优化运行研究(文献完全复现) 关键词:微网优化 主从博弈 共享储能 综合能源
- 储能与调频市场联合出清的Matlab实现:电力市场出清方向与收益分析,matlab代码:储能参与电能量-辅助服务调频市场联合出清代码 本代码是电力市场出清的一个重要方向,由于储能的诸多特性,使其适
- 直线感应电机仿真实例:利用Maxwell 16.0或Ansys 2020版的教学实践探究,直线感应电机仿真实例,仿真教学 maxwell16.0版本或者ansys 2020版本 ,核心关键词:直线感
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈