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;//清标志}}}。
8279A可编程键盘显示接口
8279A可编程键盘显示接口实验内容一、实验目的学习8279A与微机8088系统的接口方法,了解8279A用在译码扫描和编码扫描方式时的编程方法,以及8088CPU用查询方式和中断方式对8279A进行控制的编程方法。
二、实验原理如图所示,系统中8279A接口芯片及其相关电路完成键盘扫描和显示,本实验以查询方式获取键盘状态信息,读取键值。
键值转换成显示代码供显示。
根据原理图5-20,得到键值和键名的对照表5-5,显示值和显示代码对照表。
三、实验程序清单见随机光盘,文件名为H8279.ASM四、实验步骤运行实验程序在DVCC-8086JHN上显示"8279-1"在系统键盘上输入数字键,在系统显示器上显示相应数字,按EXEC键显示"8279 good",按其它键不予理睬。
源程序:CODE SEGMENTASSUME CS:CODESTART: JMP KEYLEDCONTPORT EQU 00DFHDA TAPORT EQU 00DEHDA TA1 EQU 0500HDA TA2 EQU 0508HDA TA3 EQU 0510HDA TA4 EQU 0518HDA TA5 EQU 0580HKEYLED: CALL FORMATCLDMOV DI,DATA5MOV CX,08HXOR AX,AXREP STOSBMOV SI,DATA2CALL LEDDISP ;DISP 8279-1MOV BYTE PTR DS:[0601H],00HKEY0: MOV DX,CONTPORTIN AL,DXTEST AL,07HJZ KEY0MOV CX,0FFFHDELAY1: LOOP DELAY1MOV DX,CONTPORTMOV AL,40HOUT DX,ALMOV DX,DATAPORTIN AL,DXMOV DI,AX ;AND AL,0F0HJZ KEY1MOV AX,DI ;CMP AL,10HJNZ KEY0MOV SI,DATA3CALL LEDDISPKEYEND: JMP KEYENDKEY1: CALL CONVERSMOV SI,DATA5CALL LEDDISPDJMP KEY0CONVERS:MOV BH,0HMOV AX,DIAND AL,0FHMOV BL,ALMOV AL,CS:[BX+DATA4]MOV Bl,DS:[0601H]MOV BH,0HMOV BYTE PTR DS:[BX+DA TA5],ALINC BXMOV DS:[0601H],BXCMP BX,08HJZ SA VE0RETSA VE0: MOV BYTE PTR DS:[0601H],0H RETLEDDISP:MOV AL,90HMOV DX,CONTPORTOUT DX,ALMOV BYTE PTR DS:[0600H],00LED1: CMP BYTE PTR DS:[0600H],07H JA LED2MOV BL,DS:[0600H]MOV BH,0HMOV AL,CS:[BX+SI]MOV DX,DATAPORTOUT DX,ALADD BYTE PTR DS:[0600H],01HJNZ LED1LED2: RETLEDDISPD:MOV AL,90HMOV DX,CONTPORTOUT DX,ALMOV BYTE PTR DS:[0600H],00LEDD1: CMP BYTE PTR DS:[0600H],07H JA LEDD2MOV BL,DS:[0600H]MOV BH,0HMOV AL,DS:[BX+SI]MOV DX,DATAPORTOUT DX,ALADD BYTE PTR DS:[0600H],01HJNZ LEDD1LEDD2: RETFORMAT: MOV BX,0MOV WORD PTR DS:[BX+0500H],5050HADD BX,2MOV WORD PTR DS:[BX+0500H],0079HADD BX,2MOV WORD PTR DS:[BX+0500H],0000HADD BX,2MOV WORD PTR DS:[BX+0500H],0000HADD BX,2MOV WORD PTR DS:[BX+0500H],4006HADD BX,2MOV WORD PTR DS:[BX+0500H],4040HADD BX,2MOV WORD PTR DS:[BX+0500H],076FHADD BX,2MOV WORD PTR DS:[BX+0500H],7F5BH ADD BX,2MOV WORD PTR DS:[BX+0500H],3F5EHADD BX,2MOV WORD PTR DS:[BX+0500H],3F5CH ADD BX,2MOV WORD PTR DS:[BX+0500H],076FHADD BX,2MOV WORD PTR DS:[BX+0500H],7F5BH ADD BX,2MOV WORD PTR DS:[BX+0500H],063FHADD BX,2MOV WORD PTR DS:[BX+0500H],4F5BH ADD BX,2MOV WORD PTR DS:[BX+0500H],6D66H ADD BX,2MOV WORD PTR DS:[BX+0500H],077DH ADD BX,2MOV WORD PTR DS:[BX+0500H],6F7FHADD BX,2MOV WORD PTR DS:[BX+0500H],7C77HADD BX,2MOV WORD PTR DS:[BX+0500H],5E39HADD BX,2MOV WORD PTR DS:[BX+0500H],7179HRETCODE ENDSEND START。
接口实验 8279
姓名:学号:班级:
实验六8279键盘显示实验
一、实验目的
掌握8088微机系统中,扩展8279键盘显示接口的方法。
二、实验内容
用8279接口芯片来控制实验系统键盘显示,按下数字键,在数码管上应显示相应的数字,按MON键,显示8279—good,按其它功能键不响应。
三、实验接线图
四、实验程序框图
五、实验步骤
①连CS6→FF80H孔,JSL→JS,JRL→JR,JOUT→JLED,开关JK置外接(实验完后置系统)。
②建议联PC机进行调试,打开源文件8279·ASM(EP2:2A90H),然后编译、装载,点击运行命令,数码管上显示P,按数字键,数码管上显示相应数字,按MON键,数码管显示8279-good,按RST键,退出运行。
六、回答问题
1、实验连线图中,连线CS6→FF80H,JSL→JS,JRL→JR,JOUT→JLED,开关JK置外接的作用是什么?解释硬件电路图的原理。
2、8279端口地址分别为多少?程序中写入的内容为何值?试解释。
3、请详细注释整个实验程序。
并说明程序中定义的ZW、KH、TABK、TABC的意义在哪里。
4、在调试的过程中观察键入的键名是经过怎样的过程显示出来的。
调试过程中注意各个键的内码分别多少?请写出来,并与TABK的内容比较。
5、写出实验体会。
实验进行怎样的改进,或加怎样的步骤,更能提高实验的效果。
8279说明
101为此命令的特征位。 此命令用在将二个8段显示分作两个4段显示的情况,在IWA置1,IWB置0时,将屏蔽半字节A, 即CPU向显示器RAM写入数据时,只能更改半字节B,而不能更改半字节A。此时显示器仅 将OUTB0~3的部分更改,而由OUTA0~3控制的显示器保持不变,即A的部分不允许新的数据写入。同 样,当IWA=0,IWB=1时,屏蔽半字节B。 如果要求显示一空格,则可将 BLA置成1或 BLB置成 1,这时由OUTA或QUTB控制的显示器显示空 格。如要求两个半字节都为空格,则应将BLA与BLB均置1。
无标题文档
INTEL 8279的接口信号与工作方式
利用软件的方法实现键扫描及动态显示的最大缺点是占用很多CPU时间,一旦程序进入处理其他功 能的程序段,键盘与显示器即停止工作。可编程键盘、显示器接口INTEL 8279可在编程后对键盘、显示 进行扫描,记下按下键的坐标并显示数据。 INTEL 8279的逻辑符号如图7-28所示。它用于8085、MCS-51系统。它最多可外接8X8的键盘 及16X8的七段数码显示器。
7.清除
此命令用来清除显示器RAM和FIFO状态。其格式为 D7 1 1 0 CD CD CD CF D0 CA
110为此命令的特征位。
/ch07/7-5-1.htm[2010-8-25 22:10:02]
无标题文档
CD CD CD 用来置清除方式,具体如下 CD 0 0 0 1 CD 0 1 1 X CD X 0 1 X 显示器RAM清为全0 显示器RAM置成16进制数20H 显示器RAM置成全1 此位为1,不允许清除显示器>RAM(或用CA=1)
图7-28 8279的逻辑符号
8279与CPU之间的连线有: D0~D7数据线。 IRQ中断申请信号,高电平有效。 -RD、-WR 读写信号。 RESET 复位信号,高电平有效。 -CS片选信号。 A0缓冲器地址,A0=0表示数据口,A0=1表示表示命令、状态口。 CLK 外部时钟输入,用以产生内部100kHz的信号,输入信号频率低于 2MHz。 8279与外部的连线有:
8279键盘显示实验
8279键盘显示实验一、实验目的与要求了解8279的内部结构、工作原理;了解8279与PCI9052的接口逻辑;掌握对8279的编程方法,掌握使用8279扩展键盘、显示器的方法。
认真预习,做好实验前的准备工作,自行编写程序,填写实验报告二、实验设备Star PCI9052、DMA $ 32 BIT RAM板卡一套、Star ES-PCI模块一块、STAR ES598PCI 实验仪一套、PC机一台三、实验内容1、编写程序:利用8279实现对G5区的键盘扫描,将键号显示于8位数码管上2、按图连线,运行程序,观察实验结果,能熟练运用8279扩展显示器和键盘。
六、演示程序.MODEL TINYPCIBAR3 EQU 1CH ;8位I/O空间基地址(它就是实验仪的基地址,;也为DMA & 32 BIT RAM板卡上的8237提供基地址) Vendor_ID EQU 10EBH ;厂商ID号Device_ID EQU 8376 ;设备ID号.STACK 100.DATA?IO_Bit8_BaseAddressDWmsg0 DB 'BIOS不支持访问PCI $'msg1 DB '找不到Star PCI9052板卡 $'msg2 DB '读8位I/O空间基地址时出错$'KEYCOUNT DB ?LED_TAB DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8HDB 080H,90H,88H,83H,0C6H,0A1H,86H,8EHCMD_8279 DW 00B1H ;8279命令字、状态字地址DATA_8279 DW 00B0H ;8279读写数据口的地址.CODESTART: MOV AX,@DATAMOV DS,AXNOPCALL InitPCICALL ModifyAddress ;根据PCI提供的基地址,将偏移地址转化为实地址CALL INIT8279 ;初始化子程序MOV KEYCOUNT,0START1: CALL IfExitJZ START11JMP ExitSTART11: CALL SCAN_KEY ;键扫描JNC START1 ;没有按键XCHG AL,KEYCOUNTINC ALCMP AL,9JNZ START2MOV KEYCOUNT,0CALL INIT8279_1 ;8个数码块全有字符显示后,再按键,清除显示JMP START1START2: XCHG AL,KEYCOUNTCALL KEY_NUM ;键值转换为键号LEA BX,LED_TAB ;字型码表XLATCALL WRITE_DATAJMP START1START_EXIT: JMP $;8279初始化INIT8279 PROC NEARMOV DX,CMD_8279 ;CMD_8279为写命令地址、读状地址MOV A L,34H ;可编程时钟设置,设置分频系数(20分频)OUT DX,ALMOV AL,0 ;8*8字符显示,左边输入,外部译码键扫描方式OUT DX,AL; MOV AL,0A0H; MOV AL,0A0H; OUT DX,ALCALL INIT8279_1RETINIT8279 ENDPINIT8279_1 PROC NEARCALL CLEAR ;清显示MOV AL,90H ;从第一个数码管开始移位显示OUT DX,ALRETINIT8279_1 ENDPCLEAR PROC NEARMOV DX,CMD_8279MOV AL,0DEH ; 清除命令OUT DX,ALWAIT1: IN AL,DXTEST AL,80HJNZ WAIT1 ; 显示RAM清除完毕吗?RETCLEAR ENDPSCAN_KEY PROC NEARMOV DX,CMD_8279IN AL,DX ;读状态READ_FIFO: AND AL,7JZ NO_KEY 是否有键按下READ: MOV AL,40HOUT DX,AL ;读FIFO RAMMOV DX,DATA_8279IN AL,DXSTC ;有键SCAN_KEY1: RETNO_KEY: CLC ;无键按下,清CYJMP SCAN_KEY1SCAN_KEY ENDPKEY_NUM PROC NEARAND AL,3FHRETKEY_NUM ENDPWRITE_DATA PROC NEARMOV DX,DATA_8279OUT DX,ALRETWRITE_DATA ENDPExit: MOV AH,4CHINT 21H;IfExit、InitPCI、ModifyAddress子程序请参阅实验二END START。
8279LED数码管显示控制实验
实验三8279 LED数码管显示控制实验一、实验目的1.熟悉INTEL8279键盘、显示接口的编程方法。
2.掌握8279 LED显示控制的编程二、实验要求1.在前面的实验基础上,编写一个8279显示控制程序,要求把在键盘中断服务程序中读取到的键值编码换成键符的显示段码并把键符显示在LED上。
1)工作方式设定为8个字符显示,左入口,编码扫描键盘,双键锁定;2)对外部时钟(ALE)10分频以获得8279内部所要求的100KHz的基本频率;3)写显示RAM地址从0开始,地址自动加1;4)将显示RAM全部置1并置空FIFO存储器。
在实验板上,从8279 B3-B0、A3-A0输出的段选码经过反相驱动器74LS240与LED相连,因此,虽然LED为共阴极接法,但是写入显示RAM的段选码必须为共阳极段选码,才能显示对应的字符。
因为RL0无法回扫键值,首行键改接RL4。
键符为:RL4:7,8,9,B,F;(首行键接RL4)RL1:4,5,6,C,P;RL2:1,2,3,D,U;RL3:0,、,(小数点)A,E,L;键盘键值编码为:RL4:04H 0CH 14H 1CH 24H;(首行键接RL4)RL1:01H 09H11H 19H 21H;RL2:02H 0AH 12H 1AH 22H;RL3:03H 0BH 13H 1BH 23H;2.在程序1的基础上,把显示方式改为右入口的8位显示,重新编译和执行程序。
3.在程序1的基础上,修改写显示RAM命令,使得清零后,从第5个LED开始显示字符。
三、芯片应用特性见8279键盘扫描输入实验四、实验步骤1.线路连接及注意事项1)线路连接同8279键盘扫描输入实验2)注意事项从8279 B3-B0、A3-A0输出的短选码经过反相驱动器与LED相连。
2.程序设计设计程序关时关键要解决的问题是:如何把键盘编码转换成键符的显示段码。
在这里给出一种技巧性很强的方法。
键符的显示段码可以通过两次查表获取,先构造一个键符表:KEYTAB:DB XXH,04H,01H,00H,07H,XXH,XXH,XXHDB XXH,05H,02H,13H,08H,XXH,XXH,XXHDB XXH,06H,03H,0AH,09H,XXH,XXH,XXHDB XXH,0CH,0DH,0EH,0BH,XXH,XXH,XXHDB XXH,10H,11H,12H,0FH,XXH,XXH,XXHKEYTAB中XXH可为任意数,不影响程序正确执行。
实验四 8279键盘显示
实验四8279键盘/显示一.实验原理8279为可编程器件,可通过送入不同的命令,使8279执行不同的不同的功能。
其中8279状态口地址为0FF82H,8279数据口地址0FF80H,可以通过给8279状态口送入命令字使其执行不同的指令,在通过数据口送入要显示的数据,使8279控制的8个数码管显示送入的数据。
二.硬件连接电路图*由于实验箱内的电路图已经连接好了,所以在实验箱表面上不需要连接电路,只需确保跳冒接通了8279而不是8255即可。
在实习期间使用的LCA51ET软件内部的实验帮助中找到了8279的内部连接图,在分析完下图后,认为完全可以将其用做本次实验的硬件电路图。
三.软件流程图四.软件清单Z8279 EQU 0FF82HD8279 EQU 0FF80HORG 0000HAJMP MAIN MAIN: MOV SP,#40HLCALL INTI8279MOV R0,#70HMOV R6,#00HMOV R7,#08H LOOP1: MOV A,R6MOV @R0,AINC R0INC R6DJNZ R7,LOOP1LCALL INTI8279LCALL DISLEDLCALL NKBHITSJMP $INTI8279: MOV DPTR,#Z8279 ;8279的初始化指令MOV A,#0D1HMOVX @DPTR,AWAIT: MOVX A,@DPTRJB ACC.7,WAITMOV A,#00H ;方式为8个字符左端送入MOVX @DPTR,ASETB EARETNKBHIT: MOV DPTR,#Z8279 ;键盘扫描子程序,判断是否有MOVX A,@DPTR ; 键按下ANL A,#07HJNZ GETVALMOV A,#00HSJMP NKBHITGETVAL: MOV A,#40H ;有键被按下时,跳转至此MOVX @DPTR,A ;并将键值转化为码表序号MOV DPTR,#D8279MOVX A,@DPTRANL A,#3FHMOV DPTR,#LEDSEGMOVC A,@A+DPTRMOV DPTR,#D8279MOVX @DPTR,ASJMP NKBHITDISLED: PUSH DPL ;查表显示部分,将得到的码表PUSH DPH ;序号对应转化为七段码,并由PUSH ACC ;8279控制进行显示MOV DPTR,#Z8279MOV A,#90HMOVX @DPTR,AMOV R0,#70HMOV R7,#08HMOV DPTR,#D8279DL0: MOV A,@R0ADD A,#12MOVC A,@A+PCMOVX @DPTR,AINC R0DJNZ R7,DL0POP ACCPOP DPHPOP DPLRETLEDSEG: DB 3FH,06H,5BH,4FH,66H,6DHDB 7DH,07H,7FH,6FH,77H,7CHDB 39H,5EH,79H,71HEND一.功能说明在8个LED上依次显示1-8,然后显示按下的键的键值。
8279芯片
8279芯片8279芯片是一种控制器芯片,用于键盘和显示器的控制。
下面是关于8279芯片的1000字介绍。
8279芯片是Intel公司于1977年推出的一个专门用于键盘和显示器的控制器芯片。
这个芯片具有广泛的应用,被广泛用于PC机、电子仪器仪表和工控设备等领域。
8279芯片集成了键盘扫描和显示器控制的多种功能。
它能够接收来自键盘的输入信号,并将其转换为计算机可识别的形式。
同时,它还能够控制显示器的显示,通过向显示器发送相应的指令和数据来实现。
8279芯片具有许多优势和特点。
首先,它具有简单的接口,可以轻松地与其他设备连接。
其次,它具有多种模式,可以灵活地适应不同的应用需求。
例如,它可以通过扫描键盘的方式来获取按键信息,也可以通过中断的方式来获取按键信息,从而满足不同场景下的需求。
另外,它还具有键盘的防抖功能,可以有效地防止键盘抖动带来的误操作。
此外,8279芯片还具有多种显示模式,可以显示不同的字符和图形,方便用户进行信息的展示和交互。
最后,8279芯片还具有识别多个键同时按下的能力,可以实现多键同时输入的功能。
8279芯片的工作原理可以简单描述如下:首先,通过向芯片发送初始化命令来设置芯片的工作模式和功能。
然后,芯片开始从键盘扫描按键信号,并将其转换为计算机可识别的数据。
同时,芯片还会根据设定的显示模式向显示器发送指令和数据,实现相应的显示效果。
当有键按下时,芯片会产生一个中断信号,通知计算机有键按下。
计算机可以通过读取芯片的输出来获取具体按键的信息。
在应用中,8279芯片可以灵活地与其他设备和系统集成。
它可以通过并行接口或串行接口与计算机连接,也可以通过扩展接口与其他设备连接。
通过这种方式,可以实现键盘和显示器与计算机之间的方便和快速的数据交换和信息展示。
总的来说,8279芯片是一种功能强大且应用广泛的控制器芯片。
它的引入和应用,为键盘和显示器的控制提供了方便和灵活性,为人机交互提供了更好的体验。
8279按键显示汇报
键盘显示接口芯片8279 4.8279的命令字(8个,D5D6D7为特征位)
① 设置工作方式
0 0 0 特征位 D1 D0 K2 K1 K0 扫描方 式 0:编码扫描 1:译码扫描 显示方式 输入方 式
00:8字符,左入口 01:16字符,左入口 10:8字符,右入口 11:16字符,右入口
ห้องสมุดไป่ตู้
00:键盘,双键锁定 01:键盘,N键轮回 10:传感器扫描 11:选通输入
CNTL和引脚SHIFT的状态(两个独立附加的开关)一起形成键盘数据被送入
8279内部的FIFO(先进先出)存储器。键盘数据格式如下:
D7 最多88键盘,扩充后可 达644键定义 CNTL D6 SHIFT D5 SL2 D4 SL1 D3 SL0 D2 R2 D1 R1 D0 R0
引脚SHIFT 引脚CNTL的 的状态 状态
键盘显示接口芯片8279 2. 8279的内部结构图及各部分功能
键盘显示接口芯片8279
① I/O控制及数据缓冲器
CS WR RD A0
I/O控制操作
操作
0
0
0
0
1
1
0
1
写显示RAM(写数据)
写命令字
0
0
1
1
0
0
0
1
读FIFO RAM或显示RAM
读状态字
② 控制与定时寄存器及定时控制 控制与定时寄存器:寄存键盘及显示器工作方式,完成控制功能 定时控制:包括基本计数器,首级计数器是可编程N计数器,N由编程指定(2~ 31),对CLK分频,获得内部所需100kHz工作时钟;再分频,为键盘及显示器 扫描提供扫描时钟
键盘显示接口芯片8279
8279键盘显示C程序
8279键盘显示C程序8279键盘和显示程序#include#include#include#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=0x00 //8279键盘双键互锁,编码扫描,左端入口COM8279=0x12 //时钟分频设置,分频数为18COM8279=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;}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;}case 0xE0: //F号键赋值;{ P0=0x71;DATA8279=P0; break;}default:break;}}。
- 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 的电路逻辑分为芯片 接口控制逻辑、键盘接口控制逻辑和显示接口控制逻辑三部分来介绍。