8279键盘显示
单片机芯片8279用法讲解

0:写入后地址不变 1:每次写入地址自动加
键盘显示接口芯片8279
⑥ 禁写显示RAM/消隐命令
1 0 1 IWA IWB BLA BLB
特征 无 A组 B组 A组 B组
位
效 禁写 禁写 消隐 消隐
IWA:禁止A组显示 RAM写。D3=1,A组禁写;D3=0,允许A组写。
OUTA3~OUTA0与OUTB3~OUTB0单独使用时,若只想改变B组的输出 值而A组的输出不受影响,就可以让D3=1即禁止向A组显示RAM写数据,这 样在向显示RAM的一个单元写入8位字节数据时就只写入字节的低4位而字节 的高4位不写入RAM单元。
3.8279的工作方式
8279有三种工作方式——键盘输入(键扫描)、传感器扫描、选通输入 键盘输入方式:有键按下时,回复缓冲器缓冲并锁存行列式键盘的列输入线。在
逐行列扫描时,回复线用来搜寻每一行列中闭合的键,当某一键闭合时,去抖 电路被置位,延时等待10ms后,再检查该键是否仍处在闭合状态,如不是闭合, 则当做干扰信号不予理睬;如是闭合,则将该键的列扫描码、行回复码、引脚 CNTL和引脚SHIFT的状态(两个独立附加的开关)一起形成键盘数据被送入 8279内部的FIFO(先进先出)存储器。键盘数据格式如下:
FIFO RAM的状态寄存器: (a)键盘输入方式或选通输入方式,寄存FIFO RAM的工作状态,FIFO
RAM不空时,会使IRQ变高; (b) 传感器方式,若检测出传感器的状态发生了变化,会使IRQ变高
⑥ 显示RAM及显示地址寄存器
显示RAM:16×8位,存储字符的字形码,显示时,从OUTA3~0和OUTB3~0输出
8个数码管从左至右依次 0 1 2 3 4 5 6 7
显示RAM地址单元
实验六键盘显示控制实验

实验六键盘显示控制实验一、实验目的1.掌握8279键盘显示电路的基本功能及编程方法。
2 •掌握一般键盘和显示电路的工作原理。
3.进一步掌握定时器的使用和中断处理程序的编程方法。
二、实验内容1. 8237键盘显示电路的基本原理本实验系统中把键盘显示电路设计在一块扩展电路板上,用一根20芯的扁平电缆与实验台上扩展插头J7相连。
小键盘上每按一个键,6位数码管上显示出相应字符,其对应关系如下表6-1。
2.设计电子时钟利用实验台上提供的定时器8253和扩展板上提供的8279以及键盘和数码管显示电路,设计一个电子钟。
由8253中断定时,小键盘控制电子钟的启停及初始值的预置。
电子钟显示格式如下:7407 74073fe2feITfe3B i BKb_6B B/B HEJRR QcCRRnorJ R --CDV44K ccvfLT OBTkK TUQEO -LIUO_HEEZM —ZuB4U2U2U lu B CCVCCVCDD CDDXX . XX . XX 由左向右分别为时、分、秒 并具有如下功能:① C 键:清除,显示00. 00. 00。
② G 键:启动,电子钟计时。
③ D 键:停止,电子钟停止计时④ P 键:设置时、分、秒值。
输入时依次为时、分、秒,同时应有判断输入 错误的能力,若有错,则显示:E ----------- 。
此时按P 键重新输入预置值。
⑤ E 键:程序退出,返回DOS 。
3.硬件电路图硬件电路图如图6-1。
图6-1键盘显示控制电路图4. 硬件连线100x87545275452754526 722864H11做电子钟实验时,实验台上8253的CLK0接1MHz,GATE0和GATE1接入口清显示+5V , OUTO 接 CLK1 , OUT1 接 IRQ 。
CS 接 280H~287H 。
5 •编程提示(1)显示按键程序框图显示铵键程序框图如图 6-2 (a )主程序 框图,(b )键盘显示子程序框图,(c )显示子 程序框图。
8279键盘和显示程序

