2x2键盘扫描程序.docx

--天目学院 单片机设计报告 题目: 2 X 2矩阵式键盘 学年:06/07学年 学期:第二学期 专业:电子信息工程 班 级:天目电子信息工程 041 学号:200405052118 姓名:毛陈华 指导教师: 舒洪波 学科:单片机原理与应用及 C51程序设计 时 间:2007年5月28日一2007年6月12日 2X 2矩阵式键盘 摘要:本设计主要是用来学习键盘扫描程序的设计,数码管的动态显示程序设计。设 计中,将单片机 8051的并行口 P1的P1.0,P1.1接键盘的行,将 P1.2,P1.3接键盘的列,将并 行口 P2的P2.7~P2.0分别接数码管的数据段 g,f,a,b,d,h,e,c.以及将P3.6,P3.7分别接数码管的 偏选端,当按下第 0行0列时数码管就显示 00,按下第0行1列时数码管就显示 01,第1 行0列时数码管就显示 02,第1行1列时数码管就显示 03。本设计一共四个按键,用双数 码管动态显示。 关键字:键盘扫描,数码管动态显示 1.系统设计部分 如图1-0所示,此按键设计是以单片机 8051为核心,以按键和数码管为扩展,实现键 盘识别和动态显示的功能。 J;?J!i:!iM^Tln 酣穷口」KE町弓二一二一幻fl施 J;?J!i:!iM^Tln 酣穷口」KE町 弓二一二一幻fl 施 图1-0 1.1设计要求 此矩阵式键盘具有按键识别功能, 当按下第0行0列时数码管就显示 00,按下第0行1 列时数码管就显示 01,第1行0列时数码管就显示 02,第1行1列时数码管就显示 03。 1.2总体设计方案 1.2.1设计思路 将单片机8051的并行口 P1的P1.0,P1.1接键盘的行,将 P1.2,P1.3接键盘的列,将并行 口 P2的P2.7~P2.0分别接数码管的数据段 g,f,a,b,d,h,e,c.以及将P3.6,P3.7分别接数码管的偏 选端,当按下第0行0列时数码管就显示 00,按下第0行1列时数码管就显示 01,第1行 0列时数码管就显示 02,第1行1列时数码管就显示 03。 1.2.2方案论证与选择 方案一:将单片机8051的并行口 P1的P1.0,P1.1接键盘的行,将P1.2,P1.3接键盘的列, 将并行口 P2的P2.7~P2.0分别接数码管的数据段 g,f,a,b,d,h,e,c.以及将P3.6,P3.7分别接数码 管的偏选端。 方案二:将单片机8051的并行口 P0的P00,P01接键盘的行,将P0.2,P0.3接键盘的列, 将并行口 P2的P2.7~P2.0分别接数码管的数据段 g,f,a,b,d,h,e,c.以及将P3.6,P3.7分别接数码 管的偏选端。 点评:由于在方案二中, P0 口内部没有上拉电阻,如用此方案,就要比方案一多接几 个上拉电阻,在键盘多的时候很容易弄错,所以在这里我们选择方案一。 2.单元电路设计部分 2.1数码管显示电路的设计 这里是将单片机8051的并行口 P2的P2.7~P2.0分别接数码管的数据段 g,f,a,b,d,h,e,c.以 2.2矩阵式键盘的设计 将单片机8051的并行口 P1的P1.0,P1.1接键盘的行,将 P12P1.3接键盘的列。如图 1-2。 3.1 程序 #includereg52.h //0~9unsigned char code table[]={0x80,0xee,0x41,0x42,0x2c,0x12,0x10,0xce,0x00,0x0a}; unsigned char temp; //0~9 unsigned char key1,key2; unsigned char i,j; sbit P10=P1A0; sbit P1 仁P1A1; void delay1() { for(i=0;i50;i++) { for(j=0;j50;j++); } } void delay2() { for(i=0;i50;i++) { for(j=0;j200;j++); } } void main(void) { while(1) { P1=0x0f; P10=0; temp=P1; //检测 P1 口 temp=temp0x0c; //检测列 p12, p13 是否有按键 while(temp!=0x0c) { delay2(); temp=P1; //再次检测是否有按键 temp=temp0x0c; while(temp!=0x0c) { temp=P1; temp=temp0x0c; switch(temp) { case 0x08: key1=0; key2=0; break; case 0x04: key1=0; key2=1; break; } } } P仁OxOf; 〃当P1仁时,判断列 P12,P13

文档评论(0)

1亿VIP精品文档

相关文档