8279键盘和显示程序
实验八8279显示实验

实验八8279显示实验
一.实验要求
利用8279键盘显示接口电路,做成一个电子钟。
该钟使用T1作50ms的定时中断。
利用8279可实现对键盘/显示器的自动扫描,以减轻CPU负担,其有显示稳定、程序简单、不会出现误动作等特点。
本实验利用8279实现显示扫描自动化。
8279操作命令字较多,根据需要来灵活使用,通过本实验可初步熟悉使用方法。
电子钟做成如下格式:
XX XX XX 由左向右分别为: 时、分、秒。
二.实验目的
1.掌握在8031系统中扩展8279键盘显示接口的方法。
2.掌握8279工作原理和编程方法。
3.进一步掌握中断处理程序的编程方法。
三.实验电路及连线
8279电路部分与实验机监控所用电路相同,地址已确定如下
8279状态口地址为0FF82H;
8279数据口地址为0FF80H;
K10的10个短路套置于8279方式端。
四.实验说明
8279通用接口芯片,根据应用需要可以在多种模式下工作,详见有关手册。
五.实验框图
程序框图:
P79T1.ASM主程序框图
INIT8279子程序框图INIT_T1中断子程序框图
DISLED子程序框图DISPLAY子程序框图。
8279的资料

第九节键盘与LED显示电路应用设计键盘与显示器是机电一体化系统中典型的人-机接口。
通过键盘,操作者可向控制系统发出指令或输入数据,系统的各种信息又可通过显示设备反馈给操作者。
键盘与显示器是实现人-机交互的关键部件。
键盘主要有独立式和矩阵式两种,显示器主要有LED、LCD和CRT等。
本节主要介绍矩阵式键盘与LED显示器。
2.软件设计Intel公司的8279芯片就显示出了其独特的优点。
Intel 8279是一种通用的可编程键盘、显示器接口芯片,它能完成键盘输入和显示控制两种功能。
键盘部分提供扫描工作方式,可与64个按键的矩阵键盘进行连接,能对键盘实行不间断的自动扫描,自动消除抖动,自动识别按键并给出键值。
显示部分为发光二极管、荧光管等显示器件提供了按扫描方式工作的接口电路,它为显示器提供多路复用信号,可显示多达16位的字符。
1.8279的引脚功能8279的引脚按其功能可分为三部分:第一部分面向CPU,第二部分面向键盘,第三部分面向显示器,如图5-63所示。
2.8279的键盘管理(1)SL3~SL0采用译码扫描当设定8279的扫描线SL3~SL0工作在译码扫描方式时,SL3~SL0四个引脚轮流输出负脉冲。
组成矩阵键盘时可将这四根输出线作为行扫描线,如图5-64所示。
采用译码扫描时,提供的行线最多只有4根,与8根列线相交,只能得到32个按键,键的个数不多。
在图5-64中,矩阵键盘由4行6列组成,共有24个键,键值计算如下:其中:CNTL=SHIFT=0(图中已将此二引脚接地);NNN表示行的位置,其值为SL i=0时的标号i,即NNN=i(写成二进制);KKK表示列的位置,其值为RL j=0时的标号j,即KKK=j (写成二进制)。
图5-65 8279扫描线编码扫描管理键盘3.8279的显示管理8279可用来管理16位×8段的LED或荧光管。
它的内部有专门用于存储显示数据的RAM区(显示RAM),共有16个字节,地址排列从00H到0FH。
单片机芯片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地址单元
键盘显示接口芯片8279的应用

1.8279功能介绍8279 是可编程的键盘、显示接口芯片。
它既具有按键处理功能,又具有自动显示功能,在单片机系统中应用很广泛。
8279内部有键盘 FIFO(先进先出堆栈)/传感器,双重功能的 8*8=64BRAM,键盘控制部分可控制 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:中断请求输出线,高电平有效。
图 3.1 8279 引脚图/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 时将显示全熄灭。
2.8279的工作方式8279 有三种工作方式:键盘方式、显示方式和传感器方式。
(1)键盘工作方式8279 在键盘工作方式时,可设置为双键互锁方式和 N 键循回方式。
8279使用指南

