4-4矩阵键盘控制16个LED灯

合集下载

单片机应用技术(c语言知识版第3版)[王静霞]习题集标准答案

单片机应用技术(c语言知识版第3版)[王静霞]习题集标准答案

习题 11.1 单项选择题(1) A (2)C (3)C1.2 填空题(1)硬件系统、软件系统(2)时钟电路、复位电路(3)XTAL1、XTAL2、RESET、EA(4)晶振1.3 问答题什么是单片机?它由哪几部分组成?什么是单片机应用系统?答:单片微型计算机(Single Chip Microcomputer)简称单片机,是指集成在一个芯片上的微型计算机,它的各种功能部件,包括CPU(Central Processing Unit)、存储器(memory)、基本输入/输出(Input/Output,简称I/O)接口电路、定时/计数器和中断系统等,都制作在一块集成芯片上,构成一个完整的微型计算机。

单片机应用系统是以单片机为核心,配以输入、输出、显示等外围接口电路和控制程序,能实现一种或多种功能的实用系统。

1.4 上机操作题(1)参考程序:#include <reg51.h> //包含头文件reg51.h,定义了51单片机的专用寄存器//函数名:delay//函数功能:实现软件延时//形式参数:无符号整型变量i,控制空循环的循环次数//返回值:无void delay(unsigned int i) //延时函数{unsigned int k;for(k=0;k<i;k++);}void main() //主函数{while(1){P1=0x00;delay(20000); //调用延时函数,实际参数为20000P1=0xff;delay(20000); //调用延时函数,实际参数为20000}}(2)参考程序:#include <reg51.h> //包含头文件reg51.h,定义了51单片机的专用寄存器//函数名:delay//函数功能:实现软件延时//形式参数:无符号整型变量i,控制空循环的循环次数//返回值:无void delay(unsigned int i) //延时函数{unsigned int k;for(k=0;k<i;k++);}void main() //主函数{while(1){P1=0x55;delay(20000); //调用延时函数,实际参数为20000P1=0xff;delay(20000); //调用延时函数,实际参数为20000}}习题 22.1 单项选择题(1)C (2)A (3)A (4)A (5)A (6)D (7)C (8)A (9)A (10)C 2.2 填空题(1)外部程序存储器、外部数据存储器、内部程序存储器、内部数据存储器(2)程序存储器(3)工作寄存器组、位寻址区、用户RAM(4)1us、2us(5)按键复位、上电复位(6)2、高2.3 回答题(1)P3口的第二功能是什么?答:P3口各引脚的第二功能如下表。

单片机 矩阵键盘实验 实验报告

单片机 矩阵键盘实验 实验报告

单片机矩阵键盘实验实验报告一、实验目的本次实验的目的是掌握原理和方法,利用单片机识别矩阵键盘并编程实现键码转换功能,控制LED点亮显示。

二、实验原理矩阵键盘是一种由多路单向控制器输入行选择信号与列选择信号连接而形成的一一对应矩阵排列结构。

它广泛应用于电子游戏机、办公自动化设备、医疗仪器、家电控制及书籍检索机器等方面。

本次实验采用的矩阵键盘是一个4 x 4矩阵,用4段数码管显示按键编码,每个按键都可以输入一个代码,矩阵键盘连接单片机,实现一个软件算法来识别键码转化。

从而将键盘中的按键的按下信号转换成程序能够识别的代码,置于相应的输出结果中,控制LED点亮,从而可以实现矩阵键盘按键的转换功能。

三、实验方法1.硬件搭建:矩阵键盘(4行4列)与单片机(Atmel AT89C51)相连,选择引脚连接,并将数码管和LED与单片机相连以实现显示和点亮的功能。

2.程序设计:先建立控制体系,利用中断服务子程序识别和码值转换,利用中断服务子程序实现从按键的按下信号转换为程序能够识别的代码,然后将该代码段编写到单片机程序中,每次按下矩阵键盘按键后单片机给出相应的按键编码输出,用数码管显示,控制LED点亮。

四、实验结果经过实验,成功实现了矩阵键盘与单片机之间的连接,编写了中断服务子程序,完成了按键编码输出与LED点亮的功能。

实验完成后,数码管显示各种按键的编码,同时LED会点亮。

本次实验介绍了矩阵键盘的原理,论述了键码转换的程序设计步骤,并实验完成矩阵键盘与单片机的连接,实现用LED点亮以及数码管显示按键的编码。

通过本次实验,受益匪浅,使我对使用单片机编写算法与程序有了更深入的认识,同时丰富了课堂学习的内容,也使我更加热爱自己所学的专业。

基于单片机的四位电子密码锁的设计

