矩阵键盘中断扫描(Matrix keyboard interrupt scanning).docVIP

矩阵键盘中断扫描(Matrix keyboard interrupt scanning).doc

  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文档。上传文档
查看更多
矩阵键盘中断扫描(Matrix keyboard interrupt scanning)

矩阵键盘中断扫描(Matrix keyboard interrupt scanning) / * ----------------------------------------------- 名称:矩阵键盘依次输入控制使用行列逐级扫描中断方式 内容:如计算器输入数据形式相同从右至左使用行列扫描方法 中断方式可以有效提供CPU工作效率,在有按键动作时才扫描,平时不进行扫描工作 ------------------------------------------------ */ #包括 reg52。h //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 #定义数据端口P0 /定义数据端口程序中遇到数据端口则用P0替换 #定义该P1 公司latch1 = P2 ^ 2;/ /定义锁存使能端口段锁存 公司latch2 = P2 ^ 3;/ /位锁存 点keypressflag;/ /定义按键标志位 无符号字符代码dofly_duanma [ ] = { 0x3F,0x06,0x5b,0x4f,0x66,0x6d,7d,0x07,0x7f,0x6f, 0x77,0x7c,0x39,0x5e,0x79,0x71 };//显示段码值0 ~ F 无符号字符代码dofly_weima [ ] = { 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xBF 0x7f };//分别对应相应的数码管点亮,即位码 unsigned char TempData [ 8 ];//存储显示值的全局变量 无效delayus2x(unsigned char t);//我们级延时函数声明 虚空DelayMs(unsigned char t);/ / MS级延时 无效的显示(unsigned char firstbit,unsigned char num);/ /数码管显示函数 无符号char KeyScan(void);/ /键盘扫描 unsigned char原(void); init_timer0虚空(void);/ /定时器初始化 init_int0虚空(void);/ /外部中断0初始化和 / * ------------------------------------------------ 主函数 ------------------------------------------------ */ void main(void) { unsigned char num,I,J; unsigned char温度[ 8 ]; init_timer0(); init_int0(); 而(1)/主循环 { 该= 0xf0;/ /赋值用于中断检测 如果(keypressflag = = 1) { keypressflag = 0;//按键标志清零,以便下次检测 Num = keypro(); 如果(Num!= 0xff) { 如果(i<8) { 临时[我] = dofly_duanma [数]; 为(J = 0;J =我;j++) [ J ] TempData 7-I + =温度[J].; } 我+ +; 如果(我= = 9)/多出一个按键输入为了清屏原本应该为8 { 我= 0; 为(J = 0;J<8;j++)/清屏 TempData [ J ] = 0; } } } } } / * ------------------------------------------------ 我们延时函数,含有输入参数unsigned char,无返回值 unsigned char是定义无符号字符变量,其值的范围是 0 ~ 255这里使用晶振12m,精确延时请使用汇编,大致延时 长度如下T = TX2 + 5美元 ------------------------------------------------ */ 无效delayus2x(unsigned char t) { 而(T); } / * ------------------------------------------------ MS延时函数,含有输入参数unsigned char,无返回值 unsigned char是定义无符号字符变量,其值的范围是 Here the use of 0~255 crystal 12M, please use the assembly precision delay ------------------------------------------------*/ Void DelayMs (unsigned char T) { While (t--) { Approximately 1mS / / delay DelayUs2x (

您可能关注的文档

文档评论(0)

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

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

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档