版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
5.5键盘接口
键盘在单片机应用系统中是一个很关键的部件,它能实现向计算机输入数据、传送命令等功能,是单片机系统中最常用的人机联系的一种输入设备。键盘按其结构形式可分为编码式键盘和非编码式键盘。(1)编码式键盘除了按键之外,还包括了产生键码的硬件电路、去抖电路和多键保护电路。每按下一个键,能自动产生这个键的键码,与此同时,产生一个脉冲信号,通知CPU接收。这种键盘使用方便,接口程序简单,但是需要较多的硬件电路,价格较贵,一般的单片机应用系统较少采用。(2)非编码式键盘主要是由软件产生被按键的编码。它结构简单、价格便宜,但使用起来不如编码式键盘简单,键盘管理程序的编制也比较复杂。
单片机系统中普遍采用非编码式键盘。这类键盘应主要解决一下几个问题:a、键的识别b、如何消除键的抖动c、键的保护一、按键开关去抖动问题
通常,按键所用开关为机械弹性开关,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定的接通,在断开时也不会一下子断开。因而在闭和及断开的瞬间均伴随有一连串的抖动,抖动时间的长短由按键的机械特性决定,一般为5-10ms,抖动现象会引起CPU对一次键操作进行多次处理,从而可能产生错误。⑴硬件去抖动消除抖动不良后果的方法:其中RC滤波电路去抖动电路简单实用,效果较好。⑵软件去抖动检测到按键按下后,执行延时10ms子程序后再确认该键是否确实按下,消除抖动影响。有键按下吗?延时10MS有键按下?NNY判断键值软件延时去抖动的方法Y二、按键连接方式1、独立式按键
独立式按键就是各按键相互独立,每个按键各接一根输入线,一根输入线上的按键工作状态不会影响其他输入线上的工作状态,因此,通过检测输入线的电平状态可以很容易判断哪个按键被按下了。特点:
①各按键相互独立,电路配置灵活;
②按键数量较多时,I/O端线耗费较多。
③软件结构简单。
适用于按键数量较少的场合。
试编制按键扫描子程序。KEYA:ORLP1,#00000111B;置P1.0~P1.2为输入态
MOVA,P1;读键值,键闭合相应位为0CPLA;取反,键闭合相应位为1ANLA,#00000111B;屏蔽高5位,保留有键值信息的低3位
JZGRET;全0,无键闭合,返回
LCALLDY10ms;非全0,有键闭合,延时10ms,软件去抖动
MOVA,P1
;重读键值,键闭合相应位为0
CPLA
;取反,键闭合相应位为1
ANLA,#00000111B;屏蔽高5位,保留有键值信息的低3位
JZGRET
;全0,无键闭合,返回;非全0,确认有键闭合
JBAcc.0,KA0;转0#键功能程序
JBAcc.1,KA1;转1#键功能程序
JBAcc.2,KA2;转2#键功能程序
GRET:RETKA0:LCALLWORK0;执行0#键功能子程序
RETKA1:LCALLWORK1;执行1#键功能子程序
RETKA2:LCALLWORK2;执行2#键功能子程序
RET2、行列式键盘
行列式键盘又叫矩阵式键盘。用I/O口线组成行、列结构,按键设置在行列的交点上,按键按下时,行线与列线发生短路。矩阵式键盘的特点:使用m+n个引线就可以组成m*n个键特点:①占用I/O端线较少;
②实现复杂。
适用于按键较多的场合。4×4的行列结构可组成16个键的键盘。因此,在按键数量较多时,可以节省I/O口线。(1)行扫描法
(2)行反转法矩阵键盘中键的识别行扫描法的原理①先使第0行接低电平,其余行为高电平,然后看第0行是否有键闭合(通过检查列线电位实现)。若有某一按键按下,则相应的列被拉到低电平,通过查询哪条列线变为低电平,来识别第几列上有键按下。如果某列线变为低电平,则表示第0行和此列相交的位置上有按键按下。②此后,再将第1行接地,然后检测列线是否有变为低电位的线。如此往下一行一行地扫描,直到最后一行。在实际的行扫描中,一般先快速检测键盘中是否有某个按键被按下,然后再进行逐行扫描,判定具体按下了哪一个键。为此,可以先使所有各行同时输出为低电平,再检查是否有列线为低电平。这时如果某一列线上有低电平出现,则说明必有键按下,但不能确定按下的按键所在行、列的位置,于是再用扫描法来确定闭合按键的具体位置。5.6MCS-51串行通信接口5.61串行口及其通信方式
5.62IBM-PC系列机与单片机的通信技术5.6.1串行口及其通信方式
5.6.1.1串行通信基础知识
一、异步通讯方式以字符为传送单位用起始位和停止位标识每个字符的开始和结束字符间隔不固定,只需字符传送时同步。
1.异步通讯常用格式:一个字符帧D0D1D2D3D4D5D6D7停止位起始位二、同步通讯以一串字符为一个传送单位,字符间不加标识位,在一串字符开始用同步字符标识,硬件要求高,通讯双方须严格同步。2.异步通讯双方的两项约定(1)字符格式规定(一帧):数据位,校验位,起始位和停止位。(2)波特率(位/秒)对传送速率的规定例:要求每秒传送120个字符,每帧为10位。解:B=120?0=1200波特每位0.83ms
数据位传输率=120?=960位/秒三串行接口功能1.发送器:并串数据格式转换,添加标识位和校验位,一帧发送结束,设置结束标志,申请中断。2.接收器:串并数据格式转换,检查错误,去掉标识位,保存有效数据,设置接收结束标志,申请中断。3.控制器:接收编程命令和控制参数,设置工作方式:同步/
异步、字符格式、波特率、校验方式、数据位与同步时钟比例等。四串行数据传送方向单工通讯:数据单向传送。半双工通讯:数据可分时双向传送。全双工通讯:可同时进行发送和接收。发送器接收器发送器接收器5.6.1.2
串行口控制寄存器
一、1个全双工串行接口,可同时进行发送和接收。串行接口输入/输出引脚:TXD(P3.1)、RXD(P3.0)
数据格式(P.237图):按不同方式,一帧位数8/10/11
发送/接收时,数据皆低位在前。一帧字符发送/接收结束,置位标志位(TI/RI)并申请SIO中断。中断控制:中断允许位ES
中断入口:0023HD0D1D2D3D4D5D6D7停止位起始位D0D1D2D3D4D5D6D7D0D1D2D3D4D5D6D8停止位起始位D7二、串行接口控制1.数据缓冲器SBUF发送SBUF和接收SBUF共用一个地址99H。 (1)发送SBUF存放待发送的8位数据,写入SBUF将同时启动发送。 发送指令: MOV SBUF,A(2)接收SBUF存放已接收成功的8位数据,供CPU读取。读取串行口接收数据指令:MOVA,SBUF2.串行口控制/状态寄存器SCON(98H)SM0,SM1:选择串行口4种工作方式。SM2:多机控制位,用于多机通讯。REN:允许接收控制位,REN=1,允许接收;REN=0,禁止接收。TB8:发送的第9位数据位,可用作校验位和地址/数据标识位RB8:接收的第9位数据位或停止位TI:发送中断标志,发送一帧结束,TI=1,必须软件清零RI:接收中断标志,接收一帧结束,RI=1,必须软件清零3.节电控制寄存器PCONSMOD(PCON.7):波特率加倍控制位。SMOD=1,波特率加倍,SMOD=0,则不加倍。
SM0,SM1选择四种工作方式。一、方式0:同步移位寄存器方式。用于扩展并行I/O接口。1.一帧8位,无起始位和停止位。2.RXD:数据输入/输出端。
TXD:同步脉冲输出端,每个脉冲对应一个数据位。3.波特率B=fosc/12
如:fosc=12MHz, B=1MHz,每位数据占1s。5.6.1.3
串行接口的工作方式4.发送过程:写入SBUF,启动发送,一帧发送结束,TI=1。
接收过程:REN=1且RI=0,启动接收,一帧接收完毕,RI=1。
发送时序写入SBUFRXD输出TXDTID0D1D2D3D4D5D6D7写REN=1RI=0RXD输入RI接收时序(a)(b)数据从RXD(P3.0)引脚串行输出,低位在先,高位在后;TXD(P3.1)引脚输出移位脉冲,其频率为foc/12;发送完毕后,中断标志位TI为1。如要发送数据,如下所示:
MOVSCON,#00H;串行口方式0MOVSBUF,A;将数据送出
JNBTI,$;等待数据发送完毕5.移位寄存器方式举例二、方式1
8位数据异步通讯方式。1.一帧10位:8位数据位,1个起始位(0),1个停止位(1)。2.RXD:接收数据端。TXD:发送数据端。3.波特率:用T1作为波特率发生器,B=(2SMOD/32)×T1溢出率。4.发送:写入SBUF,同时启动发送,一帧发送结束,TI=1。
接收:REN=1,允许接收。接收完一帧,若RI=0且停止位为1(或SM2=0),将接收数据装入SBUF,停止位装入RB8,并使RI=1;否则丢弃接收数据,不置位RI。当REN=1,CPU开始采样RXD引脚负跳变信号,若出现负跳变,才进入数据接收状态,先检测起始位,若第一位为0,继续接收其余位;否则,停止接收,重新采样负跳变。数据采样速率为波特率16倍频,在数据位中间,用第7、8、9个脉冲采样3次数据位,并3中取2保留采样值。写入SBUF采样(a)发送时序图TXD数据输出TID0D1D2D3D4D5D6D7停止位起始位RXD输入数据(b)接收时序图D0D1D2D3D4D5D6D7停止位起始位RI检测负跳变9位数据异步通讯方式。1.一帧为11位:9位数据位,1个起始位(0),1个停止位(1)。第9位数据位在TB8/RB8中,常用作校验位和多机通讯标识位。2.RXD:接收数据端,TXD:发送数据端。3.波特率:方式2:B=(2SMOD/64)×fosc。
方式3:B=(2SMOD/32)×T1溢出率。三、方式2和方式34.发送:先装入TB8,写入SBUF并启动发送,发送结束,
TI=1。接收:REN=1,允许接收。接收完一帧,若RI=0且第9位为1(或SM2=0),将接收数据装入接收SBUF,第9
位装入RB8,使RI=1;否则丢弃接收数据,不置位
RI。发送时序写入SBUFTXD输出TIRXD输入接收时序RID0D1D2D3D4D5D6TB8停止位起始位D7D0D1D2D3D4D5D6RB8停止位起始位D7检测负跳变5.6.1.4、计算波特率方式0为固定波特率:B=fosc/12 方式2可选两种波特率:B=(2SMOD/64)×fosc 方式1、3为可变波特率,用T1作波特率发生器。
B=(2SMOD/32)×T1溢出率T1为方式2的时间常数:X=28-t/T
溢出时间:t=(28-X)T=(28-X)×12/foscT1溢出率=1/t=fosc/[12×(2n-X)]
波特率B=(2SMOD/32)×fosc/[12×(28-X)]
串行口方式1、3,根据波特率选择T1工作方式,计算时间常数。T1选方式2:TH1=X=28-fosc/12×2SMOD/(32×B)T1选方式1用于低波特率,需考虑T1重装时间常数时间。5.6.1.5
串行口的应用串行口初始化编程格式:
SIO:MOVSCON,#控制状态字;写方式字且TI=RI=0 (MOVPCON,#80H) ;波特率加倍
(MOVTMOD,#20H) ;T1作波特率发生器
(MOVTH1,#X);选定波特率
(MOVTL1,#X) (SETBTR1) (SETBEA) ;开串行口中断
(SETBES)一、串行口初始化二、发送程序1.查询方式:TRAM: MOV A,@R0 ;取数据
MOV SBUF,A ;发送一个字符WAIT: JBC TI,NEXT ;等待发送结束
SJMP WAITNEXT: INC R0 ;准备下一次发送
SJMP TRAM2.中断方式:
ORG 0023H ;串行口中断入口
AJMPSINTMAIN: … ;初始化编程TRAM: MOV A,@R0 ;取数据
MOV SBUF,A ;发送第一个字符
H: SJMP H ;其它工作
SINT: CLRTI ;中断服务程序
INC R0 MOV A,@R0 ;取数据
MOV SBUF,A ;发送下一个字符
RETI三、接收程序REN=1、RI=0等待接收,当RI=1,从SBUF读取数据。1.查询方式:
WAIT: JBC RI,NEXT ;查询等待
SJMP WAITNEXT: MOV A,SBUF ;读取接收数据
MOV @R0,A ;保存数据
INC R0 ;准备下一次接收
SJMP WAIT四、串行口方式0
用于扩展单片机的并行I/O接口。串行口实现:并行→串行的数据转换74LS165/74LS164实现:串行→并行的数据转换。D0D1D2D3D4D5D6D7
数据输入
RXD9TXD移位脉冲
274LS165
8051
654314131211
D7D6D5D4D3D2D1D0
数据输入
RXD12TXD移位脉冲
74LS164
88051345610111213
五、异步通讯程序举例
1.发送程序:将片内RAM50H起始单元的16个数由串
行口发送。要求发送波特率为系统时钟
的32分频,并进行奇偶校验。MAINT:MOV SCON,#80H;串行口初始化
MOV PCON,#80H;波特率
SETB EA SETB ES ;开串行口中断
MOV R0,#50H ;设数据指针
MOV R7,#10H ;数据长度LOOP: MOV A,@R0 ;取一个字符
MOV C,P ;加奇偶校验
MOV TB8,C MOV SBUF,A ;启动一次发送HERE: SJMP HERE ;CPU执行其它任务
ORG 0023H ;串行口中断入口 AJMP TRANI
TRANI: PUSH A ;保护现场
PUSH PSW CLR TI ;清发送结束标志
DJNZ R7,NEXT ;是否发送完?
CLR ES ;发送完,关闭串行口中断 SJMP TEND NEXT: INC R0 ;未发送完,修改指针
MOV A,@R0 ;取下一个字符
MOV C,P ;加奇偶校验
MOV TB8,C MOV SBUF,A ;发送一个字符
POP PSW ;恢复现场
POP A TEND: RETI ;中断返回2.接收程序:串行输入16个字符,存入片内RAM的50H起
始单元,串行口波特率为2400(设晶振为11.0592MHz)。RECS: MOV SCON,#50H;串行口方式1允许接收 MOV TMOD,#20H;T1方式2定时 MOV TL1,#0F4H ;写入T1时间常数 MOV TH1,#0F4H SETBTR1 ;启动T1 MOV R0,#50H ;设数据指针 MOV R7,#10H ;接收数据长度 WAIT: JBC RI,NEXT ;等待串行口接收 SJMPWAIT NEXT: MOV A,SBUF ;读取接收字符 MOV @R0,A ;保存一个字符 INC R0 ;修改指针
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 奶粉培训课件
- 《心理健康教育公开》课件
- 2021年全国统一高考化学试卷(全国乙卷)
- 教师劳务合同5篇
- 复习巩固07 力学实验(解析版)-2025版高三物理寒假精-品讲义
- 2021年中医妇科学习题集答案
- 2021年中医儿科题
- 《汶川大地震纪念》课件
- 线上教学规范指引培训模板
- 二项式定理的应用-课件
- DB63T 2376-2024 餐饮单位有害生物防治技术指南
- 中考语文名著《西游记》专项复习:《三调芭蕉扇》
- 2025新年春节专用对联蛇年春联带横批
- 【MOOC】融合新闻:通往未来新闻之路-暨南大学 中国大学慕课MOOC答案
- 2025年中联重科公司发展战略和经营计划
- 2024年世界职业院校技能大赛中职组“工程测量组”赛项考试题库(含答案)
- 静脉治疗小组管理
- 服装厂班组长培训
- 浙江省杭州二中2025届物理高三第一学期期末联考试题含解析
- 带货主播年终总结汇报
- 《激光原理及应用》全套课件
评论
0/150
提交评论