8279键盘显示C程序
实验五 键盘显示接口芯片8279的应用-1 8279功能介绍
1.8279功能介绍图3.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:中断请求输出线,高电平有效。
/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用法讲解
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可编程键盘显示控制器j[1]
命令和状态字--键盘 显示方式设置命令 键盘/显示方式设置命令 键盘
双键锁定和N键轮回是两种不同的多键同时按下保 护方式。 双键锁定为两键同时按下提供保护,在消抖动周期内, 如果有两键同时被按下,则只有其中的一键弹起,而 另一键在按下位置时,才能被认可。 N键轮回为N键同时按下提供保护,当有若干个键同时 按下时,键盘扫描能根据发现它们的次序,依次将它 们的状态送入FIFO RAM。
8279内部结构—键盘功能模块 内部结构 键盘功能模块
在FIFO存储器中的键盘数据格式如下:
D7 CTRL/STB D6 SHIFT D5 D4 D3 扫描 D2 D1 D0 回馈
CTRL和SHIFT(D7和D6)的状态由两个独立的附加开 关输入信号线CTRL/STB和SHIFT的状态来决定, D5、D4、D3三位来自扫描计数器,是按键的行编码; D2、D1、D0三位则是来自列计数器,它们是根据回馈 信号而确定的按键的列编码。
命令和状态字--键盘 显示方式设置命令 键盘/显示方式设置命令 键盘
KKK三位用来设定键盘工作方式: 000 编码扫描键盘----双键锁定 001 译码扫描键盘----双键锁定 010 编码扫描键盘----N键轮回 011 译码扫描键盘----N键轮回 100 编码扫描传感器矩阵 101 译码扫描传感器矩阵 110 选通输入,编码显示扫描 111 选通输入,译码显示扫描
命令和状态字--时钟编程命令
命令特征位:D7D6D5=001 命令格式:001PPPPP 001PPPPP 将来自CLK的外部时钟进行PPPPP分频(2-31)。 8279内部时钟频率等于外部时钟频率除以分频数。
命令和状态字--读FIFO/传感器 命令 传感器RAM命令 传感器
命令特征位:D7D6D5=010 命令格式:010 AI X AAA 该命令字只在传感器矩阵方式时使用,在读传感 器数据之前设定将要读出的传感器RAM地址,AI为自 动增量特征位。若AI=1,则每次读出传感器RAM后, 地址将自动加1,使地址指针指向顺序的下一个存储单 元。这样,下一次读数便从指针所指的地址读出,而 不必重新设置读FIFO/传感器RAM命令。 在键盘矩阵工作方式中, 在键盘矩阵工作方式中,由于键值读出操作严格 按照先入先出的顺序,因此不必使用这条命令。 按照先入先出的顺序,因此不必使用这条命令。
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;}}。
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
键盘/显示器接口实验
6、实验接线:
内容1) CS8279CS210—217, 8279控制口地址为212H,8279数据口地址为210H 编程并全速运行,观察数码管的变化。
内容2) CS8279CS210—217, 8279控制口地址为212H,8279数据口地址为210H 编程并全速运行,每按一键时,观察数码管的变化。
键盘/显示器接口实验
2)参考程序(内容1))
DL1: DL2: DL3: MOV BH,251 MOV AH,248 NOP NOP DEC AH CMP AH,0 JNZ DL3 DEC BH CMP BH,0 JNZ DL2 DEC BL CMP BL,0 JNZ DL1 POP BX POP AX RET CODE ENDS END START
2、实验目的
掌握8279接口芯片的工作原理;学习LED显示器的使 用方法;熟悉8279与显示器接口方法;熟悉8279与键盘接 口的方法;学习在8086/8688系统中扩展键盘显示接口的 方法及编程方法。
键盘/显示器接口实验
3、实验设备与仪器
AEDK8688ET教学实验机一台,
PC机一台,稳压电源一台。
7 4L S0 7
1 7 4L S0 7
3 7 4L S0 7
5 7 4L S0 7
9 7 4L S0 7
7 4L S0 7
7 4L S0 7
1 7 4L S0 7
3 7 4L S0 7
5 7 4L S0 7
9 7 4L S0 7
7 4L S0 7
7 4L S0 7
1 7 4L S0 7
3 7 4L S0 7
键盘/显示器接口实验
1、实验内容(1)3)必做)
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。
实验5键盘显示控制器8279应用实验
实验5键盘显示控制器8279应用实验实验五键盘显示控制器 9 8279 应用实验一、实验目的 1、掌握 51 系统中,扩展 8279 键盘显示接口的方法。
2、掌握 8279 工作原理和编程方法。
二、预备知识 8279A 是一种通用的可编程键盘/显示器接口器件,可对 64 个开关矩阵组成的键盘进行自动扫描,接收键盘上的输入信息,存入内部的 FIFO 存放器,并在有键输入时,CPU 请求中断。
8279A 内部还有一个 16×8 的显示缓冲器,能对 8 位或 16 位 LED 自动扫描,使显示缓冲器的内容在 LED 上显示出来。
1 1 、引脚功能 DB0~DB7:双向数据总线,以便和 CPU 之间传递命令、数据和状态。
CLK :时钟输入线,以产生内部时钟。
RESET :复位线,高电平有效。
复位后,8279A 置为 16 位显示左边输入,编码扫描键盘,时钟系数为 31。
/CS :片选,低电平有效。
A0 :地址输入线,用以区分数据线传送的是数据还是命令。
A0=0 传送的是数据;A0=1传送的是命令。
/RD :读线,低有效,内部缓冲器信息送 DB0~DB7。
/WR :写线,低有效。
收数据总线上的信息写入内部缓冲区。
IRQ :中断请求输出线,高有效。
当 FIFO RAM 中有键输入数据时,IRQ 升为高电平,向 CPU 请求中断。
CPU 读出 FIFO RAM 时,IRQ 变为低电平,假设 RAM 中数据还有,IRQ 又返回高电平,直至RAM 中为空,IRQ 才保持低电平。
SL0~SL3 :输出扫描线,用以对键盘/传感器矩阵和显示器进行扫描。
RL0~RL7 :键盘/传感器矩阵的行(列)数据输入线。
其内部有拉高电阻,使之保持高电平。
SHIFT :换档输入线,内部有拉高电阻,使之保持高电平。
TL/STB:控制/选通输入线,内部有拉高电阻,使之保持高电平。
OUTA0~OUTA3:四位输出口。
OUTB0~ OUTB3:四位输出口。
单片机8279键盘显示实验
6.4 可编程键盘/显示器接口——Intel 8279Intel 8279是一种可编程键盘/显示器接口芯片,它含有键盘输入和显示器输出两种功能。
键盘输入时,它提供自动扫描,能与按键或传感器组成的矩阵相连,接收输入信息,它能自动消除开关抖动并能对多键同时按下提供保护。
显示输出时,它有一个16×8位显示RAM,其内容通过自动扫描,可由8位或16位LED数码管显示。
1.8279的内部结构和工作原理8279的内部结构框图如图6.28所示。
下面分别介绍电路各部分的工作原理。
1) I/O控制及数据缓冲器数据缓冲器是双向缓冲器,连接内外总线,用于传送CPU和8279之间的命令或数据,对应的引脚为数据总线D0~D7。
I/O控制线是CPU对8279进行控制的引线,对应的引脚为数据选择线A0、片选线、读/写信号线和。
2) 控制与定时寄存器及定时控制控制与定时寄存器用来寄存键盘及显示工作方式控制字,同时还用来寄存其它操作方式控制字。
这些寄存器接收并锁存各种命令,再通过译码电路产生相应的信号,从而完成相应的控制功能。
与其对应的引脚为时钟输入端CLK及复位端RESET。
定时控制电路由N个基本计数器组成,其中,第一个计数器是一个可编程的N级计数器,N为2~31之间的数。
定时控制经软件编程,将外部时钟CLK分频,得到内部所需的100 kHz 时钟,为键盘提供适当的扫描频率和显示扫描时间。
与其相关的引脚是显示熄灭控制端。
3) 扫描计数器扫描计数器由键盘和显示器共用,为它们提供扫描信号。
扫描计数器有两种工作方式:编码方式和译码方式。
按编码方式工作时,计数器作二进制计数,4位计数状态从扫描线SL0~SL3输出,经外部译码器译码后,为键盘和显示器提供扫描信号。
按译码方式工作时,扫描计数器的最低两位被译码后,从SL0~SL3输出,提供了4选1的扫描译码。
与其相关的引脚是扫描线SL0~SL3。
4) 回复缓冲器、键盘去抖及控制在键盘工作方式下,回复线作为行列式键盘的列输入线,相应的列输入信号称为回复信号,由回复缓冲器缓冲并锁存。
实验十二 8279键盘显示实验
实验十二 8279键盘显示实验(电子秒表)一.实验要求利用实验机上提供的8279键盘电路,数码显示电路,设计一个电子钟,用小键盘控制电子钟的启停及初始值的预值。
电子钟做成如下格式:XX XX XX XX 由左向右分别为: 时、分、秒、百分之一秒1.C键:清除,显示00.00.00.002.A键:启动,电子钟计时3.D键:停止,电子钟停止计时4.B键:设置初值:由左向右依次输入预置的时、分、秒、百分之一秒值,同时应具有判断输入错误的能力,若输入有错,则显示:00.00.00.00按B键即可重新输入预置值:5.E键:程序退出。
二.实验目的1.进一步掌握8279键盘显示电路的编程方法。
2.进一步掌握定时器的使用和编程方法。
3.进一步掌握中断处理程序的编程方法。
三.实验电路及连线CS8279接8700H。
模块中的十个短路套都套在8279侧。
四.实验说明8279通用接口芯片,根据应用需要可以在多种模式下工作,详见有关手册。
五.实验程序框图主程序框图SET_T子程序框图 GETWORD子程序框图六.实验程序见:Z8279 EQU 08701H ;8279 状态/命令口地址D8279 EQU 08700H ;8279 数据口地址LEDMOD EQU 00H ;左边输入八位字符显示;外部译码键扫描方式,双键互锁LEDFEQ EQU 2FH ;扫描速率LEDCLS EQU 0C1H ;清除显示 RAMLEDWR0 EQU 80H ;设定的将要写入的显示RAM地址READKB EQU 40H ;读 FIFO RAM 地址 0 的命令字ORG 0000HAJMP STARTORG 001BH ;INT T1 入口地址AJMP INT_T1ORG 0040HSTART:MOV SP,#60HLCALL INIT8279 ;初始化8279MOV R3,#0H ;时MOV R2,#0H ;分MOV R1,#0H ;秒MOV R0,#0H ;10毫秒MOV R6,#0FFH ;标志MOV TMOD,#10HMOV TL1,#00H ;10毫秒的时间常数MOV TH1,#0DCHLCALL DIS_mSSETB ET1SETB EA ;允许中断WAIT:LCALL GETKEY ;读键盘CJNE A,#0FFH,CONT ;判断是否有键输入MOV A,BCJNE A,#3CH,KEY_G ;输入键是'C',转CLEAR_TLCALL CLEAR_TKEY_G: CJNE A,#3AH,KEY_D ;输入键是'G',转START_T LCALL START_TKEY_D: CJNE A,#3DH,KEY_P ;输入键是'D',转STOP_T LCALL STOP_TKEY_P: CJNE A,#3BH,KEY_E ;输入键是'P',转SET_T LCALL SET_TKEY_E: CJNE A,#3EH,CONT ;输入键是'E',转MONITOR AJMP MONITORCONT: CJNE R6,#0FFH,WAIT ;若无秒标志则循环LCALL DISPLAY ;显示时间MOV R6,#0 ;清标志SJMP WAIT ;循环MONITOR:NOPSJMP $ ;等待回到监控CLEAR_T: ;时间清零子程序CLR TR1 ;关计数器MOV R3,#0H ;小时清零MOV R2,#0H ;分钟清零MOV R1,#0H ;秒清零MOV R0,#0H ;10毫秒清零MOV R6,#0FFH ;置秒标志LCALL DIS_mS ;显示毫秒RETSTART_T: ;电子钟计时子程序SETB TR1RETSTOP_T: ;电子钟停止计时子程序CLR TR1RETSET_T: ;设置初值子程序CLR TR1 ;关计数器MOV R4,#7LCALL GETWORD ;读小时数CJNE A,#0FFH,INVALID ;判断输入合法性MOV A,BADD A,#232JC INVALID ;判断输入小时值 < 24 MOV A,BMOV B,#10DIV ABSWAP AADD A,BMOV R3,A ;保存输入的值MOV R4,#5LCALL GETWORD ;读分钟数CJNE A,#0FFH,INVALID ;判断输入合法性MOV A,BADD A,#196JC INVALID ;判断输入分钟数 < 60 MOV A,BMOV B,#10DIV ABSWAP AADD A,BMOV R2,A ;保存输入的值MOV R4,#3LCALL GETWORD ;读分钟数CJNE A,#0FFH,INVALID ;判断输入合法性MOV A,BADD A,#196JC INVALID ;判断输入分钟值 < 60 MOV A,BMOV B,#10DIV ABSWAP AADD A,BMOV R1,A ;保存输入的值MOV R4,#1LCALL GETWORD ;读10毫秒数CJNE A,#0FFH,INVALID ;判断输入合法性MOV A,BMOV B,#10DIV ABSWAP AADD A,BMOV R0,A ;保存输入的值AJMP SET_TOKINVALID:LCALL CLEAR_T ;时间清零SET_TOK:LCALL DIS_mS ;显示10毫秒LCALL DISPLAY ;显示时间RETGETWORD: ;读数子程序WKEY1: LCALL GETKEY ;读键盘CJNE A,#0FFH,WKEY1 ;无键输入,则再读MOV A,BADD A,#0C6HJC ERROR1 ;判断输入是否大于9MOV A,BSUBB A,#30HJC ERROR1 ;判断输入是否小于0MOV R5,ALCALL DISLED ;显示输入的字符MOV B,#10MUL ABPUSH ACC ;保存输入的值WKEY2: LCALL GETKEY ;读键盘CJNE A,#0FFH,WKEY2 ;无键输入则再读MOV A,BADD A,#0C6H ;判断输入是否大于9JC ERROR2MOV A,BSUBB A,#30H ;判断输入是否小于0JC ERROR2DEC R4MOV R5,ALCALL DISLED ;显示输入的字符MOV B,APOP ACCADD A,BMOV B,A ;把得到的值存在BMOV A,#0FFH ;置合法输入标志AJMP KEYOKERROR2: POP ACCERROR1: MOV A,#0 ;置非法输入标志KEYOK: RETINIT8279: ;8279初始化子程序PUSH DPH ;保存现场PUSH DPLPUSH ACCLCALL DELAY ;延时MOV DPTR ,#Z8279MOV A,#LEDMOD ;置8279工作方式MOVX @DPTR,AMOV A,#LEDFEQ ;置键盘扫描速率MOVX @DPTR,AMOV A,#LEDCLS ;清除 LED 显示MOVX @DPTR,APOP ACC ;恢复现场POP DPLPOP DPHRET;读取键盘子程序;输入: 无 ; 输出: B: 读到的键码 A: 按键的标志GETKEY: PUSH DPH ;保存现场PUSH DPLPUSH PSWMOV DPTR,#Z8279MOVX A,@DPTR ;读8279状态ANL A,#07H ;屏蔽D7-D3JNZ GETVAL ;判断是否有键输入MOV A,#0H ;置标志(无键输入)SJMP NKBHITGETVAL: MOV A,#READKB ;读 FIFO RAM 命令MOVX @DPTR,AMOV DPTR,#D8279MOVX A,@DPTR ;读键ANL A,#3FH ;屏蔽 SHIFT 和 CTRL 键MOV DPTR,#KEYCODE ;键码表起始地址MOVC A,@A+DPTR ;查表MOV B,A ;置返回键值MOV A,#0FFH ;置标志(有键输入)NKBHIT: POP PSW ;恢复现场POP DPLPOP DPHRET;显示字符子程序;输入: R4,位置 R5,值DISLED: PUSH DPH ;保存现场PUSH DPLPUSH ACCMOV A,#LEDWR0 ;置显示起始地址ADD A,R4 ;加位置偏移量MOV DPTR,#Z8279MOVX @DPTR,A ;设定显示位置MOV DPTR,#LEDSEG ;置显示常数表起始位置MOV A,R5MOVC A,@A+DPTR ;查表MOV DPTR,#D8279MOVX @DPTR,A ;显示数据POP ACC ;恢复现场POP DPLPOP DPHRETDELAY: ;延时子程序PUSH 0 ;保存现场PUSH 1MOV 0,#0HDELAY1: MOV 1,#0HDJNZ 1,$DJNZ 0,DELAY1POP 1 ;恢复现场POP 0RETDIS_mS:MOV A,R0ANL A,#0FHMOV R5,AMOV R4,#0LCALL DISLED ;显示10毫秒低位MOV A,R0SWAP A ;高低半字节交换ANL A,#0FHMOV R5,AMOV R4,#1LCALL DISLED ;显示10毫秒高位RETINT_T1: ;INT_T1中断服务子程序PUSH DPH ;保护现场PUSH DPLPUSH ACCPUSH PSWCLR TR1MOV TL1,#00H ;10毫秒定时常数MOV TH1,#0DCHSETB TR1MOV A,R0ADD A,#1 ;10毫秒数加 1DA AMOV R0,ALCALL DIS_mS ;显示10毫秒CJNE R0,#0,EXIT ;判断10毫秒=0 MOV R6,#0FFH ;置秒标志CJNE R1,#59H,SECOND ;判断秒=59 MOV R1,#99HCJNE R2,#59H,MINUTE ;判断分=59 MOV R2,#99HCJNE R3,#23H,HOUR ;判断时=23 MOV R3,#99HHOUR:MOV A,R3ADD A,#1 ;时加1DA AMOV R3,AMINUTE:MOV A,R2ADD A,#1 ;分加1DA AMOV R2,ASECOND:MOV A,R1ADD A,#1 ;秒加1DA AMOV R1,AEXIT:POP PSW ;恢复现场POP ACCPOP DPLPOP DPHRETI ;中断返回DISPLAY:MOV A,R3ANL A,#0FHADD A,#10HMOV R5,AMOV R4,#6LCALL DISLED ;显示小时低位MOV A,R3SWAP AANL A,#0FHMOV R5,AMOV R4,#7LCALL DISLED ;显示小时高位MOV A,R2ANL A,#0FHADD A,#10HMOV R5,AMOV R4,#4LCALL DISLED ;显示分钟低位MOV A,R2SWAP AANL A,#0FHMOV R5,AMOV R4,#5LCALL DISLED ;显示分钟高位MOV A,R1ANL A,#0FHADD A,#10HMOV R5,AMOV R4,#2LCALL DISLED ;显示秒低位MOV A,R1SWAP AANL A,#0FHMOV R5,AMOV R4,#3LCALL DISLED ;显示秒高位RET;LED显示常数表LEDSEG: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;'0,1,2,3,4,5,6,7'DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;'8,9,A,B,C,D,E,F'DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,087H ;'0.,1.,2.,3.,4.,5.,6.,7.' DB 0FFH,0EFH,0F7H,0FCH,0B9H,0DEH,0F9H,0F1H ;'8.,9.,A.,B.,C.,D.,E.,F.' DB 6DH,02H,08H,00H,59H,0FH,76H ;'U,-,_, ,I,O,P, ';键盘键码表KEYCODE:DB 30H,31H,32H,33H,34H,35H,36H,37H ;'1,2,Q,W,A,S,+,Z'DB 38H,39H,3AH,3BH,3CH,3DH,3EH,3FH ;'3,4,E,R,D,F,X,C'ENDF。
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。
如何利用89C51单片机与8279实现键盘接口电路显示
如何利用89C51单片机与8279实现键盘接口电路显示悬赏分:30 - 提问时间2008-5-24 16:12问题为何被关闭因为最大长度为10000mm。
因此,显示器的最小位数应为五位,且用2*8的键盘,另还有7407驱动器以及译码器最好用两片等器件连接而成,如谁有这方面的请发到我邮箱内:*******************.提问者:dzxxkxyjsh - 助理二级答复共1 条第六章单片机接口技术应用在设计各种单片机应用系统中,还需扩展很多外部接口器件才能充分发挥单片机的智能控制功能。
如扩展键盘与显示器件接口,可实现人机对话功能;扩展A/D转换接口,可实现对外部各种模拟信号的检测与转换;扩展D/A转换接口可将数字信号转换为模拟信号,从而完成对控制对象的驱动。
本章将主要介绍常见的键盘、显示(LED、LCD)、A/D和D/A 转换接口电路。
第一节键盘接口电路键盘是计算机最常用的输入设备,是实现人机对话的纽带。
按其结构形式可分为非编码键盘和编码键盘。
编码键盘采用硬件方法产生键码。
每按下一个键,键盘能自动生成键盘代码,键数较多,且具有去抖动功能。
这种键盘使用方便,但硬件较复杂,PC机所用键盘即为编码键盘。
非编码键盘仅提供按键开关工作状态,其键码由软件确定,这种键盘键数较少,硬件简单,广泛应用于各种单片机应用系统,本书主要介绍非编码键盘的设计与应用。
一、独立式键盘按照键盘与单片机的连接方式可分为独立式键盘与矩阵式键盘。
独立式键盘相互独立,每个按键占用一根I/O口线,每根I/O口线上的按键工作状态不会影响其他按键的工作状态。
这种按键软件程序简单,但占用I/O口线较多(一根口线只能接一个键),适用于键盘应用数量较少的系统中。
图6-1为4个独立式按键的应用电路。
其键盘程序如下:1.键闭合测试,检查是否有键闭合KCS:MOV P1,#0FFHMOV A,P1CPL AANL A,#0FHRET若有键闭合,则(A≠0), 若无键闭合,则(A=0)。
4.2 键盘显示电路设计
4.2 通用键盘显示电路设计4.2.1通用可编程键盘和显示器的接口电路芯片8279通用键盘显示电路采用Intel公司生产的通用可编程键盘和显示器的接口电路芯片8279。
8279可以实现对键盘和显示器的自动扫描,识别闭合键的键号,完成显示器动态显示,可以节省CPU处理键盘和显示器的时间,提高CPU的工作效率。
另外,8279与单片机的接口简单,显示稳定,工作可靠。
所以使用8279的通用键盘显示电路可使系统设计简单化。
1. 8279芯片的信号引脚及功能8279 采用40脚双列直插式封装,引脚封装形式如图4.2.1所示。
图4.2.1 8279引脚分布图其中:DB0~DB7:双向数据总线。
在CPU与8279间做数据与命令的传送。
CLK:8279的系统时钟,100KHz为最佳选择。
RESET:复位信号,输入线,当RESET=1时,8279复位,其复位状态为:16个字符显示,编码扫描键盘——双键锁定,程序时钟编码1。
CS:芯片选择信号,低电平有效。
A0:区分信息的特征位。
A0=1时,读取状态标志位或写入命令;A0=0时,读写一般数据。
RD:读取控制线。
RD=0,8279会送数据至外部总线。
WR:写入控制线。
WR=0,8279会从外部总线捕捉数据。
IRQ:中断请求输出线,高电平有效。
在键盘工作方式中,当FIFO传感器RAM中有数据时为“1”,CPU每读一次就变为0,如果RAM中仍有数据则IRQ又变为“1”。
在传感器工作方式中,传感器矩阵无论哪里发生变化都会使IRQ为“1”。
SL0~SL3:扫描按键开关或传感器矩阵及显示器,可以是编码模式或解码模式。
RL0~RL7:回复输入线,它们是键盘或传感器的列(或行)信号输入线;平时保持为“1”,当矩阵结点上有键(开关)闭合时变为“0”。
SHIFT:移位信号输入线,高电平有效。
通常用来扩充键开关的功能,可以用作键盘上、下档功能键。
在传感器方式和选通方式中,SHIFT无效。
CNTL/STB:控制/选通输入线,高电平有效。
zlg7290
单片机接口技术
62-6
DM
一、 ZLG7290的特点
U.
1、 I2C 串行接口,方便与处理器接口; 2、 可驱动8位共阴数码管或64只独立LED 和 64 个按键; 3、 扫描位数可控,任一数码管闪烁可控; 4、 可检测任一键的连击次数; 5、 无需外接元件即直接驱动LED。
单片机接口技术
62-7
单片机接口技术
62-9
DM
zlg7290应用实例
U.
单片机接口技术
8
62-10
DM
三、寄存器
U.
包括 系统状态、键盘部分、显示部分、命令接口的寄存器。
单片机接口技术
62-11
DM
系统状态部分的寄存器
U. 1、系统寄存器(SystemReg):地址00H,复位值F0H;
保存ZLG7290 系统状态。
支持自动增址功能 访问一个寄存器后,寄存器子地址sub address自动加1; 访问最后一寄存器子地址17H后,寄存器子地址翻转为00H。
单片机接口技术
62-17
DM
五、指令
U.
ZLG7290 提供两种控制方式:寄存器映象控制和命令解释控制。
命令解释控制是指通过解释命令缓冲区CmdBuf0CmdBuf1 中的指令,间接访问底层寄存器,实现扩展控制功能。
连击次数计数器RepeatCnt 可区别出单击或连击。
单片机接口技术
62-8
DM
2、显示部分
U.
在每个显示刷新周期,ZLG7290 按照扫描位数寄存器(ScanNum) 指定
的显示位数N,把显示缓存(DpRam0DpRamN)的内容按先后循序送入
LED 驱动器实现动态显示;
[整理]8279键盘显示
位表示由于CLEAR DISPLAY或CLEAR ALL命令尚末完成其消除操作而使显示
RAM尚不可用.
显示功能块:
显示功能块包括:显示寄存器,16X8显示RAM,显示地址寄存器.
显示RAM和显示寄存器:8279内部有16X8的显示RAM,通过显示寄存器和两个四
(4)加强学生对单片机在应用设计中的感性认识,为日后的单片机应用打基础。
2、课程设计的内容和要求
(1)实验要求:
编制程序,利用8279及键盘显示接口电路,编程实现按键的读取,并将按键值显示在数码管上。
(2)实验目的:
1)掌握在MSC-51系统中扩展8279键盘显示接口的方法。
2)掌握8279工作原理和编程方法。
RD:读信号输入线,低电平有效,将缓冲器读出,数据送往外部总。
WR:写信号输入线,低电平有效,将缓立器读出,将数据从外部数据总线写入8279的缓冲器。
RL2—140 --VCC
RL3—239 --RL 1
CLK-- 338 --RL 0
IRQ—437 --CNTL/STB
RL4-- 536 --SHIFT
(3)设计要求:
1)实验电路及连线。
2)给出实验程序设计框图及程序清单。
3)验证实验的可靠性。
一、8279芯片
8279是一种可编程的键盘/显示器接口芯片。
(1)8279的内部结构图
(2)8279的内部结构及功能
按其功能分为:键盘功能块;显示功能块;控制功能块;与CPU接口功能块
控制功能块:
控制和定时寄存器,定时和控制,扫描计数器三部分,它主要是用来控制键盘和
攀枝花学院电信学院专业基础综合实验
可编程计算机键盘显示器接口电路设计
显示器常作为单片机系统中最简单的输出设备,用以显示单片机系统的运行结果与运行状态等。常用的显示器主要有LED数码显示器、LCD液晶显示器和CRT显示器。在单片机系统中,通常用LED数码显示器显示各种数字或符号。由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。本节以LED为例,介绍其结构、工作原理及与单片机的接口技术。
DSP1: MOV A , @R0
MOV DPTR , #TABL
MOVC A , @A+DPTR ;查表求段码
MOV R1 , #0FEH ;选1#377
MOVX @R1 , A ;送段码
MOV R1 , #0FDH ;选2#377
MOV A , R2
MOVX @R1 , A ;输出位码,最左面管亮
3.LED显示器接口:
一.LED原理简述
LED显示块是用发光二极管显示字段,单片机应用系统常用的是七段LED,如下图,它有其阴极和共阳极两种:
+5V
a a
b
b
c c
d
d
e e
f
f
g g
h h
共阴极 共阳极
例如,要显示‘0’字符,对于共阴极管应输出段码:
h g f e d c b a a
0 0 1 1 1 1 1 1
查询I/O输入线0有效
即为0者该线上键闭合 地
+5V
K3
K2
K1
K0
(b)中断式电路
任一键按下则INT0触发中断 地
在中断服务程序中查询哪一键按下
独立式按键结构的优点是配置灵活,软件简单,缺点是使用I/O口线多,适于按键数量不多时使用。
8279键盘显示
(1)8279 电路逻辑如图 2 所示。下面按功能把 8279 的电路逻辑分为芯片 接口控制逻辑、键盘接口控制逻辑和显示接口控制逻辑三部分来介绍。
图 2. internal block diagram
1)芯片接口控制逻辑,即实现 8279 和 CPU 接口的内容,包括: ① 数据缓冲器
外部译码键扫描方式,双键互锁 内部译码键扫描方式,N 键依次读出 外部译码扫描传感器矩阵方式
D2D1D0=101 内部译码扫描传感器矩阵方式
D2D1D0=110 选通输入方式,外部译码扫描显示器方式 D2D1D0=111 选通输入方式,内部译码扫描显示器方式 内部译码方式,可接 4*8 键盘和 4 位 LED
8279 共有 3 个可寻址的寄存器,即:命令寄存器、状态寄存器和数据寄存
器,但只对应两个地址。因为命令寄存器和状态寄存器可共用一个地址,在同一
地址下,写操作是针对命令寄存器,而读操作则是针对状态寄存器的。具体的命
令/状态寄存器和数据寄存器的地址由信号连接决定。
(1) 命令寄存器
命令寄存器为 8 位寄存器,以 D7D6D5D4D3D2D1D0 表示各位。其中高三位 (D7D6D5)是命令的特征位,不同的状态组合代表着不同的命令。在程序 设计中通过对命令寄存器的设置来控制 8279 的不同操作。
形式。其中左边输入比较简单和常用。在这种方式下,8279 从 0 地址或某一地
址开始依次将单元数据写入相应的显示器中。
命令中 D2、D1、D0 位用于键盘方式设置。 D2D1D0=000 外部译码键扫描方式,双键互锁 D2D1D0=001 内部译码键扫描方式,N 键依次读出
D2D1D0=010 D2D1D0=011 D2D1D0=100
8279键盘显示C程序
8279键盘和显示程序#include<at89c52.h>#include<absacc.h>#include<stdio.h>#defineCOM8279XBYTE [0xF2FF定义8279 控制口#defineDATA8279XBYTE [OxFOFF定义8279 数据口#define uchar unsigned char#define uint unsigned intuint keyval// 定义键内码传递参数uint time// 定义延时参数void delay(uint time)void key(void)void main(){delay(13OO)// 开机延时COM8279 = 0xD2/4青除RAM 和FIFOdelay(1)EA=1EX1 = 1〃开总中断,开外部中断1;IT仁1〃外部中断1选用下降沿COM8279=OxOO//8279键盘双键互锁,编码扫描,左端入口COM8279=Ox12〃时钟分频设置,分频数为18COM8279=0x70COM8279=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=DATA8279key()}〃按键确认程序void key(void){switch(keyval){case 0xC3:{P0=0x3F;DATA8279=P0;break;}case 0xC2:{P0=0x06;DATA8279=P0;break;}case 0xC1:{//0 号键赋值//1 号键赋值;//2 号键赋值;P0=0x5B;DATA8279=P0;break;}case 0xc0://3 号键赋值;DATA8279=P0; break;}case 0xCB:{P0=0x66;DATA8279=P0;break;}case 0xCC:{P0=0x6D;DATA8279=P0;break;}case 0xC9:{P0=0x7D;DATA8279=P0;break;}case 0xC8://4 号键赋值;//5 号键赋值;//6 号键赋值;//7 号键赋值;{P0=0x07;DATA8279=P0;break;}case 0xD3://8 号键赋值;DATA8279=P0;break;}case 0xD2:{P0=0x6F;DATA8279=P0;break;}case 0xD1:{P0=0x77;DATA8279=P0;break;}case 0xD0:{P0=0x7C;DATA8279=P0;break;}//9 号键赋值;//A 号键赋值;//B 号键赋值;case 0xE3://C 号键赋值;{P0=0x39;DATA8279=P0;break;}case 0xE1:{P0=0x5E;DATA8279=P0;break;}case 0xE2:{P0=0x79;DATA8279=P0;break;}case 0xE0:{P0=0x71;DATA8279=P0;break;}default:break;}}//D 号键赋值;//E 号键赋值;//F 号键赋值;{P0=0x4F; {P0=0x7F;。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8279键盘和显示程序#include<at89c
52.h>
#include<absacc.h>
#include<stdio.h>
#defineCOM8279XBYTE [0xF2FF定义8279 控制口#defineDATA8279XBYTE [OxFOFF定义8279 数据口#define uchar unsigned char
#define uint unsigned int
uint keyval// 定义键内码传递参数
uint time// 定义延时参数
void delay(uint time)
void key(void)
void main(){delay
(13OO)// 开机延时
COM8279 = 0xD2/4青除RAM 和FIFO
delay
(1)
EA=1
EX1 = 1〃开总中断,开外部中断1;
IT仁1〃外部中断1选用下降沿
COM8279=OxOO//8279键盘双键互锁,编码扫描,左端入口
COM8279=Ox12〃时钟分频设置,分频数为18
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:{P0=0x3F;
DATA8279=P0;
break;}case 0xC2:{P0=0x06;
DATA8279=P0;
break;}case 0xC1:
{//0 号键赋值
//1 号键赋值;
//2 号键赋值;
P0=0x5B;
DATA8279=P0;
break;}case 0xc0://3 号键赋值;DATA8279=P0; break;}case 0xCB:
{P0=0x66;
DATA8279=P0;
break;}case 0xCC:
{P0=0x6D;
DATA8279=P0;
break;}case 0xC9:{P0=0x7D;
DATA8279=P0;
break;}case 0xC8://4 号键赋值;
//5 号键赋值;
//6 号键赋值;
//7 号键赋值;{P0=0x07;
DATA8279=P0;
break;}case 0xD3://8 号键赋值;
DATA8279=P0;
break;}case 0xD2:{P0=0x6F;
DATA8279=P0;
break;}case 0xD1:{P0=0x77;
DATA8279=P0;
break;}case 0xD0:{P0=0x7C;
DATA8279=P0;
break;
}//9 号键赋值;
//A 号键赋值;
//B 号键赋值;
case 0xE3://C 号键赋值;{P0=0x39;
DATA8279=P0;
break;}case 0xE1:{P0=0x5E;
DATA8279=P0;
break;}case 0xE2:{P0=0x79;
DATA8279=P0;
break;}case 0xE0:{P0=0x71;
DATA8279=P0;
break;}default:
break;}}//D 号键赋值;
//E 号键赋值;
//F 号键赋值;{P0=0x4F; {P0=0x7F;。