单片机原理及接口技术单片机接口技术9.1键盘接口技术键盘工作原理•按键本质上是一个开关,通过接通或断开一个回路,使电路出现通和断两种状态,即“开关”状态,•计算机通过识别电路的通断(判断输入电平的高/低或1/0状态)来判断按键是否按下,从而进行相应的处理。字符共阳极LED字形码字形码共阴极LEDI/O口计算机+5VRK按键动作的识别•查询扫描–软件实现•定时扫描–用定时器完成•中断扫描–用外部中断0或1识别按键动作按键抖动及消除•触点式开关按键一般靠弹簧弹起复位,按键在按下和放开时有机械振动,会出现虽然只按了一次键,但按键触点接通/断开多次的情况,这称为键抖动。阶段稳定按键过程前沿抖动后沿抖动抖动时间的长短与开关的机械特性有关,一般为510ms,计算机在识别按键时必须消除抖动的影响,否则会出现人工按一次键而计算机处理多次的问题。消除抖动可以用硬件或软件的方法完成。9.1.2独立式键盘•独立式键盘的特点是每个按键独占一根I/O线,每个按键的工作不会影响其它I/O口线的状态。•按键电路配置灵活,软件结构简单,但按键较多时,需占用较多的I/O口,如果系统的I/O设备较多,不宜采用这种方式。•独立式按键的软件一般采用查询式结构。先逐位查询每根I/O口线的输入状态,如某一根I/O口线输入为低电平(与硬件接法有关),则可确认该I/O口线所对应的按键已按下,去除抖动后如仍然是按下的,则转向该键的功能处理程序P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.789C51+5V按键检测、处理子程序KEY:MOVA,P1;读入I/O口状态CPLAJZXEND;无键按下,返回XD:MOVR0,A;暂存按键状态LCALLDELAY;延时10ms。去抖MOVA,P1;再次读入按键状态CPLAJZXEND;无键按下,返回CJNEA,R0,XEND;和前次按键不同,抖动,返回JBACC.0,KEY0;0号键按下,转0号键处理程序JBACC.1,KEY1┆JBACC.7,KEY7KEY0:……;0号键处理程序,略SJMPXEND;处理完毕,返回┆KEY7:……XEND:RET9.1.3行列式键盘•行列式键盘(也称矩阵式)由行线和列线组成,按键位于行、列线的交叉点上•行列式键盘较独立式键盘节省I/O口线•行列式键盘的按键识别方法比独立式键盘要复杂一些,常用的方法有–扫描法–线反转法一.行列式键盘按键扫描识别法K0K1K2K3K4K5K6K7K8K9K10K11K12K13K14K15L1R1R2R3R4L2L3L45V计算机I/O口行列式键盘扫描流程当前列号=1当前列输出低其余列为高输入为低?读当前行延时再读当前行输入为低?当前列号加1当前行号加1列扫描完成?当前行号=1行扫描完成?置有键按下标志保存当前行列号清有键按下标志返回NYNYYNYN三.键盘的扫描工作方式1.编程扫描方式2.定时扫描方式3.中断扫描方式中断入口有键按下?去抖标志=1?处理标志=1?处理标志1识别按键保存键号返回去抖标志0处理标志0去抖标志1NYNYYN中断式键盘•无键按下时,CPU不扫描键盘,而有键按下时,通过相应电路产生中断请求,CPU响应中断,执行键盘扫描程序,识别按键•该方式节约CPU时间P1.0P1.1P1.3P1.2P1.4P1.5P1.6P1.7INT1单片机+5V四.键真值和键盘编码•无论采用什么方式检测键状态,最终都需要确定出按下的键的“代号”,以便后续程序执行该按键的功能。•键的“代号”可用键真值或键的编码表示•对于行列式键盘,按键的位置由行号和列号唯一确定,因此可将按键对应的行、列的二进制编码合成一个字节来代表该键,这就是键真值9.2LED显示器接口技术9.4.2.1LED显示原理及字形码1.数码管结构数码管由8个按“8”字形排列的发光二极管(简称字段)构成通过各字段的不同组合可以显示数字09、字符AF、H、L、P、R、U、Y、符号“”及小数点“”数码管分为共阴极和共阳极两种结构2.字形码•要显示出某个字形,必须依靠输出接口对不同的字段给出高电平(对于共阴极LED,电平相反)agdfecbfGabedGcdpdpg7437389C51P2.7ALEP0WRRDA0A1D0~D7CS8255RESETGNDWRRD+5V88PB0PB7PB6PB5PB4PB3PB2PB12510×8agdfecbfGabedGcdpdpg7437389C51P2.7ALEP0WRRDA0A1D0~D7CS8255RESETGNDWRRD+5V88PB0PB7PB6PB5PB4PB3PB2PB12510×8当A=00000110B时,执行:MOVX@DPTR,A或MOVX@Ri,A后,PB1和PB2为高电平,其余引脚为低电平,于是LED的b、c段亮,显示字形“1”如果使用共阳极LED,则显示“1”时,8255PB口应该输出11111001B,即字形码F9H注意•LED的字形码不是固定不变的,而与LED各引脚与接口电路输出端的连接顺序有关•LED字形码的确定,是依赖于具体电路中,各字段与CPU输出的数据位的直接或间接对应关系。静态显示接口•单片机驱动LED数码管的方法有静态显示和动态(扫描)显示两种。•静态显示就是显示驱动电路具有输出锁存功能,单片机将所要显示的数据送出后不需要刷新,直到下一次显示内容需要更新时再传送新的数据,静态显示特点•静态显示显示稳定,占用CPU时间少•但一个LED数码管要占用8根I/O口线,如果有多位数码管,需要扩展I/O口,单片机9.2.2动态显示接口•动态显示需要CPU时刻对显示器件进行刷新,占用的CPU时间多,•动态显示所需硬件少,电路相对简单,能节省线路板空间,适合于显示位数较多的系统。扫描频率的确定•频率太低,LED将出现闪烁现象;频率太高每个LED点亮的时间太短,LED亮度太低•若两次显示之间的时间间隔小于32ms时,人眼即不会感到闪烁,因此,LED的扫描频率可按下式计算:f=32×N–f为扫描的频率,对应时间(T=1/f);–32ms对应的频率约为32Hz;–N是LED的个数。–即每位数码管点亮时间不得超过T(=1/f)秒,每隔T秒后需点亮下一位数码管。LED串口动态显示电路