51单片机的矩阵按键扫描的设计C语言程序.docx

51单片机的矩阵按键扫描的设计C语言程序.docx

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE PAGE #/ 8 // 函数声明,变量定义 #include <reg 51.h> #define KEY P1 // 变量声明 void program_SCANkey(); // 程序扫描键盘 ,供主程序调用 void delay(unsigned int N) ;// 延时子程序,实现 (16*N+24)us 的延时 bitjudge_hitkey(); // 判断是否有键按下,有返回 1,没 有返回 0 unsigned char scan_key(); 表行,低四位代表列 unsigned char scan_key(); 表行,低四位代表列 ) // 扫描键盘,返回键值 (高四位代 void key_manage(unsigned char keycode); //键盘散转 void manage_key1(void);// 按键 1 处理程序void manage_key2(void);// 按键 2 处理程序 void manage_key1(void); // 按键 1 处理程序 void manage_key2(void); // 按键 2 处理程序 void manage_key3(void); // 按键 3 处理程序 void manage_key4(void); // 按键 4 处理程序 // 每个按键对应一个处理程序,这里 // //函数名称: program_SCANkey // 函数功能: 程序扫描键盘, // 有键按下完成按键处理,无键按下直接返回 // void program_SCANkey(){unsigned char key_code; if(judge_hitkey())(1000);if(judge_hitkey())while(judge_hitkey()); if(judge_hitkey()) (1000); if(judge_hitkey()) while(judge_hitkey()); key_manage(key_code); // // 判断是否有键按下 {delay //延时20ms左右,消除抖动干扰 //判断是否有效按键 {key_code=scan_key(;) // 等待按键释放 // 键盘扫描、键盘散转、按键处理 }}} //函数名称: delay //入口参数:N//函数功能: 延时子程序,实现(16*N+24)us的延时 // 系统采用 11.0592MHz的时钟时,延时满足要求,其它情况需要改动 // void delay(unsigned int N){int i; for(i=0;i<N;i++);}// // 函数名称: system_init() // 函数功能: 初始化设置 // 设定 INT 0、INT1 及 T 0、T1的工作方式 // /* void system」nit(void ){TMOD=0x55;〃定时器1和定时器0工作在方式 1,的计数模式 TR0=1; //定时器 1 和定时器 0开始计数 TR1=1; ET0=1; //定时器 1 和定时器 0中断允许 ET1=1; IT1=0; //选择INTO和INT1为电平触发方式 IT0=0; EX0=1; //外部中断允许 EX1=0; EA=1; // 系统中断允许 }// // 函数名称: INT0_intrupt // 函数功能: 外部中断 0 处理程序 // void INT0_intrupt() interrupt 0 using 1{EA=0; // 系统中断禁止 delay (1000); // 键盘消抖动 if(INT_0==0) // 判断是否干扰 { // 的确有健按下 while(INT_O==O);〃等待键盘释放 delay (1000); //键盘消抖动 manage_key1();}EA=1; }*/ // // 函数名称: judge_hitkey // 函数功能: // 判断是否有键按下,有返回 1,没有返回 0 // bitjudge_hitkey() // 判断是否有键按下,有返回 1,没有返回 0{unsigned char scancode,keycode; scancode=0xff; //P 1.4~P 1.7 输出全 1 则无键闭合 KEY=scancode; keycode=KEY;1.0~P1.3 的状态 keycode=KEY; 1.0~P 1.3 的状态 if(keycode==0xff) return (0); else return (1); // 读 P // 全 1 则无键闭合 //否则有键闭合 }// // 函数名称: scan_key // 函数功能: //

文档评论(0)

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

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

1亿VIP精品文档

相关文档