logo资料库

8279键盘显示实验.doc

第1页 / 共15页
第2页 / 共15页
第3页 / 共15页
第4页 / 共15页
第5页 / 共15页
第6页 / 共15页
第7页 / 共15页
第8页 / 共15页
资料共15页,剩余部分请下载后查看
8279芯片
8279 键盘和显示程序 #include #include #include #define COM8279 XBYTE [0xF2FF] #define DATA8279 XBYTE [0xF0FF] #define uchar unsigned char #define uint unsigned int uint keyval uint time void delay(uint time) void key(void) void main() { //定义 8279 控制口 //定义 8279 数据口 //定义键内码传递参数 //定义延时参数 //开机延时 //清除 RAM 和 FIFO delay(1300) COM8279 = 0xD2 delay(1) EA=1 EX1=1 IT1=1 COM8279=0x00 COM8279=0x12 COM8279=0x70 COM8279=0x90; while(1) } void delay (uint time) { uchar j //开总中断,开外部中断 1; //外部中断 1 选用下降沿 //8279 键盘双键互锁,编码扫描,左端入口 //时钟分频设置,分频数为 18 //设置读显示命令 //设置写显示命令 //传递参数为 time
//用 time-1 来进行循环 //用 j 来进行 125 次循环,大约 8us while (time--) { for (j=100;j>0;j--) } } } 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: { P0=0x4F; 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: //3 号键赋值; //4 号键赋值; //5 号键赋值; //6 号键赋值; //7 号键赋值;
{ P0=0x07; DATA8279=P0; break; } case 0xD3: { P0=0x7F; DATA8279=P0; break; } case 0xD2: { P0=0x6F; DATA8279=P0; break; } case 0xD1: { P0=0x77; DATA8279=P0; break; } case 0xD0: { P0=0x7C; DATA8279=P0; break; } //8 号键赋值; //9 号键赋值; //A 号键赋值; //B 号键赋值;
//C 号键赋值; //D 号键赋值; //E 号键赋值; //F 号键赋值; case 0xE3: { 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; } }
8279 芯片 本图片为 8279 引脚图 [1] 8279 采用单±5V 电源供电,40 脚封装。 DB0~DB7:双向数据总线,用来传送 8279 与 CPU 之间的数据和命令。 CLK:时钟输入线,用以产生内部定时的时钟脉冲。 RESET:复位输入线,8279 复位后被置为字符显示左端输入,二键闭锁 的触点回弹型式,程序 时钟前置分频器被置为 31,RESET 信号为高电平有效。 CS:片选输入线,低电平有效,单片机在 CS 端为低时可以对 8279 读/ 写操作。 A0:缓冲器低位地址,当 A0 为高电平时,表示数据总线上为命令或状 态, 当为低电平时,表示数据总线上为数据。 RD:读信号输入线,低电平有效,将缓冲器读出,数据送往外部总线。 WR:写信号输入线,低电平有效,将缓立器读出,将数据从外部数据总 线写入 8279 的缓冲器。 RL2-- 1 40 --VCC RL3-- 2 39 --RL 1 CLK-- 3 38 --RL 0 IRQ-- 4 37 --CNTL/STB RL4-- 5 36 --SHIFT RL5-- 6 35 --SL 3 RL6-- 7 34 --SL 2 RL7-- 8 33 --SL 1 RESRT-- 9 32 --SL 0 RD-- 10 31 --OUT B0 WR-- 11 30 --OUT B1
DB0-- 12 29 --OUT B2 DB1-- 13 28 --OUT B3 DB2-- 14 27 --OUT A0 DB3-- 15 26 --OUT A1 DB4-- 16 25 --OUT A2 DB5-- 17 24 --OUT A3 DB6-- 18 23 --BD DB7-- 19 22 --CS VSS-- 20 21 --A0 IRQ:中断请求输出线,高电平有效,在键盘工作方式下,当 FIFO/传感 器 RAM 中有数据时, 此中断线变为高电平,在 FIFO/传感器 RAM 每次读出时,中断线就下降 为低电平,若在 RAM 中还有信息,则此线重又变为高电平。在传感器工作方式中, 每当探 测到传感器信号变 化时,中断线就变为高电平。 SL0~SL3:扫描线,用来扫描按键开关,传感器阵列和显示数字, 这 些可被编程或被译码。 RL0~RL7:回送线,经过按键或传感器开关与扫描线联接, 这些回送 线内部设置有上拉电 路,使之保持为高电平,只有当一个按闭合时,对应的返回线变为低 电平;无按键闭合时, 均保持高电平。 SHIFT:换位功能,当有开关闭合时被拉为低电平,没有按下 SHIFT 开 关时,SHIFT 输入端保 持高电平,在键盘扫描方式中,按键一闭合,按键位置和换位输入状 态一起被存贮起来。 CNTL/STB:当 CNTL/STB 开关闭合时将其拉到低电平,否则始终保持高 电平, 对于键盘输入 方式,此线用作控制输入端,当键被按下时,按键位置就和控制输入 状态一起被存贮起来, 在选通输入方式中,作选通用,把数据存入 FIFO RAM 中。 OUTA3~OUTA0 及 OUTB3~OUTB0:显示输出 A 口及 B 口,这两个口是 16×4 切换的数字显示。这 两个端口可被独立控制,也可看成一个 8 位端口。 BD:空格显示,此输出端信号用于在数字转换时将显示空格或者用显示 空格命令控制其显示 空格字符。
VCC:+5V 电源输入线。 VSS:地线输入线。 ☆8279 的编程方法 1.8279 可按其功能分为:键盘功能块;显示功能块;控制功能块;与 CPU 接口功能块控制功能块包括 控制和定时寄存器,定时和控制,扫描计数器三部分,它主要用来控制 键盘和显示功能块工作. ::控制和定时寄存器:用于存贮来自 CPU 的编程命令,CPU 对 8279 编程 以确定键盘与显示器工作 方式和其它工作条件时,先把命令控制数据放到数据总线上,然后使 A0=1,WR=0CS=0,并在 WR 上升沿把命令键存在控制和定时寄存器中,并经译码,建立适当的功 能. ::定时和控制:它含基本的定时计数器,第一个计数器是一个分频系数 为 2-31 的前置定时器, 分频系数可由程序预置,使内部频率为 100KHz,从而能给出 5.1ms 键盘 扫描时间和 10.3ms 反 跳时间,其它计数器将此基本频率分频后,提供适当的按键扫描.行扫 描.键盘阵列扫描.以 及显示器扫描次数. ::扫描计数器:扫描计数器有两种工作方式,在编码工作方式时,计数 器提供一种二进制计数, 通过管脚 SL0-SL3 输出后经外部译码才能提供给键盘和显示器的扫描 作用,在译码工作方式 时,扫描计数器对最低二位进行译码,SL0-SL3 输出 4 选 1 的译码信号, 作为显示器和键盘的译 码扫描. ::键盘功能块包括:返回缓冲器,键盘反跳及控制,8x8 FIFO 传感器 RAM,FIFO/传感器 RAM 状态. 2.返回缓冲器与键盘反跳及控制 8 条返回线被返回缓冲器缓冲,在键盘工作方式中,这几条线被逐个检 测,以找出该行键中闭合 的键,如果反跳电路测知某键闭合,则它等待 10.3ms,然后重核此键是 否仍然闭合,如果仍闭合, 那么该键在矩阵中的行列地址以及 SHIFT 和 CNTL 的状态一起被送到 FIFORAM 中,其在 FIFO RAM 中 的数据格式如下: D7 D6 D5 D4 D3 D2 D1 D0
分享到:
收藏