单片机课程设计44矩阵式键盘识别显示电路的设计说明

合集下载

4×4矩阵式键盘的课程设计

4×4矩阵式键盘的课程设计

“电子创新设计与实践”课程期中课题设计报告姓名:张思源,学:20102121026,年级:2010,专业:电信报告内容设计一个4*4矩阵键盘,并编写相关程序摘要1.4×4矩阵式键盘程序识别原理。

2.4×4矩阵式键盘按键的设计方法。

报告正文:一、设计原理(1)如图14.2所示,用单片机的并行口P3连接4×4矩阵键盘,并以单片机的P3.0-P3.3各管脚作输入线,以单片机的P3.4-P3.7各管脚作输出线,在数码管上显示每个按键“0-F”的序号。

(2)键盘中对应按键的序号排列如图14.1所示。

二、参考电路图14.2 4×4矩阵式键盘识别电路原理图图14.1 4×4键盘0-F显示图14.3 4×4矩阵式键盘识别程序流程图三、电路硬件说明(1)在“单片机系统”区域中,把单片机的P3.0-P3.7端口通过8联拨动拨码开关JP3连接到“4×4行列式键盘”区域中的M1-M4,N1-N4端口上。

(2)在“单片机系统”区域中,把单片机的P0.0-P0.7端口连接到“静态数码显示模块”区域中的任何一个a-h端口上;要求:P0.0对应着a,P0.1对应着b,……,P0.7对应着h。

四、程序设计内容(1)4×4矩阵键盘识别处理。

(2)每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。

矩阵的行线和列线分别通过两并行接口和CPU通信。

键盘的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。

键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么?还要消除按键在闭合或断开时的抖动。

两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。

五、程序流程图(如图14.3所示)六、汇编源程序;;;;;;;;;;定义单元;;;;;;;;;;COUNT EQU 30H;;;;;;;;;;入口地址;;;;;;;;;;ORG 0000HLJMP STARTORG 0003HRETIORG 000BHRETIORG 0013HRETIORG 001BHRETIRETIORG 002BHRETI;;;;;;;;;;主程序入口;;;;;;;;;;ORG 0100HSTART: LCALL CHUSHIHUALCALL PANDUANLCALL XIANSHILJMP START;;;;;;;;;;初始化程序;;;;;;;;;; CHUSHIHUA: MOV COUNT,#00HRET;;;;;;;;;;判断哪个按键按下程序;;;;;;;;;; PANDUAN: MOV P3,#0FFHCLR P3.4MOV A,P3ANL A,#0FHXRL A,#0FHJZ SW1LCALL DELAY10MSJZ SW1ANL A,#0FHCJNE A,#0EH,K1 MOV COUNT,#0LJMP DKK1: CJNE A,#0DH,K2 MOV COUNT,#4LJMP DKK2: CJNE A,#0BH,K3 MOV COUNT,#8LJMP DKK3: CJNE A,#07H,K4 MOV COUNT,#12K4: NOPLJMP DKSW1: MOV P3,#0FFH CLR P3.5MOV A,P3ANL A,#0FHXRL A,#0FHJZ SW2LCALL DELAY10MSMOV A,P3ANL A,#0FHCJNE A,#0EH,K5 MOV COUNT,#1LJMP DKK5: CJNE A,#0DH,K6 MOV COUNT,#5LJMP DKK6: CJNE A,#0BH,K7 MOV COUNT,#9LJMP DKK7: CJNE A,#07H,K8 MOV COUNT,#13K8: NOPLJMP DKSW2: MOV P3,#0FFH CLR P3.6MOV A,P3ANL A,#0FHXRL A,#0FHJZ SW3LCALL DELAY10MSJZ SW3MOV A,P3ANL A,#0FHCJNE A,#0EH,K9 MOV COUNT,#2LJMP DKK9: CJNE A,#0DH,KA MOV COUNT,#6LJMP DKKA: CJNE A,#0BH,KB MOV COUNT,#10 LJMP DKKB: CJNE A,#07H,KC MOV COUNT,#14 KC: NOPLJMP DKSW3: MOV P3,#0FFH CLR P3.7MOV A,P3ANL A,#0FHXRL A,#0FHJZ SW4LCALL DELAY10MSJZ SW4MOV A,P3ANL A,#0FHCJNE A,#0EH,KDMOV COUNT,#3LJMP DKKD: CJNE A,#0DH,KEMOV COUNT,#7LJMP DKKE: CJNE A,#0BH,KFMOV COUNT,#11LJMP DKKF: CJNE A,#07H,KGMOV COUNT,#15KG: NOPLJMP DKSW4: LJMP PANDUANDK: RET;;;;;;;;;;显示程序;;;;;;;;;;XIANSHI: MOV A,COUNTMOV DPTR,#TABLEMOVC A,@A+DPTRMOV P0,ALCALL DELAYSK: MOV A,P3ANL A,#0FHXRL A,#0FHJNZ SKRET;;;;;;;;;;10ms延时程序;;;;;;;;;; DELAY10MS: MOV R6,#20D1: MOV R7,#248DJNZ R7,$DJNZ R6,D1RET;;;;;;;;;;200ms延时程序;;;;;;;;;; DELAY: MOV R5,#20LOOP: LCALL DELAY10MSDJNZ R5,LOOPRET;;;;;;;;;;共阴码表;;;;;;;;;;TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;;;;;;;;;;结束标志;;;;;;;;;;END八、C语言源程序#include<AT89X51.H>unsigned char code table[]={0x3f,0x66,0x7f,0x39, 0x06,0x6d,0x6f,0x5e,0x5b,0x7d,0x77,0x79,0x4f,0x07,0x7c,0x71};void main(void){ unsigned char i,j,k,key;while(1){ P3=0xff; //给P3口置1//P3_4=0; //给P3.4这条线送入0//i=P3;i=i&0x0f; //屏蔽低四位//if(i!=0x0f) //看是否有按键按下//{ for(j=50;j>0;j--) //延时//for(k=200;k>0;k--);if(i!=0x0f) //再次判断按键是否按下//{ switch(i) //看是和P3.4相连的四个按键中的哪个//{ case 0x0e:key=0;break;case 0x0d:key=1;break;case 0x0b:key=2;break;case 0x07:key=3;break;}P0=table[key]; //送数到P0口显示//}}P3=0xff;P3_5=0; //读P3.5这条线//i=P3;i=i&0x0f; //屏蔽P3口的低四位//if(i!=0x0f) //读P3.5这条线上看是否有按键按下// { for(j=50;j>0;j--) //延时//for(k=200;k>0;k--);i=P3; //再看是否有按键真的按下//i=i&0x0f;if(i!=0x0f){ switch(i) //如果有,显示相应的按键// { case 0x0e:key=4;break;case 0x0d:key=5;break;case 0x0b:key=6;break;case 0x07:key=7;break;}P0=table[key]; //送入P0口显示//}}P3=0xff;P3_6=0; //读P3.6这条线上是否有按键按下// i=P3;i=i&0x0f;if(i!=0x0f){ for(j=50;j>0;j--)for(k=200;k>0;k--);i=P3;i=i&0x0f;if(i!=0x0f){ switch(i){ case 0x0e:key=8;break;case 0x0d:key=9;break;case 0x0b:key=10;break;case 0x07:key=11;break;}P0=table[key];}}P3=0xff;P3_7=0; //读P3.7这条线上是否有按键按下// i=P3;i=i&0x0f;if(i!=0x0f){ for(j=50;j>0;j--)for(k=200;k>0;k--);i=P3;i=i&0x0f;if(i!=0x0f){ switch(i){ case 0x0e:key=12;break;case 0x0d:key=13;break;case 0x0b:key=14;break;case 0x07:key=15;break;}P0=table[key];}}}}参考文献:百度百科。

课程设计-制作单片机的4X4矩阵键盘

