8279键盘扫描输入实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二 8279键盘扫描输入实验
一、实验目的
1.熟悉INTEL8279键盘、显示器接口与8031的连接方法;
2.掌握8279键盘扫描输入程序的编写;
二、实验要求
编写一个键盘扫描输入程序,把读取到的键值依次存放在8031片内RAM的30H-43H 单元中,超过20个键值时,多余的健值存放在44单元中。
三、芯片应用特性
8279是专用键盘、显示控制芯片,能对显示器自动扫描;能识别键盘上按下的键号,可充分提高CPU工作效率,8279与8031的接口方便,由它构成的标准键盘、显示接口在工业控制中得到广泛的应用。
1.关于INTEL 8279
无编码器键盘常常采用软件方法,逐行逐列地检查键盘状态,当发现按下的键后,用计算或查表等方法来找到该键的键编码。而INTEL 8279公司的键盘、显示接口芯片是一种扫描式键盘编码器芯片
8279是一种通用可编程键盘显示接口芯片,它能完成键盘输入和显示控制两种功能。键盘部分提供一种扫描方式,可与64个按键的矩阵键盘连接,能对键盘不断扫描,自动消抖,自动识别按下的键并给出编码,能对双键或n 键同时按下实行保护。
显示部分分为发光二极管、荧光管及其它显示器提供了按扫描方式工作的显示接口,它为显示器提供多路复用信号,可显示多达16个字符或数字。
2. 实验板8279键盘、显示电路介绍:
8279采用外部译码操作方式,74LS138输出8位显示器的位控制信号和键盘的行扫描信号。8279的8位输出线A0-A3和B0-B3与数码管的8个段相对应,经74LS240缓冲后,去驱动各数码管的8个段。74LS138输出的8根线由74LS240反相后,再经大电流驱动器ULN2003A驱动,成为各数码管的位选择信号,当位选信号有效时(呈0电平),相应数码管被选通,而显示内容则取决于它的各个显示段的电平。
四、实验步骤
1.线路连接及注意事项
1)线路连接
8279键盘键值可采用查询方式读取,也可以采用中断方式读取。查询方式须设等待键输入指令。实验板上,8279的中断请求线(IRQ)经反相后与插座CN8相连。做实验时,只须短接CN8上的KBIRQ、INT0。
2)注意事项
因8279的RL0无法回扫键值。实验板上,首行键盘与回扫线RL4相连,与原理图不同。编程时请注意,首行键盘编码值为04H、0CH、14H、1CH、24H。
2.程序设计
1)关于8279的端口
实验板的硬件连接决定了8279的数据口为2FFEH,当对数据口执行读操作时,读取到的数据为键值编码,对数据口执行写操作时,数据写入显示RAM中,8279的命令、状态口
为2FFFH,当对命令状态口执行读操作时,读取到的数据为FIFO状态字,对命令、状态口执行写操作时,写入的为命令字。
2)关于8279在键盘工作方式时键盘编码值:
在键盘工作方式中,键盘数据格式中的D7、D6表示CNTL和SHIFT状态,D5、D4、D3表示SL2、SL1、SL0的8个译码状态,D2、D1、D0表示RL0-RL7的8个状态。因为8279的CNTL和SHIFT接地,所以高两位为零。对于8 x 8的键盘其键盘编码值为:
3-8译码器
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
000 001 010 011 100 101 110 111
RL0:000 00H 08H 10H 18H 20H 28H 30H 38H
RL1:001 01H 09H 11H 19H 21H 29H 31H 39H
RL2:010 02H 0AH 12H 1AH 22H 2AH 32H 3AH
RL3:011 03H 0BH 13H 1BH 23H 2BH 33H 3BH
RL4:100 04H 0CH 14H 1CH 24H 2CH 34H 3CH
RL5:101 05H 0DH 15H 1DH 25H 2DH 35H 3DH
RL6:110 06H 0EH 16H 1EH 26H 2EH 36H 3EH
RL7:111 07H 0FH 17H 1FH 27H 2FH 37H 3FH
本实验采用4 x 5(4行5列)的键盘,因RL0无法回扫键盘,首行键改为与RL4相连,因此键盘的键盘值编码实际为:
3-8译码器
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
RL4:100 04H 0CH 14H 1CH 24H 2CH 34H 3CH
RL1:001 01H 09H 11H 19H 21H 29H 31H 39H
RL2:010 02H 0AH 12H 1AH 22H 2AH 32H 3AH
RL3:011 03H 0BH 13H 1BH 23H 2BH 33H 3BH
3)关于8279的初始化
教材和参考书中对8279的初始化都是先执行总清零命令字,等待清除完显示RAM后,再设置分频命令字、键盘/显示工作方式字和其它初始化命令字。如果按照书本上的初始化
顺序,在总清零后,执行其它初始化命令字,该命令字有可能显示在LED上,无法达到清零显示器的目的。解决的办法是先执行其它初始化命令,最后执行总清零命令。另外,在键盘中断服务程序中,不必按照书本上先设置读FIFO RAM命令字,因为在键盘工作方式时,读出操作严格按照先进先出的顺序,如果要加上该命令字,跟其它初始化命令字一样,把它加到总清零命令之前。
3.程序调试
1)程序编译无误后,下装到仿真机。
2)单步执行指令,完成分频系数设定、工作方式选择等初始化工作后,接着执行清零指令,此时LED全部灭掉,开中断,等待键按下。按下第一行第一个键后。程序
将跳到INT0的入口地址,ORG 0003H处,继续执行后面的跳转指令,跳到中断服
务程序中去。在中断服务程序中,从数据口读取键值,并放在内部RAM 30H单元。
键值存放RAM地址加1,中断返回,等待下一次按键。
3)查看内部RAM 30H单元存放的键值,看是否为04H。
4)从左到右,从上到下每按一次键,执行一次中断服务程序,执行20次中断服务程序后,在30H-43H内存单元中存放键盘的20个键值。
5)检验这20个键盘键值的分布情况相符否?
6)继续执行程序,以后获取的键值将存放在44H单元中。
4程序联调
在键盘工作方式中,当FIFO RAM存有数据时,IRQ为高电平。CPU每次从RAM中读取数据时,IRQ变为低电平。
8279的中断请求线IRQ经反相器与插座CN8 KBIRQ相连,因此用逻辑笔检查KBIRQ。当有键按下时,其为低电平,向CPU申请中断,在中断服务程序中读取键值后,IRQ变为低电平,此时在用逻辑笔测KBIRQ则变为高电平。
注意:如果连续按了好几下键,则IRQ一直是高电平(KBIRQ则一直为低电平,向CPU 申请中断),除非把RAM中的所有键值读完后才再次恢复为低电平(KBIRQ则为高电平,停止向CPU申请中断)。
五、结果说明
RL0无法回扫键盘、清零后分频命令字和工作方式命令字都显示在LED,产生这两个问题的原因可能是8279芯片的缺陷。
六、实验报告要求
1. 实验目的、步骤,
2. 观察实验现象,记录存放在片内RAM单元30H-43H中的键值,分析讨论实验结果是否正确。
3. 画出程序框图。
4. 附参考程序