《深入浅出玩转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. 80C51单片机汇编语言程序设计总结资料免费下载
  2. BMS电池管理系统原理图SCH文件和PCB文件资料合集免费下载
  3. STM32F207V开发板原理图大全详细资料免费下载
  4. 如何使用LCD12864显示屏显示温湿度的详细程序和资料免费下载
  5. 如何设计一个计时器?篮球竞赛30秒计时器的毕业设计资料免费下载
  6. 如何使用使用单片机DS18B20进行LED显示的程序免费下载

本月

  1. 80C51单片机汇编语言程序设计总结资料免费下载
  2. BMS电池管理系统原理图SCH文件和PCB文件资料合集免费下载
  3. 单片机教程之给初学单片机的40个实验详解包括原理图和程序
  4. 如何进行MCS-51汇编语言程序设计?详细资料概述
  5. ARM和DSP与AVR和C51有什么区别?详细资料对比
  6. 如何快速自学入门单片机?详细引导和提示资料免费下载
  7. STM32F103教程之STM32F103单片机的使用心得资料免费下载
  8. STM32F103C8T6单片机模型的资料和程序免费下载
  9. 单片机教程之单片机的详细介绍和设计参数及一些入门实验详细说明
  10. 如何使用51单片机和12864设计的简易示波器?原理图和程序免费下载

总榜

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