8279键盘和显示程序#include<at89c52.h>#include<absacc.h>#include<stdio.h>#define COM8279 XBYTE [0xF2FF] //定义8279控制口#define DATA8279 XBYTE [0xF0FF] //定义8279数据口#define uchar unsigned char#define uint unsigned intuint keyval //定义键内码传递参数uint time //定义延时参数void delay(uint time)void key(void)void main(){delay(1300) //开机延时COM8279 = 0xD2 //清除RAM和FIFO delay(1)EA=1EX1=1 //开总中断,开外部中断1;IT1=1 //外部中断1选用下降沿COM8279=0x03 //8279键盘N键巡回,编码扫描,左端入口COM8279=0x2a //时钟分频设置,分频数为10COM8279=0x70 //设置读显示命令COM8279=0x90; //设置写显示命令while(1)}void delay (uint time) //传递参数为time{uchar jwhile (time--) //用time-1来进行循环{for (j=100;j>0;j--) //用j来进行125次循环,大约8us }}}void intsvr1(void) interrupt 2 using 1{keyval=DATA8279key()}//按键确认程序void key(void){switch(keyval){case 0xC3: //0号键赋值{P0=0x3F;DATA8279=P0;break;}case 0xC2: //1号键赋值;{P0=0x06;DATA8279=P0;break;}case 0xC1: //2号键赋值;{P0=0x5B;DATA8279=P0;break;}case 0xc0: //3号键赋值;{P0=0x4F;DATA8279=P0;break;}case 0xCB: //4号键赋值;{P0=0x66;DATA8279=P0;break;}case 0xCC: //5号键赋值;{P0=0x6D;DATA8279=P0;break;}case 0xC9: //6号键赋值;{P0=0x7D;DATA8279=P0;break;}case 0xC8: //7号键赋值;{P0=0x07;DATA8279=P0;break;}case 0xD3: //8号键赋值;{P0=0x7F;DATA8279=P0;break;}case 0xD2: //9号键赋值;{P0=0x6F;DATA8279=P0;break;}case 0xD1: //A号键赋值;{P0=0x77;DATA8279=P0;break;}case 0xD0: //B号键赋值;{P0=0x7C;DATA8279=P0;break;}case 0xE3: //C号键赋值;{P0=0x39;DATA8279=P0;break;}case 0xE1: //D号键赋值;{P0=0x5E;DATA8279=P0;break;}case 0xE2: //E号键赋值;{P0=0x79;DATA8279=P0;break;}case 0xE0: //F号键赋值;{P0=0x71;DATA8279=P0;break;}default:break;}}。
8279介绍

8279功能介绍一、8279的基本功能8279是可编程的键盘、显示接口芯片。
它既具有按键处理功能,又具有自动显示功能。
8279内部有键盘FIFO(先进先出堆栈)/传感器,双重功能的8*8=64B RAM,键盘控制部分可控制8*8=64个按键或8*8阵列方式的传感器。
该芯片能自动消抖并具有双键锁定保护功能。
显示RAM容量为16*8,即显示器最大配置可达16位LED数码显示。
(1)数据线DB0→DB7是双向三态数据总线,在接口电路中与系统数据总线相连,用以传送CPU和8279之间的数据和命令。
(2)地址线/CS=0选中8279,当A0=1时,为命令字及状态字地址;当A0=0时,为片内数据地址,故8279芯片占用2个端口地址。
(3)控制线CLK:8279的时钟输入线。
IRQ:中断请求输出线,高电平有效。
/RD、/WR:读、写输入控制线。
SL0---SL3:扫描输出线,用来作为扫描键盘和显示的代码输出或直接输出线。
RL0---RL7:回复输入线,它们是键盘或传感器矩阵的信号输入线。
SHIFT:来自外部键盘或传感器矩阵的输入信号,它是8279键盘数据的次高位即D6位的状态,该位状态控制键盘上/下档功能。
在传感器方式和选通方式中,该引脚无用。
CNTL/S:控制/选通输入线,高电平有效。
键盘方式时,键盘数据最高位(D7)的信号输入到该引脚,以扩充键功能;选通方式时,当该引脚信号上升沿到时,把RL0---RL7的数据存入FIFO RAM中。
OUTA0---OUTA3:通常作为显示信号的高4位输出线。
OUTB0---OUTB3:通常作为显示信号的低4位输出线。
/BD:显示熄灭输出线,低电平有效。
当/BD=0时将显示全熄灭。
二、工作方式8279有三种工作方式:键盘方式、显示方式和传感器方式。
(1)键盘工作方式8279在键盘工作方式时,可设置为双键互锁方式和N键循回方式。
双键互锁方式:若有两个或多个键同时按下时,不管按键先后顺序如何,只能识别最后一个被释放的键,并把该键值送入FIFO RAM中。
基于8279芯片的32位数码管显示电路的设计