课程设计-制作单片机的4X4矩阵键盘
第二节4*4矩阵式键盘
1.2.1矩阵式键盘介绍
矩阵式键盘(或者叫行列式键盘)常应用在按键数量比较多的系统之中。这种键盘由行线和列线组成,按键设置在行、列结构的交叉点上,行、列线分别接在按键开关的两端。行列式键盘可分为非编码键盘和编码键盘两大类。编码键盘内部设有键盘编码器,被按下键的键号由键盘编码器直接给出,同时具有防抖和解决重键的功能。非编码键盘通常采用软件的方法,逐行逐列检查键盘状态,当有键按下时,通过计算或查表的方法获取该键的键值,通常,计算机通过程序控制对键盘扫描,从而获取键值,根据计算机扫描的方法可以分为定时扫描法和中断扫描法两种。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
P3.1 TXD(串行输出口)
P3.2 /INT0(外部中断0)
P3.3 /INT1(外部中断1)
P3.4 T0(记时器0外部输入)
P3.5 T1(记时器1外部输入)
P3.6 /WR(外部数据存储器写选通)
P3.7 /RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
课程设计-制作单片机的4X4矩阵键盘
第一章硬件部分
第一节AT89C51
AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。引脚如图所示

单片机课程设计---4×4矩阵式键盘识别显示电路的设计

单片机课程设计---4×4矩阵式键盘识别显示电路的设计

《单片机原理及应用》课程设计题目:4×4矩阵式键盘与单片机连接与编程专业:测控技术与仪器班级:机电082-1 姓名:学号:指导老师:组员:( 2011.7 .13)目录第1节引言 (2)1.1 4*4矩阵式键盘系统概述 (2)1.2 本设计任务和主要内容 (3)第2节系统主要硬件电路设计 (4)2.1 单片机控制系统原理 (4)2.2 单片机主机系统电路 (5)2.2.1 时钟电路 (8)2.2.2 复位电路 (8)2.2.3 矩阵式键盘电路 (8)2.3 译码显示电路 (9)第3节系统软件设计 (13)3.1 软件流程图 (13)3.2 系统程序设计 (14)第4节结束语 (17)参考文献 (18)第一节引言矩阵式键盘乃是当今使用最为广泛的键盘模式,该系统以N个端口连接控制N*N个按键,即时在LED数码管上。

单片机控制的据这是键盘显示系统,该系统可以对不同的按键进行实时显示,其核心是单片机和键盘矩阵电路部分,主要对按键与显示电路的关系、矩阵式技术及设备系统的硬件、软件等各个部分进行实现。

1.1 4*4矩阵式键盘识别显示系统概述矩阵式键盘模式以N个端口连接控制N*N个按键,实时在LED数码管上显示按键信息。

显示按键信息,既降低了成本,又提高了精确度,省下了很多的I/O端口为他用,相反,独立式按键虽编程简单,但占用I/O口资源较多,不适合在按键较多的场合应用。

并且在实际应用中经常要用到输入数字、字母、符号等操作功能,如电子密码锁、电话机键盘、计算器按键等,至少都需要12到16个按键,在这种情况下如果用独立式按键的话,显然太浪费I/O端口资源,为了解决这一问题,我们使用矩阵式键盘。

矩阵式键盘简介:矩阵式键盘又称行列键盘,它是用N条I/O线作为行线,N条I/O线作为列线组成的键盘。

在行线和列线的每个交叉点上设置一个按键。

这样键盘上按键的个数就为N*N个。

这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。

单片机c语言程序设计---矩阵式键盘实验报告

单片机c语言程序设计---矩阵式键盘实验报告

单片机c语言程序设计---矩阵式键盘实验报告课程名称:单片机c语言设计实验类型:设计型实验实验项目名称:矩阵式键盘实验一、实验目的和要求1.掌握矩阵式键盘结构2.掌握矩阵式键盘工作原理3.掌握矩阵式键盘的两种常用编程方法,即扫描法和反转法二、实验内容和原理实验1.矩阵式键盘实验功能:用数码管显示4*4矩阵式键盘的按键值,当K1按下后,数码管显示数字0,当K2按下后,显示为1,以此类推,当按下K16,显示F。

(1)硬件设计电路原理图如下仿真所需元器件(2)proteus仿真通过Keil编译后,利用protues软件进行仿真。

在protues ISIS 编译环境中绘制仿真电路图,将编译好的“xxx.hex”文件加入AT89C51。

启动仿真,观察仿真结果。

操作方完成矩阵式键盘实验。

具体包括绘制仿真电路图、编写c源程序(反转法和扫描法)、进行仿真并观察仿真结果,需要保存原理图截图,保存c源程序,总结观察的仿真结果。

完成思考题。

三、实验方法与实验步骤1.按照硬件设计在protues上按照所给硬件设计绘制电路图。

2.在keil上进行编译后生成“xxx.hex”文件。

3.编译好的“xxx.hex”文件加入AT89C51。

启动仿真,观察仿真结果。

四、实验结果与分析void Scan_line()//扫描行{Delay(10);//消抖switch ( P1 ){case 0x0e: i=1;break;case 0x0d: i=2;break;case 0x0b: i=3;break;case 0x07: i=4;break;default: i=0;//未按下break;}}void Scan_list()//扫描列{Delay(10);//消抖switch ( P1 ){case 0x70: j=1;break;case 0xb0: j=2;break;case 0xd0: j=3;break;case 0xe0: j=4;break;default: j=0;//未按下break;}}void Show_Key(){if( i != 0 && j != 0 ) P0=table[ ( i - 1 ) * 4 + j - 1 ];else P0=0xff;}五、讨论和心得。

单片机课程设计报告---数码管显示4X4矩阵键盘按键号

单片机课程设计报告---数码管显示4X4矩阵键盘按键号

课程设计报告书设计名称:单片机原理与应用题目:数码管显示4X4矩阵键盘按键号专业:计算机科学与技术日期:2012 年6月 11日一.设计目的:1) 了解单片机系统实现LED动态显示的原理及方法;2) 较为详细了解8051芯片的性能;3) 能够了解到单片机系统的基本原理,了解单片机控制原理;4) 掌握AT89C51程序控制方法;5) 掌握AT89C51 C语言中的设计和学会分析程序,进而能够根据自己的需要编写代码;6) 掌握4X4矩阵式键盘程序识别原理;7) 掌握4X4矩阵式键盘的设计方法;8) 学习键盘的扫描方式和应用程序设计;9) 培养根据课题需要选学参考书籍、查阅手册和文献资料的能力;10) 能够按课程设计的要求编写课程设计报告,能够正确反映设计和实验成果。

二.设计要求与主要内容:设计要求:单片机的P1口P1.0~P1.7连接4X4矩阵键盘,P0口控制一只P0口控制一只数码管,当4×4矩阵键盘中的某一按键按下时,数码管上显示对应的键号。

例如,1号键按下时,数码管显示“1”,二号按下的时候,数码管显示“2”,14号键按下时,数码管显示“E”等等。

主要内容:1)4×4矩阵键盘程序识别原理。

2)每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。

矩阵的行线和列线都连接到AT89C51中,通过按键K0~K16,来在数码管显示不同的值。

实验步骤:1) 启动keiuvision3 2)新建工程命名为单片机的C语言设计与应用3)新建文件并另存为C51c.c 4)在SourceGroop1导入文件 5)编写代码,并生成C语言设计与应用.hex文件。

6)在Proteus中设计电路图7) 将keil与Proteus联机调试,记下实验记录,得出实验结果。

