最新单片机按键模块设计教程文件

合集下载

单片机按键模块设计

单片机按键模块设计

单片机按键模块设计一、硬件设计1、按键的类型选择按键的类型有很多种,常见的有机械按键和触摸按键。

机械按键通过金属触点的闭合和断开来产生电信号,具有成本低、可靠性高的优点,但寿命相对较短,容易产生抖动。

触摸按键则通过电容感应或电阻感应来检测触摸动作,寿命长、外观美观,但成本相对较高,且容易受到外界干扰。

在一般的单片机应用中,机械按键通常是更经济实用的选择。

2、按键的连接方式按键可以采用独立式连接或矩阵式连接。

独立式连接适用于按键数量较少的情况,每个按键单独连接到单片机的一个 I/O 口上,这种方式简单直观,但占用的 I/O 口资源较多。

矩阵式连接则适用于按键数量较多的情况,通过将按键排列成矩阵形式,利用行线和列线的交叉点来识别按键,大大节省了 I/O 口资源,但编程相对复杂。

以 4×4 矩阵按键为例,我们需要 8 个 I/O 口,其中 4 个作为行线,4 个作为列线。

当某个按键被按下时,对应的行线和列线会接通,通过扫描行线和列线的状态,就可以确定被按下的按键。

3、上拉电阻的使用为了保证单片机能够正确检测按键的状态,通常需要在按键连接的I/O 口上加上拉电阻。

上拉电阻将I/O 口的电平拉高,当按键未按下时,I/O 口处于高电平;当按键按下时,I/O 口被拉低为低电平。

上拉电阻的阻值一般在10KΩ 左右。

4、消抖处理由于机械按键在按下和释放的瞬间,触点会产生抖动,导致单片机检测到的电平不稳定。

为了消除这种抖动,通常采用软件消抖或硬件消抖的方法。

软件消抖是在检测到按键状态变化后,延迟一段时间(一般为10ms 20ms),再次检测按键状态,如果状态保持不变,则认为按键有效。

这种方法简单易行,但会增加程序的执行时间。

硬件消抖则是通过在按键两端并联电容或使用专用的消抖芯片来实现。

电容可以吸收触点抖动产生的尖峰脉冲,使电平稳定。

但硬件消抖会增加硬件成本和电路复杂度。

二、软件编程1、按键扫描程序在软件编程中,需要编写按键扫描程序来检测按键的状态。

单片机按键模块设计

单片机按键模块设计

VS
开关电源
使用开关电源为单片机和按键模块供电, 效率高,体积小,重量轻,但成本较高。
03
单片机按键模块软件设计
按键扫描算法设计
扫描方式
采用定时器定时扫描或外部中断扫描方式,确保按键 的实时响应。
扫描算法
采用线性扫描或矩阵扫描算法,减少硬件资源占用, 提高扫描效率。
延时去抖动
通过软件延时消除按键抖动,提高按键识别的准确性 。
单片机按键模块设计
汇报人: 202X-12-21
目录
• 引言 • 单片机按键模块硬件设计 • 单片机按键模块软件设计 • 单片机按键模块测试与调试 • 单片机按键模块应用案例分析 • 结论与展望
01
引言
目的和背景
目的
设计一个稳定、可靠、高效的单片机按键模块,以满足各种应用场景的需求。
背景
单片机按键模块是嵌入式系统中的重要组成部分,广泛应用于智能家居、工业控制、医疗设备等领域 。随着技术的不断发展,对单片机按键模块的要求也越来越高,需要具备更高的性能和更低的功耗。
案例描述
在智能家居控制系统中,按键模块作为人机交互的 重要接口,实现了对灯光、窗帘、空调等设备的远 程控制。
案例总结
单片机按键模块在智能家居控制系统中发挥 了重要作用,提高了家居设备的智能化程度 和用户体验。
案例二:工业自动化控制系统中的应用
01
工业自动化控制系统的按键模块设计
通过单片机实现按键输入,控制工业设备的启动、停止、调节等功能。
异常处理
设计异常处理机制,对异常情况进行处理,如按键卡死、异 常按下等。
04
单片机按键模块测试与调试
硬件测试与调试
01
,电压 是否符合要求。

单片机按键程序设计

单片机按键程序设计

单片机按键程序设计单片机按键的基本原理其实并不复杂。

通常,按键就是一个简单的开关,当按键按下时,电路接通,对应的引脚电平发生变化;当按键松开时,电路断开,引脚电平恢复到初始状态。