键盘显示接口芯片8279使用指南8279是Intel公司设计生产的通用可编程键盘/显示器接口芯片,可代替微处理器完成键盘和显示器的控制,不仅可以大大节省CPU对键盘/显示器的操作时间,从而减轻CPU的负担,而且显示稳定,程序简单,不会出现误动作。
8279具有如下主要特征:能同时执行键盘和显示器操作;扫描式键盘工作方式;有8个键盘FIFO(先进先出)存储器;去抖动的二键锁定或N键巡回功能;两个8位或16位的数字显示器;可左/右输入的16字节显示用RAM;键盘输入可产生中断信号;具有扫描式传感器工作方式;用选通方式送入输入信号;单个16字符显示器;可编程扫描定时;工作方式可由CPU编程等。
一8279的内部结构及引脚8279包括键盘输入和显示输出两部分。
键盘部分提供扫描工作方式,可以接64键行列矩阵键盘,也可以与传感器阵列相连,能够自动去抖动,识别键盘上闭合键的键号,并具有双键同时按下保护及N键同时按下保护功能。
显示部分可为LED或LCD七段显示器,提供了按扫描方式工作的接口,为显示器提供多路复用驱动信号,可显示8位和16位字符,属动态显示技术,省电、省元件,又可保证足够的显示时间,适合人眼观察和大脑记忆。
1、内部结构图1为8279的内部结构图,各部件的作用简要说明如下:图1 8279的内部结构图(1)I/O控制和数据缓冲器AD0~AD7为地址/数据复用总线。
双向三态数据缓冲器将内部总线和外部总线AD0~AD7连接,用于传送CPU和8279之间的命令、数据和状态。
(2)控制逻辑定时控制含有一些计数器,其中有一个可编程的5位计数器,对外部输入时钟CLK进行分频,产生100kHz的内部定时信号。
外部时钟输入信号的周期不小于500ns。
控制与定时寄存器用以存储键盘及显示器的工作方式,锁存操作命令,通过译码产生相应的控制信号,使8279的各个部件完成一定的控制功能。
(3)键输入控制键输入控制部件完成对键盘的自动扫描,锁存RL0~RL7的键输入信息,搜索闭合键,去除键的抖动,并将键盘输入数据写入内部先进先出(FIFO)存储器RAM。
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键盘显示实验

8279键盘显示实验一、实验目的与要求了解8279的内部结构、工作原理;了解8279与8088的接口逻辑;掌握对8279的编程方法,掌握使用8279扩展键盘、显示器的方法。
认真预习,做好实验前的准备工作,自行编写程序,填写实验报告二、实验设备STAR系列实验仪一套、PC机一台三、实验内容1、编写程序:利用8279实现对F4区的键盘扫描,将键号显示于8位数码管上2、按图连线,运行程序,观察实验结果,能熟练运用8279扩展显示器和键盘。
四、实验原理图五、实验步骤1、连线说明:2、运行程序,观察实验结果(任意按下F4区4X4键盘几个键,它上面的8个LED显示器会将按键的编码从左至右依次显示出来),可依此验证对8279芯片操作的正确性。
六、演示程序.MODEL TINYCMD_8279 EQU 0BF01H ;8279命令字、状态字地址DATA_8279 EQU 0BF00H ;8279读写数据口的地址.STACK 100.DATAKEYCOUNT DB ?LED_TAB DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8HDB 080H,90H,88H,83H,0C6H,0A1H,86H,8EH.CODESTART: MOV AX,@DATAMOV DS,AXNOPCALL INIT8279 ;初始化子程序MOV KEYCOUNT,0START1: 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 AL,34H;可编程时钟设置,设置分频系数(20分频)OUT DX,ALMOV AL,0;8*8字符显示,左边输入,外部译码键扫描方式OUT DX,AL; 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 ENDPEND START七、实验扩展及思考重新编写软件实验二,自己编写键扫描、显示程序。
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个键 的键盘 , 它的主
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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 int
uint keyval //定义键内码传递参数uint time //定义延时参数
void delay(uint time)
void key(void)
void main()
{
delay(1300) //开机延时
COM8279 = 0xD2 //清除RAM和FIFO delay(1)
EA=1
EX1=1 //开总中断,开外部中断1;IT1=1 //外部中断1选用下降沿COM8279=0x03 //8279键盘N键巡回,编码扫描,左端入口COM8279=0x2a //时钟分频设置,分频数为10
COM8279=0x70 //设置读显示命令
COM8279=0x90; //设置写显示命令
while(1)
}
void delay (uint time) //传递参数为time
{
uchar j
while (time--) //用time-1来进行循环
{
for (j=100;j>0;j--) //用j来进行125次循环,大约8us }
}
}
void intsvr1(void) interrupt 2 using 1
{
keyval=DATA8279
key()
}
//按键确认程序
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;
}
}。