用矩阵方式扫描键盘的程序(A keyboard scanning program using a matrix)_第1页
用矩阵方式扫描键盘的程序(A keyboard scanning program using a matrix)_第2页
用矩阵方式扫描键盘的程序(A keyboard scanning program using a matrix)_第3页
用矩阵方式扫描键盘的程序(A keyboard scanning program using a matrix)_第4页
用矩阵方式扫描键盘的程序(A keyboard scanning program using a matrix)_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、用矩阵方式扫描键盘的程序(A keyboard scanning program using a matrix)#包括<< AT89X52。”#包括<<信息。h> /头文件#定义unsigned char函数/以下是定义标识符#定义该P2# unsigned int定义单元#定义decodemode 0x09 / / * * /译码模式#定义强度0x0a / / * * /亮度#定义scanlimit 0x0b / / * * /扫描界限#定义关机0x0c / / * * /掉电模式#定义displaytest 0x0f / / * * /显示测试#定义shutd

2、ownmode 0x00 / / * * /掉电方式工作#定义正常0x01 / / * * /正常操作方式#定义decodedigit 0xff / / * * /译码位数设置#定义intensitygrade 0x0a / / * * /显示亮度级别设置#定义scandigit 0x06 / / * * /扫描位数设置#定义testmode 0x01 / / * * /显示测试方式#定义textend 0x00 / / * * /显示测试结束,正常工作公司dis_din = P1 0;/ / * * /显示串行数据输入端公司dis_load = P1 1;/ / * * /显示数据锁存端公司

3、dis_clk = P1 2;/ / * * /显示时钟输入端公司= P1 3;/ / * * /矩形波输出端位标志= 0;/ / * * /标志位/ *定义全局变量* /int挂= 0,李= 0;/扫描的行、列h,l,t;UCHAR CH;函数的关键;/ *定义数组* /a 6 = 0,0,0,0,0,0 ;/时间长度煤焦部分 4 4 = 15,10,13,11,14,9,6,3,0,8,5,2,12,7,4,1 ;/ / / /键值检索矩阵/ *函数声明* /无效sendchar(unsigned char ch);无效writeword(unsigned char addr,unsign

4、ed char num);虚空(void)InitDis;initmain虚空(void);无效delay_xms(unsigned int x);无效wave();/ *向MAX7219写入字节(8位)* /无效sendchar(unsigned char ch)无符号字符i;_nop_();对于(i = 0;i < 8;i +)温度= CH和0x80;CH1;如果(临时)dis_din = 1;dis_clk = 0;dis_clk = 1;其他的dis_din = 0;dis_clk = 0;dis_clk = 1;/ *向MAX7219写入字(16位)* * /无效writewo

5、rd(unsigned char addr,unsigned char num)dis_load = 0;_nop_();sendchar(地址);_nop_();sendchar(NUM);_nop_();dis_load = 1;/ *MAX7219初始化* /虚空(void)InitDiswriteword(scanlimit,scandigit);/ / * * /设置扫描界限writeword(decodemode,decodedigit);/ / * * /设置译码模式writeword(强度,intensitygrade);/ / * * /设置亮度writeword(关机,正常

6、);/ / * * /设置电源工作模式/ *系统上电初始化* /initmain虚空(void)IE = 0x00;/ / * * /设置中断允许寄存器IP = 0x00;/ / * * /设置中断优先级管理寄存器TH0 = 0xd8;/ / * * /设定时器初值,10msTL0 = 0xf0;TMOD = 0x01;0x11 TCON =;PSW = 0x00;/ *精确延时函数-调试用* /无效delay_xms(unsigned int x)函数J.;(x)对于(j0;j123;j + +);/ *主函数* /空主(空)h1;l1;该= 0xf0;InitMain();InitDis(

7、);/ / writeword(displaytest,TestMode);writeword(1,0);writeword(2,0);writeword(3,0);writeword(4,0);writeword(5,0);writeword(6,0);/ / initdis();EA = 1;IT0 = 1;ex0 = 1;(1)wave();/ *波形输出函数* /无效wave() /波形输出(1)输出= 1;delay_xms(H);/ /高电平延时输出= 0;delay_xms(L);/ /低电平延时/ *通过中断来设定时长* /虚空(void)INT0中断0EA = 0;/关中断P

8、2 = 0x0f;(8)delay_xms;如果(P2)!= 0x0f)/判断是哪一行有键按下开关(P2)案例0x07:挂= 0;突破;案例0x0b:挂= 1;突破;例:挂= 2;打破0x0d;例:挂= 3;打破0x0e;默认值:中断; (4)delay_xms;P2 = 0xf0;如果(P2)!= 0xf0)/判断哪一列由键按下开关(P2)案例0x70:谎言= 0;突破;houses 0xb0: lie = 1; break;houses 0xd0: lie = 2; break;houses 0xe0: lie = 3; break;default: break;i givep2 = 0x

9、0f; while (p2. = 0x0f);delay _ xms (8).i givep2 = 0xf0; while (p2. = 0xf0); / / / / / / / / / / / / / / / / / 以上两个循环才可以检测按键是否松开, 动手才知道书本上的东西并不可靠!/ / / / 书本原文是 while (p2. = 0xf0);key = discode hang lie;if (flag = = 0) / / 以下是按键处理的程序if (key < 10) / / key, < 10in 2 = 1.in 1 = a 0.to 0 = key.initd

10、is ();(1, writeword 2); / / / / 写数字到数码管writeword (2, 1).writeword (3) 0);writeword (4, 5).writeword (5, 4).writeword (6, 3);if (k = = 12) / / key'cin 2 = 0.in 1 = 0.to 0 = 0.initdis ();(1, writeword 2).writeword (2, 1).writeword (3) 0);writeword (4, 5).writeword (5, 4).writeword (6, 3);if (k = =

11、 14) / / key'ch = 2 * 100 + 1 * 10 + 0;flag = 1;elseif (key < 10) / / key, < 10in 5 = a 4;in 4 = 3.in 3 = key.initdis ();(1, writeword 2).writeword (2, 1).writeword (3) 0);writeword (4, 5).writeword (5, 4).writeword (6, 3);if (k = = 12) / / key'cin 5 = 0.in 4 = 0.in 3 = 0.initdis ();(1, writeword 2).writeword (2, 1).writeword (3) 0);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论