在程序设计中,我们需要不断检测引脚的电平变化,从而判断按键是否被按下。

在实际的按键程序设计中,有多种方式可以实现按键检测。

其中一种常见的方法是查询法。

这种方法是通过不断地读取按键对应的引脚状态来判断按键是否被按下。

以下是一个简单的查询法示例代码:```cinclude <reg51h> //包含 51 单片机的头文件sbit key = P1^0; //定义按键连接的引脚void main(){while(1) //无限循环{if(key == 0) //如果按键按下,引脚为低电平{//执行按键按下的操作//比如点亮一个 LED 灯P2 = 0xfe;while(key == 0);//等待按键松开}}}```上述代码中,我们首先定义了按键连接的引脚`key`,然后在主函数的无限循环中不断检测按键引脚的状态。

当检测到按键按下时,执行相应的操作,并通过`while(key == 0)`等待按键松开。

除了查询法,还有中断法可以用于按键检测。

中断法的优点是能够及时响应按键动作,不会因为程序的其他操作而导致按键响应延迟。

```cinclude <reg51h> //包含 51 单片机的头文件sbit key = P1^0; //定义按键连接的引脚void int0_init()//中断初始化函数{IT0 = 1; //下降沿触发中断EX0 = 1; //使能外部中断 0EA = 1; //开总中断}void int0() interrupt 0 //外部中断 0 服务函数{//执行按键按下的操作//比如点亮一个 LED 灯P2 = 0xfe;}void main(){int0_init();//初始化中断while(1);//无限循环,保持程序运行}```在上述代码中,我们首先在`int0_init` 函数中对中断进行了初始化设置,然后在`int0` 函数中编写了按键按下时的处理代码。

单片机应用技术项目教程(C语言版)项目四 键盘设计与实现

单片机应用技术项目教程(C语言版)项目四 键盘设计与实现

R8
220
D8
LED-RED
R7
220
D7
LED-RED
R6
220
D6
LED-RED
R5
220
D5
LED-RED
R4
220
D4
LED-RED
R3
220
D3
LED-RED
R2
220
D2
LED-RED
R1
220
D1
LED-RED
9 RST
29 30 31
PSEN ALE EA
1 2 3 4 5 6 7 8
■ 键盘分类:
按键按照结构原理可分为两类
触点式开关按键,如机械式开关、导电橡胶式开关等; 无触点开关按键,如电气式按键,磁感应按键等。前
者造价低,后者寿命长。
按键按照接口原理可分为两类
编码键盘,主要是用硬件来实现对按键的识别,硬件 结构复杂;
非编码键盘,主要是由软件来实现按键的定义与识别, 硬件结构简单,软件编程量大。
21 22 23 24 25 26 27 28
P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1
P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD
10 11 12 13 14 15 16 17
R10
10k
R11
10k
R12
10k
R13
10k
R14
10k
R15
10k
P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1
P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD
10 11 12 13 14 15 16 17

单片机课程实验二: 独立按键电路设计

单片机课程实验二: 独立按键电路设计

单片机课程实验二:独立按键电路设计专业:通信工程学号:1610111183 姓名:石万里一、实验步骤:在实验一STC89C52单片机控制8个流水灯的实验的基础上进行此实验。

本次实验目标:通过两个独立按键控制流水灯的变化,使得8个流水灯代表的8进制数,在按下K1键后自动加一,按下K2键后,自动减一,采用下降沿外部中断触发。

电路图在实验一的基础上进行改装,让P32与P33各自通过一个独立按键接地,手绘电路图如图1.1所示:图1.1独立按键电路图1.2独立按键电路焊接成果实验程序编写烧录后,在keil软件中生产hex文件,再烧录到单片机芯片中,再给电路板上电即可。

之后是实验程序的编写,流水灯程序编写好并在学习板上测试成功后,即可把芯片放到自己焊接的电路板上上电测试电路板,如果成功即可找老师验收,不成功需要用万用表对电路板进行测试,测试时先把万用表档位调到欧姆档,测试本实验焊接的独立按键电路是否存在开路,并检查是否存在有未焊接的部分,是否有虚焊漏焊的情况,是否上电测试时晶振未安装,电路板检查后继续进行测试,然后再检查、测试,直到自己焊接的电路板功能正常。