关键 词 : 显示接 口 ; 8 2 7 9 ; 数码管驱动 ; W7 8 E 5 1 6
中图分类号 : TP 3 3 1 . 1
文献标识码 : B
文章编号 : 1 0 0 3 —7 2 4 1 ( 2 0 1 7 ) 1 卜0 1 0 6 — 0 3
De s i g n O f 3 2 B i t Di g i t a l T u b e Di s p l a y Ci r c u i t Ba s e d O n 8 2 7 9 Ch i p
自 动 化 技 术 与 应 用 2 0 1 7 年 第3 6 卷 第1 1 期
… … ~ 一
彳 亍业 应 用 与 交 流
。
。。一
一
~
I n d u s t r i a l Ap p l i c a t i o ns an d Commu n i c a t i o n s
功能 , 显示 器 RAM 容量 为 1 6 ×8 , 即显示 器最 大 配置 可达 l 6位 LE D数码显示 。8 2 7 9与单片机及键盘 /显示 器接 口电路 已有 实用 电路 , 且有 资料介绍 , 但它 们均为
Abs t r a c t : On t h e b a s i s o f t h e a n a l y s i s o f t h e 8 2 7 9 k e y b o a r d d i s p l a y i n t e r f a c e , d e s i g n s a n d i mpl e me n t a t e s u p t o 3 2 d i g i t a l t u b e d i s p l a y d r i v e r c i r c u i t . Au t o ma t i c s c a n n i n g o f t h e k e y b o a r d/d i s p l a y c a n b e r e a l i z e d b y u s i n g 8 2 7 9 , t o r e d u c e t h e b u r d e n o f CP U. I t s
LN8279可编程键盘/显示控制器测试技术研究

