实验5键盘显示控制器8279应用实验
- 格式:docx
- 大小:990.95 KB
- 文档页数:11
第九节键盘与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预习资料一、8279的功能及工作原理8279是Intel公司生产的通用可编程键盘和显示器I/O接口部件。
利用8279,可实现对键盘/显示器的自动扫描,并识别键盘上闭合键的键号,不仅可以大大节省CPU对键盘/显示器的操作时间,从而减轻CPU的负担,而且显示稳定,程序简单,不会出现误动作,由于这些优点,8279芯片日益被设计者所采用。
1.8279的引脚及内部结构8279的引脚如图1所示。
8279主要由下列部件组成,各部件的作用以及引脚的作用如下:(1) I/O控制和数据缓冲器双向的三态数据缓冲器将内部总线和外部总线DBo —DB7,用于传送CPU和8279之间的命令,数据和状态。
SC为片选信号。
当SC为低电平时,CPU才选中8279读写。
A。
用以区分信息的特性。
当A。
为1时,CPU写入8279的信息为命令,CPU从 8279读出的信息为8279的状态。
当A。
为0时,I/O信息都为数据。
图1 8279的引脚图(2) 控制逻辑控制与定时寄存器用以寄存键盘及显示器的工作方式,锁存操作命令,通过译码产生相应的控制信号,使8279的各个部件完成一定的控制功能。
定时控制含有一些计数器,其中有一个可编程的5位计数器,对外部输入时钟信号进行分频,产生100kHz的内部定时信号。
外部时钟输入信号的周期不小于500ns。
(3) 扫描计数器扫描计数器有两种输出方式。
一种为外部译码方式(也称编码方式),计数器以二进制方式计数,4位计数状态从扫描线SL。
~SL3输出,经外部译码器译码出16位扫描线,另一种为内部译码方式(也称译码方式),即扫描计数器的低二位经片内译码器译码后从SL。
一SL3输出。
(4) 键输入控制这个部件完成对键盘的自动扫描,锁存RL。
~RL7的键输入信息,搜索闭合键,去除键的抖动,并将键输入数据写入内部先进先出(FIFO)的存储器RAM。
(5)FIFO RAM和显示缓冲器RAM8279具有8个先进先出(FIFO)的键输入缓冲器,并提供16个字节的显示缓冲器RAM。
键盘显示接口芯片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键盘和显示程序#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;}}。
实验九8255扫描键盘、显示实验一.实验要求利用8255可编程并行口做一个扫描键盘实验,把按键输入的键码,显示在由8279控制的七段数码管上。
8255PA口做键盘输入线,PB口作扫描线。
二.实验目的1.掌握8255编程方法。
2.掌握扫描键盘和显示的编程方法。
三.实验电路及连线CS8255接8500H,则命令字地址为8506H,PA口地址为8500H,PB口地址为8502H,PC口地址为8504H。
CS8279接8700H,则8279的状态口地址为8701H; 8279的数据口地址为8700H;模块中的十个短路套都套在8255侧。
四.实验说明在PA口与PB口组成的64点阵列上,把按键接在不同的点上,将得到不同的键码,本实验采用8×2的阵列,共可按16个键。
显示部分由8279控制,由7407驱动8位数码管显示。
五.实验程序框图主程序框图读键显示部分框图六.实验程序:D8255 EQU 8506H ;8255状态/数据口地址D8255A EQU 8500H ;8255 PA口地址D8255B EQU 8502H ;8255 PB口地址Z8279 EQU 8701H ;8279状态口地址D8279 EQU 8700H ;8279数据口地址DISPTR EQU 08H ;当前显示位置KEYVAL EQU 09H ;读到的键码ORG 0000HLJMP STARTORG 0040HSTART:MOV SP,#60HLCALL DELAY ;延时MOV DISPTR,#30H ;显示缓冲区头指针MOV DPTR,#D8255MOV A,#90H ;置8255状态;方式0,PB,PC口输出,PA口输入MOVX DPTR,AMOV DPTR,#Z8279 ;置8279命令字MOV A,#0D3HMOVX DPTR,A ;清LED显示MOV A,#00HMOVX DPTR,AMOV A,#38HMOVX DPTR,AMOV A,#0D1HKB_DIS:LCALL RD_KB ;读键盘MOV A,#0FFHCJNE A,KEYVAL,DISBUF ;判读到键SJMP KB_DIS ;没有则继续读键DISBUF:LCALL DISP ;把键移入显存LCALL DELAY ;延时消抖LCALL DELAYSJMP KB_DISDISP: ;显存依次前移MOV R1,#31H ;在最后加入新键值MOVE:MOV A,R1DEC R1MOV R1,AINC R1INC R1CJNE R1,#38H,MOVEMOV 37H,KEYVALMOV KEYVAL,#0FFHMOV DPTR,#Z8279MOV A,#90HMOVX DPTR,AMOV R0,#08HMOV R1,#30HMOV DPTR,#D8279LP: MOV A,R1MOVX DPTR,AINC R1DJNZ R0,LPRETRD_KB: ;键盘扫描MOV A,#02H ;扫描第一行MOV DPTR,#D8255BMOVX DPTR,AMOV DPTR,#D8255AMOVX A,DPTRMOV R1,#00HCJNE A,#0FFH,KEYCAL ;判键是否按下MOV A,#01H ;扫描第二行MOV DPTR,#D8255BMOVX DPTR,AMOV DPTR,#D8255AMOVX A,DPTRMOV R1,#08HCJNE A,#0FFH,KEYCALSJMP NOKEY ;无键按下KEYCAL: ;计算键码MOV R0,#08HSHIFT:RRC AJNC CALCINC R1DJNZ R0,SHIFTCALC: ;换算显示码MOV DPTR,#DL_DATMOV A,R1MOVC A,A+DPTRMOV KEYVAL,ARETNOKEY: MOV KEYVAL,#0FFH ;返回无键标志RETDELAY: MOV R0,#0H ;延时子程序DELAY1: MOV R1,#0HDJNZ R1,$DJNZ R0,DELAY1RETDL_DAT: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;0,1,2,3,4,5,6,7DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;8,9,A,B,C,D,E,FEND实验十8279显示实验一.实验要求编制程序,利用8279及键盘显示接口电路,编程实现按键的读取,并将按键值显示在数码管上。
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;。
8279键盘 课程设计一、课程目标知识目标:1. 理解8279键盘的基本工作原理及其在计算机系统中的作用;2. 掌握8279键盘的接口技术,能正确描述其与CPU的连接方式;3. 学习并掌握8279键盘编程的基础知识,能实现基本的键盘输入功能。
技能目标:1. 能够独立完成8279键盘的初始化配置,并进行简单故障排查;2. 通过实验操作,掌握8279键盘与CPU的数据传输过程,提高动手能力;3. 能够运用所学知识编写简单的键盘输入程序,提高编程实践能力。
情感态度价值观目标:1. 培养学生对计算机硬件设备的兴趣,激发学习积极性;2. 培养学生团队协作意识,提高沟通与表达能力;3. 增强学生的创新意识,使其能够从实际应用中感受计算机技术的魅力。
课程性质:本课程为信息技术学科,以实验和实践为主,结合理论教学,旨在帮助学生掌握8279键盘的工作原理和应用。
学生特点:本课程针对初中年级学生,他们在前期的学习中已具备一定的计算机知识基础,对硬件设备有一定了解,但动手实践能力有待提高。
教学要求:教师需结合学生特点,采用启发式教学方法,引导学生主动探究,注重理论与实践相结合,培养学生的实际操作能力。
在教学过程中,关注学生的情感态度价值观培养,提高学生的综合素质。
通过本课程的学习,使学生能够达到上述课程目标,为后续计算机硬件课程打下坚实基础。
二、教学内容1. 8279键盘概述:介绍8279键盘的基本概念、功能及其在计算机硬件系统中的地位。
- 理解8279键盘的作用和基本工作原理;- 了解8279键盘的发展历程。
2. 8279键盘接口技术:讲解8279键盘与CPU的连接方式、数据传输过程。
- 掌握8279键盘的初始化配置方法;- 学会8279键盘接口的电路分析与设计。
3. 8279键盘编程:学习8279键盘编程的基础知识,实现基本键盘输入功能。
- 掌握8279键盘编程的指令集;- 编写简单的键盘输入程序。
4. 实践操作:结合理论教学内容,进行实验操作,巩固所学知识。
实验五键盘显示控制器8279应用实验一、实验目的1、掌握51系统中,扩展8279键盘显示接口的方法。
2、掌握8279工作原理和编程方法。
二、预备知识8279A是一种通用的可编程键盘/显示器接口器件,可对64个开关矩阵组成的键盘进行自动扫描,接收键盘上的输入信息,存入内部的FIFO寄存器,并在有键输入时,CPU请求中断。
8279A内部还有一个16×8的显示缓冲器,能对8位或16位LED自动扫描,使显示缓冲器的内容在LED上显示出来。
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 :换档输入线,内部有拉高电阻,使之保持高电平。
CNTL/STB:控制/选通输入线,内部有拉高电阻,使之保持高电平。
OUTA0~OUTA3:四位输出口。
OUTB0~ OUTB3:四位输出口。
这两个口是16 ×4 显示器更新寄存器的输出端,输出的数据和SL0~SL3上信号同步,用于多位显示器显示。
/BD :显示消隐输出线,低电平有效。
Vcc :地。
2、8279A内部结构(1) 8279A内部具有时序控制逻辑,通过控制和时序寄存器存放键盘和显示器的工作方式和其他状态信息。
内部还包含有N分频器,分频系数为N,由2~31 之间任一数可编程确定,对CLK上时钟进行N分频以产生基本的100KHZ的内部计数信号(扫描时间为5.1ms,去抖动时间为10.3ms)。
(2) 8279A内部的扫描计数器有两种工作方式:一是编码方式,计数器以二进制方式计数,4位计数器的状态直接从SL0~SL3上输出,由外部译码对SL0~SL3 译码产生键盘和显示的扫描信号,高电平有效;二是译码方式,对计数器的低二位译码后从SL0~SL3上输出,作为4×8键盘和4位显示器的扫描信号,低电平有效。
(3) 8279A在键盘工作时,由输入缓冲区锁存RL0~RL7上的信息,以确定键入情况,其内部有去抖动电路(10ms)。
(4) FIFO/传感器RAM:它是一个双功能8×8RAM,在键盘和选通输入方式中,它是一个先进先出的数据缓冲器。
当/CS=0,A0=1,/RD=0时,读出FIFO的内容,FIFO 中有数据时,由控制电路发IRQ信号,在传感方式中,8×8RAM用作传感器RAM,当检测到某个传感器发生变化时,IRQ上升为高电平。
(5) 显示地址寄存器和显示RAM:用于存放CPU当前正在读写的显示RAM 单元地址,以及正在显示的两个4位半字节地址。
在选定了工作方式和地址后,CPU 可直接读出显示RAM中的内容。
3、8279A的控制命令(1) 键盘显示器方式设置命令7 6 5 4 3 2 1 00 0 0 D D K K K位2~0 :数据输入及扫描方式000:编码扫描,键盘输入,2键无锁*001:译码扫描,键盘输入,2键无锁010:编码扫描,键盘输入,多键有效011:译码扫描,键盘输入,多键有效100:编码扫描,传感器陈列检测101:译码扫描,传感器陈列检测110:编码扫描,选通输入111:译码扫描,选通输入带* 表示复位以后的值位4~3:显示方式00: 8字符显示,左端输入*01:16字符,左端输入10:8字符显示11:16字符显示,右端输入带* 表示复位以后设定为该种方式(2) 扫描频率控制命令7 6 5 4 3 2 1 00 0 1 P4 P3 P2 P1 P0P4-P0:设置值0-31,对外部时钟的分频系数,使fclk÷分频系数=100KHZ 复位以后,P4~P0=31 (fclk为外部接入时钟)(3)读FIFO前设置的读地址命令7 6 5 4 3 2 1 00 1 0 AI A2 A1 A0A2~A0:8×8位的FIFO的地址000~111AI: AI=1 自动增1;AI=0 不自动增1(4) 读显示RAM前设置的读地址命令7 6 5 4 3 2 1 00 1 1 AI A3 A2 A1 A0A3~A0:16×8位的显示RAM的地址0000~1111AI: AI=1 自动增1;AI=0 不自动增1(5)写显示RAM前设置的写地址命令7 6 5 4 3 2 1 01 0 0 AI A3 A2 A1 A0A3~A0:16×8位的显示RAM的地址0000~1111AI: AI=1 自动增1;AI=0 不自动增1(6) 显示RAM写入禁止/消隐命令(BCD码显示用)7 6 5 4 3 2 1 01 0 1 IWA IWB BLA BLBBLB :=1 ,消隐BBLA :=1 ,消隐AIWB :=1 ,屏蔽BIWA :=1 ,屏蔽A(7) 清除FIFO状态字、显示RAM清除命令7 6 5 4 3 2 1 01 1 O CD2 CD1 CD0 CF CACA: 总清除 CA=0,清除显示RAM ; CA=1,清除显示RAM及FIFO状态字CF: =1 清除FIFO,中断输出线复位CD2~CD0:10×将显示RAM各单元都清为00H;110 将显示RAM各单元都清为20H; 111 将显示RAM各单元都清为FFH;0××不清除,但CA=1时,CD1 CD0仍有效。
说明:清除显示RAM约需160us,此时FIFO状态字最高位Du= 1,表示显示无效,CPU不能向显示RAM写入数据。
(8) 中断结束/出错方式设置命令7 6 5 4 3 2 1 01 1 1 EE=1 为设置中断结束/出错方式,复位后E=04、FIFO状态字7 6 5 4 3 2 1 0DU S/E O U F N N NN N N:FIFO中的字符数000~111F: =1 FIFO满U: =1 FIFO取空出错O: =1 FIFO溢出出错S/E: =1 传感器信号进入传感器RAM,多键同时按下错误DU: =1 显示无效FIFO状态字由控制字口读入5、8259的数据输入输出(A0=0,是数据输入输出,即数据操作)对8279输入数据(如显示数据、键盘输入数据、传感器矩阵数据等)时,要选择数据输入输出口地址。
8279的数据输入输出口地址由A0=0确定。
SL2、SL1、SL0为扫描线,RL7-RL0为回复。
在键盘工作方式中,键盘数据格式中的D7、D6表示CNTL和SHIFT状态,D5、D4、D3表示扫描线SL2、SL1、SL0的8个译码状态,即SL2、SL1、SL0。
D2、D1、D0表示回复线RL7-RL0的8个状态。
三、实验内容实验原理图见图4-7-1,系统中8279A接口芯片及其相关电路完成键盘扫描和显示,本实验以查询方式获取键盘状态信息,读取键值。
键值转换成显示代码供显示。
根据原理图,得到键值和键名的对照表4-7-1,显示值和显示代码对照表4-7-2。
利用8279可以实现对键盘/显示器的自动扫描,以减轻CPU负担,具有显示稳定、程序简单、不会出现误动作等优点。
本实验利用8279实现显示扫描自动化。
表4-7-1表4-7-2四、实验原理图如图4-7-1 所示:图4-7-1五、实验内容及步骤(一)实验内容1、利用Proteus软件绘制MCS-51单片机最小系统,8279键盘显示接口电路、矩阵键盘、数码管电路。
2、编写程序,实现基于8279的矩阵按键检测及数码管的键值显示。
3、基于仿真硬件电路原理图和程序,连接实验箱模块,下载程序并调试,实现按键的检测和键值数码管显示。
(二)实验步骤(1)、利用8279芯片实现按键检测和驱动数码管显示。
结合实验箱,在Proteus软件下绘制电路原理图,(2)、在Keil软件下,建立工程,编写源文件,根据需要初始化芯片和调用键盘和显示函数。
(3)、程序编译,生成Hex文件,嵌入到Proteus软件单片机里,晶体振荡器12M,运行软件仿真,观察仿真现象。
(4)、用8芯排线将8279区DU(a-h)连接到数码管显示区的DU(a-h),8279区BIT连接到数码管显示区的BIT。
(5)、用4芯排线将8279区的KH连到键盘区的KH上,8279区的KL连到键盘区的KL 上。
(6)、8279区8279CS连到系统译码的Y6上,8279CLK连接到固定脉冲的1MHz。
(7)、调试、运行程序工程中的hex文件。
数码管显示“8279-1按下数字键,数码管上显示相应的数字。
六、实验结果●Keil●#include <reg51.h>●#include <ABSACC.H>●#define C8279 XBYTE[0xE001]●#define D8279 XBYTE[0xE000]●unsigned char buffer[8];●void delay(unsigned char i1);●void disp8279(void);●void init8279(void);●unsigned char getkey(void);●void main(void)●{● init8279();● buffer[0]=0x08;● buffer[1]=0x02;● buffer[2]=0x07;● buffer[3]=0x09;● buffer[4]=0x12;● buffer[5]=0x12;● buffer[6]=0x12;● buffer[7]=0x01;● init8279();● disp8279();●delay(10);● while(1)● {●unsigned char k;● disp8279();● for(k=0;k<8;k++)● {●buffer[k]=getkey();● delay(50);● disp8279();● }● }●}●void delay(unsigned char i1)●{● unsigned char ii;● unsigned int jj;● for (ii=0;ii<i1;ii++)● for (jj=0;jj<0x180;jj++);●}●void disp8279(void)●{●unsigned char i,j;● unsigned char code table[24]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, ● 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,● 0x73,0x3e,0x40,0x6e,0x76,0x38,0x00,0x80};● while(i==0x80)● {●j=C8279;● i=0x80&j;● }● for(i=0;i<8;i++)● {●j=buffer[i];● D8279=table[j];}● }●void init8279(void)●{● C8279=0;● C8279=0X2A;● C8279=0xD0;● C8279=0x90;●}●●unsigned char code key[16]={ 0x23,0x2B,0x33,0x3B,0x22,0x2A,0x32,0x3A,● 0x21,0x29,0x31,0x39,0x20,0x28,0x30,0x38};●●●unsigned char getkey(void)●{unsigned char i,temp,kk;● i=0;●while(i==0)●{● temp=C8279;● i=temp&0x07; ●}●temp=D8279;●for(i=0;i<16;i++) ● {●if (temp==key[i]) ●{●kk=i;break;●}● }●return kk;●}实验箱七、实验分析数据缓冲器是双向缓冲器,连接内外总线,用于传送CPU和8279的命令。