前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >单片机原理及接口技术实验报告-4x4矩阵键盘驱动一位数码管(开源)

单片机原理及接口技术实验报告-4x4矩阵键盘驱动一位数码管(开源)

作者头像
用户6948990
发布于 2025-04-03 10:44:30
发布于 2025-04-03 10:44:30
22900
代码可运行
举报
文章被收录于专栏:wuterwuter
运行总次数:0
代码可运行

接线图:

新工程

源码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<reg51.h> 
#define uchar unsigned char 
#define uint unsigned int 
void main(void) 
{ 
  uchar key; 
  while(1) 
	  { 
	    key=keyscan( ); //调用键盘扫描函数,返回的键值送到变量key 
	    delay( ); //延时 
	  } 
  void delay10ms(void); //延时函数 
  { 
  uchar i; 
  for(i=0;i<200;i++){ } 
  }
uchar key_scan(void)//键盘扫描函数 
{  
  uchar code_h; //行扫描值 
  uchar code_l; //列扫描值 
  P1=0xf0; //P1.0~P1.3行线输出都为0,准备读列状态 
  if((P1&f0)!=0xf0)//如果P1.4~P1.7不全为1,可能有键按下 
  {   
    delay10ms(void); //延时去抖动,参见例5-11 
	if((P1&f0)!=0xf0) //重读P1.4~P1.7,若不全为1,定有键按下 
	code_h=0xfe;// P1.0行线置为0,开始行扫描 
	while((code_h&0x10)!=0xf0);//判是否扫描到最后一行,若不是继续扫描 
	{  
	  P1=code_h; //P1口输出行扫描值 
	  if((P1&f0)!=0xf0); //如果P1.4~P1.7不全为1,该行有键按下
	  { 
	    code_l=(P1&0xf0|0x0f); //保留P1口高4位,低4位变1,作为列值 
		return((~code_h)+(~code_l)); //键扫描值=行扫描值+列扫描值,返回主程序
      } 
	  else //若该行无键按下,往下执行 
	    code_h=(code_h<<1)|0x01;    //行扫描值左移,准备扫描下一行
    }
  }
} 
return(0) ; //无键按下,返回0
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-08-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验