基于单片机的四位电子密码锁的设计
//#define Busy 0x80//用于检测LCM状态字中的Busy标识
#define w 4//定义密码位数
sbit lcd1602_rs=P2^7;
sbit lcd1602_rw=P2^6;
sbห้องสมุดไป่ตู้t lcd1602_en=P2^5;
sbit wxbz=P3^6;
sbit Scl=P3^4;//24C02串行时钟
(1)密码输入、显示及开锁功能;
(2)密码重置(两次输入旧密码正确后,再两次输入新密码无误则修改成功);
(3)上锁功能;
(4)声光提示(蜂鸣器和发光二极管);
(5)错误报警、输入次数任意更改(0-9次);
(6)液晶屏省电/正常模式任意切换;
(7)产生随机密码并可一键保存;
(8)输入密码的显示/隐藏任意切换;
第2章 硬件电路设计
图2-1-1 AT89S52最小工作系统
1、时钟电路:
单片机工作的时间基准,决定单片机工作速度。时钟电路就是振荡电路,向单片机提供一个正弦波信号作为基准,决定单片机的执行速度。AT89S51单片机时钟频率范围:0—33MHz。本设计晶振选择频率为12MHZ,电容选择30pF如图(3-4)。经计算得单片机工作胡机器周期为:
电子密码锁的设计与总结报告
摘要:
随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。密码锁具有安全性高、成本低、功耗低、易操作等优点。
本次设计使用ATMEL公司的AT89S51单片机为芯片主体,采用AT24C02为掉电存储器的芯片。这种芯片稳定性高,成本低,还能扩展很多功能。如红外探测技术,指纹识别技术,语音识别技术,图像识别技术等。这些扩展的技术国外发展的比较迅速,有些已经投入使用。本设计没有采用这些扩展。其主要具有如下功能:

4×4 键盘矩阵控制条形LED显示

4×4 键盘矩阵控制条形LED显示

目录1 课程设计概述 (1)1.1设计目的 (1)1.2设计内容和要求 (1)1.3设计思路 (1)1.4系统设计 (1)1.5功能要求 (1)2 硬件开发平台 (2)3软件开发平台 (3)4硬件电路的设计 (4)4.1硬件电路的基本构成 (4)4.2硬件电路元器件 (4)4.3条形LED灯 (5)4.4硬件资源及其分配 (5)5程序设计 (7)5.1程序流程图: (7)5.2程序代码 (8)6.1运行结果描述 (10)6.2仿真结果图: (10)结论 (11)参考文献 (12)1 课程设计概述1.1设计目的1、通过单片机课程设计,熟练掌握C语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力。

2、通过4×4 键盘矩阵控制条形LED显示系统的设计,掌握数码管的使用方法,和简单程序的编写,最终提高我们的逻辑抽象能力[1]。

1.2设计内容和要求内容:设计一个4×4 键盘矩阵控制条形LED显示。

要求:利用单片机的矩阵键盘,条形LED显示,第几个的按键对应的几个led 灯亮。

1.3 设计思路1.先熟悉实验原理,设计8×8LED点阵屏显示数字的工作过程,以及所需要的组件。

2.通过单片机的各个引脚的输出控制8×8LED点阵屏显示数字1.4系统设计通过编写程序,实现用中断系统对8×8LED点阵屏的控制,使其每延时一段时间,LED点阵的显示数字就会进行状态转换。

采用单片机内部的I/O口上的P0和P3口可来控制LED点阵。

1.5功能要求本设计能模拟基本的LED点阵显示系统,是用中断的方式定时控制LED点阵显示的内容变换。

定时/计数器工作方式寄存器,定时器采用T0定时器0工作于模式0 位数:13位计数范围:0-8192,每累计250次定时器中断才执行一次换数。

2 硬件开发平台3软件开发平台4硬件电路的设计4. 1硬件电路的基本构成4×4键盘矩阵控制条形LED显示系统,可用单片机的矩阵键盘的输入直接控制发光二极管LED灯的。

矩阵式键盘控制数码管显示

矩阵式键盘控制数码管显示
完成实训报告十
7
谢谢观赏!
二、工作原理
当扫描开始时, 首先将P1.7列初始值设置为低电平, 即P
3
三、程序流程图 ——主程序
开始
初始化
按键查询
YES
A=FFH?
NO
调用消除抖动子程序转Leabharlann 功能处理程序AAAA 1234
结束
4
四、程序清单
独立式键盘控制灯移动程序.doc
5
五、实验板上测试
观察实验结果并记录: 按下不同按键开关,可以看到P0端口的
实训十一: 矩阵式键盘控制数码管显示
功能说明: 使用4*4矩阵式键盘控制第一个数码
管显示0~F。
1
一、电路图
4条列线的一端分别与单片机P1口中的P1.4、 P1.5、 P1.6. P1.7 相接,另一端通过上拉电阻接到+5V电源上,平时使 列线处于高电平状态;而4条行线的一端分别与P1口中的 P1.0、 P1.1、 P1.2、 P1.3相接。16个按键设置在行、列 2 线交点上。
灯作不同方向的移动或闪烁,说明是在执 行不同功能键的处理程序。 按DL1键,亮灯从右向左移动 按DL2键,亮灯从左向右移动 按DL3键,左边4只灯与右边4只灯交替闪亮 按DL4键,8个灯闪烁
6
码管显示0; 作业布置按下DL2,第二个数
码管显示1; 按下DL3,第三个数 码管显示2; 按下DL4,第四个数 码管显示3 。

4×4矩阵键盘在单片机中的应用(Proteus)

4×4矩阵键盘在单片机中的应用(Proteus)

