51单片机学习教程第5章 按键
《单片机原理及应用》第5章 P0~P3口应用基础
3、矩阵键盘:
5.4 实验与设计
• 实验1 闸刀型开关输入/8段LED静态显示输出
5.4 实验与设计
• 设计1:LED模拟交通
• 6个灯—南北:黄、红、绿
•
东西:黄、红、绿
• (红、绿是10秒,黄闪烁2秒)
• 2个应急开关:南北绿或东西绿
• 画出硬件设计,编出模拟程序。
实验2 并行接口键盘/LED指示灯输出
同,每个显示缓冲器对应着一位显示器。
(3)查表并操作相应的显示器
• MOV • MOV • MOVC
A,#data DPTR,#DSPTAB A,@A+DPTR
• (4)显示子程序的调用
3、静态显示示例
• 【例5-4】利用51单片机的并行口作为静态显示的控制 口的示例
请修改:
(1)显示“12”; (2)轮流显示“12”、“--”、“AB”; (3)计数器:从00开始,1S加1。
设计1 计时秒表的设计
• (1)两位LED显示 • 可以显示00~99秒; • (2)两个按键 • 分别为启动/停止键、清零键。 • 要求:设计硬件电路,编写出软件程序(延时由软件
形成)。
设计2 模拟交通信号灯控制装置的设计
• (1)6个发光二极管模拟交通灯 • 南北:黄、红、绿 ;东西:黄、红、绿。 • (2)2个应急开关 • 南北绿东西红或东西绿南北红。 • 要求:设计硬件模拟电路,编写软件程序。
• 单片机原理及应用(第4版)
• 姜志海 王蕾 姜沛勋 编著
• 电子工业出版社
第5章 P0~P3口应用基础
• 片内并行I/O口的应用。 • 5.1 P0~P3口概述 • 5.2 输出操作 • 5.3 输入操作 • 5.4 实验与设计
51单片机行列式键盘程序
扫描法:以4*4矩阵按键为例,将全部行线置低电平,然后检测列线的状态。
只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。
若所有列线均为高电平,则键盘中无键按下。
判断闭合键所在的位置:在确认有键按下后,即可进入确定具体闭合键的过程。
其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。
在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。
若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。
#include "reg52.h"#define uchar unsigned char#define uint unsigned intvoid Delay_1ms(uint i);uchar keyScan(void);void Main(void){uchar keyValue;//存放键值,第一行的第一个为1第二行第一个为5,依次排列while(1){P1 = 0xf0;if(P1 != 0xf0)//判断是否有键按下{Delay_1ms(20);//消除键抖动if(P1 != 0xf0)//在此判断是否有键按下{keyValue = keyScan(); //逐行扫描,判断是哪个按键按下}}//此处用于对不同键值做出不同反应}}uchar keyScan(void){uchar temp,i,j,lineSelect[4]={0xef, 0xdf, 0xbf, 0x7f}; //数组用于线选for(j=0;j<4;j++)//循环四次用于四个行线依次拉低{P1=lineSelect[j];//每根行线依次拉低temp=1;for(i=0;i<4;i++)//循环四次用于判断哪列有键按下{if(!(P1&temp))//判断此列是否有键按下return (i+j*4);//返回键值,行*4+列,行和列的交叉处temp<<=1;//将目标移为下一列}}}void Delay_1ms(uint i)//延时函数{uchar x,j;for(j=0;j<i;j++)for(x=0;x<=148;x++);}线翻转法:Step 1:将列线作为输出线,行线作为输入线。
第5章 MCS–51单片机的接口与应用 99页 5.8M
(1) 用键盘连接的I/O线的二进制组合表示键码。例如用4行、
4列线构成的16个键的键盘,可使用一个8位I/O口线的高、低4 位口线的二进制数的组合表示16个键的编码,如图5.4(a)所示。 各键相应的键值为88H、84H、82H、81H、48H、44H、42H、 41H、28H、24H、22H、21H、18H、14H、12H、11H。这种键 值编码软件较为简单直观,但离散性大,不便安排散转程序的 入口地址。
第5章 MCS–51单片机的接口与应用 JNB ACC.2,K2 JNB ACC.3,K3 JNB ACC.4,K4 JNB ACC.5,K5 JNB ACC.6,K6 ;检测2号键是否按下,按下转 ;检测3号键是否按下,按下转 ;检测4号键是否按下,按下转 ;检测5号键是否按下,按下转 ;检测6号键是否按下,按下转
;0号键功能程序
;0号键功能程序执行完返回 ;0号键功能程序
JMP START
……………………… PROM7: ……………………… JMP START …
;1号键功能程序执行完返回
;7号键功能程序 ;7号键功能程序执行完返回
第5章 MCS–51单片机的接口与应用
5.1.4 行列式键盘
行列式键盘又叫矩阵式键盘。用I/O口线组成行、列结构, 按键设置在行列的交点上。例如4×4的行列结构可组成16个键 的键盘。因此,在按键数量较多时,可以节省I/O口线。 1.行列式键盘的接口 行列式键盘的接口方法有许多,例如直接接口于单片机的 I/O口上;利用扩展的并行I/O接口;用串行口扩展并行I/O口接 口;利用一种可编程的键盘、显示接口芯片8279进行接口等。 其中,利用扩展的并行I/O接口方法方便灵活,在单片机应用系
MOVX @DPTR,A
51单片机C教程键盘专题学习笔记(原创)-图文
51单片机C教程键盘专题学习笔记(原创)-图文第五课键盘专题一、键盘分为编码键盘和非编码键盘:键盘上闭合键的识别又专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘。
靠软件编程来识别的键盘称为非编码键盘。
在单片机组成的各种系统中,用的较多的是非编码键盘。
非编码键盘又分为独立键盘和行列式(又称矩阵式)键盘。
二、独立键盘检测1. 弹性小按键(弹性小按键被按下时闭合,松手后自动断开;单片机的外围输入控制用小弹性按键较好)、贴片式小按键、自锁式小按键(自锁式按键按下时闭合且会自动锁住,只有再次按下时才弹起断开。
通常当做开关使用,比如TX-1C实验板上的电源开关)。
2. 单片机检测按键的原理3. 为什么单片机在检测键盘时需要去抖动操作?去抖动操作有哪些方法?通常我们用哪种方法?为什么?4. 编写单片机的键盘检测程序时,一般在检测按下时加入去抖动延时,检测松手时就不用加了(不过有加,会使程序显得更严密!)。
5. TX-1C实验板独立键盘与单片机连接原理图三、矩阵键盘检测1. 典型的“矩阵键盘与单片机”的接法2. TX-1C上的矩阵键盘模块3. 矩阵键盘的工作原理和检测方法四、键盘专题例程1. 在TX - 1C 实验板上,实现一个数码管变化范围为0~9,开始时显示0,当按下S2键一次,数值加1;当加到9时,数值回0重新计。
2. 用数码管的前两位显示一个十进制数,变化范围为00~59,开始时显示00;每按下S2键一次,数值加1;每按下S3键一次,数值减1;每按下S4键一次,数值归00;每按下S5键一次,利用定时器功能使数值开始自动每秒加1,再次按下S5键,数值停止自动加1,保持显示原数。
3. 在TX-1C实验板上实现如下描述:实验板上电时,数码管不显示,顺序按下矩阵键盘后,在数码管上依次显示0~F,6个数码管同时静态显示即可。
4. 按下16个矩阵键盘依次在数码管上显示1-16的平方。
如按下第一个显示1,第二个显示4...5. 数码管前三位显示一个跑表,从000到999之间以1%秒速度运行,当按下第一个独立键盘时跑表停止,松开手后跑表继续运行。
51单片机教材(免费完整版)
单片机教程原作:进墨者目录单片机教程第一课:单片机概述 (2)单片机教程第二课:单片机的内部、外部结构(一) (2)单片机教程第三课:几个基本概念 (5)单片机教程第四课:第一个小程序 (8)单片机教程第五课:延时程序分析 (10)单片机教程第六课:单片机的内外部结构分析(四) (12)单片机教程第七课:单片机内部结构分析(五) (15)单片机教程第八课(寻址方式与指令系统) (19)单片机教程第九课:数据传递指令 (22)单片机教程第十课数据传递类指令指令 (25)单片机教程第十一课:算术运算类指令 (28)单片机教程第十二课:逻辑运算类指令: (32)单片机教程第十三课:逻辑与指令 (34)单片机教程第十四课:条件转移指令 (38)单片机教程第十五课:位及位操作指令 (41)单片机教程第十六课:计数器与定时器 (44)单片机教程第十七课:定时/计数器的方式控制字 (46)单片机教程第十八课:中断系统 (49)单片机教程第十九课:定时、中断练习一 (52)单片机教程第二十课:定时/计数器实验2 (57)单片机教程第二十一课:串行接口 (60)单片机教程第二十二课:串行口应用编程实例 (65)单片机教程第二十三课:LED数码显示器的连接与编程 (68)单片机教程第二十四课:动态扫描显示接口 (72)单片机教程第二十五课:键盘接口与编程 (78)单片机教程第二十六课:矩阵式键盘接口技术及编程 (83)单片机教程第二十七课:初学单片机几个不易掌握的概念 (87)单片机教程第二十八课:单片机音乐程序的设计与实验 (90)单片机教程第一课:单片机概述1、何谓单片机一台能够工作的计算机要有这样几个部份构成:CPU(进行运算、控制)、RAM(数据存储)、ROM(程序存储)、输入/输出设备(例如:串行口、并行输出口等)。
在个人计算机上这些部份被分成若干块芯片,安装一个称之为主板的印刷线路板上。
而在单片机中,这些部份,全部被做到一块集成电路芯片中了,所以就称为单片(单芯片)机,而且有一些单片机中除了上述部份外,还集成了其它部份如A/D,D/A等。
手把手教你学51单片机ppt课件
C/T
定时器或计数器选择位。该位被清零时用作定时器功能(内部系统时钟), 被置1用作计数器功能。
8
TMOD——定时器模式寄存器M1/M0工作模式
M1 M0 工作模式
描述
00
01 10 11
0
兼容8048单片机的13位定时器,THn的8位和TLn的5 位组成一个13位定时器。
1
THn和TLn组成一个16位的定时器。
14
15
2 IT1
1 IE0
0 IT0
7
TMOD—定时器模式寄存器的位分配(地址0x89、不可位寻址)
位
7
6
符号 GATE(T1) C/T(T1)
复位值
0
0
5 M1(T1)
0
4
3
2
M0(T1) GATE(T0) C/T(T0)
0
0
0
1 M1(T0)
0
0 M0(T0)
0
TMOD——定时器模式寄存器的位描述
符号
6
TCON—定时器控制寄存器的位分配(地址0x88、可位寻址)
位
7
6
5
4
3
2
1
0
符号 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
复位 0
0
0
0
0
0
0
0
值
TCON——定时器控制寄存器的位描述
位 符号
描述
7 TF1 定时器1溢出标志。一旦定时器1发生溢出时硬件置1。清零有两种方式:软件清零,或
定时器:打开定时器后,定时器"存储寄存器" 的值经过一个机器周期自动加1,也就是说, 机器周期是定时器的计数周期。
第5章任务T1-5用按键控制LED
2 LOGO
5.1 本章的知识点和技能点
知识点
·单片机I/O口的设置 ·按键扫描与处理 ·复位电路与复位向量 ·汇编语言
技能点
·汇编语言编程能力 ·按键电路设计 ·复位电路设计 ·静态测试
5.2 任务描述
· 单片机上电后,MC9S08AC16通用功能板上 被控制的LED1和LED2都点亮,普通按键5按下后, LED1的状态取反(亮变为灭,灭变为亮),同样 的,普通按键6按下后,LED2的状态取反(亮变为 灭,灭变为亮),按了复位键后,两个LED又变为 全亮。
5.5.2 按键操作的时序图
·单片机中采用的按键一般是由机械触点构成的触点式微动 开关。这种开关具有结构简单,使用可靠的优点,但是它们 具有一个特点,就是当我们按下按键或释放按键时会产生如 上图所示的有抖动的按键脉冲波形,这种抖动对于人来说是 感觉不到的,但对单片机来说,则是完全可以感应到的,因 为计算机处理的时间是在微秒级的,而机械抖动的时间至少 是毫秒级,对计算机而言,这已是一个很“漫长”的过程了。
5.8.6 函数的返回
➢ 子函数在运行过程中,一旦遇到语句RTS时子函 数就结束并返回到调用函数的语句的地方继续执 行下一条语句。
➢ RTS的作用就是取出保存在堆栈中的PC值并把该 值赋给PC,从而使单片机系统程序从子函数中跳 出,并继续执行函数调用语句下面的语句。
5.8.7 函数调用与语句跳转的区别
5.10.3 实验步骤
➢步骤6:把实现按键扫描间隔延时的程序段改造 成子函数。在随书光盘的文件夹“单片机技术初 步实践例子程序\MC9S08AC16通用功能板例子程 序\第5章”的SimpleKey2.mcp有参考程序。 ➢步骤7:把实现按键扫描的程序段和按键处理的 程序段分别改造为按键扫描子函数和按键处理子 函数。 ➢步骤8:附加任务。修改程序,使按键S5按住不 放以后,每隔一段时间LED1灯的状态取反。
51单片机键盘设置
\\\§8.3 键盘接口技术一、键盘输入应解决的问题键盘是一组按键的集合,它是最常用的单片机输入设备.操作人员可以通过键盘输入数据或命令,实现简单的人机通讯。
键是一种常开型按钮开关,平时(常态)键的二个触点处于断开状态,按下键时它们才闭合(短路)。
键盘分编码键盘和非编码键盘。
键盘上闭合键的识别由专用的硬件译码器实现并产生编号或键值的称为编码键盘,如:ASCⅡ码键盘、BCD码键盘等;靠软件识别的称为非编码键盘。
在单片机组成的测控系统及智能化仪器中用得最多的是非编码键盘。
本节着重讨论非编码键盘的原理、接口技术和程序设计。
键盘中每个按键都是—个常开关电路,如图所示。
1.按键的确认:P1.7=1 无按键;P1.7=0 有按键;2.去抖动去抖动的方法:①硬件去抖动采用RS触发器:优点: 速度快,实时,缺点: 增加了硬件成本②软件去抖动采用延时方法延时5—10ms 延时5—10ms P1.7=0 确认P1.7=0 P1.7=1 (去前沿抖动) (去后沿抖动)二、独立式键盘每个I/O口连接一个按,S1 P1.0S2 P1.1……………………….S8 P1.7软件:START:MOV P1,#0FFH ;置P1口为高电平JNB P1.0, RS1 ; S1按下,程序去执行RS1JNB P1.1, RS2 ; S2按下,程序去执行RS2JNB P1.2, RS3 ; S3按下,程序去执行RS3JNB P1.3, RS4 ; S4按下,程序去执行RS4JNB P1.4, RS5 ; S5按下,程序去执行RS5JNB P1.5, RS6 ; S6按下,程序去执行RS6JNB P1.6, RS7 ; S7按下,程序去执行RS7JNB P1.7, RS8 ; S8按下,程序去执行RS8AJMP START ; 继续扫描按键………….RS1: AJMP PK1 ;RS2: AJMP PK2 ;RS3: AJMP PK3 ;RS4: AJMP PK4 ;RS5: AJMP PK5 ;RS6: AJMP PK6 ;RS7: AJMP PK7 ;RS8: AJMP PK8 ;AJMP START ; 无键按下,继续扫描…………………PK1: ……….. ;按键S1功能处理程序AJMP START ;处理S1按键后, 继续扫描PK2: ……….. ;按键S2功能处理程序AJMP START………………….PK8: ………………;按键S8功能处理程序AJMP START ; 处理S8按键后, 继续扫描优点: 连线简单,程序容易.缺点: 太浪费资源适用于按键较少、I/O口空闲的场合。
51单片机-独立按键
查询方式
单片机不断的扫描键盘判断按键是否动作 特点:硬件简单,但需要单片出中断请求,单片机响应中断请求后转按键 识别程序
特点:硬件复杂,需要中断电路,但不占用CPU资源
单片机处理按键的流程
单片机处理按键动作需要以下步骤:
按键识别
单片机在识别按键时,IO口工作在输入状态:
按键弹起,IO口电平5V
Vcc
按键按下,IO口电平0V
单片机读取IO口的状态
即可知按键的状态
单片机
按键抖动
实际的按键在被按下或抬起时,由于机械 触点的弹性作用,在闭合或断开的瞬间均伴随有 一连串的抖动现象。
理想波形
实际波形
按下抖动
稳定闭合
释放抖动
完整的按键过程包括: 1. 释放状态 2. 按下抖动阶段 3. 完全按下状态 4. 释放抖动阶段 5. 释放状态
按键防抖
防抖措施:
硬件防抖
在按键输出端加RS或施密特触发器 去抖效果好、电路复杂、成本高
软件防抖
利用软件进行延时(10ms) 电路简单、成本低、但占用CPU时间
键盘的工作方式
判断按键是否按下 按键按下时的防抖 识别哪个按键按下,判断键值 判断按键是否放开 送出键值,处理按键动作
练习:单片机按键查询操作,8个按键对应8个LED灯, K1对应D1,K2对应D2,K3对应D3,……,查询按键, 按下某一个按键后对应的LED亮起,再按一次关闭。
单片机原理及应用(C51版)第5章MCS-51单片机PPT课件
定时器/计数器T0工作模式2逻辑结构框图
-
16
4. 工作模式3 工作模式3对T0和T1大不相同。若将T0设置为模式3,
TL0和TH0被分成为两个相互独立的8位计数器。
5. 波特率发生器 定时器T0和T1可同时工作在不同的工作方式。在定时器
T0工作在模式3时,尽管TR1和TF1被T0占用,但T1仍可 通过M0M1设置其工作模式为0~2。此时,T1常用作串 口的波定特时率器/发计生数器器T。0工作模式3逻辑结构框图
定时器/计数器1
串行口
-
6
5.1.3 MCS-51中断响应过程
MCS-51系列单片机的中断响应过程可分为中断响应、 中断处理和中断返回三个阶段。
1. 中断响应 CPU响应中断的条件主要有以下几点: (1)有中断源发出中断请求; (2)中断总允许为EA=1,即CPU开中断; (3)请求中断的中断源的中断允许位为1
{
TH0 =0-50000 / 256;
//重新装入初值
TL0 =0-50000 % 256;
while(!TF0) ;
//等待T0溢出
TF0 = 0;
//清除溢出标志位
i ++;
//软件计数加1
if(i == 10)
{
led = ~led;
// P1.0取反输出
i = 0;
//软件计数器清0
}
}
}
(2)TCON寄存器 TCON是定时器/计数器0和1(T0、T1)的控制寄存器, 同时也用来锁存T0、T1的溢出中断请求标志和外部中断请
求标志。
(3)SCON寄存器 SCON为串行口控制寄存器,其中的低两位用作串行口中 断请求标志。
第05章单片机定时计数器习题解答.
第05章 单片机定时计数器 习题解答一、 填空题1.1. MCS-51单片机中有单片机中有 2 2 个 16 16 位的定时器位的定时器//计数器。
器。
2.2. 定时器定时器//计数器T0可以工作于方式可以工作于方式 0、1、2、3 3 。
3.3. 方式0为 13 位定时器位定时器//计数器。
计数器。
4.4. 若系统晶振频率为12MHz ,则T0工作于定时方式1时最多可以定时 65536 65536 µs。
µs。
5.5. 欲对300个外部事件计数,可以选用定时器个外部事件计数,可以选用定时器//计数器T1的模式的模式 0 0 或模或模式 1 。
6.6. TMOD 中的M1M0= 11时,定时器工作于方式时,定时器工作于方式 3 3。
7.7. 若系统晶振频率为6MHz 6MHz,则定时器可以实现的最小定时时间为,则定时器可以实现的最小定时时间为,则定时器可以实现的最小定时时间为 2 2 µs。
8.8. MCS-51单片机工作于定时状态时,计数脉冲来自单片机内部的机器周期 。
9.9. MCS-51单片机工作于计数状态时,计数脉冲来自单片机工作于计数状态时,计数脉冲来自 单片机外部事件单片机外部事件单片机外部事件 。
10.10. 当GATE=0时,时, 则当软件控制位则当软件控制位TR0TR0==1时 启动T0开始工作。
开始工作。
二、 简答题1.1.定时器定时器定时器//计数器T0和T1各有几种工作方式?简述每种工作方式的特点。
如何控制定时器/计数器的工作方式?计数器的工作方式?答:答:T0T0可以工作于方式0,1,2,3;T1可以工作于方式0,1,2方式0:是13位定时位定时//计数器,由TLX 的低5位(位(TLX TLX 的高3位未用)和THX 高8位组成。
成。
方式1:TLX 和THX 组成16位定时位定时//计数器。
计数器。
方式2:方式2为自动重装初值的8位定时位定时//计数器。
晨辉教你轻松学51按键篇
晨辉教你轻松学51--------按键篇对于一个由单片机为核心构成的系统而言。
输入通道是相当重要的。
可以看到几乎每一样基于单片机的产品都有人机交互的部分。
如各种仪器设备上的各种按钮和开关,以及我们手机上的键盘,MP3上的按键等等。
最常见的输入部分,莫非就是按键了。
对于大多数初学者而言,编写一个好的按键程序是一件颇为头疼的事情。
于是乎在网上乱搜一气,程序倒是找到了不少,但是看了半天依然是不明白。
或者在某某论坛上面发帖“跪求XX按键程序,大虾帮忙……”如果你偶然间进了这个论坛,又偶然看到了这个帖子,而且恰好你对按键程序的写法也不是很清楚,那么我希望你能够静静的看完这个帖子。
如果你觉得对你很有帮助,那么我希望你能够在以后的日子中能够坚持到这个论坛来,一起交流学习,分享自己学习过程中的喜悦或者一起探讨棘手的问题,这是我写这个帖子的最大的初衷了。
OK,不能再说了,再说就变成水帖了。
那么我们开始吧。
按键的种类很多。
不过原理基本相似。
下面我们以一种轻触开关为例讲解按键程序的写法。
这种轻触开关大家不陌生吧^_^一般情况下,按键与单片机的连接如下面这幅图所示。
(图中电阻值一般去4.7k~10k之间,对于内部端口有上拉电阻的单片机则可省略此电阻) 单片机对于按键的按下与否则是通过检测相应引脚上的电平来实现的。
对于上图而言,当P17引脚上面的电平为低时,则表示按键已经按下。
反之,则表明按键没有按下。
我们在程序中只要检测到了P17引脚上面的电平为低了,就可以判断按键按下。
呵呵,简单吧。
等会,您先别乐呵,话还没说完呢。
下面我们来看看,当按键按下时,P17引脚上面的波形是怎么变化的。
上图是一个理想波形图,当按键按下时,P17口的电平马上被拉低到0V了。
当然理想的东西都是不现实的。
所以我们还是看看现实的波形图吧。
看出什么区别来了没。
呵呵,只要你不是傻子我相信都能看出其中的区别。
由于按键的机械特性。
当按键闭合时,并不能马上保存良好的接触,而是来回弹跳。
单片机第5章 输入输出接口P0~P3讲解
P2口—1.作为输入/输出口。 2.作为高8位地址总线。
P3口—P3口为双功能 1.作第一功能使用时,其功能为输入/输出口。 2.作第二功能使用时,每一位功能定义如下表
所示:
端口引脚 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7
第二功能 RXD (串行输入线) TXD (串行输出线) INT0(外部中断0输入线) INT1 (外部中断1输入线) T0 (定时器0外部计数脉冲输入) T1 (定时器1外部计数脉冲输入) WR (外部数据存储器写选通信号入)
为了节省口线,可将按键接成矩阵的形式。
例如:8×8的形式接64个按键,行列用两个接口 表示。每个按键都有行值和列值,行值和列值的组合 (称为按键的扫描码)就可以唯一的标识某个按键。 矩阵的行线和列线分别通过两个并口与CPU通信。按键 的状态用开关量“0/1”表示。
键盘处理程序的任务是: 确定有无键按下; 判哪一个键按下, 键的功能是什么; 还要消除按键在闭合或断开时的抖动。
TAB2 : db 78H,79H,38H,38H,3FH ; “HELLO”的字形码
DAY: MOV R6,#20 ; 延时20ms子程序 DL2: MOV R7,#7DH DL1: NOP
NOP DJNZ R7,DL1 DJNZ R6,DL2
RET
END
5.3.2用并行口设计键盘电路
键盘是计算机系统中不可缺少的输入设备,当按 键少时可接成线性键盘(一个按键对应一位,如图5.2 中的按键 ),按键较多时,这样的接法占用口线较多。
a
5
EE DE BE 7E ED DD BD 7D EB DB BB 7B E7 D7 B7 77
开始
51单片机教程:按键输入、矩阵按键(按键巧用)proteus仿真+keil
51单⽚机教程:按键输⼊、矩阵按键(按键巧⽤)proteus仿真+keil⽂章⽬录IO⼝原理(P1⼝最简单,所以这⾥只介绍P1,其他IO⼝原理类似)P1⼝原理可以看到的是P1⼝的⼯作原理⽐较简单,⾸先⽤P1⼝做输⼊输出较为好理解。
1、内部总线:就是内部P1.X位寄存器的值,⽐如说内部总线P1.0上电压为0V,那么对应P1.0=0;内部总线P1.0上电压为5V,那么对应P1.0=1;2、P1.X引脚:对应单⽚机引脚接⼝3、读锁存器:读锁存器为1,允许读锁存器。
为0,不允许读锁存器。
4、读引脚:为0不允许读引脚,为1允许读引脚5、写锁存器:提供⼀个上升沿锁存数据(写数据到单⽚机IO⼝上时⾃动提供⼀个脉冲)⼏个核⼼问题:1、读锁存器与读引脚区别是什么?读锁存器:读锁存器Q的电平读引脚:读P1.X引脚的电平2、读锁存器与读引脚能不能同时读?不能,两个输⼊缓冲器只能同时打开⼀个,所以只能同时读取⼀个电平。
3、什么时候读锁存器,什么时候读引脚?凡属于读-修改-写⽅式的指令,从锁存器读⼊信号,其它指令则从端⼝引脚线上读⼊信号。
也就是说遇到读指令时,相应的输⼊缓冲器才会打开,⼀般是出于关闭状态4、如果P1.0⼝⼀开始置⼀,然后⽤按键拉低,松开按键后P1.0⼝会是低电平吗?不会,锁存器锁1,没有写⼊0之前⼀直输出1,按下按键只不过P1.0引脚变低了,松开后依然是⾼电平(有了以上知识,我们就可以轻松解决很多问题了)按键输⼊按键由于是机械结构,按下的时候难免产⽣抖动,⼀般抖动会在按下的时候与松开的时候产⽣,抖动时间⼤概是10ms⼆、打开proteus仿真,绘制电路功能:利⽤⼀个按键对⼀个发光⼆极管进⾏控制。
这个可以说是最简单的按键输⼊实验了!由于是51单⽚机,内部有上拉电阻,我们就不要浪费材料在按键上接上拉了三、打开keil,编写如下代码sbit key=P1^0;//定义key为P1.0sbit led=P2^0;//定义LED为P2.0void delay10(void)//延时10ms{int n=1000;while(n--);}void main(void){while(1){if(key==0)//读P1.0引脚,如果引脚为低电平,则进⼊if{delay10();//延时10ms消抖if(key==0)//再次判断按键是否按下,防⽌⼲扰,增强稳定{led =!led;//led状态改变while(key==0);//等待按键松开,防⽌往下执⾏}}}}博主有个疑问也很不解,当"key"换成"P2^0"后程序就不能正常运⾏了,知道的⼩伙伴能不能给我解解惑。
单片机原理及接口技术第2版第5章IO口应用显示与开关键盘输入ppt课件
装备一个 铸造车 间,需 要熔炼 设备、 造型及 制芯设 备、砂 处理设 备、铸 件清洗 设备以 及各种 运输机 械,通 风除尘 设备等 。只有 设备配 套,才 能形成 生产能 力。
5.1.1 单片机与发光二极管的连接 单片机通过并行端口P1~P3直接驱动发光二极管,电路如图5-1所示。
P0口与 P1、P2、P3口相比,P0口每位可驱动8个LSTTL输入,而P1~P3口 每一位的驱动能力,只有P0口的一半。当P0口的某位为高电平时,可提供 400µA的拉电流(见图5-1(a));当P0口某位为低电平(0.45V)时,可 提供3.2mA的灌电流(见图5-1(b)),而P1~P3口内部有30kΩ左右的上 拉电阻,如果高电平输出,则从P1、P2和P3口输出的拉电流Id仅为几百µA ,驱动能力较弱,亮度较差,如图5-1(a)所示。
,构成一个简单的检测开关k是否闭合的系统。
图5-3中,开关k的一端接到单片机P3.0引脚上,并通过上拉电阻接到 +5V上,开关的另一端接地,当开关打开时,P3.0引脚为高电平,当开关 闭合时,P3.0引脚为低电平。单片机对开关状态的检测是由程序检测
10
装备一个 铸造车 间,需 要熔炼 设备、 造型及 制芯设 备、砂 处理设 备、铸 件清洗 设备以 及各种 运输机 械,通 风除尘 设备等 。只有 设备配 套,才 能形成 生产能 力。
【例5-1】制作一个单片机控制的流水灯,原理电路见图5-2,8个发光 二极管LED0~LED7经限流电阻分别接至P1口的P1.0~P1.7引脚上,阳 极共同接高电平。编写程序,每次点亮一个发光二极管,控制发光二极管 由上至下的反复循环流水点亮。
说明:本例采用了Proteus环境下的虚拟仿真,7.5版本元件库中没有 AT89S51单片机,采用的是AT89C51来代替AT89S51,以下同。 参考程序如下:
51单片机学习之5独立按键和矩阵键盘
51单片机学习之5独立按键和矩阵键盘51单片机学习之5-独立按键和矩阵键盘第14集键盘的原理键盘分编码键盘(例如电脑键盘)和非编码键盘(自己用程序去识别)。
非编码键盘分:独立式非编码键盘(独立按键)、行列式非编码键盘(4*4阵列键盘)独立键盘的电路图。
因为51单片机的IO口不是双向口而是准双向口,要让IO口具备输入功能,必须将IO口置1,置1之后当按键按下时IO口的电平会被拉低,即被置0。
当检测到IO 口为0时即可判断该按键已经按下。
按键按下时会有一个抖动的过程(弹片会抖动),由于单片机检测IO口速度非常快,超过弹片抖动的频率,所以当单片机检测到IO口为0时需延时一小段时间再检测IO是否为0,如果仍为0就确认该按钮被按下。
因为IO口里面有上拉电阻,所以当松开按钮时,IO口又被拉高。
例程:#include;#defineuintunsignedint#defineucharunsignedcharsbitKey=P3^4;//按键sbitLed=P1^0; //Led灯voiddelay(uintz);/********主函数********/voidmain(){while(1){if(!Key){delay(10);//消抖操作if(!Key)Led=0; //按下时Led亮elseLed=1;}}}voiddelay(uintz){uintx,y;for(x=z;x>;0;x--)for(y=110;y>;0;y--);}第15集4*4矩阵键盘上图中,1个按键占用一个IO口,如果有16个按键就占用了16个IO口。
为了减少IO口的使用,就需要用矩阵的方式连线。
如下图矩阵扫描原理从图可以看出P30、P31、P32、P33为行(低四位),P34、P35、P36、P37为列(高四位)。
假设我们按下的是S6按钮。
第一步,我们先确定列,给P3口赋值0xF0=11110000,那么P37、P36、P35、P34都被置1,P33、P32、P31、P30都被置0,当S6被按下时,由于S6按钮的一边P31为0,所以跟S6另一边相连的P35被拉低,即等于0。
单片机5按键功能的实现
实验5 按键功能的实现一、实验目的1、理解按键电路的作用;2、学习按键功能的编程方法;3、熟悉单片机I/O口连接独立式按键的编程应用方法。
二、实验说明按键在单片机应用系统中实现向单片机输入数据、传送命令等功能,是人工干预单片机工作的主要手段。
如果需要较多数量的按键,可以采用按键矩阵和专门的接口器件扩展按键。
实际的单片机应用系统中,用到的按键数量一般不多,通常采用单片机I/O口和独立式按键即能满足需要。
实验箱核心板上有 4 个按键,其一端全部与地线相连,另一端顺次与P1.4~P1.7 相连。
本实验需要用到核心板上的3 个按键、3 个指示灯和6 个数码管,所用到的实验电路原理如图 3.1.6 所示。
本实验中 3 个按键设计的功能,是一个实用的简单温度控制系统的按键功能,要求通过按键设定一个温度上限值和一个温度下限值。
本实验只涉及按键和显示功能,在今后的实验中,将进一步增加硬件和软件功能,利用单片机实现实际的温度控制系统,使温度维持在上、下限值之间。
①“功能”键:在内存数据区定义一个名称为“KBM”的字节,存放功能编号,共有 3 种功能,分别对应编号为0,1,2。
每按一次“功能”键,“KBM”中的值在这三个数字中循环改变一次。
与三种功能对应,设计三个LED(发光二极管)指示灯,由单片机P3 口控制,当处于某种功能状态时,相应的指示灯亮。
本实验的内容,实际上是后面进一步做温度测量控制系统的一部分。
三种功能的含义如下:功能号0:显示测量的温度值;功能号1:对温度上限值进行修改;功能号2:对温度下限值进行修改。
②“↑”键:每按一次“↑”键,内存数据区中指定变量单元的值增1,持续按住则连续增1。
③“↓”键:与“↑”键对应,每按一次“↓”,内存数据区中指定变量单元的值减1,持续按住则连续减1。
功能号为0 时,数码管显示被测温度值,此时按另外两个按键不起作用。
功能号为 1 时,数码管显示设定温度的上限值,按另外两个按键可以修改温度上限值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6
单片机与键盘的连接 键盘与单片机连接方式有: 键盘与单片机连接方式有:
1. 独立式键盘
单个按键直接与单个IO引脚相连 单个按键直接与单个 引脚相连 优点:简单、 优点:简单、易用 缺点:接入按键少, 口占用较多 缺点:接入按键少,IO口占用较多
2. 行列式键盘
多个按键组成矩阵形式与IO口相连 多个按键组成矩阵形式与 口相连 优点: 优点:接入按键多 缺点:复杂、 缺点:复杂、不易使用
5
键盘的分类 单片机系统使用的键盘分为两类: 单片机系统使用的键盘分为两类:
1. 全编码键盘
配有专用硬件电路识别按键编码 程序简单、硬件复杂、 程序简单、硬件复杂、价格较贵
2. 非编码键盘
靠单片机软件识别按键编码 硬件简单、程序复杂、 硬件简单、程序复杂、价格便宜
2012年4月17日 年 月 日
单片机C语言程序设计 单片机 语言程序设计
按 键 Key
2012年4月17日 年 月 日 单片机C语言程序设计 单片机 语言程序设计 1
单片机与按键
5.1 5.2 5.3 5.4 5.5
计算机系统的输入设备 计算机系统的输入设备 按键开关的分类 按键开关的分类 按键识别的方法 按键识别的方法 单片机与按键的连接 单片机与按键的连接 按键的处理方法 按键的处理方法
2012年4月17日 年 月 日
单片机C语言程序设计 单片机 语言程序设计
14
独立式按键的处理 每个独立按键单独占有一根单片机 IO口线,各按键之间相互独立。 口线, 口线 各按键之间相互独立。
1. 少量按键定义位变量处理 2. 成列按键使用并行IO口处理 成列按键使用并行 口处理
2012年4月17日 年 月 日
按键识别 单片机在识别按键时, 口工作在 单片机在识别按键时,IO口工作在 输入状态: 输入状态:
1. 按键弹起,IO口电平 按键弹起, 口电平 口电平5V 2. 按键按下,IO口电平 按键按下, 口电平0V 口电平 3. 单片机读取 口的状态 单片机读取IO口的状态 即可知按键的状态
2012年4月17日 年 月 日
2012年4月17日 年 月 日
单片机C语言程序设计 单片机 语言程序设计
8
按键识别 单片机识别按键状态的原理: 单片机识别按键状态的原理:
1. 对单个或成组按键,需要通过接口电路 对单个或成组按键, 与单片机IO口相连接 与单片机 口相连接 2. 单片机通过一定的方式 查询或中断 检 单片机通过一定的方式(查询或中断 查询或中断)检 查各个IO口的状态 口的状态, 查各个 口的状态,从而得知按键的状 态 3. 如有按键按下,将按下的按键键号送入 如有按键按下, 单片机进行处理
2012年4月17日 年 月 日
单片机C语言程序设计 单片机 语言程序设计
18
软件设计 软件流程图
Y
Y N N
Y
2012年4月17日 年 月 日
单片机C语言程序设计 单片机 语言程序设计
19
程序预处理 编译系统对程序中特殊命令进行预 处理,预处理结果和源程序进行编译。 处理,预处理结果和源程序进行编译。
单片机C语言程序设计 单片机 语言程序设计
10
按键抖动 实际的按键在被按下或抬起时, 实际的按键在被按下或抬起时,由 于机械触点的弹性作用, 于机械触点的弹性作用,在闭合或断开 的瞬间均伴随有一连串的抖动现象。 的瞬间均伴随有一连串的抖动现象。
完整的按键过程包括: 完整的按键过程包括: 1. 释放状态 2. 按下抖动阶段 3. 完全按下状态 4. 释放抖动阶段 5. 释放状态
2012年4月17日 年 月 日
单片机C语言程序设计 单片机 语言程序设计
2
计算机系统的输入设备 计算机系统的输入设备指向计算机 输入信息的设备, 输入信息的设备,是计算机与用户或其 他设备交换信息的桥梁。 他设备交换信息的桥梁。 常用的输入设备有:键盘、鼠标、 常用的输入设备有:键盘、鼠标、 摄像头、扫描仪、光笔、手写输入板、 摄像头、扫描仪、光笔、手写输入板、 游戏杆和语音输入装置等 游戏杆和语音输入装置等。
2. 口线反转法
单片机按行和按列扫描一次
2012年4月17日 年 月 日
单片机C语言程序设计 单片机 语言程序设计
16
按键处理中的特殊要求 单片机在处理按键的过程中, 单片机在处理按键的过程中,根据 实际的需求, 实际的需求,还可能遇到以下一些比较 复杂的问题: 复杂的问题:
1. 短按、长按按键 短按、
1. 宏定义 用标识符表示字符串) 宏定义(用标识符表示字符串 用标识符表示字符串
#define 宏名 字符串
2. 文件包含 多个源文件连接编译) 文件包含(多个源文件连接编译 多个源文件连接编译
#include <文件名 或 #include “文件名 文件名> 文件名” 文件名 文件名
3. 条件编译 编译需要的程序段) 条件编译(编译需要的程序段 编译需要的程序段
2012年4月17日 年 月 日
单片机C语言程序设计 单片机 语言程序设计
4
按键开关类型 单片机系统使用的按键开关种类繁多: 单片机系统使用的按键开关种类繁多:
1. 2. 3. 4. 5. 单个按键 自锁按键 钮子开关 编码开关 轻触按键
2012年4月17日 年 月 日
单片机C语言程序设计 单片机 语言程序设计
#ifdef #else #endif、#ifndef #else 、 #endif、 # if #else #endif 、
2012年4月17日 年 月 日 单片机C语言程序设计 单片机 语言程序设计 20
按键按下时计时
2. 单击、双击按键 单击、
记录每次和上一次按键的键值
3. 组合键
增加按键键码
2012年4月17日 年 月 日 单片机C语言程序设计 单片机 语言程序设计 17
实例 设计一个单片机按键系统, 设计一个单片机按键系统,单片机 能识别到8个按键的变化 个按键的变化。 能识别到 个按键的变化。
单片机C语言程序设计 单片机 语言程序设计
15
矩阵式键盘的处理 矩阵式键盘的按键排列成矩阵的形 在单根IO口线上连接了多个按键 口线上连接了多个按键, 式,在单根 口线上连接了多个按键, 因此需要特殊的处理方法: 因此需要特殊的处理方法:
1. 逐行(列)扫描法 逐行 列 扫描法
单片机一行行(列列 循环对键盘进行扫描 单片机一行行 列列)循环对键盘进行扫描 列列
2. 软件防抖
利用软件进行延时(10ms) 利用软件进行延时 电路简单、成本低、但占用CPU时间 电路简单、成本低、但占用 时间
2012年4月17日 年 月 日 单片机C语言程序设计 单片机 语言程序设计 12
键盘的工作方式
单片机对按键动作的识别有两种方式: 单片机对按键动作的识别有两种方式: 1. 查询方式
2012年4月17日 年 月 日 单片机C语言程序设计 单片机 语言程序设计 11
按键防抖
由于按键在闭合或断开的瞬间伴随着机 械抖动,造成输入电平的变化, 械抖动,造成输入电平的变化,因此在单片 机识别按键的过程中应采取防抖措施: 机识别按键的过程中应采取防抖措施: 1. 硬件防抖
在按键输出端加RS或施密特触发器 在按键输出端加 或施密特触发器 去抖效果好、电路复杂、 去抖效果好、电路复杂、成本高
2012年4月17日 年 月 日 单片机C语言程序设计 单片机 语言程序设计 7
单片机与键盘的连接 键盘与单片机连接方式有: 键盘与单片机连接方式有:
3. 通过键盘控制芯片相连
矩阵键盘与扩展芯片相连(HD7279、8279) 、 矩阵键盘与扩展芯片相连 优点:占用IO口少 口少, 优点:占用 口少,软件控制容易 缺点: 缺点:价格较高
2012年4月17日 年 月 日
单片机C语言程序设计 单片机 语言程序设计
3
嵌入式系统的输入设备 嵌入式系统因性能体积等限制, 嵌入式系统因性能体积等限制,主 等作为输入s 要使用 、 、 等作为输入 设备。 设备。 输入设备在嵌入式系统中主要作用: 输入设备在嵌入式系统中主要作用:
1. 数据输入 2. 流程控制
单片机不断的扫描键盘判断按键是否动作 特点:硬件简单, 特点:硬件简单,但需要单片机不停地扫 描键盘,占用CPU资源 描键盘,占用 资源
2. 中断方式
键盘动作时发出中断请求, 键盘动作时发出中断请求,单片机响应中 断请求后转按键识别程序 特点:硬件复杂,需要中断电路, 特点:硬件复杂,需要中断电路,但不占 用CPU资源 资源
2012年4月17日 年 月 日 单片机C语言程序设计 单片机 语言程序设计 13
单片机处理按键的流程 单片机处理按键动作需要以下步骤: 单片机处理按键动作需要以下步骤:
1. 2. 3. 4. 5. 判断按键是否按下 按键按下时的防抖 识别哪个按键按下, 识别哪个按键按下,判断键值 判断按键是否放开 送出键值, 送出键值,处理按键动作