三.设计程序原理:(包含仿真图和流程图)1)主程序流程图2)程序流程图 若无按键按下若无按键按下若无按键按下若无按键按下结束,返回3)仿真图四.程序代码#include<reg51.h>#define uchar unsigned char#define uint unsigned int//段码ucharcodeDSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0x88,0x83,0xc6,0xa1,0x86,0x8e,0x00};sbit BEEP=P3^7;//上次按键和当前按键的序号,该矩阵中序号范围 0~15,16 表示无按键uchar Pre_KeyNo=16,KeyNo=16;//延时void DelayMS(uint x){ uchar i;while(x--) for(i=0;i<120;i++);}//矩阵键盘扫描void Keys_Scan(){ uchar Tmp;P1=0x0f; //高 4 位置 0,放入 4 行DelayMS(1);Tmp=P1^0x0f; //按键后 0f 变成 0000XXXX,X 中一个为 0,3 个仍为1,通过异或把3个1变为 0,唯一的0变为1switch(Tmp) //判断按键发生于 0~3 列的哪一列{ case 1: KeyNo=0;break;case 2: KeyNo=1;break;case 4: KeyNo=2;break;case 8: KeyNo=3;break;default:KeyNo=16; //无键按下}P1=0xf0; //低 4 位置 0,放入 4 列DelayMS(1);Tmp=P1>>4^0x0f; //按键后 f0 变成 XXXX0000,X 中有 1 个为 0,三个仍为 1;高4位转移到低 4 位并异或得到改变的值switch(Tmp) //对 0~3 行分别附加起始值 0,4,8,12{case 1: KeyNo+=0;break;case 2: KeyNo+=4;break;case 4: KeyNo+=8;break;case 8: KeyNo+=12;}}//蜂鸣器void Beep(){uchar i;for(i=0;i<100;i++){ DelayMS(1);BEEP=~BEEP;}BEEP=0; }//主程序void main(){ P0=0x00;BEEP=0;while(1){ P1=0xf0;if(P1!=0xf0) Keys_Scan(); //获取键序号if(Pre_KeyNo!=KeyNo){ P0=~ DSY_CODE[KeyNo];Beep();Pre_KeyNo=KeyNo;}DelayMS(100);} }五.实验结果:当按键按下k0,显示管显示0,当按键按下k1时显示1,显示管可以显示1,2,3,4,5,6,7,8,9,A,B,C,D,F.六.实验体会:这次的实验提高了我的设计能力与对电路的分析能力。

单片机4×4矩阵键盘设计方案

单片机4×4矩阵键盘设计方案

1、设计原理(1)如图14.2所示,用单片机的并行口P3连接4×4矩阵键盘,并以单片机的P3.0-P3.3各管脚作输入线,以单片机的P3.4-P3.7各管脚作输出线,在数码管上显示每个按键“0-F”的序号。

(2)键盘中对应按键的序号排列如图14.1所示。

2、参考电路图14.2 4×4矩阵式键盘识别电路原理图3、电路硬件说明(1)在“单片机系统”区域中,把单片机的P3.0-P3.7端口通过8联拨动拨码开关JP3连接到“4×4行列式键盘”区域中的M1-M4,N1-N4端口上。

(2)在“单片机系统”区域中,把单片机的P0.0-P0.7端口连接到“静态数码显示模块”区域中的任何一个a-h端口上;要求:P0.0对应着a,P0.1对应着b,……,P0.7对应着h。

4、程序设计内容(1)4×4矩阵键盘识别处理。

(2)每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。

矩阵的行线和列线分别通过两并行接口和CPU通信。

键盘的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。

键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么?还要消除按键在闭合或断开时的抖动。

两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。

5、程序流程图(如图14.3所示)6、汇编源程序;;;;;;;;;;定义单元;;;;;;;;;;COUNT EQU 30H;;;;;;;;;;入口地址;;;;;;;;;;ORG 0000HLJMP STARTORG 0003HRETIORG 000BHRETIORG 0013HRETIORG 001BHRETIORG 0023HRETIORG 002BHRETI;;;;;;;;;;主程序入口;;;;;;;;;;ORG 0100HSTART: LCALL CHUSHIHUALCALL PANDUANLCALL XIANSHILJMP START;;;;;;;;;;初始化程序;;;;;;;;;;CHUSHIHUA: MOV COUNT,#00HRET;;;;;;;;;;判断哪个按键按下程序;;;;;;;;;;PANDUAN: MOV P3,#0FFHCLR P3.4MOV A,P3ANL A,#0FHJZ SW1LCALL DELAY10MS JZ SW1MOV A,P3ANL A,#0FHCJNE A,#0EH,K1 MOV COUNT,#0 LJMP DKK1: CJNE A,#0DH,K2 MOV COUNT,#4 LJMP DKK2: CJNE A,#0BH,K3 MOV COUNT,#8 LJMP DKK3: CJNE A,#07H,K4 MOV COUNT,#12K4: NOPLJMP DKSW1: MOV P3,#0FFH CLR P3.5MOV A,P3ANL A,#0FHJZ SW2LCALL DELAY10MS JZ SW2MOV A,P3ANL A,#0FHCJNE A,#0EH,K5 MOV COUNT,#1 LJMP DKK5: CJNE A,#0DH,K6 MOV COUNT,#5 LJMP DKK6: CJNE A,#0BH,K7 MOV COUNT,#9 LJMP DKK7: CJNE A,#07H,K8 MOV COUNT,#13K8: NOPLJMP DKSW2: MOV P3,#0FFH CLR P3.6MOV A,P3ANL A,#0FHJZ SW3LCALL DELAY10MS JZ SW3MOV A,P3ANL A,#0FHCJNE A,#0EH,K9 MOV COUNT,#2 LJMP DKK9: CJNE A,#0DH,KA MOV COUNT,#6 LJMP DKKA: CJNE A,#0BH,KB MOV COUNT,#10 LJMP DKKB: CJNE A,#07H,KC MOV COUNT,#14 KC: NOPLJMP DKSW3: MOV P3,#0FFH CLR P3.7MOV A,P3ANL A,#0FHJZ SW4LCALL DELAY10MSJZ SW4MOV A,P3ANL A,#0FHCJNE A,#0EH,KDMOV COUNT,#3LJMP DKKD: CJNE A,#0DH,KE MOV COUNT,#7LJMP DKKE: CJNE A,#0BH,KF MOV COUNT,#11 LJMP DKKF: CJNE A,#07H,KG MOV COUNT,#15KG: NOPLJMP DKSW4: LJMP PANDUAN DK: RET ;;;;;;;;;;显示程序;;;;;;;;;; XIANSHI: MOV A,COUNTMOV DPTR,#TABLEMOVC A,@A+DPTRMOV P0,ALCALL DELAYSK: MOV A,P3ANL A,#0FHXRL A,#0FHJNZ SKRET;;;;;;;;;;10ms延时程序;;;;;;;;;;DELAY10MS: MOV R6,#20D1: MOV R7,#248DJNZ R7,$DJNZ R6,D1RET;;;;;;;;;;200ms延时程序;;;;;;;;;;DELAY: MOV R5,#20LOOP: LCALL DELAY10MSDJNZ R5,LOOPRET;;;;;;;;;;共阴码表;;;;;;;;;;TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H;;;;;;;;;;结束标志;;;;;;;;;;END7、C语言源程序#includeunsigned char code table[]={0x3f,0x66,0x7f,0x39,0x06,0x6d,0x6f,0x5e,0x5b,0x7d,0x77,0x79,0x4f,0x07,0x7c,0x71};void main(void){ unsigned char i,j,k,key;while(1){ P3=0xff; //给P3口置1//P3_4=0; //给P3.4这条线送入0//i=P3;i=i&0x0f; //屏蔽低四位//if(i!=0x0f) //看是否有按键按下//{ for(j=50;j>0;j--) //延时//for(k=200;k>0;k--);if(i!=0x0f) //再次判断按键是否按下//{ switch(i) //看是和P3.4相连的四个按键中的哪个// { case 0x0e:key=0;break;case 0x0d:key=1;break;case 0x0b:key=2;break;case 0x07:key=3;break;}P0=table[key]; //送数到P0口显示//}}P3=0xff;P3_5=0; //读P3.5这条线//i=P3;i=i&0x0f; //屏蔽P3口的低四位//if(i!=0x0f) //读P3.5这条线上看是否有按键按下// { for(j=50;j>0;j--) //延时//for(k=200;k>0;k--);i=P3; //再看是否有按键真的按下//i=i&0x0f;if(i!=0x0f){ switch(i) //如果有,显示相应的按键//{ case 0x0e:key=4;break;case 0x0d:key=5;break;case 0x0b:key=6;break;case 0x07:key=7;break;}P0=table[key]; //送入P0口显示//}}P3=0xff;P3_6=0; //读P3.6这条线上是否有按键按下// i=P3;i=i&0x0f;if(i!=0x0f){ for(j=50;j>0;j--)for(k=200;k>0;k--);i=P3;i=i&0x0f;if(i!=0x0f){ switch(i){ case 0x0e:key=8;break;case 0x0d:key=9;break;case 0x0b:key=10;break;case 0x07:key=11;break;}P0=table[key];}}P3=0xff;P3_7=0; //读P3.7这条线上是否有按键按下//i=P3;i=i&0x0f;if(i!=0x0f){ for(j=50;j>0;j--) for(k=200;k>0;k--); i=P3;i=i&0x0f;if(i!=0x0f){ switch(i){ case 0x0e:key=12;break;case 0x0d:key=13;break;case 0x0b:key=14;break;case 0x07:key=15;break;}P0=table[key];}}}}8、注意事项在硬件电路中,要把8联拨动拨码开关JP2拨下,把8联拨动拨码开关JP3拨上去。

