《深入浅出玩转51单片机》配套例程(60例)

资料大小: 28710KB

所需积分: 1

下载次数:

用户评论: 0条评论,查看

上传日期: 2017-08-01

上 传 者: 夜梦星空他上传的所有资料

资料介绍

标签:单片机(11029)
深入浅出玩转51单片机书籍实例

  // 简单描述 : 本文件是行列扫描法实现矩阵按键扫描程序

  /* ***************************************************** */

  #include 《reg52.h》

  /* ***************************************************** */

  // 宏定义

  /* ***************************************************** */

  #define uInt16 unsigned int

  #define uChar8 unsigned char

  #define DATA P0 //数据口

  #define KEYPORT P3 //键盘接入端口

  /* ***************************************************** */

  // 位定义

  /* ***************************************************** */

  sbit SEG_SELECT = P1^7; //段选控制端

  sbit BIT_SELECT = P1^6; //位选控制端

  /* ***************************************************** */

  // 数组定义

  /* ***************************************************** */

  uChar8 code SEG_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

  0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};//段选显示表格

  /* ***************************************************** */

  // 全局变量定义

  /* ***************************************************** */

  uChar8 g_ucKeyNum = 16; //键值

  /* ***************************************************** */

  // 函数名称:MelayMS()

  // 函数功能:毫秒延时

  // 入口参数:延时毫秒数(ValMS)

  // 出口参数:无

  /* ***************************************************** */

  void DelayMS(uInt16 ValMS)

  {

  uInt16 uiVal,ujVal;

  for(uiVal = 0; uiVal 《 ValMS; uiVal++)

  for(ujVal = 0; ujVal 《 121; ujVal++);

  }

  /* ***************************************************** */

  // 函数名称:ScanKey()

  // 函数功能:矩阵按键扫描

  // 入口参数:无

  // 出口参数:无

  /* ***************************************************** */

  void ScanKey(void)

  {

  uChar8 ucTemp;

  KEYPORT = 0xfe; //检测第一行

  ucTemp = KEYPORT; //读取键盘端口数值

  if(ucTemp != 0xfe) //若是不等于0xF0表示有按键按下

  {

  DelayMS(5); //去抖

  ucTemp = KEYPORT; //读端口值

  if(ucTemp != 0xfe) //再次判断

  {

  ucTemp = KEYPORT; //取键值

  switch(ucTemp) //判断键值对应键码

  {

  case 0xee:g_ucKeyNum = 0;break;

  case 0xde:g_ucKeyNum = 1;break;

  case 0xbe:g_ucKeyNum = 2;break;

  case 0x7e:g_ucKeyNum = 3;break;

  }

  while(KEYPORT != 0xfe); //按键释放检测

  }

  }

  KEYPORT = 0xfd;

  ucTemp = KEYPORT;

  if(ucTemp != 0xfd)

  {

  DelayMS(5);

  ucTemp = KEYPORT;

  if(ucTemp != 0xfd)

  {

  ucTemp = KEYPORT;

  switch(ucTemp)

  {

  case 0xed:g_ucKeyNum = 4;break;

  case 0xdd:g_ucKeyNum = 5;break;

  case 0xbd:g_ucKeyNum = 6;break;

  case 0x7d:g_ucKeyNum = 7;break;

  }

  while(KEYPORT != 0xfd);

  }

  }

  KEYPORT = 0xfb;

  ucTemp = KEYPORT;

  if(ucTemp != 0xfb)

  {

  DelayMS(5);

  ucTemp = KEYPORT;

  if(ucTemp != 0xfb)

  {

  ucTemp = KEYPORT;

  switch(ucTemp)

  {

  case 0xeb:g_ucKeyNum = 8;break;

  case 0xdb:g_ucKeyNum = 9;break;

  case 0xbb:g_ucKeyNum = 10;break;

  case 0x7b:g_ucKeyNum = 11;break;

  }

  while(KEYPORT != 0xfb);

  }

  }

  KEYPORT = 0xf7;

  ucTemp = KEYPORT;

  if(ucTemp != 0xf7)

  {

  DelayMS(5);

  ucTemp = KEYPORT;

  if(ucTemp != 0xf7)

  {

  ucTemp = KEYPORT;

  switch(ucTemp)

  {

  case 0xe7:g_ucKeyNum = 12;break;

  case 0xd7:g_ucKeyNum = 13;break;

  case 0xb7:g_ucKeyNum = 14;break;

  case 0x77:g_ucKeyNum = 15;break;

  }

  while(KEYPORT != 0xf7);
《深入浅出玩转51单片机》配套例程(60例)
 

用户评论

查看全部 条评论

发表评论请先 , 还没有账号?免费注册

发表评论

用户评论
技术交流、我要发言! 发表评论可获取积分! 请遵守相关规定。
上传电子资料

下载排行

本周

  1. 新概念51单片机C语言教程郭天祥版电子教材免费下载
  2. STM32系列的32位微控制器详细产品数据手册免费下载
  3. 单片机开发板典型应用案例106个经典案例资料合集包括程序
  4. STM32F101xx和STM32F103xx的固件函数库详细整理资料免费下载
  5. 51单片机C语言Keil的详细入门教程资料免费下载
  6. MSP430单片机详细资料原理和基本实践实验的资料免费下载
  7. CC2430控制芯片使用的解决方案软件例子详细资料免费下载
  8. ET-FP7208-TYN升压恒流的太阳能控制器详细资料免费下载
  9. 30例51单片机汇编实例程序的详细资料免费下载

本月

  1. 51单片机设计的智能小车如何控制小车寻迹和弯道转向的详细资料概述
  2. 如何能快速入门STM32单片机,STM32单片机入门详细资料概述
  3. 如何基于proteus仿真进行电子秤设计的详细资料概述
  4. 寻迹小车程序详细资料免费下载
  5. 如何利用51单片机输出PWM波的方式和程序资料合集
  6. 基于STM32的人体红外感应LED设计的详细资料概述
  7. STC15W4K32S4系列单片机的测试程序有AD、PWM、串口等测试免费下载
  8. 基于51单片机的计步智能手环的资料合集包括了程序
  9. 如何使用单片机设计数字密码锁(掉电时可记忆密码)的资料免费下载
  10. STM32单片机简易频率计测试详细资料免费下载

总榜

  1. 单片机C语言程序设计实训100例——基于8051 Proteus仿真
  2. 51单片机学习资料打包
  3. 单片机超级精华包
  4. 网上学单片机(入门篇)
  5. 电子工程师基本知识结构
  6. Keil uVision3下载 (破解版带注册机+中文版)
  7. 51单片机c语言超强学习资料
  8. PIC单片机应用常见问答
  9. 《C51单片机及C语言知识点必备秘籍》电子发烧友网创新系列电子书
  10. 单片机C语言程序设计实训100例——基于8051 Proteus仿真