300 likes | 542 Views
8279 可编程键盘 / 显示控制器. —— 工作原理及其应用. 概述. Intel8279 是一种通用的可编程序的键盘、显示接口器件,单片器件就能够完成键盘输入和显示控制两种功能。 键盘部分提供扫描工作方式,可以连接 64 键的矩阵键盘,能自动消除按键抖动、识别键码以及对双键或 n 键同时按下实行保护。 显示部分以扫描方式工作,为 LED 数码管提供多路复用信号,可以显示多达 16 位的字符或数字。. 内部结构. 8279 内部结构. 8279 内部功能模块: 共用模块 数据缓冲器和输入 / 输出控制器 控制与定时寄存器 扫描计数器 键盘功能模块
E N D
8279可编程键盘/显示控制器 ——工作原理及其应用
概述 • Intel8279是一种通用的可编程序的键盘、显示接口器件,单片器件就能够完成键盘输入和显示控制两种功能。 • 键盘部分提供扫描工作方式,可以连接64键的矩阵键盘,能自动消除按键抖动、识别键码以及对双键或n键同时按下实行保护。 • 显示部分以扫描方式工作,为LED数码管提供多路复用信号,可以显示多达16位的字符或数字。
8279内部结构 • 8279内部功能模块: • 共用模块 • 数据缓冲器和输入/输出控制器 • 控制与定时寄存器 • 扫描计数器 • 键盘功能模块 • FIFO/传感器 RAM • FIFO状态寄存器 • 回馈缓冲器、键盘消抖及编码控制 • 显示功能模块 • 显示RAM • 显示地址寄存器
8279内部结构--共用模块 • 数据缓冲器和输入/输出控制器 • 数据缓冲器是双向缓冲器,用于传送CPU和8279之间的命令或数据。 • 输入/输出控制器根据CS(片选)、WR(写)、RD(读)和A0信号状态,控制数据缓冲器输出或输入数据。其中控制线A0用于区别信息的状态。 • A0=1时,如CPU写操作:输入指令;如CPU读操作: 输出FIFO状态字。 • A0=0时,如CPU写操作: 输入显示数据;如CPU读操作,则可输出键值或在显示RAM中的显示数据;
8279内部结构--共用模块 • 控制与定时寄存器 控制与定时寄存器用于寄存键盘及显示的工作方式,以及由CPU编程的其它操作方式。 定时控制含有分频功能,分频值可在2-31之间由软件编程,以便将外部时钟CLK进行分频,得到内部所需要的100KHZ时钟信号,提供键盘逐行扫描频率和显示位扫描时间。 • 扫描计数器 扫描器有编码、译码两种工作方式。 扫描计数器在工作时,将计数值从扫描线SL0-SL3输出,为键盘和显示器提供扫描信号。 常用的是编码扫描方式。
8279内部结构—键盘功能模块 • FIFO/传感器 RAM FIFO/传感器RAM一个双重功能的8字节RAM,用于存储按键数据。每当有键按下时,采集到的键值顺序写入FIFO/传感器 RAM 单元,而每次读出时,总是按输入的顺序,将最先输入的数据读出。 • FIFO状态寄存器 FIFO状态寄存器用于记录FIFO /传感器RAM的工作状态。其所表示的状态信息有:RAM是满还是空;其中存有多少字符;是否操作出错等,并根据检测情况,输出中断申请信号。
8279内部结构—键盘功能模块 • 回馈缓冲器、键盘消抖及编码控制 来自RL0-RL7 8根回馈线的回馈信号,由回馈缓冲器缓冲并存入FIFO RAM。 在键盘矩阵工作方式中,回馈线搜索一行中闭合的键。当某一键闭合时,消抖动电路置位,延时100ms后,再检验该键是否是连续保持闭合。若闭合,则该键的地址和SHIFT、CTRL状态一起形成键值送入FIFO RAM。
8279内部结构—键盘功能模块 在FIFO存储器中的键盘数据格式如下: D7 D6 D5 D4 D3 D2 D1 D0 CTRL/STB SHIFT 扫描 回馈 • CTRL和SHIFT(D7和D6)的状态由两个独立的附加开关输入信号线CTRL/STB和SHIFT的状态来决定, • D5、D4、D3三位来自扫描计数器,是按键的行编码; • D2、D1、D0三位则是来自列计数器,它们是根据回馈信号而确定的按键的列编码。
8279内部结构—键盘功能模块 回馈信号(RL7-RL0)和回馈信号编码(D2-D0)的对应关系如下: RL7 – RL0 D2 – D0 11111110 000 11111101 001 11111011 010 11110111 011 11101111 100 11011111 101 10111111 110 01111111 111
8279内部结构—显示功能模块 • 显示RAM 显示RAM用来存储显示数据。该区具有16个字节,存储对应于16个数码管的显示信息。 • 显示地址寄存器 显示地址寄存器用来寄存由CPU进行读/写的显示RAM的地址,它可以由命令设定,也可以设置成每次读出或写入之后地址自动递增。
8279的引脚定义 8279采用40引脚封装,各引脚定义可分为CPU连接线、数码管连接线键盘连接线和共用扫描信号线4组。 1、CPU连接线: • DB7-DB0(数据总线):双向、三态总线。 • CS(片选):输入,低有效。 • A0(缓冲器地址):输入。 • RD(读信号)和WR(写信号):输入,低有效。 • IRQ(中断请求):输出,高有效。 • CLK(系统时钟):输入 • RESET(复位):输入,高电平有效。
8279的引脚定义 2、键盘连接线: • RL0—RL7(回馈线):输入。它们是键盘矩阵的列信号输入线。 • SHIFT(换档信号):输入,高有效。可以用作键盘的上、下档功能键。 • CTRL/STB(控制/选通):输入。可作为控制功能键使用;
8279的引脚定义 3、数码管连接线: • OUTA0—OUTA3(A组4位显示代码信号):输出。 • OUTB0—OUTB3(B组4位显示代码信号):输出。 • BD(消隐显示):输出,低有效。在数字切换显示或使用显示消隐命令时,将显示消隐。 消隐信号的作用是当显示数据有更改时,暂时关闭显示,当数据更改完毕后再打开显示,以消除在显示数据变化过程中显示乱码的现象。 4、共用扫描信号线: SL0—SL3(扫描线):输出。为键盘和显示器提供扫描信号。
键盘显示电路设计举例 • SL3 – SL0输出0000 - 1111循环渐变的编码信号,此信号经4-16译码器产生16个数码管的位选信号,对应于某个数码管位选信号代码,OUT A3 – A0和 OUT B3-B0输出显示管显示段码,依次循环操作,则可显示16位数字或字符。 • SL2 – LS0信号经3-8译码器产生键盘行扫描信号,8279通过RL0 – RL7线不断采集键盘矩阵列信号,当有键按下,8279将SL2 – SL0行扫描编码值和RL0 – RL7列反馈编码值组合成键值存入 FIFO RAM,并向CPU发送中断申请信号。CPU响应中断后,进入中断服务处理程序,读取存在8279 FIFO RAM中的键值。
命令和状态字--键盘/显示方式设置命令 命令特征位:D7D6D5=000 命令格式:000DDKKK DD两位用来设定显示方式: 008个字符显示----左入 0116个字符显示----左入 108个字符显示----右入 1116个字符显示----右入 所谓的左入就是在显示时,显示字符是从左面向右面逐个排列。右入就是显示字符从右面向左面移动。 所对应的SL3 - SL0编码最小的位为显示的最高位。
命令和状态字--键盘/显示方式设置命令 KKK三位用来设定键盘工作方式: 000 编码扫描键盘----双键锁定 001 译码扫描键盘----双键锁定 010 编码扫描键盘----N键轮回 011 译码扫描键盘----N键轮回 100 编码扫描传感器矩阵 101 译码扫描传感器矩阵 110 选通输入,编码显示扫描 111 选通输入,译码显示扫描
命令和状态字--键盘/显示方式设置命令 双键锁定和N键轮回是两种不同的多键同时按下保护方式。 • 双键锁定为两键同时按下提供保护,在消抖动周期内,如果有两键同时被按下,则只有其中的一键弹起,而另一键在按下位置时,才能被认可。 • N键轮回为N键同时按下提供保护,当有若干个键同时按下时,键盘扫描能根据发现它们的次序,依次将它们的状态送入FIFO RAM。
命令和状态字--时钟编程命令 命令特征位:D7D6D5=001 命令格式:001PPPPP 将来自CLK的外部时钟进行PPPPP分频(2-31)。 8279内部时钟频率等于外部时钟频率除以分频数。
命令和状态字--读FIFO/传感器RAM命令 命令特征位:D7D6D5=010 命令格式:010 AI X AAA 该命令字只在传感器矩阵方式时使用,在读传感器数据之前设定将要读出的传感器RAM地址,AI为自动增量特征位。若AI=1,则每次读出传感器RAM后,地址将自动加1,使地址指针指向顺序的下一个存储单元。这样,下一次读数便从指针所指的地址读出,而不必重新设置读FIFO/传感器RAM命令。 在键盘矩阵工作方式中,由于键值读出操作严格按照先入先出的顺序,因此不必使用这条命令。
命令和状态字--读显示RAM命令 命令特征位:D7D6D5=011 命令格式:011 AI AAAA 在CPU读显示RAM之前,设定将要读出的显示RAM的地址,AAAA为显示地址的二进制代码。如果自动增量特征位AI=1,则每次读出后,地址自动加1,使地址指针指向下一个地址单元。这样,下一次读数便从指针所指的地址读出,而不必重新设置读显示RAM命令。
命令和状态字--写显示RAM命令 命令特征位:D7D6D5=100。 命令格式:100 AI AAAA 在CPU写显示RAM之前,设定将要写入的显示RAM的地址,四位二进制代码AAAA用来寻址显示RAM中的一个存储单元。如果自动增量特征位AI=1,则每次写入后,地址自动加1,使地址指针指向下一个地址单元。这样,下一次写数便从指针所指的地址写入,而不必重新设置写显示RAM命令。
命令和状态字--显示RAM禁止写入/消隐命令 命令特征位:D7D6D5=101。 命令格式:1 0 1 X IWa IWb BLa BLb • IWa、IWb用来掩蔽A组和B组显示RAM的写入。 • BLa、BLb位是消隐特征位,消隐A(B)组显示输出。若BLa(b)=1,则A(B)组的显示输出被消隐。若BLa(b)=0,则相应组恢复显示。
命令和状态字--清除命令 命令特征位:D7D6D5=110。 命令格式:1 1 0 CD2 CD1 CD0 CF CA 该命令字用来清除FIFO RAM和显示RAM。 • D4D3D2三位(CD2 – CD0)用来设定清除显示RAM的方式。其意义如下表:
命令和状态字--清除命令 • D1(CF)位用来清空FIFO存储器。D1=1时,执行清除命令后,FIFO RAM被清空,使中断IRQ复位。同时,传感器RAM的读出地址也被清0。 • D0(CA)位是总清的特征位,它兼有CD和CF的联合有效。在CA=1时,对显示RAM的清除方式由D3D2(CD1 CD0)的编码决定。 清除显示RAM大约需要100uS的时间。在此期间,FIFO状态字的最高位Du=1,表示显示无效。CPU不能向显示RAM写入数据。
命令和状态字--结束中断/错误方式设置命令 命令特征位:D7D6D5=111。 命令格式:1 1 1 E X X X X X 这个命令有两个不同的应用: ① 作为结束中断命令。在传感器工作方式中,设置E=1,结束传感器RAM的中断请求。 ②作为特定错误方式的设置命令。键盘扫描N键轮回工作方式下,若设置E=1,如有多个键被同时按下,则FIFO状态字中的错误特征位S/E将置位,并产生中断请求信号和阻止写入FIFO RAM。 错误特征位S/E只有在执行了CF=1的清除命令后才能复位。
8279状态寄存器(FIFO状态字) 8279状态寄存器(又称FIFO状态字)口地址与控制命令相同(A0=1),主要用于键盘和选通工作方式,以指示FIFO RAM中的字符数和是否有错误发生,其字位意义如下: Du S/E O U F NNN Du: Du=1显示无效 S/E: 传感器信号结束/错误特征码 O: O=1出现溢出错误 U: U=1出现不足错误 F: F=1表示FIFO RAM已满 NNN: FIFO RAM中的字符数
8279状态寄存器(FIFO状态字) 对FIFO RAM的操作可能出现两种错误:溢出和不足。 • 当FIFO RAM已满时,若有键盘数据企图写入,则出现溢出错误,状态字位“O”被置位。 • 当FIFO RAM已被清空时,若CPU还企图读出,则将会出现“不足”的错误,状态字位“U“被置位。 • 对于状态字的S/E位,在传感器工作方式下,若S/E=1,表示传感器的最后一个信号进入传感器RAM;当8279工作在特定错误方式时,若S/E=1,表示出现了多键同时下按的错误。 • 当显示RAM清除命令尚未完成时,状态字的最高位Du被置位。 在8279工作前,需用键盘/显示方式设置命令、时钟编程命令和清除命令初始化。