4×4矩阵键盘原理及其在单片机中的简单应用基于Proteus仿真1、4×4矩阵键盘的工作原理如下图所示,4×4矩阵键盘由4条行线和4条列线组成,行线接P3.0-P3.3,列线接P3.4-P3.7,按键位于每条行线和列线的交叉点上。

按键的识别可采用行扫描法和线反转法,这里采用简单的线反转法,只需三步。

第一步,执行程序使X0~X3均为低电平,此时读取各列线Y0~Y3的状态即可知道是否有键按下。

当无键按下时,各行线与各列线相互断开,各列线仍保持为高电平;当有键按下时,则相应的行线与列线通过该按键相连,该列线就变为低电平,此时读取Y0Y1Y2Y3的状态,得到列码。

第二步,执行程序使Y0~Y3均为低电平,当有键按下时,X0~X3中有一条行线为低电平,其余行线为高电平,读取X0X1X2X3的状态,得到行码。

第三步,将第一步得到的列码和第二步得到的行码拼合成被按键的位置码,即Y0Y1Y2Y3X0X1X2X3(因为行线和列线各有一条为低电平,其余为高电平,所以位置码低四位和高四位分别只有一位低电平,其余为高电平)。

当0键按下时,行线X0和列线Y0为低电平,其余行列线为高电平,于是可以得到0键的位置码Y0Y1Y2Y3X0X1X2X3为0111 0111,即0X77。

当5键按下时,行线X1和列线Y1为低电平,其余行列线为高电平,于是可得到5键的位置码Y0Y1Y2Y3X0X1X2X3为1011 1011,即0XBB。

全部矩阵键盘的位置码如下:2、4×4矩阵键盘在单片机的简单应用举例(一)如下图所示,运行程序时,按下任一按键,数码管会显示它在矩阵键盘上的序号0~F,并且蜂鸣器发出声音,模拟按键的声音。

此处采用线反转法识别按键。

C程序如下:#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit buzzer=P1^0;uchar code dis[]= //0~9,A~F的共阳显示代码{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0X88,0X83,0XC6,0XA1,0X86,0X8E};uchar code tab[]= //矩阵键盘按键位置码{0x77,0xb7,0xd7,0xe7,0x7b,0xbb,0xdb,0xeb,0x7d,0xbd,0xdd,0xed,0x7e,0xbe,0xde,0xee};void delay(uint x) //延时函数{uchar i;while(x--)for(i=0;i<120;i++);}uchar scan() //矩阵键盘扫描函数,得到按键号,采用线反转法{uchar a,b,c,i;P3=0XF0; //P3口输出11110000a=P3; //读取列码delay(10); //防抖延时10msP3=0X0F; //P3口输出00001111b=P3; //读取行码c=a+b; //得到位置码for(i=0;i<16;i++)if(c==tab[i])return i; //查表得到按键序号并返回return -1; //无按键,则返回-1}void beep() //蜂鸣器发出声音,模拟按键的声音{ uchar i;for(i=0;i<100;i++){buzzer=~buzzer;delay(1);}buzzer=0;}void main(){uchar key;buzzer=0; //关闭蜂鸣器while(1){key=scan(); //得到按键号if(key!=-1) //有按键则显示,并且蜂鸣器发出声音{P0=dis[key];beep();delay(100);}}}Proteus仿真运行结果如下:3、4×4矩阵键盘在单片机的简单应用举例(二)如下图所示,运行程序时,按下的按键键值越大,点亮的LED灯越多,例如,按下1号键时,点亮一只LED灯,按下2号键时,点亮两只LED灯,按下16号键时,点亮全部LED 灯。

简易密码锁设计实验报告

简易密码锁设计实验报告

简易密码锁设计实验报告
密码锁作为一种常见的安全锁具,广泛应用于各种安全场合。

在本次实验中,我们将设计一个简易的密码锁,并通过实验验证其功能和安全性能。

原理
密码锁主要由以下几个部分组成:输入设备、控制器和输出设备。

输入设备通常是键盘或按键开关,控制器用于接收输入信号并判断是否正确,输出设备可以是电子门锁、LED 指示灯或蜂鸣器等。

在本次实验中,我们将采用单片机作为控制器,用矩阵键盘作为输入设备,用LED灯和蜂鸣器作为输出设备。

具体原理如下:
输入设备
矩阵键盘是一种常见的数字输入设备,在本次实验中我们将使用4*4矩阵键盘。

该键盘由16个按键组成,分别对应09数字和AF字母共16个字符。

控制器
我们将使用STM32F103C8T6单片机作为控制器。

该单片机具有较高的性能和丰富的外设资源,在密码锁设计中可以充分发挥其优势。

控制器主要工作流程如下:
(1) 初始化:对单片机进行初始化,并定义好输入输出引脚。

(2) 输入密码:从矩阵键盘读取用户输入的密码。

(3) 判断密码:将读取到的密码与预设的正确密码进行比较,如果相同则解锁,否则报警。

(4) 解锁/报警:如果密码正确,则点亮LED灯并发出解锁提示音;否则点亮红色LED灯并发出警示音。