若是在学习板上程序未成功,则需要对程序进行修改,重新编译、烧录,不断测试。

二、流水灯程序:org 0000Hljmp mainorg 0003hljmp jiayiorg 0013hljmp jianyiorg 100h main:setb ex0setb IT0setb ex1setb IT1setb eamov r4,#07hmov r3,#07hmov r2,#02hmov a,#0fehmov p1,aloop2:acall delay next: rl aacall delaymov p1,adjnz r4,next here: acall delay//mov a,p1rr amov p1,adjnz r3,heremov r4,#07hmov r3,#07hdjnz r2,loop2acall delay loop1:mov a,#07chmov p1,asjmp loop1 delay:mov r5,#19h delay1:mov r6,#19h delay2:mov r7,#0ffhdjnz r7,$djnz r6,delay2djnz r5,delay1 retjiayi:mov a,p1dec aacall delaymov p1,asjmp jiayiretijianyi:mov a,p1inc aacall delaymov p1,asjmp jianyiretiend三、实验总结:实验结果如下图所示:前五张图片是加一结果,最后两张图片是减一结果因为拍照速度太慢,故加一减一在图中看起来可能不连续,但程序完全正确,已经过实验验证,本人建议最好录视频作为作业上交此实验是建立在实验一的基础上进行的,故相对较为简单,只需要P32与P33各自加独立按键接地即可。

单片机按键模块设计

单片机按键模块设计

引言概述:单片机按键模块设计在嵌入式系统中具有重要的作用,通过设计合理的按键模块可以方便用户与系统进行交互操作。

本文将从按键模块的硬件设计、按键扫描算法、按键去抖动、按键中断以及按键模块的应用等五个方面进行详细阐述。

正文内容:一、按键模块的硬件设计1.按键类型的选择:根据具体应用需求和用户操作方式,选择合适的按键类型,如矩阵键盘、独立按键等。

2.输入电压与电流的确定:根据按键的工作电压和电流要求,选择合适的电源电压和外部电阻。

3.按键与单片机的连接方式:根据按键的类型,确定按键与单片机的连接方式,如直接连接、串口连接等。

4.按键模块的尺寸与外观设计:根据实际应用场景和外观要求,确定按键模块的尺寸和外观设计。

二、按键扫描算法1.串行扫描算法:逐个扫描按键,判断按键是否按下。

2.并行扫描算法:同时扫描多个按键,减少扫描时间。

3.矩阵扫描算法:通过行列扫描按键,减少IO口的使用。

4.多级扫描算法:分为多级扫描,通过级联的方式减少IO口的占用。

三、按键去抖动1.硬件去抖动方法:通过添加电容、电阻等元件,使按键在按下与释放时产生延时,从而避免按键的误触发。

2.软件去抖动方法:通过软件延时的方式,根据按键的状态变化进行判断,确保按键的稳定性。

四、按键中断1.外部中断方式:通过配置外部中断向量表、中断触发方式等参数,实现按键的中断处理。

2.内部中断方式:通过编程控制,设置相关寄存器的值,实现按键的中断处理。

五、按键模块的应用1.电子产品应用:如智能家居、智能门锁等,用户可以通过按键模块进行系统操作。

2.工业自动化应用:如、自动控制设备等,按键模块用于操作控制和调试调整参数。

3.仪器仪表应用:如数字化示波器、频谱仪等,按键模块用于功能切换和参数调整。

4.通信设备应用:如无线对讲机、方式等,按键模块用于频道切换、音量调节等功能。

5.汽车电子应用:如车载导航、车载音响等,按键模块用于操作菜单、调节音量等功能。

总结:单片机按键模块的设计涉及硬件设计、按键扫描算法、按键去抖动、按键中断以及应用等多个方面。

单片机按键模块设计(二)2024

单片机按键模块设计(二)2024

单片机按键模块设计(二)引言概述:本文将介绍单片机按键模块设计的相关内容。

按键模块在嵌入式系统中被广泛应用,能够方便地实现对系统的控制和操作。

本文将从五个大点进行阐述,包括按键模块原理介绍、按键类型选择、按键电路设计、按键功能实现和按键模块调试。

通过详细介绍和分析,将帮助读者更好地理解和使用单片机按键模块。

正文:1. 按键模块原理介绍- 按键模块是通过触发按键开关来产生不同信号的模块。

它由按键开关和其它电路组成,可以实现按键信号的检测和处理。

