单片机实验上机--实验二十一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类型;选择通信端口,测试串行口。
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。