输出设备
我们将使用两个LED灯和一个蜂鸣器作为输出设备,用于提示用户解锁状态。

其中绿色LED灯表示解锁成功,红色LED灯表示解锁失败,蜂鸣器用于发出提示音。

ZW-1000使用说明

ZW-1000使用说明

目录一、系统慨述1.1 ZW-1000/2000(51系列单片机)实验箱简介----------------------------------- (2)1.2 产品定位----------------------------------------------------------------------------------(2)1.3 功能模块----------------------------------------------------------------------------------(2)1.4 实验注意事项----------------------------------------------------------------------------(2)二、硬件原理分析2.1 16路贴片LED流水灯-----------------------------------------------------------------(3)2.2 8位数码管硬件及编程介绍--------------------------------------- ------------------(4)2.3 独立按键------------------------------------------------------- -------------------------- (5)2.4 继电器控制实验硬件说明------------------------------------------------------------ (6)2.5 矩阵按键-----------------------------------------------------------------------------------(7)2.6 液晶1602-----------------------------------------------------------------------------------(8)2.7 蜂鸣器---------------------------------------------------------------------------------- ---- (9)2.8 串行通讯硬件指导----------------------------------------------------------------------(10)2.9 LM393电压比较器电路实验指导--------------------------------------------------- --(11)2.10 步进电机实验指导---------------------------------------------------------------------- (12)2.11 I2C通讯部分程序设计指导---------------------------------------------------------(13)2.12 ADC0832模数转换实验指导(A/D)-----------------------------------------------(14)2.13 10位DA数模转换芯片TLC5615实验----------------------------- ---------------- (15)2.14 16*16点阵实验指导-------------------------------------------------------------------(16)2.15 MAX813硬件看门狗电路实验指导---------------------------------------------------(17)2.16 18B20温度传感器实验指导----------------------------------------------------------(18)2.17 DS1302时钟芯片实验指导------------------------------------------------------------(19)三.USB驱动安装及程序ISP下载图解3.1 USB驱动安装指南----------------------------------------------------------------------(20) 3.2 STC-ISP程序下载图解----------------------------------------------------------------(21)四、常见故障处理方法-------------------------------------------------------------------(23)4.1 无法识别4.2 无法下载。

44矩阵式按键的接法

44矩阵式按键的接法

在单片机按键使用过程中,当键盘中按键数量较多时为了减少端口的占用通常将按键排列成矩阵形式如下图所示,在矩阵式键盘中每条水平线和垂直线在交叉处不直接连通而是通过一个按键加以连接,到底这样做是出意何种目的呢?大家看下面电路图,单片机的整一个8位端口可以构成 4*4=16 个矩阵式按键,相比独立式按键接法多出了一倍,而且线数越多区别就越明显,假如再多加一条线就可以构成 20个按键的键盘,但是独立式按键接法只能多出1个按键。

由此可见,在需要的按键数量比较多时,采用矩阵法来连接键盘是非常合理的,矩阵式结构的键盘显然比独立式键盘复杂一些,单片机对其进行识别也要复杂一些。

确定矩阵式键盘上任何一个键被按下通常采用行扫描法。

行扫描法又称为逐行查询法它是一种最常用的多按键识别方法。

因此,我们就以行扫描法为例介绍矩阵式键盘的工作原理。

图5-4(4*4矩阵式按键的接法)首先,不断循环地给低四位独立的低电平,然后判断键盘中有无键按下。

将低位中其中一列线(P1.0~P1.3中其中一列)置低电平然后检测行线的状态(高4位,即P1.4~P1.7,由于线与关系,只要与低电平列线接通,即跳变成低电平),只要有一行的电平为低就延时一段时间以消除抖动,然后再次判断,假如依然为低电平,则表示键盘中真的有键被按下而且闭合的键位于低电平的4个按键之中任其一,若所有行线均为高电平则表示键盘中无键按下。

再其次,判断闭合键所在的具体位置。

在确认有键按下后 ,即可进入确定具体闭合键的过程。

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

同时再逐行检测各行线的电平状态;若某行为低,则该行线与置为低电平的列线交叉处的按键就是闭合的按键。

下面图5-5是4*4矩阵式按键接法的软件算法操作流程。

下面程序按照上述算法流程去编写的,其电路如图5-6,只是在图5-5的基础上多加了P0端口的8只LED灯。

从键盘中检测到一个键值,然后将这个值写到LED数码管上显示。

独立按键及矩阵键盘控制LED灯课件

独立按键及矩阵键盘控制LED灯课件