- 常见的按键模块原理包括矩阵式按键、独立式按键和编码式按键。

每种原理都有其适用的场景和特点。

2. 按键类型选择- 按键的类型包括机械按键和触摸按键。

机械按键通常使用弹簧结构,稳定可靠,适用于精确操作。

触摸按键使用电容或电阻感应原理,触摸灵敏,外观简洁。

- 在选择按键类型时,需要根据具体应用场景和用户需求,综合考虑按键的性能、可靠性、成本等因素。

3. 按键电路设计- 按键电路设计要考虑按键的接入、滤波、去抖动等问题。

接入问题包括按键引脚的连接和布局。

滤波问题可以通过外部电容电路实现,防止因按键抖动引起的干扰。

去抖动问题可以通过软件或硬件的方式解决,确保按键信号的稳定和准确。

4. 按键功能实现- 按键的功能实现可以通过编程来完成。

根据按键的不同组合或按下时间等条件,可以触发不同的功能操作。

- 常见的按键功能包括开关控制、菜单选择、模式切换等。

通过编程,可以灵活地定制按键功能,满足不同应用的需求。

5. 按键模块调试- 按键模块的调试主要包括按键动作测试、按键信号检测和按键功能验证。

通过合理的测试和验证,可以确保按键模块的正常工作。

- 调试可以通过示波器、调试工具等设备来实现。

通过观察按键信号的波形和分析按键功能的实现情况,可以排查和解决可能存在的问题。

总结:本文从按键模块原理介绍、按键类型选择、按键电路设计、按键功能实现和按键模块调试五个大点进行了详细阐述。

通过本文的介绍,读者可以了解到单片机按键模块设计的基本原理和实现方法,从而能够更好地应用于具体的嵌入式系统中。

单片机课设 按键和显示 原理图PCB

单片机课设 按键和显示 原理图PCB

_nop_();
_nop_();
_nop_(); //空操作四个机器周期,给硬件反应时间
图 3.2 AT89C51 单片机最小系统
3.3 1602 模块
液晶显示模块具有体积小、低功耗、显示内容丰富的特点,现在字符型液晶 显示模块已经是单片机应用设计中最常见的信息显示器件了。
经过学习已经掌握了液晶屏的使用手法。这里我们在第一行显示所按下的按键是什么按 键;第二行显示要求对应的显示内容。
4
本次设计将使用 Proteus7.5SP3 版本进行仿真。
1.2 AT89C51 硬件简介
AT89C51 芯片是一种带有 4K 字节闪存的低电压、高性能 CMOS 8 位微 处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除 1000 次。 该 器 件 采 用 ATMEL 高 密 度 非 易 失 存 储 器 制 造 技 术 制 造 , 与 工 业 标 准 的 MCS-51 指令集和输出管脚相兼容。由于将多功能 8 位 CPU 和闪烁存储器 组合在单个芯片中,ATMEL 的 AT89C51 是一种高效微控制器,为很多嵌入 式控制系统提 供 了 一 种 灵 活 性 高 而 且 价 格 低 廉 的 方 案 。
① 独立键盘:按键传送输入信息;由于本次设计有 12 个按键故直接使用 12 个 I/O 口来对应 12 个按键;
② AT89C51:采用软件编程来实现按键信息的提取和转换; ③ 1602 显示屏:用于显示最终被单片机转换过的按键信息。
由以上构思可以设计此按键显示电路。
2.2 总体方案设计
图 2.2 为按键控制显示电路系统的总体原理框图:
case 0X0e:a=9;LCDDIA(a,0x4B);LCDDIA(a,0x0B);break; case 0X0d:a=0;LCDDIA(a,0x4B);LCDDIA(a,0x0B);break;

单片机按键输入课程设计

单片机按键输入课程设计

单片机按键输入课程设计一、课程目标知识目标:1. 让学生掌握单片机按键输入的基本原理,理解按键去抖动和状态检测的方法。

2. 使学生了解单片机中断系统在按键输入中的应用,掌握中断处理程序的编写。

3. 帮助学生理解按键输入在实际项目中的运用,掌握相关程序设计和调试技巧。

技能目标:1. 培养学生独立编写单片机按键输入程序的能力,提高编程实践技能。

2. 培养学生通过查阅资料、动手实践等方式解决实际问题的能力。

3. 提高学生团队协作、沟通表达的能力,学会在项目中与他人合作共同完成任务。