单片机44键盘设计

单片机44键盘设计

矩阵键盘是单片机编程中所使用的键盘.1.矩阵式键盘的结构与工作原理在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图1所示。

在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。

这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。

由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。

矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,上图中,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。

这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。

行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。

具体的识别及编程方法如下所述。

2、矩阵式键盘的按键识别方法确定矩阵式键盘上何键被按下介绍一种“行扫描法”。

行扫描法行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,如上图所示键盘,介绍过程如下。

1、判断键盘中有无键按下将全部行线Y0-Y3置低电平,然后检测列线的状态。

只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。

若所有列线均为高电平,则键盘中无键按下。

2、判断闭合键所在的位置在确认有键按下后,即可进入确定具体闭合键的过程。

其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。

在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。

若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。

下面给出一个具体的例子:图仍如上所示。

8031单片机的P1口用作键盘I/O口,键盘的列线接到P1口的低4位,键盘的行线接到P1口的高4位。

实验七 4X4矩阵键盘的显示电路

实验七 4X4矩阵键盘的显示电路

黄淮学院机械与能源工程学院
单片机应用技术课程报告
实验名称4X4矩阵键盘的显示电路实验时间年月日学生姓名实验地点钉钉群线上
同组人员专业班级汽服1802B
1、实验目的
1、能够在Keil软件中查看变量,掌握程序调试的基本方法;
2、掌握按键功能设计特点;
3、当键盘中按键数量较多时,为了减少I/O端口线的占用,通常将按键排列成矩阵形式,学习按键的相关知识。

2、任务设计要求
没有按键按下时,所有输出端均为高电平,即“1”,行线输入也是高电平,即“1”;有键按下时,相应列的输出为低电平,即“0”,对应行输入线也为低电平,即“0”。

通过检测输入线的状态可知是否有键按下。

通过51单片机P1端口构成4×4矩阵式键盘,要求:当按下某一按键时,在数码管显示该按键的值。

3、总体设计方案
根据实验任务要求,通过功能分析,设计的系统总体方案如图所示。

复习软件的使用方法,软件关键字如下:
4、硬件电路设计
5、软件程序设计
如果要实现上图所示电路中转向灯的控制,需要设计控制P1.0端口输出低电平,其设计思路如图所示。

(2)程序清单
#include <reg51.h>
#define uchar unsigned char
sbit L1=P1^4; // 定义列
sbit L2=P1^5;
sbit L3=P1^6;
sbit L4=P1^7;
按下相应的键就会显示对应的字母或数字。

44矩阵式键盘与显示

44矩阵式键盘与显示

4×4键盘与数码显示的设计键盘是微型计算机系统中最常用的人机对话输入设备。

在单片机应用系统中,为了控制系统的工作状态,以及向系统输入数据,应用系统需要单独设计专用的小键盘。

在计算机系统中,键盘有两种基本类型:编码键盘和非编码键盘。

编码键盘本身除了按键以外,还包括产生编码的硬件电路,使用虽然方便,但价格较高,在一般单片机应用系统中很少采用。

非编码键盘靠软件来识别键盘上的闭合键,由此得出键码,在单片机应用系统中普遍采用。

本次实验即是利用单片机技术,采用中断查询的方法,设计了一个4×4的键盘模块,并利用数码管显示相应的按键值。

一、设计目的1.掌握键盘的中断工作方式;2.掌握矩阵式键盘接口的工作的原理以及按键的识8别方法;3.掌握单片机汇编语言程序设计的方法;4.设计键盘模块,便于其他程序的模块调用。

二、设计内容4×4矩阵式的键盘,当有按键按下时,系统会产生中断,中断服务程序会识别键值并通过数码管对其相应的值进行显示。

三、键盘与I/O接口四、程序流程图五、汇编源程序ORG0000HLJMP MAIN ORG 0003H AJMP INTORG0030HMAIN: MOV P0,#0FFH; 程序启动时灯灭MOV P1,#0F0H SETB TCON.0; 外部中断为下降沿触发 MOVIE,#81H;外部中断开中断SJMP $INT: CLR EA PUSHPSWLCALL DELAYLCALL KS图一 4×4键盘/显示主程序流程图图二 中断服务程序流程图JNZ SAOMIAOLJMP INT0RSAOMIAO:MOV DPTR,#TAB;ACALL K1; 调用键盘扫描程序MOVC A,@A+DPTR; 查表后将值送入累加器MOV P0,A; 在P0口显示键盘值K1: MOV R2,#0EFH; 将扫描值送入 R2暂存MOV R4,#00H; R4用于存放列值,并将00H暂存K3: MOV P1,R2;L6: JB P1^0,L1;MOV A,#00H;AJMP LK;L1: JB P1^1,L2;MOV A,#04H;AJMP LK;L2: JB P1^2,L3;MOV A,#08H;AJMP LK; 跳转到键值处理程序L3: JB P1^3,NEXT ;MOV A,#0cH;LK: ADD A,R4;PUSH ACC;K4: LCALL DELAY; 调用延时程序,去抖动LCALL KS;JNZ K4; 按键没有松开继续返回检测POP ACC;RETNEXT:INC R4; 将列值加一MOV A,R2;JNB ACC.7,INT0R; 未扫描出键值退出中断RL A; 扫描未完成将A中的值右移一位进行下一列的扫描MOV R2,A; 将ACC的值送入R2暂存AJMP K3;KS: MOV P1,#0FH; 按键检测程序MOV A,P1;XRL A,#0FH;RETDELAY:; 10ms延时去抖动子程序2*FA*2=10msMOV R5,#02HL7: MOV R6,#0FAHL8: DJNZ R6,L8DJNZ R5,L7RETINT0R: POP PSWMOV P1,#0F0HSETB TCON.0;MOV IE,#81H;RETITAB:; 采用共阳极LED显示器DB 0C0H; 0DB 0F9H; 1DB 0A4H; 2DB 0B0H; 3DB 099H; 4DB 092H; 5DB 082H; 6DB 0F8H; 7DB 080H; 8DB 090H; 9DB 088H; ADB 083H; bDB 0C6H; CDB 0A1H; dDB 086H; EDB 08EH; FEND六、电路图:图三 4×4键盘/显示电路图七、键盘及数码显示的仿真:图四4×4矩阵式键盘/显示仿真图。

单片机课程设计---4×4矩阵式键盘识别显示电路的设计

单片机课程设计---4×4矩阵式键盘识别显示电路的设计

数理与信息工程学院《单片机原理及应用》期末课程设计题目:4×4矩阵式键盘识别显示电路的设计专业:电子信息工程班级:电信061班*名:***学号:********指导老师:***成绩:( 2008.12 )目录第1节引言 (2)1.1 4*4矩阵式键盘系统概述 (2)1.2 本设计任务和主要内容 (3)第2节系统主要硬件电路设计 (4)2.1 单片机控制系统原理 (4)2.2 单片机主机系统电路 (5)2.2.1 时钟电路 (4)2.2.2 复位电路 (5)2.2.3 矩阵式键盘电路 (5)2.3 译码显示电路 (6)第3节系统软件设计 (11)3.1 软件流程图 (8)3.2 系统程序设计 (9)第4节结束语 (12)参考文献 (13)4*4矩阵式键盘识别显示电路的设计数理与信息工程学院电信061 姜铮铮指导教师:余水宝第一节引言矩阵式键盘乃是当今使用最为广泛的键盘模式,该系统以N个端口连接控制N*N个按键,即时在LED数码管上。