THANKS
电路。
当按键被按下时,按键的两个触 点之间会短路,从而接通电路; 当按键释放时,触点断开,电路
断开。
独立按键通常用于简单的输入控 制,如开关一个LED灯。
独立按键控制LED灯的电路连接
01
将LED的正极连接到按键的常闭 触点上,LED的负极连接到地线 。
02
当按键没有被按下时,LED灯不 亮;当按键被按下时,LED灯亮 起。
控制家电设备
独立按键和矩阵键盘可以用于控制各种家电设备,如灯光、空调、电视等,实现一键控制和智能 化管理。
实现人机交互
通过独立按键和矩阵键盘,用户可以方便地与智能家居系统进行交互,实现语音控制、手势控制 等多种交互方式。
实现家庭安全
独立按键和矩阵键盘可以用于设置安全报警系统,如门窗报警、烟雾报警等,提高家庭安全防范 能力。
应用场景的比较
独立按键
适用于按键数量较少,布局较为分散 的场合,如遥控器、计算器等。
矩阵键盘
适用于按键数量较多,布局较为紧凑 的场合,如电脑键盘、游戏机手柄等 。
优缺点的比较
独立按键
01
缺点:占用引脚多,不适合大量按键的应 用场景。
03
02
优点:每个按键独立控制,电路简单,易于 实现。
04
矩阵键盘
优点:可节省引脚数量,适用于大量按键 的应用场景。
05
06
缺点:电路较为复杂,需要行列扫描或解 码电路才能实现。
04
独立按键及矩阵键盘在智能 家居中的应用
智能家居概述
1 2
3
智能家居定义
智能家居是指通过互联网、物联网等技术,将家庭中的各种 设备连接到一起,实现智能化控制和管理,提高生活便利性 和舒适度。

(整理)单片机控制的矩阵键盘

(整理)单片机控制的矩阵键盘
INC B
INC B
INC B
JC NEXT5
NEXT6: MOV A,P1
ANL A,#0FH
CJNE A,#0FH,NEXT6
MOV R0,#0FFH
RET
键盘处理程序就作这么一个简单的介绍,实际上,键盘、显示处理是很复杂的,它往往占到一个应用程序的大部份代码,可见其重要性,但说到,这种复杂并不来自于单片机的本身,而是来自于操作者的习惯等等问题,因此,在编写键盘处理程序之前,最好先把它从逻辑上理清,然后用适当的算法表示出来,最后再去写代码,这样,才能快速有效地写好代码。
可见,键盘输出经双稳态电路之后,输出已变为规范的矩形方波。
软件上采取的措施是:在检测到有按键按下时,执行一个10ms左右(具体时间应视所使用的按键进行调整)的延时程序后,再确认该键电平是否仍保持闭合状态电平,若仍保持闭合状态电平,则确认该键处于闭合状态;同理,在检测到该键释放后,也应采用相同的步骤进行确认,从而可消除抖动的影响。
ANL A,#0FH
CJNE A,#0FH,KCODE;
MOV A,R1
SETB C
RLC A
JC NEXT2
NEXT3: MOV R0,#00H
RET
KCODE: MOV B,#0FBH
NEXT4: RRC A
INC B
JC NEXT4
MOV A,R1
SWAP A
NEXT5: RRC A
INC B
2.独立式按键的软件结构
独立式按键软件常采用查询式结构。先逐位查询每根I/O口线的输入状态,如某一根I/O口线输入为低电平,则可确认该I/O口线所对应的按键已按下,然后,再转向该键的功能处理程序。图7.4中的I/O口采用P1口,请读者自行编制相应的软件。

实验四键盘扫描及显示设计实验报告

实验四键盘扫描及显示设计实验报告

实验四键盘扫描及显⽰设计实验报告实验四键盘扫描及显⽰设计实验报告⼀、实验要求1. 复习⾏列矩阵式键盘的⼯作原理及编程⽅法。

2. 复习七段数码管的显⽰原理。

3. 复习单⽚机控制数码管显⽰的⽅法。

⼆、实验设备1.PC 机⼀台2.TD-NMC+教学实验系统三、实验⽬的1. 进⼀步熟悉单⽚机仿真实验软件 Keil C51 调试硬件的⽅法。

2. 了解⾏列矩阵式键盘扫描与数码管显⽰的基本原理。

3. 熟悉获取⾏列矩阵式键盘按键值的算法。

4. 掌握数码管显⽰的编码⽅法。

5. 掌握数码管动态显⽰的编程⽅法。

四、实验内容根据TD-NMC+实验平台的单元电路,构建⼀个硬件系统,并编写实验程序实现如下功能:1.扫描键盘输⼊,并将扫描结果送数码管显⽰。

2.键盘采⽤ 4×4 键盘,每个数码管显⽰值可为 0~F 共 16 个数。

实验具体内容如下:将键盘进⾏编号,记作 0~F,当按下其中⼀个按键时,将该按键对应的编号在⼀个数码管上显⽰出来,当再按下⼀个按键时,便将这个按键的编号在下⼀个数码管上显⽰出来,数码管上可以显⽰最近 4 次按下的按键编号。

五、实验单元电路及连线矩阵键盘及数码管显⽰单元图1 键盘及数码管单元电路实验连线图2实验连线图六、实验说明1. 由于机械触点的弹性作⽤,⼀个按键开关在闭合时不会马上稳定地接通,在断开时也不会⼀下⼦断开。

因⽽在闭合及断开的瞬间均伴随有⼀连串的抖动。

抖动时间的长短由按键的机械特性决定,⼀般为 5~10ms。

这是⼀个很重要的时间参数,在很多场合都要⽤到。

键抖动会引起⼀次按键被误读多次。

为了确保 CPU 对键的⼀次闭合仅做⼀次处理,必须去除键抖动。