情感态度价值观目标:1. 培养学生对单片机编程的兴趣,激发学生学习热情,增强学习动力。

2. 培养学生严谨、细心的科学态度,养成良好的编程习惯。

3. 增强学生的自信心,使其相信自己具备解决实际问题的能力,培养克服困难的决心。

课程性质:本课程为实践性较强的单片机技术课程,旨在培养学生的编程实践能力和实际应用能力。

学生特点:学生已具备一定的单片机基础知识,具有较强的学习兴趣和动手能力,但编程实践经验不足。

教学要求:结合学生特点,注重理论与实践相结合,强调动手实践,以实际项目为载体,提高学生的编程能力和解决问题的能力。

通过分解课程目标为具体学习成果,便于教学设计和评估。

二、教学内容1. 单片机按键输入原理:介绍按键去抖动方法、按键状态检测原理,使学生理解按键输入的基本过程。

- 教材章节:第二章第三节“按键输入电路及其程序设计”2. 单片机中断系统:讲解中断系统的原理,以按键输入为例,介绍中断处理程序的编写方法。

- 教材章节:第三章第二节“中断系统及其应用”3. 按键输入程序设计:结合实际项目,指导学生编写按键输入程序,包括主程序和中断处理程序。

- 教材章节:第二章第四节“按键输入程序设计实例”4. 按键输入程序调试:介绍程序调试方法,培养学生独立解决问题的能力。

- 教材章节:第四章第三节“程序调试与优化”5. 实践项目:设计一个基于单片机的按键输入控制系统,让学生动手实践,巩固所学知识。

单片机按键模块设计

单片机按键模块设计

单片机按键模块设计单片机按键模块设计在嵌入式系统和自动化控制中,按键模块是一种常见的输入设备,用于接收用户的操作和控制系统的运行。

单片机作为嵌入式系统中的核心组件之一,常常用于实现按键模块的设计。

本文将介绍单片机按键模块的设计思路和实现方法。

一、确定文章类型本文属于技术文档,旨在向读者介绍单片机按键模块的设计过程和方法。

二、明确目标读者本文的目标读者为嵌入式系统开发人员、单片机应用工程师以及相关领域的学者和研究生。

三、确定文章结构1、引言:介绍单片机按键模块的意义和作用。

2、单片机按键模块设计思路:概述按键模块的设计流程和需要注意的问题。

3、硬件设计:详细描述按键模块的硬件设计,包括单片机选型、按键电路设计、输入输出接口等。

4、软件设计:介绍按键模块的软件设计,包括按键的检测、消抖、处理等程序实现方法。

5、实例应用:通过一个实际应用例子,展示单片机按键模块的设计和实现方法。

6、总结:总结单片机按键模块设计的要点和方法,强调其重要性和实用性。

四、详细描述按键模块设计1、引言单片机按键模块是嵌入式系统中常见的输入设备,用于接收用户的操作和控制系统的运行。

在自动化控制、智能家居、机器人等领域,按键模块发挥着不可或缺的作用。

本文将介绍单片机按键模块的设计思路和实现方法。

2、单片机按键模块设计思路单片机按键模块的设计主要包括硬件和软件两部分。

硬件部分包括单片机的选型、按键电路设计、输入输出接口等;软件部分包括按键的检测、消抖、处理等程序实现方法。

在设计过程中,需要考虑按键的机械特性、单片机的处理能力和外部干扰等因素。

3、硬件设计硬件设计是单片机按键模块的基础,主要包括单片机的选型、按键电路设计和输入输出接口等。

在选型时,需要根据实际需求选择具有足够资源和性能的单片机;按键电路设计需要考虑按键的机械特性和电路原理;输入输出接口需要根据实际需求进行选择,如并行或串行接口。

4、软件设计软件设计是单片机按键模块的核心,主要包括按键的检测、消抖、处理等程序实现方法。

利用51单片机,8个按键,8路发光二级管构成一个独立式键盘系统,按下8个按键,点亮对应的灯。

利用51单片机,8个按键,8路发光二级管构成一个独立式键盘系统,按下8个按键,点亮对应的灯。

电子信息工程学院电子设计应用软件训练任务【训练任务】:1、熟练掌握PROTEUS软件的使用;2、按照设计要求绘制电路原理图;3、能够按要求对所设计的电路进行仿真;【基本要求及说明】:1、按照设计要求自行定义电路图纸尺寸;2、设计任务如下:利用51单片机,8个按键,8路发光二级管构成一个独立式键盘系统,按下8个按键,点亮对应的灯。

