行列式键盘的应用.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
行列式键盘的应用

实训报告五 实训目的: 学会如何使用行列式矩阵按键,学会如何在51单片机上编写行列式矩阵按键的c语言,行列式矩阵按键的作用。 实训原理图: 实训步骤: 在ptoteus平台找出所需的元器件 理解该实验的原理,按照原理图画出仿真图; 根据实验要求写出如下程序: #includereg51.h #includeintrins.h #includeabsacc.h #define uchar unsigned char #define uint unsigned int uchar code a[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F, 0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71}; void delay(uint i) //延时程序 {uint j; for(j=0;ji;j++); } uchar checkkey() //检测有没有键按下 {uchar i ; uchar j ; j=0x0f; P2=j; i=P2; i=i0x0f; if (i==0x0f) return (0); else return (0xff); } uchar keyscan() //键盘扫描程序 { uchar scancode; uchar codevalue; uchar a; uchar m=0; uchar k; uchar i,j; if (checkkey()==0) return (0xff); else {delay(100); if (checkkey()==0) return (0xff); else { scancode=0xf7;m=0x00; //键盘行扫描初值,M为列数 for (i=1;i=4;i++) { k=0x10; P2=scancode; a=P2; for (j=0;j4;j++) //J为行数 { if ((ak)==0) { codevalue = m+j; while (checkkey()!=0); return (codevalue); } else k=k1; } m=m+4; scancode=~scancode; //为scancode右移时,移入的数为1 scancode=scancode1; scancode=~scancode; } } } } void main() //主函数 { int x; P3=0x00; while(1) { if (checkkey()==0x00) continue; else { x= keyscan(); P3=a[x]; delay(100); } } } 总结: 通过本次的实训我学会了矩阵式键盘的c编程,它是通过扫描法识别的:首先按键判别有无键按下,再键盘扫描取得闭合键的行、列号,用计算法或查表法得到键值,判断闭合键是否释放,如没释放则继续等待,将闭合键的键值保存,同时转去执行该闭合键的功能。通过这次的实训使我程序设计的过程更熟悉。

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档