在键闭合稳定时,读取键的状态,并且必须判别;在键释放稳定后,再作处理。

按键的抖动,可⽤硬件或软件两种⽅法消除。

2. 为了减少键盘与单⽚机接⼝时所占⽤ I/O 线的数⽬,在键数较多时,通常都将键盘排列成⾏列矩阵形式。

3. 从数码管显⽰⽅式看,数码管分为静态显⽰和动态显⽰两种⽅式。

单片机课程设计题目

单片机课程设计题目

1、交通灯设计要求:从LED中选择三个表示红黄绿等并实现红绿灯交替点亮(红绿灯各30s,黄灯5s)、用两位数码管显示点亮的时间、在绿灯要灭前5秒钟变成黄灯闪烁。

2、流水灯A、设计要求:从矩阵键盘中选择一个按键(S2—S5)按下时,流水灯先从上而下流动再从下而上流动,循环3次,之后灯从两边到中间同时依次点亮然后由里到外逐渐熄灭(循环10次)。

B、设计要求:8个发光二极管由上至下间隔1s流动,其中每个管亮500ms,灭500ms,亮时蜂鸣器响,灭时关闭蜂鸣器,循环10次。

间隔300ms第一次一个管亮流动一次,第二次两个管亮流动,循环5次,然后重复整个过程。

C、设计要求:先点亮奇数位灯再点亮偶数位灯,循环三次;同时从两边往中间点亮然后逐渐熄灭,再全部灯亮灭闪烁3次,最后流水灯从上而下流动,蜂鸣器响。

D、设计要求:把8个发光二极管分成两组,从中间往两边同时依次点亮,然后两组灯亮灭交替闪烁10次;而后流水灯从下而上流动3次,最后全亮,蜂鸣器长响。

3、定时器/计数器A、设计要求:用定时器1以60s倒计时在两位数码管上减数显示,到零后保持显示并8个发光二极管开始闪烁。

B、设计要求:用定时器0以30s倒计时在两位数码管上减数显示,最后10s时每减1s蜂鸣器响一声,归零后蜂鸣器长响,流水灯开始以间隔200ms 流动。

C、设计要求:用定时器0实现以间隔500MS在6位数码管上依次显示1,2,3,4,5,6,循环8次后,停在全零。

D、设计要求:同时用两个定时器控制蜂鸣器发声,定时器0控制频率,定时器1控制同个频率持续的时间,间隔300ms依次输出1,10,50,100,200,400,800, 1k(hz)的方波。

E、设计要求:利用动态扫描和定时器1在数码管上显示出从765432开始以1/10秒的速度往下递减直至765398并保持显示此数,与此同时利用定时器0以500MS速度进行流水灯从上至下移动,当数码管上数减到停止时,实验板上流水灯也停止然后全部开始闪烁,3秒后(用T0定时)流水灯全部关闭、数码管上显示出“HELLO”。

矩阵按键控制数码管显示

矩阵按键控制数码管显示

定时消抖 Case 0xee; P0口送0 段码 Case 0xed; P0口送1 段码 Case 0x77; …… P0口送F 段码
有键按下?


存储当前P2的状态1 Break P2=0X0F 结束 存储当前P2的状态2
返回(状态1|状态2)
返回0XFF
程序编写
//========================================== //函数名称: keyscan() //函数功能: 检测按键 //入口参数:无 //出口参数:cord_h|cord_1 //备注: //========================================== UINT8 keyscan(void) { INT8 cord_h=0; INT8 cord_1=0; P2=0xf0; if(P2!=0xf0) { delay_ms(10); if(P2!=0xf0) { cord_h=P2; P2=0x0f; cord_1=P2; return(cord_h|cord_1); } } return(0xff); }
在没有按键按下时,即DS2450 的输入量时0,当有丌 同的按键按下时,DS2450 的输入量丌同,微处理器就会 得到丌同的数字量,微处理器根据采集到的数字量可判断 按键情况。
单片机控制的“机电一体化产品”中按键的接口设计 科技咨询,李迚波
键盘扫描子程序一般包括以下内容:
1.判别有无键按下;
2.消除键盘机械抖动;
出线输出为全低电平,则列线中电平由高变低所在列为按
键所在列。
两步即可确定按键所在的行和列,从而识别出所按的键。
采用线反转法的矩阵式键盘
假设键3被按下。
第一步,P1.0~P1.3输出全为“0”,然后,读入 P1.4~P1.7线的状态,结果P1.4=0,而P1.5~P1.7均为 1,因此,第1行出现电平的变化,说明第1行有键按下; 第二步,让P1.4~P1.7输出全为“0”,然后,读入 P1.0~P1.3位,结果P1.0=0,而P1.1~P1.3均为1,因 此第4列出现电平的变化,说明第4列有键按下。

单片机矩阵按键实训报告

单片机矩阵按键实训报告

一、实训目的1. 理解矩阵键盘的工作原理和电路设计。

2. 掌握矩阵键盘的编程方法,实现按键的检测和响应。

3. 培养实际动手能力和团队协作能力。