3、按照设计任务在Proteus 6 Professional中绘制电路原理图;4、根据设计任务的要求编写程序,在Proteus下进行仿真,实现相应功能。

【按照要求撰写总结报告】指导教师年月日负责教师年月日学生签字年月日成绩评定表电子设计应用软件训练总结报告一.任务说明本次任务是利用51单片机、按键以及发光二极管设计一个独立式键盘系统,要求独立简单可控。

首先要明确51单片机的工作原理,在此基础上编写单片机程序,再载入到所连电路原理图中实现按键控制二极管亮灭。

此次任务需要完成电路原理图的绘制、单片机汇编语言的编程。

目的是通过本次设计熟悉Proteus软件的工作环境,掌握基本的操作及流程以及对单片机汇编语言的进一步学习,使之前的学习得到巩固。

二.原理图绘制说明总体而言,一个完善的系统最重要的是稳定,精确,设计简单,修护容易,成本低,体积小。

满足以上条件的系统我们都可以说是完善的系统。

因此,我在设计中选用了一些比较成熟的器件,这些器件都经过时间的考验,能稳定的工作,同时,价格也相对便宜。

下面对原理图中主要的硬件进行简单介绍。

2.1 AT89C51的基本概述AT89C5l单片机,是一种低功耗、高性能的、片内含有4KB Flash ROM的8位CMOS 单片机,工作电压范围为2.7~6V(实际使用+5V供电),8位数据总线。

它有—个可编程的全双工串行通信接口,能同时进行串行发送和接收。

AT89C51具有4K并行可编程的非易失性FLASH程序存储器,可实现对器件串行在系统编程ISP和在应用中编程(IAP)。

单片机按键模块设计

