1.8255的I/O控制方式8255中可以使用无条件方式、查询方式和中断方式共3种I/O控制方式。因为传送这些信号的口线分别为PC5和PC1,所以查询就是对输入这些口线的状态进行测试。2.端口选择及读/写控制8255共有4个可寻址端口:A口、B口、C口和控制寄存器,由CS和地址A0、A1的状态组合进行选择,由读/写信号和进行端口操作控制,具体设置见表8-8。......
2023-11-17
在单片机应用系统中为了控制系统的工作状态以及向系统输入数据,应用系统应设有按键或键盘,实现简单的人机会话。键盘是一组按键的集合,键通常是一种常开型按钮开关。平时键的两个触点处于断开状态,按下键时它们才闭合、松开后断开。从键盘的结构来分,键盘可以分为独立式和矩阵式两类,每类按其识别方法又分为编码和未编码键盘两种。键盘上闭合键的识别由专门的硬件译码器实现并产生编号或键值的称为编码键盘,由软件识别的称为未编码键盘。
在由单片机组成的测控系统及智能化仪表中,用得较多的是未编码键盘。本节主要介绍未编码键盘的原理、接口技术和程序设计。通常的按键开关为机械弹性开关,由于机械点的弹性作用,一个按键开关在闭合时并不会马上稳定地闭合,断开时也不会马上断开,因而机械开关在闭合及断开瞬间均伴随有一连串的抖动,如图8-23所示。抖动时间的长短由按键开关的机械特性及按键的人为因素决定,一般为5~20ms。
按键处理不当会引起一次按键被误处理多次。为了确保CPU对键的一次闭合仅作一次处理,则必须消除键的抖动。消除键抖动可用硬件和软件两种方法。消除键抖动,若键数较少通常用硬件的方法,键数较多时用软件的方法。
消除键抖动的硬件方法常用RS触发器、施密特门电路等。消除键抖动的软件方法是当检测出键闭合后执行一个延时程序(产生5~20ms的延时),待前沿抖动消失后再次检测键状态,如果键仍保持闭合状态则可确认有键按下。当检测到按键释放并执行延时程序,待后沿抖动消失后才转入该键的处理程序。
图8-23 电压抖动图
图8-24 独立式未编码键盘图
1.独立式键盘接口及处理程序
独立式键盘是各按键相互独立地接通一条输入数据线,如图8-24所示。这是一种简单的键盘结构,图中的电路为查询方式电路。若有任何一个键按下,则与之相连的输入数据线即被置为低电平,而平时该输入线的状态为高电平。这种键盘结构的优点是电路简单,编程简单明了;缺点是键数较多时,要占用较多的I/O线。图中按键的判别程序如下(这里没有考虑延时去抖的问题):
START:MOV P1,#0FFH ;P1口作为输入时,口锁存器保持高
独立式键盘应 用例程说明
因为以上按键判别程序是采用查询判别键是否按下,各按键会存在优先顺序,优先顺序由程序的查询顺序决定,本例依次为键号0至键号7。
2.行列式键盘原理及键盘扫描流程
为了减少键盘与单片机接口时所占用的I/O口线的数目,通常都将键盘排列成行列矩阵式,如图8-25所示。键盘的行线与列线的交叉处通过一个按键来联通,列线通过电阻接+5V,当键盘上没有键闭合时所有的行线和列线都断开,则列线都呈高电平。若键盘上某一个键闭合,则该键所对应的行线和列线被短路。例如,A交叉点的键被按下闭合时,行线D2和列线D1被短路,此时D1的电平由D2的电位所决定。
图8-25 行列式键盘的结构及键盘扫描示意图(www.chuimin.cn)
如果把列线接到单片机的输入口,行线接到单片机的输出口,则在单片机的控制下,先使行线D0为低电平,其余7根行线都为高电平,读列线的状态,如果D0、D1、D2、D3都为高电平,则D0这一行没有键闭合。如果读出的列线状态不全为高电平,则为低电平的列线和D0行线相交的键处于闭合状态。如果D0这一行上没有键闭合,接着使行线D1为低电平,其余行线为高电平,用同样的方法检查D1这一行上有没有键闭合。依此类推,最后使行线D7为低电平,其余的行线为高电平,检查D7这一行上是否有键闭合。这种逐行逐列地检查键盘状态的过程完成对键盘一次扫描方法又称为逐行扫描法。CPU对键盘扫描可以采取程序控制的随机方式,CPU空闲时扫描键盘;也可以采取定时控制方式,每隔一定时间CPU对键盘扫描一次,CPU可以随时响应键盘的输入请求;还可以采用中断的方式,当键盘上有键闭合时,向CPU请求中断,CPU响应键盘中断,对键盘扫描,以识别哪一个键处于闭合状态,并对键输入信息作出相应处理。CPU对键盘上闭合键的键号确定,可以根据行线和列线的状态计算求得,也可以根据行线和列线的状态查表求得,若以键在键盘中的位置进行编码,从0开始按自然数顺序进行编码,编码以十六进制数表示,则图8-25键盘上各键的键码如表8-5所示。
表8-5 键码表
从行扫描到键码生成的程序流程如图8-26所示。
从行来看,为形成行扫描码设置一个扫描码寄存器。参照图8-26,由于扫描是从最下行开始的,所以扫描码寄存器赋初值FEH。以后其他各行的扫描码可以通过扫描寄存器左移一位来形成。从列来看,为了与扫描过程中读回的列状态进行比较,可预先把各列的状态码写成一个数据表,成为列码表,以便每次扫描都会与列的状态进行比较。为了生成和保存键码,还设置了一个键码寄存器,并赋初值00H。行计数器和列计数器用于控制扫描。
【例8-2】以8255作为8×4键盘的接口,设计一个MCS-51单片机系统矩阵键盘,并编写键盘扫描程序。
【解】以8255的PA口为输出口,接键盘行线。PC口为输入口,以PC3~PC0接键盘的4条列线。设计电路如图8-27所示。采用线选法对8255进行片选,所以8255的端口有多个地址,以其中一组地址进行操作,假如PA口的地址为8000H,PC口的地址为8002H,控制寄存器地址为8003H。
判断有无闭合键的子程序为KS,以供在键盘扫描程序中调用。执行KS子程序的结果是:有闭合键,则(A)≠0;无闭合键,则(A)=0。程序如下:
图8-26 扫描程序流程图
图8-27 以8255为接口的8×4行列式键盘电路呼图
在单片机应用系统中常常是键盘和显示器同时存在,因此,可以把键盘程序和显示程序配合起来使用,即把显示程序作为键盘程序中的一个延时子程序使用。这样既不耽误显示驱动,又可以起到键盘定时扫描的作用。
假定本系统中显示器驱动程序为DIR,执行时间约为6 ms。键盘扫描程序如下,程序中R2为扫描码寄存器,R4为行计数器。键盘扫描程序的运行结果是将闭合键的键码放在累加器A中。键码的计算公式为:键码=列状态码起始值+行号。
有关单片机基础及应用的文章
1.8255的I/O控制方式8255中可以使用无条件方式、查询方式和中断方式共3种I/O控制方式。因为传送这些信号的口线分别为PC5和PC1,所以查询就是对输入这些口线的状态进行测试。2.端口选择及读/写控制8255共有4个可寻址端口:A口、B口、C口和控制寄存器,由CS和地址A0、A1的状态组合进行选择,由读/写信号和进行端口操作控制,具体设置见表8-8。......
2023-11-17
因为DAC0832是电流输出型D/A转换器,为得到电压的转换输出,使用时需在两个电流输出端接运算放大器,RFB即为运算放大器的反馈电阻。DAC0832的内部结构框图如图8-39所示,电阻解码网络包含在图中的8位D/A转换器中。2.DAC0832单缓冲连接方式D/A转换器与单片机的接口是数字量输出接口,与并行I/O输出接口一样,必须通过数据缓冲(锁存)器“挂”到数据总线上。所以D/A转换器接口的重点是缓冲器问题。......
2023-11-17
如果将单片机的一个I/O口连接于K点,通过检测K点电压的高低,就可以确认是否有按键按下,这就是键盘检测的基本原理。基于中断方式工作的独立键盘的电路原理如图6-8所示。矩阵键盘能有效地节省I/O口,简化电路,非常适用于按键数量较多的应用。......
2023-11-17
8051有5个中断源,即两个外部中断、两个定时/计数器中断和一个串行发送/接收中断。1.外部中断外部中断是由连接到单片机外部引脚信号变化而引起的中断,反映外部某一事件的发生。CPU是在每个机器周期的S5P2检测P 3.2和P 3.3上的信号,如果是有效信号则对定时器控制寄存器TCON中的IE0或IE1置1,建立中断请求标志。表6-1中断源的主要内容及说明......
2023-11-17
1.基本组成微型计算机的基本组成如图1-2所示。图1-2微型计算机的组成框图中央处理器CPUCPU是计算机的核心部件,它由运算器和控制器组成,完成计算机的运算和控制功能。电池式NVRAM是由CMOS的SRAM、备用电池和切换电路组成,在电源断开或低于某值时切换电路把备用电池接入,对RAM进行写保护,防止意外数据写入和信息丢失。......
2023-11-17
MCS-51单片机的算术运算类指令包括加、减、乘、除、加1、减1等指令。这类指令有ADD、ADDC、INC、SUBB、DEC、DA、MUL、DIV共8种。表3-3算术运算类指令注:√表示该指令影响某一标志位。运算结果对PSW的影响同上述4条ADD指令。6.十进制调整指令十进制调整指令只有以下1条:该指令用于BCD码加法运算时,对BCD码的加法运算结果自动进行调整,但对BCD码的减法运算不能用此指令来调整。在运算过程中,单片机按二进制规则进行运算。......
2023-11-17
1.生产厂商常见的单片机生产厂商有Intel公司、Motorola公司、Philips公司、Atmel公司、Zilog公司、NEC公司、MicroChip公司、ADI公司、Epson公司、NS公司、AMD公司、WinBond公司、Scenix公司、Toshiba公司、Fujitsu公司、Samsung公司等。2.单片机系列常见的单片机系列有Intel公司的MCS-51、MCS-96/98系列,Motorola公司的68HC05、68HC5X、68HC12、68HC16、683XX系列,Philips公司的80C5X系列,Atmel公司的AT89系列,Zilog公司的Z8、Z86系列,ADI公司的MC-6801系列,MicroChip公司的PIC16CX、PIC16FX、PIC17CX、PIC18CX系列,NEC公司的μPD7800系列,Toshiba公司的MB8900、MB90系列等。......
2023-11-17
在单片机应用系统设计时,应按以下6条原则进行:1)明确设计目标。在整个设计过程中要不断地对照设计目标并满足目标要求。2)自上而下设计。3)软、硬件优化设计。大部分子任务可以以硬件为主实现也可以以软件为主实现,必须进行协调优化设计,从而提高性能质量,降低成本。6)组合及开放式设计。......
2023-11-17
相关推荐