单片机控制的据这是键盘显示系统,该系统可以对不同的按键进行实时显示,其核心是单片机和键盘矩阵电路部分,主要对按键与显示电路的关系、矩阵式技术及设备系统的硬件、软件等各个部分进行实现。

4*4矩阵式键盘采用AT89S51单片机为核心,主要由矩阵式键盘电路、译码电路、显示电路等组成,软件选用汇编语言编程。

单片机将检测到的按键信号转换成数字量,显示于LED显示器上。

该系统灵活性强,易于操作,可靠性高,将会有更广阔的开发前景。

1.1 4*4矩阵式键盘识别显示系统概述矩阵式键盘模式以N个端口连接控制N*N个按键,实时在LED数码管上显示按键信息。

显示按键信息,既降低了成本,又提高了精确度,省下了很多的I/O端口为他用,相反,独立式按键虽编程简单,但占用I/O口资源较多,不适合在按键较多的场合应用。

并且在实际应用中经常要用到输入数字、字母、符号等操作功能,如电子密码锁、电话机键盘、计算器按键等,至少都需要12到16个按键,在这种情况下如果用独立式按键的话,显然太浪费I/O端口资源,为了解决这一问题,我们使用矩阵式键盘。

单片机4x4矩阵式键盘的设计与仿真

单片机4x4矩阵式键盘的设计与仿真

课程设计报告(单片机原理和应用)题目名称4x4矩阵式键盘专业班级学生姓名学号指导教师4x4矩阵式键盘的设计与仿真1、设计原理:1.1 矩阵式键盘工作原理矩阵式键盘使用于按键数量较多的场合,它由行线与列线组成,按键位于行、列的交叉点上,行、列线分别列接到按键开关的两端。

行线通过上拉电阻接到+5V上。

无键按下时,行线处于低电平状态,而当有按键按下时,行线电平状态将由与此行线相连的列线电平一样为高电平。

这是识别矩阵键盘按键是否被按下的关键所在。

一个4x4的行列可以构成一个16按键的键盘。

本次以扫描法来识别按键。

在扫描法中分两步处理按键,首先是判断有无键按下,让所有的列线置高电平,检查各行线电平是否有变化,如行线有一个为高,则有键按下。

当判断有键按下时,使列线依次变低,其余各列为高电平,读行线,进而判断出具体哪个键被按下。

下表为7段共阴极段码表:显示字符共阴极段码显示字符共阴极段码“0”3FH“8”7FH“1”06H“9”6FH“2”5BH“A”77H“3”4FH“b”7CH“4”66H“C”39H“5”6DH“d”5EH“6”7DH“E”79H“7”07H“F”71H“灭“00H 1.2 实验环境Keil uVision3proteus 71.3 功能设计描述由4x4组成16个按钮矩阵式键盘按键成功会在7段LED显示该按键的键号1.4 主要知识点Keil uVision3的使用及调试proteus 7的使用及调试键盘接口、LED 显示接口、模拟电路的相关知识2、实现及编程2.12.2电路原理图2.3程序内容4x4行列式键盘识别7段数码管输出2.4 汇编源程序LINE EQU 30HROW EQU 31HVAL EQU 32HORG 00HSTART: MOV DPTR,#TABLE ;段码表首地址MOV P2,#00H ;数码管显示初始化LSCAN: MOV P3,#0F0H ;电平,行线置低电平L1: JNB P3.0,L2 ;逐行扫描LCALL DELAY50ms ;调用延时,消除抖动JNB P3.0,L2MOV LINE,#00H ;存行号LJMP RSCANL2: JNB P3.1,L3LCALL DELAY50msJNB P3.1,L3MOV LINE,#01HLJMP RSCANL3: JNB P3.2,L4LCALL DELAY50msJNB P3.2,L4MOV LINE,#02HLJMP RSCANL4: JNB P3.3,L1LCALL DELAY50msJNB P3.3,L1MOV LINE,#03HRSCAN: MOV P3,#0FH ; 列线置低电平,行线置高电平C1: JNB P3.4,C2 ;逐列扫描MOV ROW,#00H ;存列号LJMP CALCUC2: JNB P3.5,C3MOV ROW,#01HLJMP CALCUC3: JNB P3.6,C4MOV ROW,#02HLJMP CALCUC4: JNB P3.7,C1MOV ROW,#03HCALCU: MOV A,LINE ;根据行号和列号计算键值MOV B,#04HMUL AB ;A与B相乘后,高位赋给B,低位赋给AADD A,ROWMOV VAL,A ;存键值MOVC A,@A+DPTR ;要据键值查段码MOV P2,A ;输出段码显示LJMP LSCANDELAY50ms: MOV R6,#3DH ;延时50ms子程序Lop: MOV R7,#0FFHDJNZ R7,$DJNZ R6,LopRETTABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ; 共阴极LED段码表DB 7FH,6FH,77H,7CH,39H,5EH,79H,71HEND3、调试及测试3.1调试通过按下4x4行列式键盘的按键,并在7段led显示所按下的键值,如按下F后显示如下图:3.2出现的问题及解决当在选7段显示数码管时,由于不知道哪个类型是共阴极的,所以就随便选了一个,以至于在运行的时候数码管没有显示,后给换了另一个类型的,即可。

4X4矩阵键盘及显示电路设计说明

4X4矩阵键盘及显示电路设计说明

4X4矩阵键盘及显示电路设计FPGA在数字系统设计中的广泛应用,影响到了生产生活的各个方面。

在FPGA 的设计开发中,VHDL语言作为一种主流的硬件描述语言,具有设计效率高,可靠性好,易读易懂等诸多优点。

作为一种功能强大的FPGA数字系统开发环境,Altera公司推出的Quar-tUSⅡ,为设计者提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程,为使用VHDL语言进行FPGA设计提供了极大的便利。

矩阵键盘作为一种常用的数据输入设备,在各种电子设备上有着广泛的应用,通过7段数码管将按键数值进行显示也是一种常用的数据显示方式。

在设计机械式矩阵键盘控制电路时,按键防抖和按键数据的译码显示是两个重要方面。

本文在QuartusⅡ开发环境下,采用VHDL语言设计了一种按键防抖并能连续记录并显示8次按键数值的矩阵键盘及显示电路。

一、矩阵键盘及显示电路设计思路矩阵键盘及显示电路能够将机械式4×4矩阵键盘的按键值依次显示到8个7段数码管上,每次新的按键值显示在最右端的第O号数码管上,原有第0~6号数码管显示的数值整体左移到第1~7号数码管上显示,见图1。

总体而言,矩阵键盘及显示电路的设计可分为4个部分:(1)矩阵键盘的行及列的扫描控制和译码。

该设计所使用的键盘是通过将列扫描信号作为输入信号,控制行扫描信号输出,然后根据行及列的扫描结果进行译码。

(2)机械式按键的防抖设计。

由于机械式按键在按下和弹起的过程中均有5~10 ms的信号抖动时间,在信号抖动时间无法有效判断按键值,因此按键的防抖设计是非常关键的,也是该设计的一个重点。

(3)按键数值的移位寄存。

由于该设计需要在8个数码管上依次显示前后共8次按键的数值,因此对已有数据的存储和调用也是该设计的重点所在。

(4)数码管的扫描和译码显示。

由于该设计使用了8个数码管,因此需要对每个数码管进行扫描控制,并根据按键值对每个数码管进行7段数码管的译码显示。

44矩阵键盘课程设计

44矩阵键盘课程设计

44矩阵键盘课程设计一、课程目标知识目标:1. 理解44矩阵键盘的基本结构和工作原理;2. 学会使用矩阵键盘进行输入输出操作;3. 掌握矩阵键盘编程的基本方法。

技能目标:1. 能够正确连接并测试44矩阵键盘;2. 能够编写程序实现对矩阵键盘的扫描和按键识别;3. 能够运用矩阵键盘完成简单的交互式应用。

