键码(如ASCⅡ码)送往CPU。这种键盘易于使用,但硬件比较复杂,对于主机任务繁重之情况,采用8279可编程键盘/显示器接口芯片构成编码式键盘系统是很实用的方案。
非编码键盘:非编码键盘只简单的提供按键开关的行列矩阵,有关键的识别,键码的输入与确定,以及去抖动等功能场由软件完成。故硬件较为简单,但占用CPU较多时间。有:独立式键盘和行列式键盘。 R9(2)10k10k10k10k 图3-16 4*4键盘
键盘系统设计分析: 本次设计采用非编码键盘。 (1)独立式键盘接口设计
独立式键盘就是各按键相互独立,每个按键各接一根输入线,通过检测输入线的电平状态可以很容易判断哪个按键被按下了。
优点:电路配置灵活,软件结构简单。
缺点:每个按键需占用一根输入口线,在按键数量较多时,I/O口浪费大,电路结构显得复杂。
因此,此键盘是用于按键较少或操作速度较高的场合。
也可以用扩展I/O口作为独立式键盘接口电路,可采用8255扩展I/O口,或用三态缓冲器扩展。这两种接线方式,都是把按键当作外部RAM某一工作单元的位来对待,通过读片外RAM 的方法,识别按键的工作状态。
23
独立式键盘电路,各按键开关均采用了上拉电阻,是为了保证在按键断开时,各I/O有确定的高电平。如输入口线内部已有上拉电阻,则外电路的上拉电阻可省去。
(2)行列式键盘接口设计
行列式键盘适用于按键数量较多的场合,由行线和列线组成,按键设置在行列的交叉点上。节省I/O口。
行列式键盘行线通过上拉电阻接到+5V上。无按键,行线处于高电平状态,有键按下,行线电平状态将由与此行线相连的列线电平决定。列线电平为低,则行线电平为低;列线电平为高,则行线电平为高。
在单片机应用系统中,为简化硬件线路,缩小整个系统的规模,总希望设置最少的按键,获得最多的控制功能。
行列式键盘与独立式按键键盘相比,硬件电路大大节省。可通过软件的方法让一键具有多功能。方法:选择一个RAM工作单元,对某一个按键进行按键计数,根据不同计数值,转到子程序。这种计数多功能键最好与显示器结合用,以便知道当前计数值,同时配合一个启动键。多功能键的利用,应具体情况具体分析。要求速度的场合最好做一键一功能。如果系统功能很多,一键一功能不现实,可采取一键多功能。
复合键是使用软件实现一键多功能的另一个途径。所谓复合键,就是两个或两个以上的键的联合,当这些键同时按下时,才能执行相应的功能程序。实际情况做不到“同时按下”,他们的时间差别可以长到50ms,解决策略是:定义一个或两个引导键,这些引导键按下时没什么意义,执行空操作。引导键的例子:微机键盘上的CTRL、SHIFT、ALT。缺点:一是操作变得复杂,二是操作时间变长。
基于各自的优缺点,本次设计采用行列式键盘。 1键盘程序的功能:
(1)监测有无键按下;键的闭合与否,反映在电压上就是呈现出高电平或低电平,通过电平的高低状态的检测,便可确认按键按下与否。
(2)去除键的机械抖动。键盘按键所用开关为机械弹性开关,利用了机械触点的合、断作用。由于机械触点的的弹性作用,一个按键开关在闭合和断开的瞬间
24
均有一连串的抖动。抖动时间的长短由按键的机械特性决定,一般为5~10ms,这是一个很重要的参数。抖动过程引起电平信号的波动,有可能令CPU误解为多次按键操作,从而引起误处理。为了确保CPU对一次按键动作只确认一次按键,必须消除抖动的影响。通常采用软件延时的方法:在第一次检测到有键按下时,执行一段延时10ms的子程序后,再确认电平是否仍保持闭合状态电平,如果保持闭合状态电平,则确认真正有键按下,进行相应处理工作,消除了抖动的影响。(3)判别闭合的键号。
(4)使CPU对键的一次闭合仅作一次处理,采用的方法为等待闭合键释放以后再做处理。 2.键盘工作方式:
单片及应用系统中,键盘扫描只是单片机的工作内容之一。CPU忙于各项任务时,如何兼顾键盘的输入,取决于键盘的工作方式。键盘工作方式的选取应根据实际应用系统中CPU工作的忙、闲情况而定。键盘的工作方式选取的原则是:既要保证能及时响应按键的操作,又不过多的占用CPU的工作时间。通常键盘的工作方式有:编程扫描方式、定时扫描方式、中断扫描方式。 (1)编程扫描方式
编程扫描方式是利用CPU完成其它工作的空余调用键盘扫描子程序来响应键盘输入的要求。在执行键功能程序时,CPU不再响应键输入要求,直到CPU重新扫描键盘为止。 (2)定时扫描方式
定时扫描方式就是每隔一段时间对键盘扫描一次,它利用单片机内部的定时器产生一定时间(例如10ms)的定时,当定时时间到就产生定时器溢出中断,CPU响应中断后对键盘进行扫描,并在有键按下时识别出该键,再执行该键的功能程序。 (3)中断扫描方式
采用上述两种键盘扫描方式时,无论是否按键,CPU都要定时扫描键盘,而单片机应用系统工作时,并非经常需要键盘输入,因此,CPU经常处于空扫描状态,为提高CPU工作效率,可采用中断扫描工作方式。其工作过程如下:当无键按下时,CPU处理自己的工作,当有键按下时,产生中断请求,
25
CPU转去执行键盘扫描子程序,并识别键号。 本系统的4*4键盘硬件电路如图3-17。 343332313029282753698356D0D1D2D3D4D5D6D7RDWRA0A1RESETCSPA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7PC0PC1PC2PC3PC4PC5PC6PC78255A4321403938371819202122232425141516171312111010kR9(2)10k10k10k 图3-17 键盘设计
2.8 0832DA转换电路
DAC0832是CMOS工艺制造的8位D/A转换器,它由倒T型R-2R电阻网络、模拟开关、运算放大器和参考电压VREF四大部分组成。属于8位电流输出型D/A转换器,转换时间为1us,片内带有8位输入数据寄存器、DAC寄存器和D/A转换器。DAC0832与单片机接成数据直接写入方式,当单片机把一个数据写入DAC寄存器时,DAC0832的输出模拟信号随之对应变化。利用D/A转换器可以产生各种波形,如方波、三角波、正弦波、锯齿波等以及它们组合产生的复合波形和不规则波形。DAC0832的精度为1LSB。分辨率为8位。 2.DAC0832的引脚(图3-18)功能和时序图如下: D7—D0:8位数据输入;
ILE:数据输入锁存允许,高电平有效;
26
3-18 DAC0832引脚和时序图
CS:片选;
WR1:输入寄存器写信号。当ILE、CS、WR1同时有效时,数据装入输入寄存器,实现输入数据的第一级缓冲;
XFER:数据传送控制信号,控制从输入寄存器到DAC寄存器的内部数据传送;
WR2:DAC寄存器写信号,当XFER和WR2均有效时,将输入寄存器中的数据装入DAC寄存器并开始D/A转换,实现输入数据的第二级缓冲; VREF:参考电压源,电压为-10—+10V; Rfb;内部反馈电阻接线端;
IOUT1:DAC电流输出1,其值随输入数字量线性变化; IOUT2:DAC电流输出2;
当DAC寄存器的内容全为1时, IOUT1=最大,IOUT2 =0; 当DAC寄存器的内容全为0时,IOUT1 =0,IOUT2 =最大;
当DAC寄存器的内容为N时,IOUT1 = VREF *N/(256* Rfb), IOUT2= VREF / Rfb - IOUT1; 无论N值多大, IOUT1+ IOUT2= VREF / Rfb为常数; VCC:工作电源,其值为+5—15V,典型值为+5V; AGND:模拟信号地线; DGND:数字信号地线;
芯片内有两级输入寄存器,使DAC0832具备双缓冲和单缓冲输入方式,以便适于各种电路的需要(如要求多路D/A异步输入、同步转换等)。DAC0832的数据
27