单片机按键模块设计
11
主程序设计:
#include"AT89X51.H"
unsigned char code led_light[]={0XFE,0XFD,0XFB,0XF7,0XEF,0XDF,0XBF,0X7F}; 对应的编码
void main()
{
while(1)
{
if(P2_0==0) //判断key0被按下
//再次判断key1按下
{
while(!P2_1); //等待闭合释放
P1=led_light[1]; //点亮LED1
}
}
……;
}
}
精品课件
//点亮LED
12
Proteus-Keil联合调试仿真
运行
精品课件
13
任务2 键盘中断设计
任务描述:
项目组掌握独立式键盘设计后,现要求用1个按键控制流水灯运行样 式,初始时8个LED按从头到尾方式循环运行,当按下按键,首尾两灯点亮 向中间,到中间后返回首尾的循环运行,再次按下按键又转为从头到尾循 环运行……,即1个按键交替切换流水灯的两种运行样式。
{
if(P2_0==0) //判断key0被按下
{
key_delay();//去抖延时10ms
if(P2_0==0)
//再次判断key0按下
{
while(!P2_0); //等待闭合释放
i=0;
//编码下标i清0
run_flag=~ run_flag; //标志位取反
}
}
if(run_flag==0)
无法运行按键扫描程序而导致按键判断的丢失,如果1s或更长时间走一个
灯,那么丢失按键的现象将更加严重。由此可见普通的程序查询独立式按

单片机应用中的键盘模块设计

单片机应用中的键盘模块设计

!"#$%&’$
:% 9"&2 ./9&$8#,2#;#/.8 $)<<)% .%0 7/.$9&$.8 <#9")02 )* =#,-)./0 &%9#/*.$#,=#, $)0&%> .%0 =#, &0#%9&?
*&$.9&)% ./# &%9/)0($#0 *)/ =&%02 )* 345 6778&$.9&)% @ 6$$)/0&%>8,,9"# 2)*9A./# &<78#<#%9.9&)% &2 >&;#% @ :% 9"# #%0, 2)<# 2=&882 )* =#,-)./0 0#2&>% ./# &%9/)0($#0 @ ()*+,%-# +#, $)0# B&9"#/&%> C$.% +#, &%9#/*.$# 立接口方式可以节省很多 : M N 资 源, 相对于专用芯片式可以 节 省 成 本, 且 更 为 灵 活。 缺 点 就 是 需 要 用 软 件 处 理 消 抖、 重 键等问题。接口 示 意 图 如 图 F 所 示。 矩 阵 式 按 键 接 口 根 据 采用的按键识别方法不同基本有两种 接 法: 线反转法和扫描 法。其 中 扫 描 法 的 列 线 始 终 为 输 入, 行 线 始 终 为 输 出; 线反 转法则需要改变列线和行线的方向。
E
引言 在单片机应用中, 人机交互对话最 通 用 的 方 法 就 是 通 过
键盘进行的。操作 者 通 过 键 盘 向 系 统 发 送 各 种 指 令 或 置 入 必要的数据信息。因此键盘模块设计 的 好 坏, 直接关系到系 统的可靠性和稳 定 性。 目 前 少 见 专 门 针 对 单 片 机 按 键 设 计 的文档资料, 因此本 文 结 合 工 作 实 际, 系统地介绍了单片机 应用中比较有价值的按键设计方法。 F 常用按键接口 常用的按键接口一般分为 “独 立 式 按 键 接 口 设 计” 、 “ 专 用芯片式设计” 和 “矩阵式接口设计” 几 种。 具 体 采 用 哪 种 方 式, 应该根据所设计系统的实际情 况 而 定。 下 面 分 别 介 绍 不 同接口方式的优缺点及适用场合。 F @E 独立式按键接口设计 独立式按键接口设计优点是电路 配 置 灵 活, 软件实现简 单, 但缺点也很明显, 每个按键需要 占 用 一 根 口 线, 若按键数 量 较 多, 资 源 浪 费 将 比 较 严 重, 电 路 结 构 也 变 得 复 杂。 因 此 本方法主要 用 于 按 键 较 少 或 对 操 作 速 度 要 求 较 高 的 场 合。 软件实现时, 可以采用中断方式, 也 可 以 采 用 查 询 方 式, 示意 图如图 E 所示。 F @F 专用芯片式设计 专用键盘处理芯片一般功能比较 完 善, 芯片本身能完成 对按键的编码、 扫描、 消抖和重键等问题 的 处 理, 甚 至 象 IFJK 还集成了显示接口功能。专用键盘 处 理 芯 片 的 优 点 很 明 显, 可靠 性 高, 接 口 简 单, 使 用 方 便, 适 合 处 理 按 键 较 多 的 情 况。 但在很多应用场合, 考虑成本因素, 可能并不是最佳选择。 F @L 矩阵式接口设计 矩阵式按键设计适应于按键数量 较 多, 又不想使用专用 键盘芯片的场合。这种方式的按键 接 口 由 行 线 和 列 线 组 成, 按键位于行、 列的交叉点上。这种方 式 的 优 点 就 是 相 对 于 独 ! 中国电子科技集团公司第 DE 研究所 FGGHHH
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
任务分析:
此任务设计有两个主要功能模块,一是按键的判断,二是LED流水 灯的运行。通过前面单元的学习得知,这两个功能在主程序中无限循环判 断执行,正常人完成一次按键的时间需要20ms,而LED流水灯运行频率 应小于50Hz(即应大于20ms走一个灯,否则运行太快人眼无法识别), 那么如果单片机CPU在执行流水灯显示延时程序期间,正好发生按键, CPU无法运行按键扫描程序而导致按键判断的丢失,如果1s或更长时间走 一个灯,那么丢失按键的现象将更加严重。由此可见普通的程序查询独立 式按键设计方法在此任务设计是无法胜任的。本任务将介绍单片机重要的 内部资源—中断系统,它将有效解决上述问题。
1,中断的概念
【例5-2】电路如5-10示,8个LED流水灯安装在 P1口,按键K0安装在P2.0上,采用独立式按键识 别,实现任务描述中要求的功能。
本单元任务
任务1 独立式键盘设计 任务2 键盘中断设计 任务3 矩阵式键盘设计 任务4 多个外部中断设计
任务1 独立式键盘设计
任务描述:
众多嵌入式单片机系统、嵌入式单片机产品设备中,键盘模块都是 必不可少的,比如手机及各种智能家电等。本任务通过按键控制点亮流水 灯(8个按键分别对应控制8个LED),学习最简单的键盘—独立式按键设 计方法。
P2.0
key0
P2.1
key1
P2.2
key2
P2.3
key3
P2.45
key6
P2.6
key7
P2.7
抖动:当用手按下一个键时,往往出现按键在闭合和断开位置之 间来回跳动多次才能到闭合稳定状态的现象;在 释放一个键时, 也会出现类似的情况,这种情况就是抖动。按下一个键时产生前 沿抖动,释放一个键时产生后沿抖动。抖动的持续时间随键盘簧 片的材料和操作员而异,通常在5~10ms。而5~10ms已经对程序 进行多次循环扫描执行,显而易见,抖动问题不解决,就会引起 对闭合键的多次识别。 。
} if(P2_1==0) //判断key1被按下 {
key_delay();//去抖延时10ms if(P2_1==0) //再次判断key1按下 { while(!P2_1); //等待闭合释放 P1_0=1; //熄灭LED }
}
}
}
开始
P2.0=0?
N
Y
软 件 延 时 10ms
P2.0=0?
键按下
前沿抖动
闭合稳 定
后沿抖动
应用举例:例5-1
#include"AT89X51.H"
void main()
{
while(1)
{ if(P2_0==0) //判断key0被按下 { key_delay();//去抖延时10ms if(P2_0==0) //再次判断key0按下 { while(!P2_0); //等待闭合释放 P1_0=0; //点亮LED }
断key1被按下,则点亮LED1……。
开始
key0按 下 ?
N
key1按 下 ?
N
key2按 下 ?
N
key3按 下 ?
N
key4按 下 ?
N
key5按 下 ?
N
key6按 下 ?
N
key7按 下 ?
N
Y 点 亮 LED0 Y 点 亮 LED1 Y 点 亮 LED2 Y 点 亮 LED3 Y 点 亮 LED4 Y 点 亮 LED5 Y 点 亮 LED6 Y 点 亮 LED7
N
Y
N
闭合释放?
Y
P1.0=0点 亮 LED
P2.1=0?
N
Y
软 件 延 时 10ms
P2.1=0?
N
Y
N
闭合释放?
Y
P1.0=1熄 灭 LED
任务实施
1. Proteus电路设计 2. Keil C51程序设计 3. Proteus-Keil联合调试仿真
硬件电路图
(1)程序流程
由独立式键盘工作原理得知,按键 是否按下是通过读取按键对应的 IO的电平变化而判断的,在程序 设计上,即通过读取按键对应IO 口的电平是否为低(软件去抖)来 决定哪个按键被按下,当判断 key0被按下,则点亮LED0;当判
{
key_delay();//去抖延时10ms
if(P2_0==0)
//再次判断key0按下
{
while(!P2_0); //等待闭合释放
P1=led_light[0]; //点亮LED0
}
} if(P2_1==0)
//判断key1被按下
{
key_delay();//去抖延时10ms
if(P2_1==0)
//再次判断key1按下
{ while(!P2_1); //等待闭合释放 P1=led_light[1]; //点亮LED1
}
}
……;
}
}
//点亮LED
Proteus-Keil联合调试仿真
运行
任务2 键盘中断设计
任务描述:
项目组掌握独立式键盘设计后,现要求用1个按键控制流水灯运行 样式,初始时8个LED按从头到尾方式循环运行,当按下按键,首尾两灯 点亮向中间,到中间后返回首尾的循环运行,再次按下按键又转为从头到 尾循环运行……,即1个按键交替切换流水灯的两种运行样式。
主程序设计:
#include"AT89X51.H"
unsigned char code led_light[]={0XFE,0XFD,0XFB,0XF7,0XEF,0XDF,0XBF,0X7F}; 对应的编码
void main()
{
while(1)
{
if(P2_0==0) //判断key0被按下
任务分析:
键盘实际上是一组开关的集合:当键按下时,两根导线接通;释放 时,两根导线不通。8个按键的键盘电路可考虑在P2口上设计,8个LED电 路仍然安装在单片机P1口。8个按键分别对应控制8个LED,按下按键则点 亮对应的灯。
独立式键盘工作原理及应用
独立式键盘的组成是由若干个按键与单片机的I/O口一一 的对应连接,然后通过读取单片机I/O的电平状态来确认哪 个对应的按键被按下,一般一个独立式按键对应一个功能, 可以通过按键的组合来实现多个功能。
单片机按键模块设计
回顾
1,数码管显示原理? 2,静态数码管工作原理? 3,动态数码管工作原理? 4,AT89C51有几个定时器?各是多少位的?请
简述定时器实现定时原理?
5,8051单片机定时/计数器工作方式有多少种? 6,如何设置8051单片机工作在定时/计数模式下? 7,如何启动定时器工作?
8,请简述DS1302读取时间的编程过程?
相关文档
最新文档