单片机实验上机--实验二十一8279键盘显示实验
- 格式:doc
- 大小:2.34 MB
- 文档页数:3
8279键盘/显示实验报告一.实验原理8279可以通过对键盘的自动扫描,将键盘信号存入FIFO RAM里,再通过显示子程序显示按键的信息。
具体来说,扫描输出线,通过138译码后,作为列与回送线交叉成键,输出数据分别用三位来体现扫描码和回送码,读键时屏蔽高两位,使键值正好等于输出数据的查表值,从而在数码管上显示出来。
二、硬件连接图三、实验程序Z8279 EQU 0FF82HD8279 EQU 0FF80HORG 0000HAJMP LOOPLJMP WAIT1LOOP: MOV DPTR,#Z8279MOV A,#0D1HMOVX @DPTR,A LOOP1:MOVX A,@DPTRJB ACC.7,LOOP1MOV R3,#01HMOV R4,#08H XIANSHI:MOV DPTR,#DATAMOV A,R3MOVC A,@A+DPTRMOV DPTR,#D8279MOVX @DPTR,AINC R3LCALL DELAYDJNZ R4,XIANSHI W AIT1: MOV DPTR,#Z8279MOV A,#0D1HMOVX @DPTR,AMOV R0,#70HMOV R7,#80HLOOP2: MOV @R0,#00HINC R0DJNZ R7,LOOP2W AIT: MOV DPTR,#Z8279MOVX A,@DPTRANL A,#07HJNZ SA VESJMP W AITSA VE: MOV A,#40HMOVX @DPTR,AMOV DPTR,#D8279MOVX A,@DPTRANL A,#3FHMOV DPTR,#DATAMOVC A,@A+DPTRMOV B,AMOV R6,#07HMOV R0,#70HMOV R1,#71H CHANGE:MOV A,@R1MOV @R0,AINC R0INC R1DJNZ R6,CHANGEMOV 77H,BMOV R1,#77HMOV R7,#08HSHUCHU:MOV A,@R1MOV DPTR,#D8279MOVX @DPTR,ADEC R1DJNZ R7,SHUCHUAJMP W AITDATA: DB 3FH,06H,5BH,4FH,66H,6DH,7DH DB 07H,7FH,6FH,77H,7CH,39H,5EHDB 79H,71HDELAY: MOV R2,#14HL1: MOV TMOD,#10HMOV TH1,#40HMOV TL1,#00HSETB TR1L2: JBC TF1,L3AJMP L2L3: DJNZ R2,L1RETEND四.实验功能8279状态口地址为0FF82H8279数据口地址0FF80H在8个LED上依次显示1-8,然后显示按下的键的键值。
1.在单片机实验箱上通过8279在8位数码管上从左至右依次显示12345678。
2.在单片机实验箱上通过8279在8位数码管上从左至右依次显示81650000。
3.在单片机实验箱上,每按一次K01键,最左边的数码管加1,显示8后再按键则清0。
4.在单片机实验箱上,按下k13时,在最左边的两位数码管上显示13,按下k14键时,在最左边的两位LED上显示14。
5.在单片机实验箱上,按下k15时,在最右边的两位数码管上显示15,按下k16键时,在最右边的两位LED上显示16。
6.在单片机实验箱上,分别按下k01-k08八个按键时,在最右边的数码管上对应显示1-8,并分别依次点亮LED0-LED7。
7.在单片机实验箱上,每按一次K04键,最右边的数码管加1,显示8后再按键则清0。
8.在EDA实验箱上,在数码管上从左至右依次显示13572468。
9.在EDA实验箱上,在数码管上从左至右依次显示1357,后面4位不显示。
10.在EDA实验箱上实现10进制计数器,并由从左起第三个数码管显示。
11.在EDA实验箱上实现时钟5分频。
12.在单片机实验箱上用1-2相励磁的原理实现步进电机正反转控制。
13.在单片机实验箱上用2相励磁的原理实现步进电机正反转控制。
14.在单片机实验箱上实现LED0间隔时间为1秒的闪烁。
15.在EDA实验箱上实现8进制计数器,并由从左起第四个数码管显示16.在EDA实验箱上实现时钟3分频。
17.在EDA实验箱上实现8个发光二极管从左到右点亮,从右到左渐熄,间隔时间1s。
18.在EDA实验箱上实现一个6进制减法计数器,计数结果在左边第一位显示。
19.在单片机实验箱上,实现按K01一次,P1.0上波形取反一次。
20.在单片机实验箱上实现开机显示5(最右边),其余不显示,按K01键一次减1,至0后又回到5。
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是一种通用的可编程的键盘/显示器接口器件,可对64个开关组成的键盘矩阵进行自动扫描,接收键盘上的输入信息,并在有键输入时向单片机请求中断,还能对8位或16位LED自动扫描,使显示缓冲器的内容在LED上显示出来。
利用8279对键盘/显示器的自动扫描,可以减轻CPU负担,具有显示稳定、程序简单、不会出现误动作等特点。
本实验系统中8279的状态/命令口地址为8041H,数据口地址为8040H,程序开始部分是完成8279的初始化,设定8279的键盘及显示方式,并显示“8279--”,然后等待键盘输入,一旦有键盘输入,8279会向CPU申请中断,在中断服务程序中读取FIFO/传感器RAM,根据读得的键值判断是哪一个键,再调用键的显示程序将该键显示出来。
8279控制的键盘的键值表8279控制的键盘的键值表键名键值键名键值键名键值K010C0H SHIFT+ K0180H CRTL+ K0140H K020C8H SHIFT+ K0288H CRTL+ K0248H K030D0H SHIFT+ K0390H CRTL+ K0350H K040D8H SHIFT+ K0498H CRTL+ K0458H K050C1H SHIFT+ K0581H CRTL+ K0541H K060C9H SHIFT+ K0689H CRTL+ K0649H K070D1H SHIFT+ K0791H CRTL+ K0751H K080D9H SHIFT+ K0899H CRTL+ K0859H K090C2H SHIFT+ K0982H CRTL+ K0942H K100CAH SHIFT+ K108AH CRTL+ K104AH K110D2H SHIFT+ K1192H CRTL+ K1152H K120DAH SHIFT+ K129AH CRTL+ K125AH K130C3H SHIFT+ K1383H CRTL+ K1343H K140CBH SHIFT+ K148BH CRTL+ K1448H K150D3H SHIFT+ K1593H CRTL+ K1553H K160DBH SHIFT+ K169BH CRTL+ K165BH。
实验二 8279键盘扫描输入实验一、实验目的1.熟悉INTEL8279键盘、显示器接口与8031的连接方法;2.掌握8279键盘扫描输入程序的编写;二、实验要求编写一个键盘扫描输入程序,把读取到的键值依次存放在8031片内RAM的30H-43H 单元中,超过20个键值时,多余的健值存放在44单元中。
三、芯片应用特性8279是专用键盘、显示控制芯片,能对显示器自动扫描;能识别键盘上按下的键号,可充分提高CPU工作效率,8279与8031的接口方便,由它构成的标准键盘、显示接口在工业控制中得到广泛的应用。
1.关于INTEL 8279无编码器键盘常常采用软件方法,逐行逐列地检查键盘状态,当发现按下的键后,用计算或查表等方法来找到该键的键编码。
而INTEL 8279公司的键盘、显示接口芯片是一种扫描式键盘编码器芯片8279是一种通用可编程键盘显示接口芯片,它能完成键盘输入和显示控制两种功能。
键盘部分提供一种扫描方式,可与64个按键的矩阵键盘连接,能对键盘不断扫描,自动消抖,自动识别按下的键并给出编码,能对双键或n 键同时按下实行保护。
显示部分分为发光二极管、荧光管及其它显示器提供了按扫描方式工作的显示接口,它为显示器提供多路复用信号,可显示多达16个字符或数字。
2. 实验板8279键盘、显示电路介绍:8279采用外部译码操作方式,74LS138输出8位显示器的位控制信号和键盘的行扫描信号。
8279的8位输出线A0-A3和B0-B3与数码管的8个段相对应,经74LS240缓冲后,去驱动各数码管的8个段。
74LS138输出的8根线由74LS240反相后,再经大电流驱动器ULN2003A驱动,成为各数码管的位选择信号,当位选信号有效时(呈0电平),相应数码管被选通,而显示内容则取决于它的各个显示段的电平。
四、实验步骤1.线路连接及注意事项1)线路连接8279键盘键值可采用查询方式读取,也可以采用中断方式读取。
实验十一 7279键盘显示实验
一、实验目的
1.掌握八段数码管硬件线路原理,掌握用HD7279A芯片实现显示的编程方法。
2.熟悉键盘的工作原理,掌握用HD7279A芯片实现键盘扫描程序设计方法。
二、实验内容
HD7279A是一片具有串行接口的,可同时驱动8位共阴极数码管(或64只独立LED)的智能显示驱动芯片,该芯片同时还可连接多达64键的键盘矩阵,HD7279A 内部含有译码器,可直接接受16进制码,HD7279A还同时具有2种译码方式,HD7279A还具有多种控制指令,如消隐、闪烁、左移、右移、段寻址等。
HD7279A的指令结构有三种类型:
1)不带数据的纯指令,指令的宽度为8个BIT,即微处理器需发送8个CLK脉冲;
2)带有数据的指令,宽度为16个BIT,即微处理器需发送16个CLK脉冲;
3)读取键盘数据指令,宽度为16 个BIT,前8个为微处理器发送到HD7279的指令,后8个BIT为HD7279A返回的键盘代码。
本实验采用6位共阴极数码管,用查询方式判断。
三、实验步骤
1)系统各跳线器处在初始设置状态(参见附录四),把CPU J1都在左边,J3打在7279处,在所建的Project文件添加“7279键盘显示.asm”文件,阅读、分析、理解程序2)编译下载,全速运行程序,然后等待按键输入,并在有按键按下后显示相应的键号,前一个键号左移。
3)若按键按下后没有显示相应的键号,应用万用表测量HD7279AKEY脚的电平是否在按键按下后变成低电平。
注:JP30跳线器的短路帽置位到左边时,可接通按键蜂鸣器,用于指示按键是否有效。
四、实验参考程序:
见附件:实验指导参考程序。
一、实验目的1、掌握8279的工作原理。
2、熟悉8279与键盘接口的方法。
3、学习、了解键盘扩展方法。
二、实验内容将每次按键产生的键码显示在LED数码管。
三、实验原理介绍实验原理图见8279键盘显示电路。
四、实验步骤1、实验接线:将8279的RL0~RL7分别与键盘的RL10~RL17相连。
2、将8279的KA0~KA2分别与键盘的KA10~KA12相连。
3、用查询法编程4、全速运行程序,按动按键,观察显示键值的变化。
五、实验提示1、8279的I/O地址已连好,为490的偶地址,即:数据口为490H,状态口为492H。
2、8279外部输入时钟已连好,时钟频率为1MHZ。
3、8279所以,D5 D4 D3表示按下键所在的列号,D2 D1 D0表示按下的键所在的行号。
采用8279可以识别最大达8x8的矩阵键盘。
六、实验结果第一行键值从左至右依次为:C0—C5;第二行键值从左至右依次为:C6—CB;第三行键值从左至右依次为:CC—D1;第四行键值从左至右依次为:D2—D7;七、实验程序框图(实验程序名:T8279.asm)八、程序源代码清单con8279 equ 0492hdat8279 equ 0490hassume cs:codecode segment publicorg 100hstart: jmp start1segcod db3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71h start1: mov dx,con8279mov al,10hout dx,al ;编码扫描键盘,双键锁定mov al,2ah ;10分频得到100KHzout dx,alcall blackrkey: mov dx,con8279disla2: in ax,dx ;读入状态字and ax,07hjz disla2 ;没有按键则等待!mov dx,dat8279in ax,dx ;读入键值and ax,0ffhmov bx,axnop ;设断点观察键值call black ;总清显示RAMnopdisp:mov di,offset segcodmov ax,08h ;工作方式,16位,左入mov dx,con8279out dx,axmov ax,90hmov dx,con8279out dx,ax ;写显示RAM命令,地址自增 mov dx,dat8279push bxand bx,0f0hmov cl,4shr bx,cladd di,bxmov al,cs:[di]mov ah,0out dx,ax ;写RAM0nopnopmov di,offset segcodpop bxand bx,0fhadd di,bxmov al,cs:[di]mov ah,0out dx,ax ;写RAM1nopnoppush cxjmp rkeyblack: mov dx,con8279mov ax,0d1hout dx,ax ;显示RAM全部清零mov cx,80h ;循环次数clsb: nopnoploop clsbretcode endsend start。
集美大学计算机工程学院实验报告课程名称单片机应用技术实验名称8279键盘显示实验实验类型设计型姓名学号日期地点成绩教师第1页共5页1. 实验目的与要求1)解8279芯片的结构、工作原理;了解8279与单片机的接口逻辑;掌握对8279 的编程方法,掌握了解8279扩展键盘、显示器的方法2)认真预习本节实验内容,尝试自行编写程序,填写实验报告。
2. 实验设备STAR系列实验仪、PC机、星研集成软件环境3. 实验内容1编写程序:使用8279实现对G5区的键盘扫描,将键盘显示与8为数码管上2按图连线,运行程序,观察实验结果,能熟练运用8279扩展显示器和键盘4. 实验硬件电路及接线4.1电路设计如下图4.2实验装置的连线说明G5 区 A0、CS-------------A3区 A0、CS5E5区:CS,A0-------------CS5,A0E5区: CLK---------------B2区2ME5区: B,C---------------G5区LED:B,CProtues连线图:5,程序流程图流程图:NY NY开始初始化8279,设置8279分频系数(20分频)8*8字符显示,左边输入,外部译码键扫描方式清显示,从第一个数码管开始移位显示。
有按键 安满8 次键 清显示 将键值转换为0..F 键号 将键值写入82796,程序源代码BUFFER DATA 30H ;键盘输入缓冲区首地址BUFFER1 DATA 40H ;8字节显示缓冲区在首地址CMD8279 XDATA 0BF01H ;8279命令/状态字地址DATA8279 XDATA 0BF00H ;8279读写数据口地址KEYCOUNT DATA 50HORG0000HLJMP MAINORG0100HMAIN:RUN8279: ACALL INIT ;8279初始化MOV KEYCOUNT,#0 ;按键个数计数STAR1: LCALL SCAN_KEY ;键扫描JNC STAR1 ;无按键则循环XCH A,KEYCOUNTINC ACJNE A,#9,STAR2 ;MOV KEYCOUNT,#0LCALL INIT8279_1SJMP STAR1STAR2: XCH A,KEYCOUNTLCALL KEY_NUMMOV DPTR,#LED_TABMOVC A,@A+DPTRLCALL WRITE_DATASJMP STAR1;8279初始化INIT: MOV A,#34H ;命令字:分频系数20分频MOV DPTR,#CMD8279MOVX @DPTR,AMOV A,#10HMOVX @DPTR,AINIT8279_1: LCALL CLEAR ;清显示MOV A,#90H ;从最后一个数码管开始显示移位MOVX @DPTR,ARET; 清显示CLEAR: MOV A,#0DEH ;清屏命令MOV DPTR,#CMD8279MOVX @DPTR,AWAIT11: MOVX A,@DPTRJB ACC.7,WAIT11 ;显示RAM清除完毕否?RET; 键盘扫描SCAN_KEY: MOV DPTR,#CMD8279 ;读状态字MOVX A, @DPTRREAD_FIFO: ANL A,#7JZ NO_KEY ;判定是否有键按下READ: MOV A,#40HMOVX @DPTR,A ;读FIFO RAM 命令字MOV DPTR,#DATA8279MOVX A,@DPTRSETB C ;有键按下SCAN_KEY1: RETNO_KEY: CLR C ;无键按下SJMP SCAN_KEY1;键盘数据判定KEY_NUM: ANL A,#3FHRET;写数据WRITE_DATA: MOV DPTR,#DATA8279MOVX @DPTR,ARETLED_TAB: DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H DB80H,90H,88H,83H,0C6H,0A1H,86H,8EH END。
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键盘显示实验
一、实验目的
掌握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键盘显示实验一、实验目的1.了解8279内部定时/计数器使用方法2.学习计数器各种工作方式的用法二、实验说明键盘和八段显示器可以直接使用单片机89C51的并行口,或者用74LS273和74LS244、并行接口芯片8255或多功能接口芯片8155与微型计算机接口。
用上述接口方法,对键盘和显示器的扫描是由软件实现的,不但程序比较复杂,更不利的是占用CPU很多时间。
若采用专用的可编程键盘/显示控制器8279与微型计算机接口,则由8279对键盘和显示器进行自动扫描,充分地提高CPU的工作效率。
Inetel8279芯片是一种通用的可编程键盘显示器接口器件,单个芯片就能完成键盘输入和八段显示器显示控制两种功能。
8279的内部结构如下图:DB0~DB7——数据总线,三态,双向CLK——时钟输入Ao——数据选择,输入RD、WR——读、写,输入,低电平有效IRQ——中断请求信号,输出,高电平有效SL0~SL3——扫描信号,输出RL0~RL7——回复信号,输入SHIFT——移位信号,输入,高电平有效CNTL/STB——控制/选通信号,输入,高电平有效OUTA3~OUTA0——A组显示信号,输出OUTB3~OUTB0——B组显示信号,输出BD——显示消隐信号,输出,低电平有效三、实验内容及步骤1、单片机最小应用系统1的 P0口接8279的DB0~DB7口,8279的Y0~Y7接动态扫描显示的SMG1~SMG6口, OUTB0~OUTA3口接动态扫描显示的段码口;单片机最小应用系统1的WR、RD、P2.0、P2.7、ALE、RESET、INT0分别接8279的WR、RD、A0、CS、CLK、RESET、IRQ。
2、安装好伟福仿真器,用串行数据通信线连接计算机与仿真器,把87C52型仿真头插到模块的单片机插座中,打开模块电源,插上仿真器电源插头。
3、启动计算机,打开伟福仿真软件,进入仿真环境。
选择仿真器型号、仿真头型号、CPU类型;选择通信端口,测试串行口。
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) 回复缓冲器、键盘去抖及控制在键盘工作方式下,回复线作为行列式键盘的列输入线,相应的列输入信号称为回复信号,由回复缓冲器缓冲并锁存。
一、实验目的1、掌握8279键盘显示电路的基本功能及编程方法。
2、掌握一般键盘和显示电路的工作原理。
3、进一步掌握定时器的使用和中断处理程序的编程方法。
二、实验内容1、I/O编程本实验的实验电路如图。
它做在一块扩展电路板上,用一根20芯扁平电缆线将实验板扩展插头与实验台上的扩展插头J7相连,为扩展电路连接电源及外部总线。
扩展电路板上的数码管、键盘阵列既能由8279控制,也可以由外部电路控制,其实现靠的是若干组短路子组成的控制选择开关K1,K2,K3,K4,KB0,KB1,KB2。
当K1,K3,K4连接在8279一端时,数码管由8279控制,连接在LS273一端时由外部总线通过LS273直接控制。
当K2,KB1,KB2,KB3连接在8279一端时,键盘阵列由8279控制,连接在8255一端时由外接芯片8255控制。
因为本实验为8279控制实验,所以除了连接J1和J7外,还需要将选择开关K1,K2,K3,K4,KB0,KB1,KB2连接在8279一端,以使数码管、键盘阵列由8279芯片控制。
3、编程2:中断编程利用实验台上提供的定时器8253和扩展板上提供的8279以及键盘和数码显示电路,设计一个电子钟。
由8253中断定时,小键盘控制电子钟的启停及初始值的预置。
电子钟显示格式如下:XX.XX.XX. 由左向右分别为时、分、秒。
要求具有如下功能:①、C键:清除,显示全零。
②、G键:启动,电子钟计时。
③、D键:停止,电子钟停止计时。
④、P键:设置时、分、秒值。
输入时依次为时、分、秒,同时应有判断输入错误的能力,若输入有错,则显示:E-----。
此时敲P键可重新输入预置值。
⑤、E键:程序退出。
四、编程2 接线方法1.用一根20芯扁平电缆将实验扩展板与实验台上扩展插头J7相连。
2.实验台上8253 CLK0 接1MHZ,GATE0 和GATE1接+5V,OUT0 接CLK1,OUT1 接IRQ,CS接280H~287H。
实验十二 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与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。
实验五键盘显示控制器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上信号同步,用于多位显示器显示。
实验四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键盘显示实验
一、实验目的
1.了解8279内部定时/计数器使用方法
2.学习计数器各种工作方式的用法
二、实验说明
键盘和八段显示器可以直接使用单片机89C51的并行口,或者用74LS273和74LS244、并行接口芯片8255或多功能接口芯片8155与微型计算机接口。
用上述接口方法,对键盘和显示器的扫描是由软件实现的,不但程序比较复杂,更不利的是占用CPU很多时间。
若采用专用的可编程键盘/显示控制器8279与微型计算机接口,则由8279对键盘和显示器进行自动扫描,充分地提高CPU的工作效率。
Inetel8279芯片是一种通用的可编程键盘显示器接口器件,单个芯片就能完成键盘输入和八段显示器显示控制两种功能。
8279的内部结构如下图:
DB0~DB7——数据总线,三态,双向
CLK——时钟输入
Ao——数据选择,输入
RD、WR——读、写,输入,低电平有效
IRQ——中断请求信号,输出,高电平有效
SL0~SL3——扫描信号,输出
RL0~RL7——回复信号,输入
SHIFT——移位信号,输入,高电平有效
CNTL/STB——控制/选通信号,输入,高电平有效
OUTA3~OUTA0——A组显示信号,输出
OUTB3~OUTB0——B组显示信号,输出
BD——显示消隐信号,输出,低电平有效
三、实验内容及步骤
1、单片机最小应用系统1的 P0口接8279的DB0~DB7口,8279的Y0~Y7接动态扫描
显示的SMG1~SMG6口, OUTB0~OUTA3口接动态扫描显示的段码口;单片机最小应用系统1的WR、RD、P2.0、P2.7、ALE、RESET、INT0分别接8279的WR、RD、A0、CS、CLK、RESET、IRQ。
2、安装好伟福仿真器,用串行数据通信线连接计算机与仿真器,把87C52型仿真头插到模块的单片机插座中,打开模块电源,插上仿真器电源插头。
3、启动计算机,打开伟福仿真软件,进入仿真环境。
选择仿真器型号、仿真头型号、CPU类型;选择通信端口,测试串行口。
4、打开8279.ASM源程序,编译无误后运行程序,按阵列式键盘,6LED显示键值。
5、可把源程序编译成可执行文件,烧录到89C51芯片中
四、源程序
ORG 0
AJMP START
ORG 16H
START: ;设置8279工作状态
MOV DPTR,#07FFFH ;命令口
MOV A,#0D1H ;清除显示寄存器A组、B组的输出
MOVX @DPTR,A
MOV A,#00H ;左端送入、8X8显示、双键锁定编码扫描
MOVX @DPTR,A
MOV A,#2AH ;10分频
MOVX @DPTR,A
MOV A,#0A0H ;不灭显示
MOVX @DPTR,A
MOV A,#90H ;写入显示RAM,从0地址开始,地址自动加1 MOVX @DPTR,A
MOV A,#50H ;读FIFO RAM,从0地址开始,地址自动加1 MOVX @DPTR,A
MOV DPTR,#07EFFH ;数据口
MOV A,#0 ;不显示送RAM
MOV R7,#8
AGAIN:MOVX @DPTR,A
DJNZ R7,AGAIN
NEXT: JNB IE0,$ ;等待键输入
CLR IE0
MOVX A,@DPTR ;读FIFO RAM中的按键代码
MOV DPTR,#KDT ;取七段码段码表首地址
MOVC A,@A+DPTR ;数字键代码转换为该数字的七段码
MOV DPTR,#07EFFH ;数据口
MOVX @DPTR,A ;写入显示RAM
AJMP NEXT
KDT: ;段码表
DB 3FH,06H,5BH,4FH,0,0,0,0
DB 66H,6DH,7DH,07H,0,0,0,0
DB 7FH,6FH,77H,7CH,0,0,0,0 DB 39H,5EH,79H,71H,0,0,0,0 END。