二、实训内容1. 矩阵键盘电路设计2. 矩阵键盘编程3. 矩阵键盘应用实例三、实训环境1. 单片机开发板:51单片机开发板2. 矩阵键盘:4x4矩阵键盘3. 编程软件:Keil uVision54. 仿真软件:Proteus四、实训过程1. 矩阵键盘电路设计矩阵键盘由行线和列线组成,通过行列交叉连接的按键阵列实现按键功能。

在4x4矩阵键盘设计中,共有4条行线和4条列线,共16个按键。

电路设计如下:(1)行线连接:将单片机的P1.0至P1.3端口作为行线输出,用于控制行线电平。

(2)列线连接:将单片机的P2.0至P2.3端口作为列线输入,用于检测按键状态。

(3)按键连接:将16个按键分别连接到行线和列线交叉处。

2. 矩阵键盘编程(1)初始化:设置P1端口为输出模式,P2端口为输入模式。

(2)按键检测:通过逐行扫描的方式检测按键状态。

首先将P1端口的所有行线设置为低电平,然后逐行检查P2端口列线的状态,如果某列线为低电平,则表示该行对应列的按键被按下。

(3)消抖处理:为了避免按键抖动引起的误读,需要进行消抖处理。

通常采用软件消抖方法,即在检测到按键按下后,延时一段时间(如10ms)再次检测按键状态,如果按键仍然被按下,则确认按键操作有效。

(4)按键处理:根据检测到的按键,执行相应的操作。

例如,当按键按下时,在LCD1602显示屏上显示对应的按键值。

3. 矩阵键盘应用实例以LCD1602显示屏为例,实现按键与显示内容的关联。

(1)LCD1602显示屏初始化:设置LCD1602的显示模式、光标位置等。

(2)按键扫描:按照上述方法检测按键状态。

(3)按键处理:根据按键值,在LCD1602显示屏上显示对应的字符。

五、实训结果1. 成功设计并实现了4x4矩阵键盘电路。

2. 编写了矩阵键盘的检测和响应程序,实现了按键的检测和消抖处理。

矩阵键盘工作原理

矩阵键盘工作原理

矩阵键盘工作原理矩阵键盘是一种常见的输入设备,广泛应用于计算机、手机、电子游戏机等各种电子设备中。

其工作原理是通过一种特殊的电路设计,实现了少量的输入引脚就可以控制大量的按键,从而实现了节省成本和空间的效果。

下面我们将详细介绍矩阵键盘的工作原理。

首先,矩阵键盘由若干行和若干列的按键组成,每个按键的交叉点处都连接有一个开关。

当按下某个按键时,该按键所在的行和列就会发生短路,从而改变了对应的电路状态。

接下来,通过扫描电路逐行或逐列地扫描按键状态,以确定哪些按键被按下。

这样就可以通过少量的引脚来控制大量的按键,实现了矩阵键盘的工作原理。

其次,矩阵键盘的工作原理可以通过一个简单的例子来说明。

假设一个4x4的矩阵键盘,共有16个按键,分为4行和4列。

通过扫描电路逐行扫描按键状态,可以确定哪些按键被按下。

比如,当按下第一行的第二个按键时,该按键所在的第一行和第二列就会发生短路,通过扫描电路可以检测到这一变化,从而确定了该按键被按下。

通过这种方式,可以通过4行和4列的引脚来控制16个按键,实现了矩阵键盘的工作原理。

最后,矩阵键盘的工作原理还可以通过电路图来进一步说明。

在矩阵键盘的电路图中,每个按键都连接在特定的行和列上,通过扫描电路逐行或逐列地扫描按键状态,可以确定哪些按键被按下。

这样就可以实现通过少量的引脚来控制大量的按键,从而节省了成本和空间。

总之,矩阵键盘通过特殊的电路设计,实现了少量的输入引脚就可以控制大量的按键,从而节省了成本和空间。

通过扫描电路逐行或逐列地扫描按键状态,可以确定哪些按键被按下,从而实现了矩阵键盘的工作原理。

希望本文能够帮助大家更好地理解矩阵键盘的工作原理。

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

一、任务说明
本次的任务是利用51单片机设计一个4*4矩阵键盘输入系统,用16个发光二级管对应16个不同的按键。

每按下一个按键对应的发光二极管就亮。

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

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

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

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

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

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

图1 键盘布局
利用单片机的并行口P1连接4×4矩阵键盘,并以单片机的P1.0-P1.3各管脚作输入线,以单片机的P1.4-P1.7各管脚作输出线;利用P2、P3口控制灯1-灯16,。

用Proteus绘制其电路原理图(附录一)。

此任务用到了AT89C51芯片,还用到了晶体振荡器、按钮开关、发光二级管以及一些电阻。

这次任务中采用C语言编写程序,在编译过程中设置成自动产生HEX文件,将此文件导入AT89C51中,即可实现相应的功能。

二、原理图绘制说明
电路原理图的设计与绘制是整个电路设计的基础,设计一个电路原理图的工作包括:设置电路图图纸的大小,规划电路图的总体布局,在图纸上放置元器件并对元器件进行调整,进行布线和整体布局,最后保存并打印输出等几个步骤。