情感态度价值观目标:1. 培养学生动手实践、自主探究的学习习惯;2. 增强学生团队协作和问题解决的能力;3. 激发学生对电子技术和编程的兴趣,提高创新意识。

分析课程性质、学生特点和教学要求,本课程目标旨在让学生掌握44矩阵键盘的相关知识,通过实践操作和编程练习,使学生在知识、技能和情感态度价值观方面取得以下具体学习成果:1. 知识方面:学生能够阐述矩阵键盘的原理,解释其工作方式;2. 技能方面:学生能够独立完成矩阵键盘的连接、编程和应用;3. 情感态度价值观方面:学生通过课程学习,增强实践能力、团队协作能力和创新意识。

二、教学内容1. 矩阵键盘基础知识:- 矩阵键盘结构原理;- 矩阵键盘的输入输出方式;- 矩阵键盘与单片机的连接方法。

2. 矩阵键盘编程技术:- 按键扫描算法;- 按键识别与消抖;- 矩阵键盘编程实例。

3. 实践操作与项目应用:- 矩阵键盘连接与测试;- 基于矩阵键盘的简单计算器制作;- 创意电子项目设计与实现。

教学内容依据课程目标,结合教材章节,按照以下进度安排:1. 矩阵键盘基础知识(第1课时):- 介绍矩阵键盘的结构原理;- 讲解矩阵键盘与单片机的连接方法。

2. 矩阵键盘编程技术(第2-3课时):- 讲解按键扫描算法及消抖方法;- 分析矩阵键盘编程实例。

3. 实践操作与项目应用(第4-5课时):- 指导学生进行矩阵键盘的连接与测试;- 引导学生运用所学知识制作简单计算器;- 组织学生进行创意电子项目设计与展示。

教学内容科学系统,注重理论与实践相结合,旨在提高学生的综合应用能力。

三、教学方法针对本章节内容,采用以下多样化的教学方法,以激发学生的学习兴趣和主动性:1. 讲授法:- 用于讲解矩阵键盘的基础知识和编程技术,通过清晰的讲解,使学生快速掌握基本概念和原理。

课程设计制作单片机的4X4矩阵键盘

课程设计制作单片机的4X4矩阵键盘

目录摘要 (2)第一章硬件部分 (3)第一节AT89C51 (3)第二节4*4矩阵式键盘 (6)第三节LED数码管 (8)第四节硬件电路连接 (10)第二章软件部分 (12)第一节所用软件简介 (12)第二节程序流程图 (14)第三节程序 (17)第三章仿真结果 (19)心得体会 (21)参考文献 (22)摘要电子信息行业将是人类社会的高科技行业之一,是设施现代化的基础,也是人类通往科技巅峰的直通车。

电子行业的发展很重要,而计算机技术是现代科技发展的重要组成部分。

矩阵式键盘控制系统可以提高效率,是进行按键操作管理的有效方法,它可以提高系统准确性,有利于资源的节约,降低对操作者本身的要求。

并能正确、实时、高效地显示按键信息,以提高工作效率和资源利用率。

矩阵式键盘是当今使用最为广泛的键盘模式,该系统以N个端口连接控制N*N个按键,并通过单片机,显示在LED数码管上。

单片机控制键盘显示系统,可以对不同的按键进行实时显示,其核心是单片机、键盘矩阵电路和数码管显示电路。

4*4矩阵式键盘以AT89C51单片机为核心,主要由矩阵式键盘电路、显示电路等组成,软件选用C语言编程。

单片机将检测到的按键信号转换成数字量,显示于LED显示器上。

该系统灵活性强,易于操作,可靠性高,广泛应用于各种场合。

第一章硬件部分第一节AT89C51AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。

AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

引脚如图所示AT89C51图1 AT89C51管脚图AT89C51其具有以下特性:与MCS-51 兼容4K字节可编程FLASH存储器寿命:1000写/擦循环数据保留时间:10年全静态工作:0Hz-24MHz三级程序存储器锁定128×8位内部RAM32可编程I/O线两个16位定时器/计数器5个中断源可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路特性概述:AT89C51 提供以下标准功能:4k 字节Flash 闪速存储器,128字节内部RAM,32 个I/O 接口,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。

44矩阵键盘课程设计

44矩阵键盘课程设计

4 4矩阵键盘课程设计一、课程目标知识目标:1. 学生能够理解4x4矩阵键盘的基本原理,掌握其电路连接方式和扫描原理。

2. 学生能够运用所学知识,设计并搭建一个简单的4x4矩阵键盘电路。

3. 学生了解矩阵键盘在嵌入式系统中的应用和重要性。

技能目标:1. 学生能够运用编程软件(如Arduino)编写程序,实现对4x4矩阵键盘的扫描和按键识别。

2. 学生能够运用调试工具,对矩阵键盘电路进行故障排查和优化。

3. 学生具备团队协作能力,共同完成矩阵键盘电路设计和程序编写。

情感态度价值观目标:1. 学生通过动手实践,培养对电子技术和编程的兴趣,增强学习动力。

2. 学生在团队合作中,学会沟通、协作、分享,培养团队精神和责任感。

3. 学生认识到科技发展对社会进步的重要性,激发为我国科技事业贡献力量的志向。

本课程针对高中年级学生,结合电子技术和编程知识,以实用性为导向,旨在培养学生的动手实践能力和创新精神。

课程内容紧密联系课本知识,通过设计4x4矩阵键盘电路,使学生在实践中掌握相关原理和方法。

课程目标具体、可衡量,为后续教学设计和评估提供明确方向。

二、教学内容1. 矩阵键盘基础知识:介绍矩阵键盘的原理、电路连接方式及其在嵌入式系统中的应用。

- 相关章节:课本第三章第二节“矩阵键盘及其应用”2. 4x4矩阵键盘电路设计:讲解如何搭建4x4矩阵键盘电路,包括硬件连接、电路图绘制等。

- 相关章节:课本第三章第三节“矩阵键盘电路设计”3. 矩阵键盘编程:介绍如何使用Arduino编程软件编写程序,实现对4x4矩阵键盘的扫描和按键识别。

- 相关章节:课本第四章第一节“Arduino编程基础”及第四节“矩阵键盘编程实例”4. 矩阵键盘电路调试与优化:教授学生如何运用调试工具进行故障排查,以及如何对电路和程序进行优化。

- 相关章节:课本第五章“电路调试与优化”5. 团队合作与展示:学生分组进行项目实践,共同完成矩阵键盘电路设计与程序编写,并进行成果展示。

数码管显示4×4矩阵键盘

数码管显示4×4矩阵键盘

2013年1月1.课程设计目的1.1巩固和加深对单片机原理和接口技术知识的理解;1.2培养根据课题需要选学参考书籍、查阅手册和文献资料的能力;1.3学会方案论证的比较方法,拓宽知识,初步掌握工程设计的基本方法;1.4掌握常用仪器、仪表的正确使用方法,学会软、硬件的设计和调试方法;1.5能按课程设计的要求编写课程设计报告,能正确反映设计和实验成果,能用计算机绘制电路图和流程图。

2.课程设计要求单片机的P1口的P1.0~P1.7连接4×4矩阵键盘,P0口控制一只数码管,当4×4矩阵键盘中的某一按键按下时,数码管上显示对应的键号。

例如,1号键按下时,数码管显示“1”, 14号键按下时,数码管显示“E”等等。

3.硬件设计3.1 设计思想分析本任务的要求,使设计能够完成当4*4矩阵键盘中的某一按键按下时,数码管上显示对应的键盘号。

则本系统主要由以下几大模块构成:显示模块,共阴极LED数码管;输入模块,4*4矩阵键盘;3.2主要元器件介绍矩阵键盘又称为行列式键盘,它是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。

在行线和列线的每一个交叉点上,设置一个按键。

这样键盘中按键的个数是4×4个。

这种行列式键盘结构能够有效地提高单片机系统中I/O 口的利用率。

数码管不同位显示的时间间隔可以通过调整延时程序的延时长短来完成。