Ke r y wo ds: a F FO; s ly Sc n; I Dip a
.
.
1 引 言
L 87 可 同 时提 供 键 盘 和 数 码 显 示 的 可 编 N 29是
L 87 N 2 9功 能测试 的测试 要 点及 编 程技 巧 。
关键词 : 扫描 ; 进 先 出; 示 先 显
中图分 类号 : N T4 文献标 识 码 : B 文章 编 号 :0 2— 2 9 2 0 】6— 0 9一 2 1 0 2 7 (0 8 O 0 4 O
Te tTe h o o y Re e r h o h N8 7 o r m ma l e s c n lg s a c ft e L 2 9 Pr g a be K y
第 6期 20 0 8年 1 2月
微
处
理
机
No 6 . De ., 0 8 c 20
MI CROP ROC S ES ORS
L 87 N 29可 编 程 键 盘/ 示 控 制 器 测 试 技 术 研 究 显
冯 蕊 , 薛 宏
( 国 电子 科技 集 团公 司第 四十 七研 究所 , 阳 10 3 ) 中 沈 10 2 摘 要 : 绍 了 L 87 可 编 程 键 盘/ 示 控 制 器 的 主 要 功 能 和 测 试 技 术 , 详 细 介 绍 了 介 N 29 显 并
以是外部时钟的 2 3 分频。 到 1
CP U RES T Do3 E ~ / RD/ WR/ CSAo I RQ
程接 口, 键盘部分可 以支持 6 4个键 的键盘 , 它的主
键盘-显示器专用接口芯片8279

OUTA0~OUTA3:A组显示信号输出线。 OUTB0~OUTB3:B组显示信号输出线。
DB:消隐输出线,低电平有效。 该输出信号在数字切换显示或使用显示消隐命令时,将显示消
隐。
1.3 8279的寄存器
1. 命令寄存器
8279的命令寄存器为8位寄存器,我们以D7~D0表示它的 各位,其中高3位(D7、D6、D5)是命令的特征位,不同的状 态组合代表着不同的命令。8279共有8条命令:
(1)键盘/显示方式设置命令(D7D6D5=000)
此命令用于设置键盘与显示器的工作方式,各位定义如下:
D7
D6 D5
D4
D3
D2
D1
D0
0
0
0
D
D
K
K
K
DD两位用来设定显示方式:
00 8个字符显示——左入(指在显示时,显示字符是从左 面向右面移动)。
01 16个字符显示——左入。
10 8个字符显示——右入(指在显示时,显示字符从右面 向左面移动)。
若8279被设定为键盘扫描N键轮回方式,如果发现有多个键被同 时按下,则FIFO状态字中的错误特征位S/E将置位,并产生中断请 求信号和阻止写入FIFO RAM。
2. 状态寄存器
8279的状态寄存器为8位寄存器,主要用于键盘和选通工 作方式,以指示FIFO RAM中的字符数是否有错误发生,其字位 意义如下:
清除显示RAM大约需要100μs的时间。在此期间,FIFO状态字 的最高位Du=1,表示显示无效,CPU不能向显示RAM写入数据。
(8)结束中断/错误方式设置命令(D7D6D5=111)
D7
D6
D5
D4
电子时钟

8279键盘显示实验(电子秒表)一.实验要求利用实验机上提供的8279键盘电路,数码显示电路,设计一个电子钟(日历),用小键盘控制电子钟(日历)的启停及初始值的预值。
电子钟做成如下两种格式(按F键两种格式可以切换):XX -XX-XX 由左向右分别为: 时、分、秒XX -XX-XX 由左向右分别为: 年、月、日1.C键:清除,显示00-00-00.2.A键:启动,电子钟(日历)计时3.D键:停止,电子钟(日历)停止计时4.B键:设置初值:由左向右依次输入预置的时、分、秒(年、月、日)值,同时应具有判断输入错误的能力,若输入有错,则显示: 00-00-00按B键即可重新输入预置值:5.F键:实现电子钟和日历的切换5.E键:程序退出。
二试验程序//---8279键盘显示实验(电子秒表)---//-----头文件引用------#include<reg51.h>#include<absacc.h>#include<intrins.h>//-----宏声明-----#define D8279 XBYTE[0xF238] //8279 数据口地址#define C8279 XBYTE[0xF239] //8279 状态/命令口地址#define uchar unsigned char#define uint unsigned int#define TimeDisp 1#define DateDisp 0//-----变量定义-----uchar idata time[] = {0,0,0,12}; //10毫秒,秒,分,十uchar idata day[3] = {18,6,8};uchar idata diss[8]={0x20,0x20,0,0,0,0,0,0};//显示缓冲区uchar code ledseg[] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5E,0x79,0x71,0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,0xF7,0xFC,0xB9,0xDE,0xF9,0xF1,0x00,0x40};// LED显示常数表bit bdata sbz,wbz,kbz; //定义秒标志、键值合法标志、读键标志bit bdata flag = TimeDisp;//-----取键值函数-----uchar getkey(){uchar key;if((C8279&0x07)==0x00){kbz=0;} //无键按下,置标志else{kbz=1;C8279=0x40; //读FIFO RAM命令key=D8279;key=(key&0x3f); //取键盘数据低6位 return(key);}}//-----显示函数-----void disled(d)uchar idata *d;{uchar i;C8279=0x90;for(i=0;i<8;i++){C8279=i+0x80;D8279=ledseg[*d];d++;}}//-----显示缓冲区内容显示-----void disp(void){disled(diss);}//----8279初始化子程序-----void init8279(){C8279=0; //置8279工作方式C8279=0x2f; //置键盘扫描速率C8279=0xc1; //清除LED 显示//while(com&0x80);//等待清除结束}//-----毫秒显示-----void disms(){diss[0]=time[0]%10;diss[1]=time[0]/10;disp();}//-----显示处理-----void display(){if(flag == 1){diss[0]=time[1]%10;diss[1]=time[1]/10;diss[2]=33;diss[3]=time[2]%10;diss[4]=time[2]/10;diss[5]=33;diss[6]=time[3]%10;diss[7]=time[3]/10;}else{diss[0]=day[0]%10;diss[1]=day[0]/10;diss[2]=33;diss[3]=day[1]%10;diss[4]=day[1]/10;diss[5]=33;diss[6]=day[2]%10;diss[7]=day[2]/10;}disp();}//-----初始化-----void first(void){init8279(); //初始化8279 sbz=1; //标志TMOD=0x10;TH1=0xdc; //10毫秒的时间常数 TL1=0x00;disms();ET1=1;EA=1; //允许中断}//-----INT_T1中断服务子程序----- void Int_T1(void) interrupt 3{TR1=0;TH1=0xdc; //10毫秒定时常数TL1=0x00;TR1=1;time[0]=time[0]+1; //10毫秒数加 1 if(time[0]==100) //判断10毫秒=100 {time[0]=0;sbz=1; //置秒标志}//disms();if(time[0]==0){time[1]=time[1]+1; //秒加1if(time[1]==60) //判断秒=60{time[1]=0;time[2]=time[2]+1;//分加1if(time[2]==60) //判断分=60{time[2]=0;time[3]=time[3]+1;//时加1if(time[3]==24)//判断时=23{time[3]=0;day[0] += 1;if(day[0] == 30){day[0] = 0;day[1] += 1;if(day[1] == 12){day[1] = 0;day[2]++;}}}}}}}//-----读数子程序-----void getword(){uchar i;for(i=8;i>0;i--){do{getkey(); //读键盘}while(kbz==0);//无键输入,则再读if((getkey()>9)||(getkey()<0))//判断输入是否大于9,小于0 {wbz=0; //置非法输入标志return;}else{wbz=1; //置合法输入标志if((i == 6)||(i == 3)){i--;diss[i-1]=getkey();disp(); //显示输入的字符}else{diss[i-1]=getkey();disp(); //显示输入的字符}}}}//-----时间清零子程序-----void cleart(){TR1=0; //关计数器time[0]=0; //10毫秒清零time[1]=0; //秒清零time[2]=0; //分钟清零time[3]=0; //小时清零disms(); //显示毫秒sbz=1; //置秒标志}//-----设置初值子程序-----void sett(){getword(); //读数if(wbz==1) //判断输入合法性{if(flag == 1){time[3]=(diss[7]*10+diss[6]);if(time[3]<24)//判断输入小时值< 24 {time[2]=(diss[4]*10+diss[3]);if(time[2]<60)//判断输入分钟数< 60{time[1]=(diss[1]*10+diss[0]);if(time[1]<60)//判断输入秒值< 60{;}else{cleart();} //时间清零}else{cleart();} //时间清零}else{cleart();} //时间清零}else{day[2]=(diss[7]*10+diss[6]);if(day[2]<32)//判断输入小时值< 24{day[1]=(diss[4]*10+diss[3]);if(day[1]<13)//判断输入分钟数< 60{day[0]=(diss[1]*10+diss[0]);if(day[0]<100)//判断输入秒值< 60{;}else{cleart();} //时间清零}else{cleart();} //时间清零}else{cleart();} //时间清零}}else{cleart();} //时间清零display();//显示时间}//-----主程序-----void main(){uint counter = 0;first(); //初始化while(1) //循环{counter++;if(counter == 10000 ){//flag = !flag;counter = 0;}getkey(); //读键盘if(kbz==1) //判断是否有键输入{switch(getkey()){case 0x0c: cleart();//输入键是'C',转CLEART break;case 0x0a: TR1=1; //输入键是'A',电子钟计时break;case 0x0d: TR1=0; //输入键是'D',电子钟停止计时break;case 0x0b: TR1=0; //输入键是'B',转SETTsett();break;case 0x0e: _nop_();//输入键是'E',case 0x0f: flag = !flag;break;while(1)//等待回到监控{}}}else if(sbz==1){display();//显示时间sbz=0;//清标志}}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1)键盘/显示器设置命令(D7D6D5=000) 这时命令中 D4、D3 位用于显示器方式设置: D4D3=00 8*8 字符显示左边输入
D4D3=01 D4D3=10 D4D3=11
16*8 字符显示左边输入 8*8 字符显示右边输入 16*8 字符显示右边输入
CPU 向 8279 的显示用 RAM 写入显示数据时,分左边输入和右边输入两种
该信号有效。对 FIFO RAM 每次
读出时,该信号变为低电平。若
FIFO RAM 中还有数据就又变为高电平。
图 4. pin figuration
·RL0~RL7 键扫描返回输入线 时键扫描结果的输入线,由内部上拉电阻拉成高电平,由 扫描输出线
·OUTA0-3、OUTB0-3 显示段数据输出线 分开为两个半字节,合在一起为一个字。其中 OUTA3 为最高位,OUTB0 为最
和显示 RAM。清除显示大约需要 100us,在此期间,单片机不能向显示 RAM
写入数据。
8)结束中断/错误方式设置命令(D7D6D5=111) 在传感器工作方式下,该命令用于结束传感器 RAM 的中断请求。此外,
该命令还用于设置一种特定的错误工作方式。
(2) 状态寄存器
8279 状态寄存器为 8 位,在键输入及选通输入方式中,用于指出键
D4D3D2=110 D4D3D2=111 D4D3D2=0**
显示 RAM 全部置“20H” 显示 RAM 全部置“1” 不清除显示 RAM
命令中的 D1 时清除标志位。D1=1,清除 FIFO 状态标志,FIFO 被置为
空状态(无数据),并复位中断请求线 IRQ。D0=1,总清除,包括 FIFO RAM
4)读显示缓冲器命令(D7D6D5=011) 从 8279 向 CPU 读出显示数据(用于检查)之前,应先执行该命令。命
令中 D3~D0 表示起始地址,D4 位为自动增量标志,D4=1 时,每次读出后 地址自动加 1。
5)写显示数据命令(D7D6D5=100) 从 CPU 向 8279 写入显示数据之前,应先执行该命令。命令中 D3~D0 表示
时,则不进行屏蔽。D1D0 位用于消隐屏蔽,D1=1 时,屏蔽 A 组,B 组可
以消隐且不影响 A 组;D0=1 时情况正好相反,两位同时为“1”时则不进
行消隐屏蔽。
7)清除命令(D7D6D5=110) 用于清除显示、键输入标志和中断请求标志。D4D3D2 用于设置清除方式
D4D3D2=10* 显示 RAM 全部置“0”
8279 与 CPU 的连接如图 4 所示。
图 5. system block diagram
实验箱箱中的电路见 EL-MUT-III。
5.键盘扫描与 LED 显示简介
键闭合和断开时的电压抖动
(a)共阴极
(b)共阳极 行列式键盘电路原理图
(c)管脚配置(共阴极)
I/O口段选控制
a b c d e f Rdpa b c d e f Rdp a b c d e f Rdp a b c d e f Rdp a b c d e f Rdp
…
3.8
3.8
3.8
3.8
3.8
I/O口位选控制
多位 LED 显示器
I/O(1)
D7
D6
D5
D4
D3
I/O(2)
八位 LED 动态显示器电路
D2
D1
D0
频率为 2MHz,为取得 100kHz 的内部时钟频率信号,应使 D4D3D2D1D0=10100B,
即 20D
3)读 FIFO RAM 命令(D7D6D5=010) CPU 从 8279 的 FIFO RAM 中读数据之前应先送入此命令。命令中,D2~
D0 用于设置起始地址,D4 用于设置地址自动增量标志。当 D4=1 时,从起 始地址开始读出,地址自动加 1,直到全部读完为止。D4=0 时,仅读出起 始地址一个单元的内容。
用于位显示器提供段控数据。使用时,8279 自动对显示器扫描,将显示缓
冲器中的数据输出在 LED 上显示。
(2)8279 芯片信号引脚
8279 位双列直插芯片,共 40 引脚,引脚分布及名称如图 3 所示。
·DB0~DB7 数据线 用于在 8279 和系统之间传
送数据、命令和状态,可直接与
CPU 连接
双向、三态数据缓冲器用于芯片内部总线和系统总线的连接,进行 CPU 和 8279 之间的数据传送,信号引脚 DB0-7。
② I/O 控制电路 用于接受 CPU 送来的控制信号,并产生所需的 8279 内部控制信号。
③ 中断请求产生电路 根据键盘存储区的状态产生中断请求信号。
2)键盘接口控制逻辑 ① 扫描电路
数据缓冲器 FIFO RAM 中的数据字节个数和是否出错。
D2D1D0——为 FIFO RAM 中数据的个数。 D3——表示 FIFO RAM 已满(有键按下,存有键码)。 D4——表示“不足”错误,即 FIFO RAM 已经置空,CPU 还企图进行读出 操作,则出现“不足”错误,D4 置“1”。 D5——表示“超出”错误,即 FIFO RAM 已经充满,CPU 还企图进行写入 操作,则出现“超出”错误,D5 置“1”。 D6——用于传感器矩阵输入方式,几个传感器同时闭合时置“1”。 D7——显示无效位(D7=1)。当显示 RAM 由于清除显示或全清除命令尚 未完成时,D7 应置“1”,这时对显示 RAM 的写操作无效。
8279 可编程键盘/显示器接口芯片
1.概述
8279 是由 Intel 公司推出的一款可编程键盘和显示器专用(8255 为通用)并 行接口芯片,它可以代替单片机完成键盘和显示器的许多接口操作,从而大大减 轻单片机的负担,因此 8279 在单片机领域中应用较为广泛。
2. 8279 电路逻辑和信号引脚
8279 结构如图 1 所示
外部译码键扫描方式,双键互锁 内部译码键扫描方式,N 键依次读出 外部译码扫描传感器矩阵方式
D2D1D0=101 内部译码扫描传感器矩阵方式
D2D1D0=110 选通输入方式,外部译码扫描显示器方式 D2D1D0=111 选通输入方式,内部译码扫描显示器方式 内部译码方式,可接 4*8 键盘和 4 位 LED
起始地址,数据写入按左输入或右输入方式进行。D4 位为自动增量标志,D4 =1 时,每次写入后地址自动加 1。
6)写入和消隐屏蔽命令(D7D6D5=101)
当接口双四位显示器时,这两个显示器应当时相互独立的,即只能对其
中的一个单独进行数据写入或消隐而不影响另一位。
命令中的 D4 不用,D3、D2 位用于写入屏蔽,D3=1 时,屏蔽 A 组,B 组可以写入数据且不影响 A 组;D2=1 时情况正好相反,两位同时为“1”
扫描电路用于为键盘提供扫描信号,4 位扫描信号从扫描线 SL0~SL3 输 出,扫描信号可有两种输出形式,一种是内部译码方式,输出波形如图 3-a)所示, 即 SL0~SL3 提供的就是键盘扫描信号,可直接使用。另一种是外部译码形式, 输出波形如图 3-b)所示,此种形式下扫描信号要经过译码器扩充数目(最多 16)
成高电平,由外部键拉成低电平。
· CLK 外时钟输入端
系统的外时钟,由外部振荡电路提供。8279 靠芯片内部的定时器将外时钟
变为内时钟,即:内频=外频/定时值。内部时钟控制着扫描时间和去抖时间的
长短。当 8279 内频为 100kHz,则扫描时间为 5.1ms,去抖时间为 10.3ms。
3.8279 的寄存器
后采取扫描。
a) 内部译码
b) 外部译码 图 3 扫描信号
② 扫描回送电路 输入每次扫描的列线状态(RL0~RL7),以进行闭合健的搜索。
③ 去抖及键码生成电路 8279 采用的是软件去抖,当有键闭合以后,去抖动触发器置位,启动延
时电路,大约 10ms,然后再测该键盘是否继续闭合,如果任然闭合则按键被确 认。由键码生成电路将该键的地址(行、列)和附加的换挡键、控制键的状态结 合起来,生成闭合键的键码数据,送入 FIFO 存储区中。
8279 共有 3 个可寻址的寄存器,即:命令寄存器、状态寄存器和数据寄存
器,但只对应两个地址。因为命令寄存器和状态寄存器可共用一个地址,在同一
地址下,写操作是针对命令寄存器,而读操作则是针对状态寄存器的。具体的命
令/状态寄存器和数据寄存器的地址由信号连接决定。
(1) 命令寄存器
命令寄存器为 8 位寄存器,以 D7D6D5D4D3D2D1D0 表示各位。其中高三位 (D7D6D5)是命令的特征位,不同的状态组合代表着不同的命令。在程序 设计中通过对命令寄存器的设置来控制 8279 的不同操作。
低位。
·
消隐输出线
低电平有效,当 LED 切换或使用显示消隐命令时,将 LED 消隐。
· RESET 复位信号
高电平有效,复位后 8279 被设置为:16 个 8 位字符显示为左端输入;编码
的扫描键为两键连锁;程序时钟分频器被置为 31H。
· SHIFT、CNTL/
键输入线
其中 SHIFT 为换档键,CNTL 为控制键, 为选通键。由内部上拉电阻拉
· 片选信号
低电平有效。
·A0 区分信息的特征位 A0=0 时,输入/输出信息均
为数据;A1=1 时,输入信息为
命令,输出信息为状态。
·
读、写选通信号
低电平有效,用于向 8279
写入命令或数据以及从 8279 读
出状态的控制
·IRQ 中断请求信号
高电平有效,当有键被按
下,即 FIFO RAM 中有数据时,
图 1. logic symbol
(1)8279 电路逻辑如图 2 所示。下面按功能把 8279 的电路逻辑分为芯片 接口控制逻辑、键盘接口控制逻辑和显示接口控制逻辑三部分来介绍。