安装完Proteus后,运行ISIS 7 Professional,在原理图编辑窗口绘制电路图,在该界面下还有预览窗口和元件列表区,在左侧的工具箱中还有模型选择工具栏,方向工具栏及仿真按钮等工具。

其具体的使用步骤如下:
1.运行该软件后,新建一个设计文件,设置图纸大小。

选择界面如图2所示。

图2 选择图纸大小界面
2.接下来开始查找任务中所用到的元器件,查找界面如图3所示。

图3 元器件查找界面
3.将查找的元器件放置到界面中,并进行相应的引脚连线,本次是采用标注的方式进行引脚连接,标注符号相同的表示引脚相连接,具体操作是先将引脚引出一小段导线,右击导线选择放置网络标号,标注标号界面如图4所示。

图4 标注标号界面
4.按照题目设计要求连接好各元件,完成后的原理图如附录Ⅰ所示。

三、流程图绘制
四、原理图仿真步骤及过程结果说明
1.在完成原理图的连接之后,要进行仿真,AT89C51还需要导入编写的程序文件,这次任务我是用用C语言编写的程序,用的是KEIL编程软件,用它产生HEX文件,将此文件导入到AT89C51中,然后就可以进行仿真了。

导入HEX文件如图5所示。

图5 HEX文件导入界面
2.4*4矩阵键盘输入控制系统,P1.0--P1.3口控制行,P1.4—P1.7口控制列,电路如图6所示。

3.按钮按下后16个发光二级管中对应的二级接通,如图7所示。

图7 发光二级管接通
4.振荡及复位电路如图8所示。

图8 振荡及复位电路
五、总结
本次课设虽然只有短暂的一周,但是在这一周内学到了很多用的东西,以前学到的知识也得到了一定的巩固。

此次课设又学了一种新软件——Proteus,通过网上查阅相关资料,查看相关教学视频,对Proteus有了一定的了解,虽然用的不是熟练,但是其基本功能还是能掌握,包括元器件的查找、元器件引脚的连接、以及完成之后的仿真,还对一些芯片的使用也有所熟悉,例如AT89C51等。

通过这次的课程设计,我充分认识到理论与实际相结合的重要性,理论知识再丰富,没有实际的操作经验再多的理论知识也没用,理论知识最终还是要用在实践上,只有这样才能锻炼我们的实际动手操作能力和独立思考能力。

本次课设还得感谢老师同学们的细心帮助和指导,让我学会了很多新知识。

近年来,随着电子技术飞速的发展,出现了各式各样,各种型号的单片机,但是51单片机是所有单片机的基础,只有学好51系列单片机才能更好的学习更高端的单片机。

由于知识和经验方面的不足,本设计还存在不足的地方,本人还要不断学习相关知识和查阅资料,使系统结构和功能上不断完善。

六、参考文献
1.张毅刚.单片机原理及应用. [M]哈尔滨:哈尔滨工业大学出版社,2004.
2.彭伟.单片机C语言程序设计实训100例. [M]北京:电子工业出版社,2011.
3.周坚.单片机C语言轻松入门.第2版,[M]北京:北京航空航天大学出版社,2011.
4.杨打生,宋伟.单片机C51技术应用. [M]北京:北京理工大学出版社,2011
5.张义和,王敏男.例说51单片机.第3版,[M]北京:人民邮电出版社社,2010.
6.郭天祥.51单片机C语言教程.[M]北京:电子工业出版社,2009.
附录Ⅰ仿真电路图
附录Ⅱ程序清单
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table[4]={0xFE,0xFD,0xFB,0xF7}; uchar scan()
{
uchar Temp=0;
uchar num=0,i=0;
for(i=0;i<4;i++)
{
P1=table[i];
Temp=P1 & 0xF0;
if(Temp!=0xF0)
{
switch(Temp)
{Temp=P1;
case 0xE0: num=0;break;
case 0xD0: num=1;break;
case 0xB0: num=2;break;
case 0x70: num=3;break;
default: num=50;break;
}
break;
}
}
return num+4*i+1;
}
void display(uchar num1)
{
switch(num1)
{
case 1:P2=0xfe;P3=0xff;break; // 1
case 2:P2=0xfd;P3=0xff;break; // 2
case 3:P2=0xfb;P3=0xff;break; // 3
case 4:P2=0xf7;P3=0xff;break; // 4
case 5:P2=0xef;P3=0xff;break; // 5
case 6:P2=0xdf;P3=0xff;break; // 6
case 7:P2=0xbf;P3=0xff;break; // 7
case 8:P2=0x7f;P3=0xff;break; // 8
case 9:P2=0xff;P3=0xfe;break; // 9
case 10:P2=0xff;P3=0xfd;break; // 10 case 11:P2=0xff;P3=0xfb;break; // 11 case 12:P2=0xff;P3=0xf7;break; // 12
case 13:P2=0xff;P3=0xef;break; // 13 case 14:P2=0xff;P3=0xdf;break; // 14 case 15:P2=0xff;P3=0xbf;break; // 15 case 16:P2=0xff,P3=0x7f;break; // 16 default:break;
};
}
void main()
{char num1;
while(1)
{
num1=scan();
display(num1);
}
}。

相关文档
最新文档