数码管显示的时间间隔也能够确定数码管显示时的亮度,若显示的时间间隔长,显示时数码管的亮度将亮些,若显示的时间间隔短,显示时数码管的亮度将暗些。

若显示的时间间隔过长的话,数码管显示时将产生闪烁现象。

所以,在调整显示的时间间隔时,即要考虑到显示时数码管的亮度,又要数码管显示时不产生闪烁现象。

4.1 设计思想按键采用线反转法先把列线置成低电平,行线置成输入状态,读行线;再把行线置成低电平,列线输入状态,读列线。

当有键按下时,由两次所读状态即可确定所按键的位置,不需扫描,键盘响应速度大大加快。

单片机按键矩阵识别(含程序、原理图)

单片机按键矩阵识别(含程序、原理图)

按键矩阵识别技术实验说明如图2所示,把P1端口的8条I/O口分成4条列线4条行线交叉但不接触构成4×4键盘阵列,16个按键放置交叉位置,这样在单片机复杂系统需要较多按键时,这种接法可以节省单片机的硬件资源。

1.结合给出的电路原理图试分析4*4键盘矩阵识别原理,及LED动态扫描原理。

(6分)2.根据分析的键盘矩阵识别原理设计程序实现一下功能:当按下某个按键时在2个七段数码管上显示该按键的编号(注意考虑同时按下多个按键时程序处理过程)、按下某个按键使其弹起时对于消抖情况程序的处理。

(9分)2.0相关原理图如下:3.0实验说明本试验给了1-8键判断方法。

按1-8键中任意键,则数码管显示该键编号。

想想怎样实现1-16个键的判断显示?参考程序见程序范例。

/************************************************************************ *******************描述: 按键距阵识别技术*编写: 秦立春*版本信息: V1.0 2008年4月20日*说明: sp1,sp2,SP3跳线向右;************************************************************************* *****************/#include <reg52.h>#define uchar unsigned char#define uint unsigned int#define ON 0#define OFF 1uchar bdata OUT;sbit JDQ=OUT^0;sbit HF =OUT^1;sbit BZ =OUT^2;sbit AA =OUT^3;sbit BB =OUT^4;sbit CC =OUT^5;sbit DD =OUT^6;sbit X0=P2^0;sbit X1=P2^1;sbit X2=P2^2;sbit X3=P2^3;sbit Y0=P2^4;sbit Y1=P2^5;sbit Y2=P2^6;sbit Y3=P2^7;sbit RS=P1^7;sbit RW=P3^4;sbit E =P3^5;sbit HC574_LE=P3^3;//-----------------------------------------------------void delay(unsigned int t) // 延时函数{for(;t!=0;t--) ;}//------------------------------------------------------ void HC574(void) // 74HC574控制输出;{P0=OUT;HC574_LE=1;delay(2);HC574_LE=0;}//================================================== unsigned char Key_Scan(void){uchar a, key;P2=0xf0;if(!(Y0&&Y1&&Y2&&Y3)){P2=0xf0;delay(200);if(!(Y0&&Y1&&Y2&&Y3)){P2=0xff;X0=0;if(!(Y0&&Y1&&Y2&&Y3)){a=P2;a=(a&0xf0+0x0e);goto pp1;}P2=0xff;X1=0;if(!(Y0&&Y1&&Y2&&Y3)){a=P2;a=(a&0xf0+0x0d);goto pp1;} P2=0xff;X2=0;if(!(Y0&&Y1&&Y2&&Y3)){a=P2;a=(a&0xf0+0x0b);goto pp1;} P2=0xff;X3=0;if(!(Y0&&Y1&&Y2&&Y3)){a=P2;a=(a&0xf0+0x07);goto pp1;} }else a=0xff;}else a=0xff;pp1: key=a;return key;}//-----------------------------------------------------------uchar key(void){uchar k, KEY;KEY=0xff;k=Key_Scan();if(k!=0xff){while(k==Key_Scan());switch(k) // 键码{case 0x7e: KEY=0x04;break; // 4case 0x7d: KEY=0x08;break; // 8case 0x7b: KEY=0x0b;break; //case 0x77: KEY=0x0f;break; //case 0xbe: KEY=0x03;break; // 3case 0xbd: KEY=0x07;break; // 7case 0xbb: KEY=0x0a;break; //case 0xb7: KEY=0x0e;break; //case 0xde: KEY=0x02;break; // 2case 0xdd: KEY=0x06;break; // 6case 0xdb: KEY=0x00;break; // 0case 0xd7: KEY=0x0d;break; //case 0xee: KEY=0x01;break; // 1case 0xed: KEY=0x05;break; // 5case 0xeb: KEY=0x09;break; // 9case 0xe7: KEY=0x0c;break; //default: KEY=0xff;break; // 无键按下}}return KEY;}main(){uchar code shu[12]={0xc0,0xf9,0xa4,0xb0,0x99,//0,1,2,3,4,0x92,0x82,0xf8,0x80,0x90,//5,6,7,8,9,0x00,0xff}; //灭共阳极数码管显示段码 uchar i,k;uchar display[2]={0xff,0xff};RS=0; RW=0; E=0;OUT=0;HC574();delay(60000);while(1){k=key();if(k<=0x0f){display[0]=k/10;display[1]=k%10;}for(i=0;i<2;i++){P1=(~(0X01<<i))&0X7F; P0=shu[display[i]]; delay(100);}}}。

单片机课程设计4X4矩阵键盘显示

单片机课程设计4X4矩阵键盘显示

长沙学院?《单片机原理及应用》课程设计说明书题目】液晶显示4*4矩阵键盘按键号程序设计系(部)电子与通信工程系专业(班级)电气1班姓名龙程学号【09指导教师刘辉、谢明华、王新辉、马凌云起止日期—长沙学院课程设计鉴定表《单片机技术及应用》课程设计任务书系(部):电子与电气工程系专业:11级电子一班指导教师:谢明华、刘辉—目录'前言 (5)一、课程设计目的 (6)二、设计内容及原理 (6)单片机控制系统原理 (6)阵键盘识别显示系统概述 (6)键盘电路 (7)12864显示器 (8)整体电路图 (9)!仿真结果 (9)三、实验心得与体会 (10)四、实验程序 (10)参考文献 (18)…。

,】前言单片机,全称单片微型计算机(英语:Single-Chip Microcomputer),又称微控制器(Microcontroller),是把中央处理器、存储器、定时/计数器(Timer/Counter)、各种输入输出接口等都集成在一块集成电路芯片上的微型计算机。

与应用在个人电脑中的通用型微处理器相比,它更强调自供应(不用外接硬件)和节约成本。

它的最大优点是体积小,可放在仪表内部,但存储量小,输入输出接口简单,功能较低。

由于其发展非常迅速,旧的单片机的定义已不能满足,所以在很多应用场合被称为范围更广的微控制器;从上世纪80年代,由当时的4位、8位单片机,发展到现在的32位300M的高速单片机。

现代人类生活中所用的几乎每件有电子器件的产品中都会集成有单片机。

手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电子产品中都含有单片机。

汽车上一般配备40多片单片机,复杂的工业控制系统上甚至可能有数百片单片机在同时工作!单片机的数量不仅远超过PC机和其他计算机的总和,甚至比人类的数量还要多。

液晶显示器(英语:Liquid Crystal Display,缩写:LCD)为平面薄型的显示设备。

它的主要原理是以电流刺激液晶分子产生点、线、面配合背部灯管构成画面。

单片机课程设计——数码管显示4×4矩阵键盘

单片机课程设计——数码管显示4×4矩阵键盘

《单片机原理及应用课程设计》报告——数码管显示4*4矩阵键盘的键盘号设计专业:班级:姓名:学号:2013年1月1.课程设计目的1.1巩固和加深对单片机原理和接口技术知识的理解;1.2培养根据课题需要选学参考书籍、查阅手册和文献资料的能力;1.3学会方案论证的比较方法,拓宽知识,初步掌握工程设计的基本方法;1.4掌握常用仪器、仪表的正确使用方法,学会软、硬件的设计和调试方法;1.5能按课程设计的要求编写课程设计报告,能正确反映设计和实验成果,能用计算机绘制电路图和流程图。

