(精选)单片机原理与应用-KFIL C项目教程(西电版)项目四 键盘原理及应用课件.ppt

(精选)单片机原理与应用-KFIL C项目教程(西电版)项目四 键盘原理及应用课件.ppt

  1. 1、本文档共106页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
演示文稿演讲PPT学习教学课件医学文件教学培训课件

  源程序     #include reg51.h     #define uchar unsigned char     #define uint unsigned int     /*必要的变量定义*/     uchar code jianzhibiao[ ]={  0xee,0xde,0xbe,0x7e,                 0xed,0xdd,0xbd,0x7d,                 0xeb,0xdb,0xbb,0x7b,                 0xe7,0xd7,0xb7,0x77};               //定义键值表     uchar code seg7[ ]={  0xc0,0xf9,0xa4,0xb0,               0x99,0x92,0x82,0xf8,               0x80,0x90,0x88,0x83,               0xc6,0xa1,0x86,0x8e };               //定义共阳型数码管段码表     /*延时函数*/     void delay (uint i) //延时时间约为i×1 ms      {   uchar j, x;   for(j=0;ji;j++) for(x=0;x130;x++);     }     /*主函数*/     void main()      {   uchar lie,jianzhi,jianhao,i; //定义按键识别所需局部变量   P1=seg7[jianhao]; //显示0   while(1)        {     P2=0xf0; //置行0、列1     if(P2!=0xf0) //读入列值,检测有无按键闭合     {      delay(10); //延时10 ms,去除按键的前沿抖动      if(P2!=0xf0) //再次检测,如果仍为真,则确定有键闭合 {   lie=P2;  //有键闭合时,暂存列值   P2=0x0f;  //置行1、列0   jianzhi=lie|P2;  //读入行值,与列值“位或”得键值并赋给jianzhi   for(i=0;i16;i++)  //查找键值表,最多需要比较16次   {  /*将闭合键键值与键值表的元素一一作比较*/     if(jianzhi==jianzhibiao[i])     {          jianhao=i; /*如果if为真,找到键值,键号就是该键值在 键值表中的元素序号i,将其赋给变量jianhao*/       break; //找到键号后,结束查找         } }          while(P2!=0x0f); //等待按键释放          delay(10); //去除按键的后沿抖动 P1=seg7[jianhao];//发送键号的段码,显示键号        }       }      }     }   获得闭合按键的键值后,通过语句if(jianzhi==jianzhibiao[i])将键值jianzhi与键值表中存放的16个键值jianzhibiao[i]进行比较,当它们相等时,键值在键值表中的序号就是闭合按键的键号,最多时要比较16次,最少时只需比较1次,剩余的15次就无需再比较了,由break语句结束for循环。   2. 列扫描   列扫描可以在扫描键盘的过程中,直接计算出闭合键的键号。主函数在判断出有按键闭合时,调用keyscan()获得闭合键键号,执行键操作;键盘扫描函数keyscan()对矩阵键盘逐列扫描并返回闭合键的键号。图4-12所示为main()函数流程图,图4-13所示为keyscan()函数的流程图。 图4-12 列扫描主函数流程图 图4-13 列扫描法keyscan函数流程图   源程序     #include reg51.h     #include intrins.h //修改列扫描字时,需要用到该头文件中的循环移位函数     #define uint unsigned int     #define uchar unsigned char     /*必要的变量定义*/     uchar code table[ ] = { 0xc0,0xf9,0xa4,0xb0,               0x99,0x92,0x82,0xf8,               0x80,0x90,0x88,0x83,               0xc6,0xa1,0x86,0x8e

文档评论(0)

youngyu0329 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档