扫描式矩阵键盘课程设计
- 格式:docx
- 大小:115.65 KB
- 文档页数:14
扫描键盘的设计思想和代码技巧非常值得学习。
首先扫描键盘可以节省FPGA 的引脚资源,例如一个4x4的扫描键盘有16个按键,如果不用扫描方式而是直接把16跟控制线接入FPGA ,就要16个引脚,而用扫描方式只需要4+4=8个引脚。
尤其是随着键盘的增大,比如8x9=72的键盘,用扫描方式只需要17个引脚。
要想了解扫描键盘的原理,首先要知道矩阵键盘的电路结构。
如上图所示,矩阵键盘的某一个按钮按下会使对应的一条行线和列线导通,为了便于分析扫描过程做如下简化:3.3v Row0Row1 Row2Row3 Col 0 Col 1 Col 2 Col 3Row0Row1Row2Row3Col 0 Col 1 Col 2 Col 33 5 A E D C 2 B 9 8 F4 6 0 1 7 接高电平 由FPGA 输出给键盘高低电平的组合,即是扫描码键盘行线高低电平的变化输入给FPGA扫描键盘的工作状态分为两种:第一种状态是判断是否有键按下,该状态下四根列线对应的电平状态是{col 0,col 1,col 2,col 3}=0000 。
四根行线左端都接高电平,没有键被按下时,四根行线右端的状态是{row0,row1,row2,row3}=1111 。
假如上图中按键3被按下了,也就是说row0和col 0接通了。
那么四根行线右端的状态将会是{row0,row1,row2,row3}=0111 。
也就是说,在第一种状态下,只要键盘行线输入FPGA的状态不是1111,就说明有键被按下了。
马上进入第二状态。
第二种状态是判断具体哪个键被按下了。
该状态下四根行线左端接高电平不变,四根列线对应的电平状态不断变化,由FPGA的输出的扫描码控制四根列线的电平状态。
由第一状态的行线输入已经可以确定按键所处的行了。
接下来只要再确定按键所处的列就可以确定到底哪个键被按下了。
如何根据行线的输入确定按键所处的列,奥妙就在于扫描码了。
让列线以1000、0100、0010、0001的电平状态不断循环。
实验矩阵键盘扫描实验一、实验要求利用4X4 16位键盘和一个7段LED构成简单的输入显示系统,实现键盘输入和LED 显示实验。
二、实验目的1、理解矩阵键盘扫描的原理;2、掌握矩阵键盘与51单片机接口的编程方法。
三、实验电路及连线Proteus实验电路1、主要知识点概述:本实验阐述了键盘扫描原理,过程如下:首先扫描键盘,判断是否有键按下,再确定是哪一个键,计算键值,输出显示。
2、效果说明:以数码管显示键盘的作用。
点击相应按键显示相应的键值。
五、实验流程图1、Proteus仿真a、在Proteus中搭建和认识电路;b、建立实验程序并编译,加载hex文件,仿真;c、如不能正常工作,打开调试窗口进行调试参考程序:ORG 0000HAJMP MAINORG 0030HMAIN:MOV DPTR,#TABLE ;将表头放入DPTRLCALL KEY ;调用键盘扫描程序MOVC A,@A+DPTR ;查表后将键值送入ACCMOV P2,A ;将ACC值送入P0口LJMP MAIN ;返回反复循环显示KEY: LCALL KS ;调用检测按键子程序JNZ K1 ;有键按下继续LCALL DELAY2 ;无键按调用延时去抖AJMP KEY ;返回继续检测按键K1:LCALL DELAY2LCALL DELAY2 ;有键按下延时去抖动LCALL KS ;再调用检测按键程序JNZ K2 ;确认有按下进行下一步AJMP KEY ;无键按下返回继续检测K2: MOV R2,#0EFH ;将扫描值送入R2暂存MOV R4,#00H ;将第一列值送入R4暂存K3: MOV P1,R2 ;将R2的值送入P1口L6: JB P1.0,L1 ;P1.0等于1跳转到L1MOV A,#00H ;将第一行值送入ACCAJMP LK ;跳转到键值处理程序L1: JB P1.1,L2 ;P1.1等于1跳转到L2 MOV A,#04H ;将第二行的行值送入ACCAJMP LK ;跳转到键值理程序进行键值处理L2: JB P1.2,L3 ;P1.2等于1跳转到L3MOV A,#08H ;将第三行的行值送入ACCAJMP LK ;跳转到键值处理程序L3: JB P1.3,NEXT ;P1.3等于1跳转到NEXT处MOV A,#0cH 将第四行的行值送入ACCLK: ADD A,R4 ;行值与列值相加后的键值送入APUSH ACC ;将A中的值送入堆栈暂存K4:LCALL DELAY2 ;调用延时去抖动程序LCALL KS ;调用按键检测程序JNZ K4 ;按键没有松开继续返回检测POP ACC ;将堆栈的值送入ACCRETNEXT:INC R4 ;将列值加一MOV A,R2 ;将R2的值送入AJNB ACC.7,KEY ;扫描完至KEY处进行下一扫描RL A ;扫描未完将A中的值右移一位进行下一列的扫描MOV R2,A ;将ACC的值送入R2暂存AJMP K3 ;跳转到K3继续KS: MOV P1,#0FH ;将P1口高四位置0低四位值1MOV A,P1 ;读P1口XRL A,#0FH ;将A中的值与A中的值相异或RET ;子程序返回DELAY2: ;40ms延时去抖动子程序MOV R5,#08HL7: MOV R6,#0FAHL8: DJNZ R6,L8DJNZ R5,L7RETTABLE: ;七段显示器数据定义DB 0C0H, 0F9H, 0A4H, 0B0H, 99H ; 01234DB 92H, 82H, 0F8H, 80H, 90H ; 56789DB 88H, 83H, 0C6H, 0A1H, 86H ; ABCDEDB 8EH ; FEND ;程序结束。
矩阵键盘扫描1.实验目的与效果:4¡4矩阵键盘在众多场合有举足轻重的地位,所以有必要学好矩阵键盘扫描的编程。
实验板上的矩阵键盘是接单片机P2口的,以P2.4-P2.7作输出线,P2.0-P2.3作输入线;每按一个键会在数码管上显示相关的信息。
键盘上可以这样来定义,这只是个例子,用户在运用矩阵键盘键值是可以重新定义之。
2.原理图:矩阵键盘连接图3.实验板上操作:1)矩阵键盘在实验板上已经固定连接P2口了。
2)将HEX文件烧到单片机上。
3)将数码管的位选拨码开关拨到ON上。
4.实物连接图:拨码开关全部拨到ON5. C语言程序://MCU:AT89S51//晶振:12M#include"AT89X51.H"unsigned char code numcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0X88,0X83,0XC6,0XA1,0X86,0X8E,0XFF};//数字0~9及ABCDEF共阳数码管代码unsigned char code charcode[]={0xc0,0xc7,0xc7,0x86,0x89};// HELLO 字样共阳数码管代码unsigned char code bitcode[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //数码管位选代码unsigned char dispbuf[8]={16,16,16,0,1,2,3,4};unsigned char disp_bit_count;unsigned char disp_count;unsigned char temp;unsigned char key;unsigned char i,j;/********1ms延时子程序***********/delay_nms(unsigned int n){unsigned int i;unsigned char j;for(i=0;i<n;i++)for(j=0;j<120;j++); //空操作}unsigned char keyscan(void){P2=0xff;P2_4=0;temp=P2;temp=temp&0x0f;if (temp!=0x0f){delay_nms(10);temp=P2;temp=temp&0x0f;if (temp!=0x0f){temp=P2;temp=temp&0x0f;switch(temp){case 0x0e:key=7;break;case 0x0d:key=8;break;case 0x0b:key=9;break;case 0x07:key=10;break;}temp=P2;temp=temp & 0x0f;while(temp!=0x0f){temp=P2;temp=temp&0x0f;}}}P2=0xff;P2_5=0;temp=P2;temp=temp&0x0f;if (temp!=0x0f){delay_nms(10);temp=P2;temp=temp&0x0f;if (temp!=0x0f){temp=P2;temp=temp&0x0f;switch(temp){case 0x0e:key=4;break;case 0x0d:key=5;break;case 0x0b:key=6;break;case 0x07:key=11;break;}temp=P2;temp=temp & 0x0f;while(temp!=0x0f){temp=P2;temp=temp&0x0f;}}}P2=0xff;P2_6=0;temp=P2;temp=temp&0x0f;if (temp!=0x0f){delay_nms(10);temp=P2;temp=temp&0x0f;if(temp!=0x0f){temp=P2;temp=temp&0x0f;switch(temp){case 0x0e:key=1;case 0x0d:key=2;break;case 0x0b:key=3;break;case 0x07:key=12;break;}temp=P2;temp=temp&0x0f;while(temp!=0x0f){temp=P2;temp=temp&0x0f;}}}P2=0xff;P2_7=0;temp=P2;temp=temp & 0x0f;if (temp!=0x0f){delay_nms(10);temp=P2;temp=temp&0x0f;if (temp!=0x0f){temp=P2;temp=temp & 0x0f;switch(temp){case 0x0e:key=0;break;case 0x0d:key=13;break;case 0x0b:key=14;case 0x07:key=15;break;}temp=P2;temp=temp & 0x0f;while(temp!=0x0f){temp=P2;temp=temp & 0x0f;}}}return (key);}void main(void){TMOD=0x02; //使用定时器0,选择方式2(常数自动重装的8位定时器)TH0=0x06; //保存数值,用于自动重装TL0=0x06; //定时250uS初值TR0=1; //开定时器0ET0=1; //开定时器0溢出中断EA=1; //开总中断while(1){dispbuf[0]=keyscan();}}/**********T0250uS中断服务程序***************/void t0(void) interrupt 1 using 0{disp_count++;if(disp_count==8){disp_count=0;if(disp_bit_count>=3)P0=charcode[dispbuf[disp_bit_count]];elseP0=numcode[dispbuf[disp_bit_count]];P1=bitcode[disp_bit_count];disp_count=0;disp_bit_count++;if(disp_bit_count==8){disp_bit_count=0;}}}。
4x4矩阵键盘识别设计班级:1221201专业:测控技术与仪器姓名:涂勇学号:2012 2012 0110指导老师:钟念兵东华理工大学2016年1月1日摘要随着21世纪的到来,电子信息行业将是人类社会的高科技行业之一,电子式设施现代化的基础,也是人类通往科技巅峰的直通路。
电子行业的发展从长远来看很重要,但最主要的还是科技问题。
矩阵式键盘提高效率进行按键操作管理有效方法,它可以提高系统准确性,有利于资源的节约,降低对操作者本身素质的要求。
是它能准时、实时、高效地显示按键信息,以提高工作效率和资源利用率。
矩阵式键盘乃是当今使用最为广泛的键盘模式,该系统以N个端口连接控制N*N 个按键,显示在LED数码管上。
单片机控制依据这是键盘显示系统,该系统可以对不同的按键进行实时显示,其核心是单片机和键盘矩阵电路部分,主要对按键与显示电路的关系、矩阵式技术及设备系统的硬件、软件等各个部分进行实现。
4*4矩阵式键盘采用STM32嵌入式微处理器为核心,主要由矩阵式键盘电路、硬件电路、显示电路等组成,软件选用C语言编程。
STM32将检测到的按键信号转换成数字量,显示于LED显示器上。
该系统灵活性强,易于操作,可靠性高,将会有更广阔的开发前景。
目录第一章:系统功能要求-------------------------------------------------------- 1.1 4*4 矩阵式键盘系统概述------------------------------------------------ 1.2 本设计任务和主要容--------------------------------------------------- 第二章:系统硬件电路的设计------------------------------------------------2.1 硬件系统主要思路和电路原理图- --------------------------------------2.2 硬件上键盘规划- --------------------------------------------------------- 第三章:系统程序的设计------------------------------------------------------3.1 程序的编写步骤-----------------------------------------------------------3.2 编写的源程序-------------------------------------------------------------- 第四章:心得体会---------------------------------------------------------------第一章:系统功能要求1.1 4*4 矩阵式键盘系统概述利用STM32对4*4矩阵键盘进行动态扫描,当有按键盘的键时,可将相应按键值(0~F)实时显示在数码管上。
实验三:矩阵键盘扫描及LED数码显示综合实验
一、实验要求
利用4×4键盘和一个LED数码管构成简单的输入显示系统,实现键盘输入和LED数码显示相应键值的功能。
二、实验目的
1.掌握数码管显示原理,及无译码显示电路的显示程序的编写;
1.理解矩阵键盘扫描的原理;
2.掌握矩阵键盘与51单片机接口的编程方法。
三、实验电路图
四、主要知识点
键盘扫描原理、无译码电路的显示原理。
五、实验流程图
六、实验效果:点击相应按键显示相应的键值
七、实验步骤
1.在keil环境下编写程序,汇编后生成*.Hex文件。
2.硬件验证
1)用ISP下载*.HEX程序到CPU
2)按连接表连接电路
3)检查验证结果。
八、连线表
十、源程序:自己编写源程序。
1 矩阵键盘扫描要求:设计矩阵式键盘接口,并在一个数码管上面显示按下的数字,从0到9以及小数点。
判断键盘中有无按键按下是通过行线送入扫描线好然后从列线读取状态得到的。
其方法是依次给行线送低电平,检查列线的输入。
如果列线全是高电平,则代表低电平信号所在的行中无按键按下;如果列线有输入为低电平,则代表低电平信号所在的行和出现低电平的列的交点处有按键按下。
整个设计程序包括三个模块:时钟分频、键盘扫描和键译码转换。
时钟分频:由于使用的外部时钟频率为50MHz,这个频率对扫描来说太高,所以这里需要一个分频器来分得适合键盘扫描使用的频率。
键盘扫描:由键盘的工作原理可知,要正确地完成按键输入工作必须有按键扫描电路产生KEYI信号,同时必须有按键译码电路从KEYI中和KEYOUT中读出按键的键值。
键盘扫描电路是用于产生KEYI3~ KEYI0 信号,其变化顺序是1110→1101→1011→0111→1110…周而复始地扫描。
其停留时间大慨在10ms。
键盘译码:键盘译码电路是从keyI3~keyI0和keyout3~keyout0信号中译码出按键值的电路。
将此按键值显示在数码管上。
FPGA_CLK 系统的主时钟MASTER_RESET_n 主复位Button[0]-[15] 拨码开关/白色按钮通过跳线Jxx选择Seven_seg[0]-[7] 数码管的显示Seven_seg[8]-[15] 数码管的选择LED_DOWN[0]-[7] 8个ledKeyboard_Down[0]-[8] 键盘输入/AD输入,通过JP8选择低位表示行。
原理图中Keyboard_Down[0]-[4]对应KEYI[0-4]Keyboard_Down[5]-[8]对应KEYO[0-3]此例中Keyboard_Down[1]-[4]对应KEYI[0-3]Keyboard_Down[5]-[8]对应KEYO[0-3]2、交通灯的控制课程设计原理:在十字路口,每条道路各有一组红、黄、绿灯和倒计时显示器,用以指挥车辆和行人有序的通行。
单片机矩阵按键课程设计一、课程目标知识目标:1. 学生能理解单片机矩阵按键的基础知识,掌握矩阵按键的原理及其在电路中的应用。
2. 学生能描述单片机I/O口操作方法,并运用此知识实现矩阵按键的编程控制。
3. 学生能解释并运用行、列扫描法进行按键识别,实现按键的消抖处理。
技能目标:1. 学生能够独立完成矩阵按键电路的连接,并进行调试。
2. 学生能够运用所学知识,编写程序实现矩阵按键的扫描与功能分配。
3. 学生能够通过实验,分析和解决矩阵按键编程过程中遇到的问题。
情感态度价值观目标:1. 学生培养对单片机技术的兴趣,增强对电子工程领域的认识。
2. 学生在学习过程中,培养解决问题的耐心和毅力,树立团队协作意识。
3. 学生能够认识到单片机技术在现实生活中的应用价值,增强创新实践能力。
课程性质:本课程为实践性较强的电子技术课程,要求学生在掌握理论知识的基础上,注重动手实践。
学生特点:学生具备一定的单片机基础知识,对电子技术有较高的兴趣,但编程和动手能力参差不齐。
教学要求:结合学生特点,课程注重理论与实践相结合,充分调动学生的积极性,提高学生的动手能力和创新能力。
通过课程学习,使学生在知识、技能和情感态度价值观方面均有所提升。
二、教学内容1. 矩阵按键原理:介绍矩阵按键的电路结构、工作原理以及其在单片机系统中的应用。
- 教材章节:第二章第二节《矩阵键盘的工作原理》2. 单片机I/O口操作:回顾并加深理解单片机I/O口的基本操作,为矩阵按键编程打下基础。
- 教材章节:第一章《单片机基础》3. 行列扫描法:讲解如何运用行列扫描法进行按键识别,包括消抖处理方法。
- 教材章节:第二章第三节《矩阵键盘的编程方法》4. 矩阵按键编程实践:指导学生编写程序,实现矩阵按键的扫描与功能分配。
- 教材章节:第二章第四节《矩阵键盘应用实例》5. 电路连接与调试:学生动手实践,完成矩阵按键电路的连接,并进行调试。
- 教材章节:实验指导书《矩阵键盘实验》6. 问题分析与解决:针对编程和调试过程中遇到的问题,引导学生进行分析和解决。
eda矩阵键盘扫描课程设计一、课程目标知识目标:1. 让学生理解EDA矩阵键盘的基本原理和结构;2. 使学生掌握矩阵键盘扫描的方法和技巧;3. 帮助学生掌握利用EDA工具进行矩阵键盘电路设计和仿真。
技能目标:1. 培养学生运用EDA工具进行矩阵键盘电路搭建和调试的能力;2. 培养学生分析并解决矩阵键盘扫描过程中出现问题的能力;3. 提高学生团队协作和沟通表达能力,能就矩阵键盘扫描问题进行有效讨论。
情感态度价值观目标:1. 培养学生对电子技术课程的兴趣和热情,激发学生主动探究精神;2. 培养学生严谨的科学态度和良好的学习习惯;3. 增强学生的创新意识,鼓励学生勇于尝试新的设计方法和思路。
课程性质分析:本课程为电子技术课程的一部分,以实践操作为主,理论联系实际,旨在培养学生的电子技术应用能力。
学生特点分析:学生处于高中年级,具有一定的电子技术基础和动手能力,对新鲜事物充满好奇,善于团队合作。
教学要求:结合学生特点,注重实践与理论相结合,强调学生的动手能力和问题解决能力,提高学生的创新意识和团队协作能力。
通过本课程的学习,使学生能够达到上述课程目标,为后续电子技术课程的学习打下坚实基础。
二、教学内容1. 理论知识:- 矩阵键盘的工作原理与结构;- 键盘扫描方法:行扫描和列扫描;- EDA工具的使用方法及电路仿真基本操作。
2. 实践操作:- 利用EDA工具设计矩阵键盘电路;- 矩阵键盘电路的搭建与调试;- 键盘扫描程序编写与优化。
3. 教学大纲安排:- 第一章:矩阵键盘原理及结构介绍(1课时)- 第二章:键盘扫描方法分析(1课时)- 第三章:EDA工具的使用及电路仿真(2课时)- 第四章:矩阵键盘电路设计与搭建(2课时)- 第五章:键盘扫描程序编写与调试(2课时)4. 教材关联:- 《电子技术基础》第四章:数字电路基础;- 《电子技术实验教程》第六章:矩阵键盘与显示电路设计。
教学内容确保科学性和系统性,结合课程目标,注重理论与实践相结合。
《工业控制计算机》2018年第31卷第7期矩阵键盘是单片机应用系统中的一个重要部件,它能实现向单片机输入数据、传送命令等功能。
如要对键盘编码就需要识别按键,识别按键的方法很多,最常用的是扫描法。
基于扫描原理的常用编程方法在应用过程中不利于键盘的灵活编码,尤其是出于保密需要定期打乱键盘排序时更为不便。
1矩阵键盘扫描原理常用的矩阵键盘扫描方法有两种:一种是逐行扫描,通过高四位轮流输出低电平来对矩阵键盘进行逐行扫描,当低四位接收到的数据不全为1的时候,说明有按键按下,然后通过接收到的数据是哪一位为0来判断是哪一个按键被按下。
另一种是行列扫描,高四位全部输出低电平,低四位输出高电平。
当接收到的数据,低四位不全为高电平时,说明有按键按下,然后通过接收的数据值,判断是哪一列有按键按下,然后再反过来,高四位输出高电平,低四位输出低电平,然后根据接收到的高四位的值判断是那一行有按键按下,这样就能够确定是哪一个按键按下[1-2]。
以上两种方法在对矩阵键盘编码时常以一定规律进行。
比如用以上方法对4x4矩阵键盘编码时,定义了某一行或列4个按键的字符后,其余行列都必须以其四倍的数进行编码(常用的扫描程序见图1)。
这样会极大限制键盘使用的灵活性。
为此,本文将介绍在51单片机环境下,基于扫描原理的4x4矩阵键盘的一种编程方法。
图1常用的扫描程序2程序设计及仿真2.1编程原理如图2所示为典型4×4矩阵键盘按键定义的功能[3-5]。
图24×4矩阵键盘按键定义图为了便于区分,可将图2中所示的4x4矩阵键盘划分为1、2、3、4共四列和A 、B 、C 、D 共四行,四列接单片机P1端口高四位,四行接单片机P1端口低四位。
首先将高四位置1,低四位置0。
如果没有按键按下则返回11110000即0XF0。
如某列有按键按下则对应得到如表1所示值。
表1四列扫描结果值再将高四位置0,低四位置1。
如果没有按键按下则返回00001111即0X0F 。
4X4扫描式矩阵键盘课程设计课程设计名称: 4_4扫描式矩阵键盘设计姓名:DUKE班级:电子1008班学号:10086成绩:日期:2014年1月6日摘要随着21世纪的到来,电子信息行业将是人类社会的高科技行业之一,式设施现代化的基础,也是人类通往科技巅峰的直通路。
电子行业的发展从长远来看很重要,但最主要的还是科技问题。
矩阵式键盘提高效率进行按键操作管理有效方法,它可以提高系统准确性,有利于资源的节约,降低对操作者本身素质的要求。
是它能准时、实时、高效地显示按键信息,以提高工作效率和资源利用率。
矩阵式键盘乃是当今使用最为广泛的键盘模式,该系统以N个端口连接控制N*N个按键,显示在LED数码管上。
单片机控制依据这是键盘显示系统,该系统可以对不同的按键进行实时显示,其核心是单片机和键盘矩阵电路部分,主要对按键与显示电路的关系、矩阵式技术及设备系统的硬件、软件等各个部分进行实现。
4*4矩阵式键盘采用AT89C51单片机为核心,主要由矩阵式键盘电路、译码电路、显示电路等组成,软件选用C语言编程。
单片机将检测到的按键信号转换成数字量,显示于LED显示器上。
该系统灵活性强,易于操作,可靠性高,将会有更广阔的开发前景。
目录第一章:系统功能要求-------------------------------------------------------- 4*4 矩阵式键盘系统概述------------------------------------------------本设计任务和主要内容---------------------------------------------------第二章:方案论证--------------------------------------------------------------- 第三章:系统硬件电路的设计------------------------------------------------ 单片机控制系统原理-----------------------------------------------------原理图绘制说明----------------------------------------------------------画出流程图----------------------------------------------------------------原理图绘制---------------------------------------------------------------第四章:系统程序的设计------------------------------------------------------ 程序的编写步骤-----------------------------------------------------------编写的源程序--------------------------------------------------------------第五章:调试及性能分析------------------------------------------------------ 第六章:心得体会--------------------------------------------------------------- 参考文献----------------------------------------------------------------------------第一章:系统功能要求4*4 矩阵式键盘系统概述AT89C51单片机对4*4矩阵键盘进行动态扫描,当有按键盘的键时,可将相应按键值(0~F)实时显示在数码管上。
扫描式矩阵键盘课程设计Company number【1089WT-1898YT-1W8CB-9UUT-92108】4X4扫描式矩阵键盘课程设计课程设计名称: 4_4扫描式矩阵键盘设计姓名: DUKE班级:电子1008班学号: 10086成绩:日期: 2014年1月6日摘要随着21世纪的到来,电子信息行业将是人类社会的高科技行业之一,式设施现代化的基础,也是人类通往科技巅峰的直通路。
电子行业的发展从长远来看很重要,但最主要的还是科技问题。
矩阵式键盘提高效率进行按键操作管理有效方法,它可以提高系统准确性,有利于资源的节约,降低对操作者本身素质的要求。
是它能准时、实时、高效地显示按键信息,以提高工作效率和资源利用率。
矩阵式键盘乃是当今使用最为广泛的键盘模式,该系统以N个端口连接控制N*N个按键,显示在LED数码管上。
单片机控制依据这是键盘显示系统,该系统可以对不同的按键进行实时显示,其核心是单片机和键盘矩阵电路部分,主要对按键与显示电路的关系、矩阵式技术及设备系统的硬件、软件等各个部分进行实现。
4*4矩阵式键盘采用AT89C51单片机为核心,主要由矩阵式键盘电路、译码电路、显示电路等组成,软件选用C语言编程。
单片机将检测到的按键信号转换成数字量,显示于LED显示器上。
该系统灵活性强,易于操作,可靠性高,将会有更广阔的开发前景。
目录第一章:系统功能要求--------------------------------------------------------1.1 4*4 矩阵式键盘系统概述------------------------------------------------1.2 本设计任务和主要内容---------------------------------------------------第二章:方案论证---------------------------------------------------------------第三章:系统硬件电路的设计------------------------------------------------3.1 单片机控制系统原理-----------------------------------------------------3.2 原理图绘制说明----------------------------------------------------------3.3 画出流程图----------------------------------------------------------------3.4 原理图绘制---------------------------------------------------------------第四章:系统程序的设计------------------------------------------------------4.1 程序的编写步骤-----------------------------------------------------------4.2 编写的源程序--------------------------------------------------------------第五章:调试及性能分析------------------------------------------------------第六章:心得体会---------------------------------------------------------------参考文献----------------------------------------------------------------------------第一章:系统功能要求1.1 4*4 矩阵式键盘系统概述AT89C51单片机对4*4矩阵键盘进行动态扫描,当有按键盘的键时,可将相应按键值(0~F)实时显示在数码管上。
由p1.0—p1.3(列)和p1.4—p1.7(行)组成4*4矩阵键盘,p0口接LED 静态显示电路。
由于p0口内部无上拉电阻,因此必须外部接上上拉电阻,其值的选择可以根据LED数码管发光电流及其亮度来决定。
通过编写4*4键盘的驱动程序,当有键盘按下时,能够在数码管显示器与按键的键值对应的数字。
最常见键盘布局如下图1.1所示。
一般由16个按键组成,在单片机中正好可以用一个p图1.11.2 本设计任务和主要内容本论文主要研究单片机控制的键盘识别显示系统,分别对按键信息和显示电路以及软、硬件各个部分进行研究。
主要内容如下:1.2.1 根据矩阵式键盘的特点,进行键盘控制系统的整体研究与设计;1.2.2 熟练掌握protues软件的使用,并能够按要求对设计的电路进行仿真,实现相应的功能;1.2.3 LED实时显示按键的信息;1.2.4 采用软件编程的方法实现按键信息的提取和显示。
第二章:方案论证2.1 用proteus 仿真软件进行仿真2.1.1 按照设计任务在proteus 7professional 中绘制电路原理图。
2.1.2 根据设计任务的要求编写程序,画出程序流程图,并在proteus下进行仿真,实现相应功能。
2.1.3 以AT89C51为核心,设计系统硬件电路,并根据所设计的电路制作实物。
第三章:系统硬件电路的设计3.1 原理图绘制说明3.1.1 用AT89C51单片机对4*4矩阵键盘进行动态扫描,当按键盘的键时,可以将相应的按键值(0~F)实时显示在数码管上。
4*4矩阵键盘是用4条I/O 线作为行线,4条I/O线作为列线,在行线和列线的交叉点上设置一个按键,每个按键有它的行值和列值。
3.1.2 在“单片机系统”区域中,把单片机的P1.0-P1.7端口通过8联拨动拨码开关连接到“4×4行列式键盘”区域的相应端口上。
3.1.3 在“单片机系统”区域中,把单片机的P0.0-P0.7端口连接到“静态数码显示模块”区域中的任何一个a-g端口上;要求:P0.0对应着a,P0.1对应着b,……,P0.6对应着g。
3.2 画出流程图流程开始先对第一列进行扫描,如果没有按键,再对第二列、第三列、第四列分别进行扫描,如果没有返回到开始;如果第一列有按键,分别对第一行、第二行、第三行、第四行进行扫描,若有按键按下分别显示0、1、2、3;第二列、第三列、第四列类似第一列,分别对第一行、第二行、第三行、第四行进行扫描,有按键相应的显示出数值。
判断有无按键按下的方法是:第一步,置列线P1.4—P1.7为输入状态,从行线P1.0—P1.3输出低电平,读入列线数据,若某一列线为低电平,则该列线上有键闭合。
第二步,行线轮流输出低电平,从列线P1.4—P1.7读入数据,若有某一列为低电平,则对应行线上有按键按下。
综合一二两步的结果,可以确定按键的编号。
但是键闭合一次只能进行一次键功能操作,因此必须等到按键释放后,再进行键功能操作,否则按键一次,有可能会连续多次进行同样的操作。
流程图如下:3.3 原理图绘制3.3.1 打开protrus仿真软件,进入主界面,然后新建一个图纸文件,软件默认为A4纸张,符合我们的要求,所以不需要修改。
3.3.2 开始绘图,点击按钮P,弹出选择添加的器件框图,在Keywords里直接输入所需器件的名称或者在Category的下面各个选项里一次查找所需的器件名称,然后点击ok将所需器件添加进去。
3.3.3 依次添加AT89C51芯片,共阳极的7段数码管,16个按键,8个电阻R0~R7,一个晶片,3个电容,地及电源。
3.3.4 按照设计的要求正确的连接电路,连接时注意管脚的分配及AT89C51的工作原理。
3.3.5 对连接好的电路图进行仿真,如果有错误要先按下暂停,然后对电路进一步的调整与修改,再进行仿真,保存原理图文件。
用protrus仿真软件所画的仿真图如下:图3.2 仿真原理图第四章:系统程序的设计4.1 程序的编写步骤4.1.1 判断是否有键按下;4.1.2 识别被按下的键;4.1.3 查数码显示编码表;4.2 编写的源程序{P07=1; //选通最有端的数码管显示P0=~table[i]; //显示i参数传来的字型码}void main(void){unsigned char temp;display(16); //初始显示 "-"while(1){//P1=0xff; //先向P1口写1;端口读状态 P1=0xf0;temp=P1;if(temp!=0xf0){delay1ms(15);if(temp!=0xf0){P1=0xfe;temp=P1;switch(temp){case(0xee):display(0);break;case(0xde):display(4);break;case(0xbe):display(8);break;case(0x7e):display(12);break;}P1=0xfd;temp=P1;switch(temp){case(0xed):display(1);break;case(0xdd):display(5);break;case(0xbd):display(9);break;case(0x7d):display(13);break;}P1=0xfb;temp=P1;switch(temp){case(0xeb):display(2);break;case(0xdb):display(6);break;case(0xbb):display(10);break;case(0x7b):display(14);break;第五章:调试及性能分析5.1 仿真结果:将此程序在汇编器中生成的“.hex”文件,导入AT89C51芯片中,用鼠标右键点击AT89C51,然后点鼠标左键,弹出编辑元件的框图,在programfile里添加.hex文件,再点OK。
5.2 点击“开始”按键,进行仿真,点击右边4*4按键,则数码管显示0~F,仿真结果符合实验要求,仿真结果如下图所示:图5.1 仿真结果显示图(图中显示4)5.3 系统实现的功能5.3.1 基本功能:通过键盘输入,在数码管上显示相应的数值;5.3.2 功能优势:键盘输入,单片机控制,数码管显示,在数码管连接方面克服了共阳极数码管显示不清晰的困难。
第六章:心得体会课程设计诚然是一门专业课,给我很多专业知识以及专业技能上的提升,同时又是一门讲道课,一门辩思课,给了我许多道,给了我很多思,给了我莫大的空间。
同时,设计让我感触很深。