2.课程设计要求单片机的P1口的P1.0~P1.7连接4×4矩阵键盘,P0口控制一只数码管,当4×4矩阵键盘中的某一按键按下时,数码管上显示对应的键号。

例如,1号键按下时,数码管显示“1”, 14号键按下时,数码管显示“E”等等。

3.硬件设计3.1 设计思想分析本任务的要求,使设计能够完成当4*4矩阵键盘中的某一按键按下时,数码管上显示对应的键盘号。

则本系统主要由以下几大模块构成:显示模块,共阴极LED数码管;输入模块,4*4矩阵键盘;3.2主要元器件介绍矩阵键盘又称为行列式键盘,它是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。

在行线和列线的每一个交叉点上,设置一个按键。

这样键盘中按键的个数是4×4个。

这种行列式键盘结构能够有效地提高单片机系统中I/O 口的利用率。

数码管不同位显示的时间间隔可以通过调整延时程序的延时长短来完成。

数码管显示的时间间隔也能够确定数码管显示时的亮度,若显示的时间间隔长,显示时数码管的亮度将亮些,若显示的时间间隔短,显示时数码管的亮度将暗些。

若显示的时间间隔过长的话,数码管显示时将产生闪烁现象。

所以,在调整显示的时间间隔时,即要考虑到显示时数码管的亮度,又要数码管显示时不产生闪烁现象。

4.1 设计思想按键采用线反转法先把列线置成低电平,行线置成输入状态,读行线;再把行线置成低电平,列线输入状态,读列线。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《单片机原理及应用》课程设计题目:4×4矩阵式键盘与单片机连接与编程专业:测控技术与仪器班级:机电082-1 姓名:学号:指导老师:组员:( 2011.7 .13)目录第1节引言 (2)1.1 4*4矩阵式键盘系统概述 (2)1.2 本设计任务和主要容 (3)第2节系统主要硬件电路设计 (4)2.1 单片机控制系统原理 (4)2.2 单片机主机系统电路 (5)2.2.1 时钟电路 (8)2.2.2 复位电路 (8)2.2.3 矩阵式键盘电路 (8)2.3 译码显示电路 (9)第3节系统软件设计 (13)3.1 软件流程图 (13)3.2 系统程序设计 (14)第4节结束语 (17)参考文献 (18)第一节引言矩阵式键盘乃是当今使用最为广泛的键盘模式,该系统以N个端口连接控制N*N个按键,即时在LED数码管上。

单片机控制的据这是键盘显示系统,该系统可以对不同的按键进行实时显示,其核心是单片机和键盘矩阵电路部分,主要对按键与显示电路的关系、矩阵式技术及设备系统的硬件、软件等各个部分进行实现。

4*4矩阵式键盘采用89C51单片机为核心,主要由矩阵式键盘电路、译码电路、显示电路等组成,软件选用汇编语言编程。

单片机将检测到的按键信号转换成数字量,显示于LED显示器上。

该系统灵活性强,易于操作,可靠性高,将会有更广阔的开发前景。

1.1 4*4矩阵式键盘识别显示系统概述矩阵式键盘模式以N个端口连接控制N*N个按键,实时在LED数码管上显示按键信息。

显示按键信息,既降低了成本,又提高了精确度,省下了很多的I/O端口为他用,相反,独立式按键虽编程简单,但占用I/O口资源较多,不适合在按键较多的场合应用。

并且在实际应用中经常要用到输入数字、字母、符号等操作功能,如电子密码锁、机键盘、计算器按键等,至少都需要12到16个按键,在这种情况下如果用独立式按键的话,显然太浪费I/O端口资源,为了解决这一问题,我们使用矩阵式键盘。

矩阵式键盘简介:矩阵式键盘又称行列键盘,它是用N条I/O线作为行线,N条I/O线作为列线组成的键盘。

在行线和列线的每个交叉点上设置一个按键。

这样键盘上按键的个数就为N*N个。

这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。

最常见的键盘布局如图1-1所示。

一般由16个按键组成,在单片机中正好可以用一个P口实现16个按键功能,这也是在单片机系统中最常用的形式,本设计就采用这个键盘模式。

图1-1 键盘布局随着21世纪的到来,资源危机接踵而至。

快速席卷整个国家,这一状况还将随着时间的推移和社会的发展而更加严重。

国家提倡资源节约型社会,资源危机已成为全球性的突出问题,利用科技手段缓解这一危机,将是人类主要的出路。

电子信息行业是人类社会的高科技行业之一,是设施现代化的基础,也是人类通往科技巅峰的直通路。

电子行业的发展从长远来看很重要,但最主要的还是科技问题。

国家设施的现代化的根本出路在于全面提高科技水平,现代的社会经营模式由传统模式向现代化、高科技模式转变,由粗放型向集约型方向转变,必须要求科技有一个大的发展,进行一次新的技术革命。

矩阵式键盘提高效率进行按键操作管理有效方法,它可以提高系统准确性,有利于资源的节约,降低对操作者本身素质的要求。

是它能准确、实时、高效地显示按键信息,以提高工作效率和资源利用率。

随着计算机技术和电子科技的迅猛发展,计算机和电子产品的价格日益降低,可靠性日益提高。

本文旨在设计一套能对按键信息进行自动实时显示的系统。

1.2本设计任务1.3本设计主要研究单片机控制的键盘识别显示系统,分别对按键信息和显示电路以及软、硬件各个部分进行研究。

任务要求:1.4*4矩阵式键盘与单片机的连接方法2.用软件法消除按键抖动3.用两位数码管将按键值显示出来第2节系统主要硬件电路设计2.1 单片机控制系统原理图2-1 单片机控制系统原理框图2.2 单片机主机系统电路AT89C51单片机是51系列单片机的一个成员,是8051单片机的简化版。

部自带2K字节可编程FLASH存储器的低电压、高性能COMS八位微处理器,与Intel MCS-51系列单片机的指令和输出管脚相兼容。

由于将多功能八位CPU和闪速存储器结合在单个芯片中,因此,AT89C2051构成的单片机系统是具有结构最简单、造价最低廉、效率最高的微控制系统,省去了外部的RAM、ROM和接口器件,减少了硬件开销,节省了成本,提高了系统的性价比。

AT89C51简介AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。

AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。

单片机的可擦除只读存储器可以反复擦除1000次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。

AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

外形及引脚排列如图所示主要特性:·与MCS-51 兼容·4K字节可编程FLASH存储器·寿命:1000写/擦循环·数据保留时间:10年·全静态工作:0Hz-24MHz·三级程序存储器锁定·128×8位部RAM·32可编程I/O线·两个16位定时器/计数器·5个中断源·可编程串行通道·低功耗的闲置和掉电模式·片振荡器和时钟电路管脚说明:VCC:供电电压。

GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P0口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带部上拉电阻的双向I/O口,可接收输出4个TTL 门电流。

当P3口写入“1”后,它们被部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有部程序存储器。

注意加密方式1时,/EA将部锁定为RESET;当/EA 端保持高电平时,此间部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:反向振荡放大器的输入及部时钟工作电路的输入。

XTAL2:来自反向振荡器的输出。

振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。

该反向放大器可以配置为片振荡器。

石晶瓷振荡均可采用。

如采用外部时钟源驱动器件,XTAL2应不接。

有余输入至部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。

XTAL218XTAL119ALE 30EA31PSEN 29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51X111.0592C130pfC330pfC810pfR51k2.2.1时钟电路时钟信号用来提供单片机片各种微操作的时间基准,时钟信号通常用两种电路形式得到:部振荡和外部振荡。

MCS-51单片机部有一个用于构成振荡器的高增益反向放大器,引脚XTALl和XTAL2分别是此放大电器的输入端和输出端,由于采用部方式时,电路简单,所得的时钟信号比较稳定,实际使用中常采用这种方式,如图2-2所示在其外接晶体振荡器(简称晶振)或瓷谐振器就构成了部振荡方式,片高增益反向放大器与作为反馈元件的片外石英晶体或瓷谐振器一起可构成一个自激振荡器并产生振荡时钟脉冲。

相关文档
最新文档