《深入浅出玩转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. 树莓派教程之从零开始学树莓派开发超好玩的智能小硬件制作书PDF
  2. 如何使用STC89C52单片机进行智能电风扇设计
  3. 如何选择合适的单片机常用单片机介绍
  4. 40个经典单片机实验资料合集免费下载
  5. 如何使用AD590设计嵌入式温度采集及显示系统
  6. 使用STC89C52单片机设计无线温度控制系统的资料免费下载
  7. 使用单片机在电阻炉温度控制系统中的应用说明
  8. MCS51单片机的结构与原理及应用实例说明
  9. 如何使用C18编译器和MSSP模块进行SPI EEPROM与PIC18单片机的接口设计
  10. 如何设计低功耗的单片机便携式系统详细设计方法说明

本月

  1. 综合整理的51单片机C语言400实例和单片机仿真300例资料说明
  2. STM32单片机教程之STM32从入门到精通的教程免费下载
  3. 单片机教程之51单片机C语言全新教程资料免费下载
  4. STM32单片机的硬件设计详细问题解答资料说明
  5. 使用单片机进行的二十二个基础实验例程的资料免费下载
  6. Arduino教程之Arduino扩展板舵机调试程序和资料概述
  7. 使用51单片机控制LCD1602液晶显示屏的程序资料免费下载
  8. 单片机的十一个程序案例包括实验说明程序和仿真图资料免费下载
  9. 13个单片机初学者必须学会的实验
  10. 使用51单片机和电机驱动模块控制步进电机转动的程序和仿真等资料说明

总榜

  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仿真