资源预览内容
第1页 / 共60页
第2页 / 共60页
第3页 / 共60页
第4页 / 共60页
第5页 / 共60页
第6页 / 共60页
第7页 / 共60页
第8页 / 共60页
第9页 / 共60页
第10页 / 共60页
亲,该文档总共60页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第九章第九章 MCS-51单片机单片机I/O接口技术接口技术MCS-51单片机具有四个并行单片机具有四个并行8位位I/O口(即口(即P0, P1, P2, P3),),原理上这四个原理上这四个I/O口均可用做双向并行口均可用做双向并行I/O接口,但在实际应接口,但在实际应用中,可提供给用户使用的用中,可提供给用户使用的I/O口只有口只有P1口。口。在单片机的在单片机的I/O口线不够用的情况下,可以借助外部器件对口线不够用的情况下,可以借助外部器件对I/O口进行扩展。可资选用的器件很多,方案也有多种。口进行扩展。可资选用的器件很多,方案也有多种。访问扩展访问扩展I/O口的方法与访问数据存储器完全相同,使用相口的方法与访问数据存储器完全相同,使用相 同的指令,所有扩展的同的指令,所有扩展的I/O口与片外数据存储器统一编址。口与片外数据存储器统一编址。9.1 可编程并行可编程并行I/O接口芯片扩展接口芯片扩展 9.2 MCS-51单片机与键盘的接口技术单片机与键盘的接口技术9.3 MCS-51单片机与显示器的接口技术单片机与显示器的接口技术 9.1 可编程并行可编程并行I/O接口芯片扩展接口芯片扩展 可可编编程程I/OI/O接接口口芯芯片片的的特特点点:适适应应多多种种功功能能需需求求,使使用用灵灵活活,可可扩扩展展多多个个并并行行I/OI/O口口,可可以以编编程程设设定定为为输输入入或或输输出出口,应用非常广泛。口,应用非常广泛。 1可编程并行口可编程并行口8255A芯片芯片 Intel 8255AIntel 8255A芯片是通用可编程并行接口电路,广泛应用芯片是通用可编程并行接口电路,广泛应用于单片机扩展并行于单片机扩展并行I/OI/O口。口。 它具有它具有3 3个个8 8位并行口位并行口PA, PBPA, PB和和PCPC,一个一个8 8位的数据口位的数据口D0D0D7 D7 ,PCPC口分高口分高4 4位和低位和低4 4位。高位。高4 4位可与位可与PAPA口合为一组口合为一组(A(A组组),),低低4 4位可与位可与PBPB口合为一组口合为一组(B(B组组) ) ,PCPC口可按位置位口可按位置位/ /复位。复位。4040条引条引脚,脚,DIPDIP封装。封装。8255A引脚信号图 (1)A口、口、B口和口和C口。口。A口、口、B口和口和C口均为口均为8位位I/O数据口,数据口,但结构上略有差别。但结构上略有差别。A口由一个口由一个8位的数据输出缓冲位的数据输出缓冲/锁存器锁存器和一个和一个8位的数据输入缓冲位的数据输入缓冲/锁存器组成。锁存器组成。B口由一个口由一个8位的数位的数据输出缓冲据输出缓冲/锁存器和一个锁存器和一个8位的数据输入缓冲器组成。三个位的数据输入缓冲器组成。三个端口都可以和外设相连,分别传送外设的输入端口都可以和外设相连,分别传送外设的输入/输出数据或控输出数据或控制信息。制信息。 (2) A、B组控制电路。这是两组根据组控制电路。这是两组根据CPU的命令字控制的命令字控制8255工作方式的电路。工作方式的电路。A组控制组控制A口及口及C口的高口的高4位,位,B组控制组控制B口及口及C口的低口的低4位。位。 (3) 数据缓冲器。这是一个双向三态数据缓冲器。这是一个双向三态8位的驱动口,用于位的驱动口,用于和单片机的数据总线相连,传送数据或控制信息。和单片机的数据总线相连,传送数据或控制信息。 (4) 读读/写控制逻辑。这部分电路接收写控制逻辑。这部分电路接收MCS-51送来的读送来的读/写命令和选口地址,用于控制写命令和选口地址,用于控制8255的操作。的操作。分三部分:分三部分: 总线接口部分;内部逻辑部分总线接口部分;内部逻辑部分 ;外设接口部分外设接口部分 (1)总线接口部分)总线接口部分 /CS 片选线片选线A1、A0 端口选择线(选片内四个端口寄存器)端口选择线(选片内四个端口寄存器) /RD 读信号线读信号线 /WR 写信号线写信号线 (2)内部逻辑部分)内部逻辑部分PAPC7 PC4PBPC3 PC0输输入入A组控制电路组控制电路控制寄存器控制控制寄存器控制8255A工作方式工作方式B组控制电路组控制电路(3)外设接口部分)外设接口部分可由编程决定三个端口的功能可由编程决定三个端口的功能 输出输出 输入输入 其它其它A口口 8位锁存位锁存 / 缓冲缓冲 8位锁存位锁存/缓冲缓冲 双向双向B口口 8位锁存位锁存 / 缓冲缓冲 8位缓冲位缓冲C口口 8位锁存位锁存 / 缓冲缓冲 8位缓冲位缓冲 可分成两组分别作可分成两组分别作A 口、口、B口的控制口的控制/ /联络线联络线 2、8255A的端口操作的端口操作 A1 A0 选中选中0 0 PA口口0 1 PB口口1 0 PC口口1 1 控制控制2 2 寄存寄存3 3 器器 二、二、8255A的工作方式及方式选择的工作方式及方式选择1、8255A的工作方式的工作方式(1)方式)方式0 基本输入基本输入/输出方式输出方式 A口、口、B口、口、C口均有此方式,无需选通,是单片机口均有此方式,无需选通,是单片机 与外部设备之间的直接数据通道,适用于无条件传与外部设备之间的直接数据通道,适用于无条件传 送送随时准备好的外设,如键盘、显示器等。随时准备好的外设,如键盘、显示器等。(2)方式)方式1 选通输入选通输入/输出方式输出方式 PA口、口、PB口作为数据输入口作为数据输入/输出口,输出口, PC口专为口专为PAPA口,口,PBPB口作选通联络信号线口作选通联络信号线, ,适用于查适用于查 询或中断方式的数据传送。询或中断方式的数据传送。 (3)方式)方式2 双向数据输入双向数据输入/输出方式输出方式 仅仅PA口有此方式。口有此方式。PC3 PC7此时作联络线此时作联络线, PB口可以是方式口可以是方式0;也可以是方式;也可以是方式1(PC0 PC1作联络线)。作联络线)。 2、8255A的方式控制字的方式控制字 用编程方法向用编程方法向8255A的控制口写控制字,可决定它的工作的控制口写控制字,可决定它的工作 方式。方式。(1 1)工作方式控制字)工作方式控制字 (2 2)PCPC口置位口置位/ /复位控制字复位控制字 0 D6 D5 D4 D3 D2 D1 D0“0” 标志位。标志位。D6、D5、D4 不使用位。不使用位。 D3、D2、D1 位选择位,位选择位,000 111 分别对应分别对应PC7 PC0。 D0 位状态位,位状态位,1 置位,置位,0 复位。复位。 三、单片机和三、单片机和8255A的连接及应用的连接及应用 单片机单片机 8255A A0 A0 A1 A1 A15 A2中任一线中任一线 /CS P0 D7 D0 /RD /RD /WR /WR RST RESET 上图中,地址线连接采用线选法。上图中,地址线连接采用线选法。 8255A的地址分布:的地址分布: A15 A14 A13A8 A7A1 A0 0 0 0 0 0 0 0 0000HPA 0 1 0001HPB 1 0 0002HPC 1 1 0003H控制口控制口 或或 0 1 1 1 1 0 0 7FFCHPA 0 1 7FFDHPB 1 0 7FFEHPC 1 1 7FFFH控制控制 口口未用地址线为未用地址线为0未用地址线为未用地址线为1 例例、设设单单片片机机8031与与微微型型打打印印机机之之间间的的数数据据传传送送采采用用查查询询方方式式。要要求求将将存存放放在在8031单单片片机机内内RAM中中以以30H为为首首地地址址的的64个连续单元中的内容打印输出,试编程。个连续单元中的内容打印输出,试编程。 P2.7 P0 8031 8031 ALE /RD /WR RST /EA74LS37374LS3731D 8D 2Q 1QG /OC/CS 8255A8255A PA0PA7A1A0 PC0 PC7D0 D7/RD/WRRESET微型打印机微型打印机微型打印机微型打印机DB0DB7BUSY/STB8 888 8解解:因为:因为PC0连接连接BUSY,所以,所以,PC3 PC0为输入为输入 又因又因PC7连接连接 /STB ,所以所以PC7 PC4为输出,为输出, /STB = /DATA STROBE数据选通信号。数据选通信号。 作用是通知打印机,作用是通知打印机,8255A要给它传数据。要给它传数据。 PA口输出,口输出,PB口未用。口未用。 故故 8255A的控制字可设为:的控制字可设为:1 0 0 0 0 0 0 1B = 81H 假设未用到地址线均为假设未用到地址线均为 1,则:,则: PA口地址:口地址:7FFCH PB口地址:口地址:7FFDH PC口地址:口地址:7FFEH 控制口:控制口: 7FFFH 程序:程序: ORG 1000HPRINT:MOV DPTR,#7FFFH ;控制口地址控制口地址 MOV A,#81H ;控制字;控制字 MOVX DPTR,A ;写入控制字;写入控制字 MOV R1,#30H ;数据指针数据指针 MOV R2,#40H ;64个数个数 NEXT: MOV DPTR,#7FFEH ;PC口地址口地址 MOV A, #80H ;使使PC7为高电平为高电平 MOVX DPTR,A ;输出;输出/STB为高电平为高电平,不准备送数,不准备送数 WAIT: MOVX A,DPTR ;查询打印机状态;查询打印机状态 JB ACC.0, WAIT ;若若PC0即即BUSY = 1忙,则等待忙,则等待 MOV DPTR , #7FFCH ;若若BUSY = 0空闲,则指向空闲,则指向PA口口 MOV A , R1 MOVX DPTR , A ;输出数据;输出数据 MOV DPTR , #7FFEH ;指向;指向PC口口 MOV A , #00H MOVX DPTR , A ;/STB信号置低,通知打印机数据输出。信号置低,通知打印机数据输出。 ACALL PDELAY ;调延时子程序调延时子程序 INC R1 DJNZ R2 , NEXT ;判断打印输出完成否?判断打印输出完成否? SJMP $ PDELAY:(:(延时程序略)延时程序略) END 9.2 MCS-519.2 MCS-51单片机与键盘的接口技术单片机与键盘的接口技术 一、一、 概述概述键盘:键盘:单片机系统中完成控制参数输入及修改的基本输入设备,单片机系统中完成控制参数输入及修改的基本输入设备,是人工干预系统的重要手段。是人工干预系统的重要手段。各种按键或开关。各种按键或开关。键盘的分类:键盘的分类:按按编码方式可分为编码键盘与非编码键盘。按键盘编码方式可分为编码键盘与非编码键盘。按键盘连接方式可分为独立连接式键盘与矩阵连接式键盘。连接方式可分为独立连接式键盘与矩阵连接式键盘。 1 1独立连接式键盘独立连接式键盘 每每键键相相互互独独立立,各各自自与与一一条条I/O线线相相连连,CPU可可直直接接读读取取该该I/O线线的的高高/低低电电平平状状态态。其其优优点点是是硬硬件件、软软件件结结构构简简单单,判判键速度快,使用方便;缺点是占键速度快,使用方便;缺点是占I/O口线多。口线多。适用场合:适用场合:多用于设置控制键、功能键。适用于键数较少的场合。多用于设置控制键、功能键。适用于键数较少的场合。2. 2. 矩阵连接式键盘矩阵连接式键盘 键按矩阵排列键按矩阵排列,各键处于矩阵行各键处于矩阵行/列的结点处列的结点处,CPU通过对通过对连在行连在行(列列)的的I/O线送已知电平的信号线送已知电平的信号,然后读取列然后读取列(行行)线的线的状态信息。逐线扫描状态信息。逐线扫描,得出键码。其特点是键多时占用得出键码。其特点是键多时占用I/O口口线少线少,硬件资源利用合理,但判键速度慢。硬件资源利用合理,但判键速度慢。适用场合:适用场合:多用于设置数字键,适用于键数多的场合。多用于设置数字键,适用于键数多的场合。 二、使用键盘时必须解决的问题二、使用键盘时必须解决的问题 (1)开关状态的可靠输入。必须消除键抖动。可以采用硬件)开关状态的可靠输入。必须消除键抖动。可以采用硬件和软件两种方法,硬件方法就是在按键输入通道上添加去抖和软件两种方法,硬件方法就是在按键输入通道上添加去抖动电路;软件方法则采用延迟动电路;软件方法则采用延迟1020ms键盘的抖动时间一般为键盘的抖动时间一般为5 510ms10ms,抖动现象会引起抖动现象会引起CPUCPU对一次键对一次键操作进行多次处理,从而可能产生错误。操作进行多次处理,从而可能产生错误。(2)键盘状态的监测方法)键盘状态的监测方法中断方式还是查询方式。中断方式还是查询方式。(3)键盘编码方法。)键盘编码方法。(4)键盘控制程序的编制。)键盘控制程序的编制。三、三、 键盘接口键盘接口 功能:功能:对键盘上所按下的键进行识别。对键盘上所按下的键进行识别。 分类:分类: (1)编码键盘:)编码键盘:采用专用的编码采用专用的编码/译码器件,被按下的键译码器件,被按下的键由该器件译码输出相应的键码由该器件译码输出相应的键码/键值。其特点是增加了硬件开销,键值。其特点是增加了硬件开销,编码固定,但编程简单。适用于规模大的键盘。编码固定,但编程简单。适用于规模大的键盘。 (2)非编码键盘:)非编码键盘:采用软件编采用软件编/译码的方式,通过扫描,译码的方式,通过扫描,对每个被按下的键判别输出相应的键码对每个被按下的键判别输出相应的键码/键值。其特点是不增加键值。其特点是不增加硬件开销,编码灵活,但编程较复杂,占硬件开销,编码灵活,但编程较复杂,占CPU时间。适用于小时间。适用于小规模的键盘,特别是单片机系统键盘。规模的键盘,特别是单片机系统键盘。 1键盘接口的工作原理键盘接口的工作原理 对对于于矩矩阵阵式式键键盘盘,如如图图所所示示,键键盘盘的的行行线线X0X3通通过过电电阻阻接接+5V,当当键键盘盘上上没没有有键键闭闭合合时时,所所有有的的扫扫描描线线和和回回送送线线都都断断开开,无无论论扫扫描描线线处处于于何何种种状状态态,回回送送线线都都呈呈高高电电平平。当当键键盘盘上上某某一一键键闭闭合合时时,则则该该键键所所对对应应的的扫扫描描线线和和回回送送线线被被短短路路,可可以以确确定定,变变为为低低电电平平的的回回送送线线与与扫扫描描线线相相交交处处的的键闭合。键闭合。 CPU对键盘扫描的方式:对键盘扫描的方式:程序控制的随机方式(程序控制的随机方式( CPU空空闲时扫描键盘)、定时控制方式(定时扫描键盘)、中断方闲时扫描键盘)、定时控制方式(定时扫描键盘)、中断方式。式。 CPU对键盘上闭合键的键号确定方法:对键盘上闭合键的键号确定方法:根据扫描线和回送根据扫描线和回送线的状态计算求得,或根据行线和列线的状态查表求得。线的状态计算求得,或根据行线和列线的状态查表求得。 2键输入程序的设计方法键输入程序的设计方法 (1)判断键盘上是否有键闭合;)判断键盘上是否有键闭合; (2)消除键的机械抖动;)消除键的机械抖动; (3)确定闭合键的物理位置;)确定闭合键的物理位置; (4)得到闭合键的编号;)得到闭合键的编号; (5)确保)确保CPU对键的一次闭合只做一次处理对键的一次闭合只做一次处理延时消抖延时消抖键扫描求键号键扫描求键号延时等待延时等待键译码求键值键译码求键值修改显示缓冲区修改显示缓冲区跳转各功能程序跳转各功能程序有按键输入?有按键输入?确有按键?确有按键?按键释放?按键释放?是数字键?是数字键?3键盘接口方式键盘接口方式(1)独立式键盘接口(静态方式)独立式键盘接口(静态方式)例题例题 在在MCS-51 单片机系统中,设计一个含单片机系统中,设计一个含8个按键的独立式个按键的独立式键盘。键盘。解解:在在MCS-51中中,含含8个个按按键键的的独独立立式式键键盘盘的的线线路路连连接接如如图图所所示示,8个个按按键键经经上上拉拉电电阻阻拉拉高高后后分分别别接接到到MCS-51单单片片机机P1口口的的8条条I/O线线 上上 ( P1.0P1.7)。)。主程序如下:主程序如下:ORG 0000HLJMP MAINORG 0003H; 外部中断外部中断0中断服务入口地址中断服务入口地址LJMP INT; 转中断服务转中断服务ORG 0100H MAIN: SETB EA; 开总中断允许开总中断允许SETB EX0; 开开INT0中断中断SETB IT0; 下降沿有效下降沿有效中断服务程序清单如下:中断服务程序清单如下: INT: LCALL D20ms ; 延时去抖动延时去抖动MOV P1, #0FFH; P1口送全口送全1值值MOV A, P1; 读读P1口各引脚口各引脚 CJNE A, #0FFH,CLOSE; 验证是否确实有键闭合验证是否确实有键闭合 AJMP OUT; 无键按下无键按下 CLOSE: JNB ACC.7, KEY 7; 查询查询7号键号键 JNB ACC.6, KEY 6; 查询查询6号键号键 JNB ACC.5, KEY5; 查询查询5号键号键 JNB ACC.4, KEY4; 查询查询4号键号键 JNB ACC.3, KEY 3; 查询查询3号键号键 JNB ACC.2, KEY 2; 查询查询2号键号键 JNB ACC.1, KEY 1; 查询查询1号键号键 JNB ACC.0,KEY 0 ; 查询查询0号键号键 OUT: RETI KEY 7:; 7号键处理程序号键处理程序 KEY 71:MOV A, P1; 再读再读P1口各引脚口各引脚 JNB ACC.7, FUNC71; 确认键是否释放确认键是否释放 RETI KEY 6:; 其他键处理程序其他键处理程序 D20ms: 略略; 20ms延时子程序延时子程序 END (2)矩阵式键盘接口矩阵式键盘接口行反转法行反转法 矩阵式键盘按键识别方法有行反转法和扫描法等。行反转法需要两个双矩阵式键盘按键识别方法有行反转法和扫描法等。行反转法需要两个双向向I/O口分别接行、列线。步骤如下:口分别接行、列线。步骤如下: (1)由行线输出全)由行线输出全“1”,读入列线,判有无键按下。,读入列线,判有无键按下。 (2)若有键按下)若有键按下,再将读入的列线值输出再将读入的列线值输出,读入行线的值。读入行线的值。 (3)第一步读进的列线值与第二步读进的行线值运算,从而得到代表此)第一步读进的列线值与第二步读进的行线值运算,从而得到代表此键的唯一的特征值。键的唯一的特征值。 行反转法因输入与输出线反过来用而得名。优点是判键速度快,两次即行反转法因输入与输出线反过来用而得名。优点是判键速度快,两次即可。可。例题例题 请为请为8051微处理器设计一个由微处理器设计一个由4行行4列键阵构成的键盘。列键阵构成的键盘。解:解:44矩阵键盘的线路连接如下页图所示。其中矩阵键盘的线路连接如下页图所示。其中P2口的低口的低4位作为输出线。位作为输出线。P1口的低口的低4位作为输入线,输入线通过位作为输入线,输入线通过74LS21进行逻辑相与后作为进行逻辑相与后作为8051的一的一个外部中断源输入。当有键按下时就将引起中断。中断服务程序要对所按的个外部中断源输入。当有键按下时就将引起中断。中断服务程序要对所按的键进行判别。键进行判别。 (1)查询闭合键的位置子程序查询闭合键的位置子程序KEYR KEYR子程序用以确定每组线中哪一位为子程序用以确定每组线中哪一位为0,是否有多个,是否有多个0。在调用前,应将读某组线的数据存入累加器在调用前,应将读某组线的数据存入累加器A中。中。 KEYR子程子程序返回时,某组线中序返回时,某组线中0的位置(的位置(03)保存在)保存在R3中。按键闭合中。按键闭合引起中断后,执行中断服务程序。引起中断后,执行中断服务程序。KEYR子程序如下:子程序如下: KEYR: CJNE A, #0FEH, TESTP11; 测试测试P1.0MOV R3, #0 ; P1.0=0,说明被按键的输入线为说明被按键的输入线为P1.0LJMP FINISH; 返回返回 TESTP11: CJNE A, #0FDH, TESTP12 ; 测试测试P1.1MOV R3, #1LJMP FINISH TESTP12: CJNE A, #0FBH, TESTP13 ; 测试测试P1.2MOV R3, #2LJMP FINISH TESTP13: CJNE A, #0F7H, FINISH; 测试测试P1.3MOV R3, #3 FINISH: RET(2)中断服务程序 中断服务程序开始部分应利用软件延时消除键抖动,然后再对所按的中断服务程序开始部分应利用软件延时消除键抖动,然后再对所按的键做出处理。键做出处理。 中断服务程序如下:中断服务程序如下: ORG 1000H INT11: LCALL DELAY; 延时去抖动延时去抖动MOV A, P1; 读输入线读输入线ANL A, #0FH; 判断是否有键闭合判断是否有键闭合CJNE A, #0FH, TEST; 有键闭合,转判断按键程序有键闭合,转判断按键程序RETI; 无键闭合,返回无键闭合,返回 TEST: MOV B, A; 暂存暂存LCALL KEYR; 调用读取子程序调用读取子程序MOV 40H, R3; 暂存在暂存在40H单元单元MOV P2, #0FFH; 输出线写输出线写1MOV P1, B; 输入线写入数据输入线写入数据MOV A, P2; 读输出线读输出线LCALL KEYR; 调用读取子程序调用读取子程序XCH A, R3SWAP AORL 40H, A; 得按键特征值得按键特征值RETI 中中断断程程序序结结束束后后,键键的的特特征征值值存存放放在在40H单单元元中中。此此键键的的输输出出线线号号位位于于40H单单元元的的高高4位位,其其输输入入线线号号位位于于低低4位位。此此后后,根根据据40H单单元元的的内内容容去去查查表,得到相应键的代码,可进行显示或其他处理。表,得到相应键的代码,可进行显示或其他处理。(3)去抖动的延时子程序DELAY 利利用用CPU的的空空闲闲方方式式,通通过过定定时时器器T1实实现现延延时时, T1必必须须预预先先置置初初值值,以得到需要的延迟时间。设晶振频率为以得到需要的延迟时间。设晶振频率为6MHz,欲延时欲延时20ms,定时时间为:定时时间为: (216TC)6/12=20103s,初值:初值:TC=25536=63C0H。程序如下:程序如下: DELAY:MOV TOMD, #11H; 方式方式1定时定时MOV TL1, #0C0H; 定时器定时器1定时初值定时初值MOV TH1, #63HSETB EA; 开中断开中断SETB ET1; 开定时器开定时器1中断中断SETB PT1; 定时器定时器1为高级中断(因被键盘中断调用)为高级中断(因被键盘中断调用)SETB TR1; 启动定时器启动定时器ORL PCON,#1; 启动空闲方式,实际启动空闲方式,实际CPU在此处等待在此处等待CLR TR1 ; 以下四条指令只有在延时后,定时器被唤醒,才能执行以下四条指令只有在延时后,定时器被唤醒,才能执行CLR PT1CLR ET1RETEND(3)矩阵式键盘接口动态扫描法)矩阵式键盘接口动态扫描法动态扫动态扫描法原理:描法原理: 例题例题 用用8155实现实现4行行8列的列的32键键盘接口。键键盘接口。 解:解:电路如下页图所示,电路如下页图所示,8155的的PA设定为输出口,称其为扫设定为输出口,称其为扫描线。描线。PC3PC0设定为输入口,称其为回送线。设定为输入口,称其为回送线。8155与与MCS-51单片机的接口略,设单片机的接口略,设PA口的端口地址为口的端口地址为7F01H,PC口的端口口的端口地址为地址为7F03H。 键键值值编编码码形形式式:回回送送线线PC0, PC1, PC2, PC3上上的的键键值值(每每条条回回送送线线上上有有8个个键键,顺顺序序从从左左到到右右)分分别别为为00H +(00H07H)、08H +(00H07H)、10H +(00H07H)、18H +(00H07H)。其其中中,(00H07H)的的具具体体内容由扫描线决定,存放在内容由扫描线决定,存放在R4中。中。P2.7P2.6/WR/RDALEP0/CEIO/M/WR/RDALED0-D78(1 1)扫描是否有键按下子程序)扫描是否有键按下子程序KEY1KEY1,回扫线的值存放在回扫线的值存放在A A中。中。 程序如下:程序如下: ORG 1000H KEY1:MOV DPTR, #7F01H ; 将将PA口地址送口地址送DPTR,PA口作为扫描线口作为扫描线 MOV A, #00H; 所有扫描线均为低电平所有扫描线均为低电平 MOVX DPTR, A; PA口向列线输出口向列线输出00H INC DPTR INC DPTR; 指向指向PC口口 MOVX A, DPTR ; 取回送线状态取回送线状态 CPL A; 行线状态取反行线状态取反 ANL A, #0FH; 屏蔽屏蔽A的高半字节的高半字节 RET; 返回返回(2 2)判判断断是是否否有有键键按按下下子子程程序序KEYKEY,如如果果有有,识识别别按按键键的的键键码码。 其中其中DELAY1DELAY1是延时子程序。是延时子程序。 程序如下:程序如下:KEY: ACALL KEY1; 检查有键闭合否检查有键闭合否 JNZ LKEY1; A非非0说明有键按下说明有键按下 ACALL DELAY1; 执行一次延时子程序(延时执行一次延时子程序(延时6 ms) AJMP KEY LKEY1: ACALL DELAY1 ACALL DELAY1 ; 有键闭合延时有键闭合延时26ms=12ms以去抖动以去抖动 ACALL KEY1; 延时以后再检查是否有键闭合延时以后再检查是否有键闭合JNZ LKEY2; 有键闭合,转有键闭合,转LKEY2 ACALL DELAY1 ; 无键闭合,说明是干扰信号,不作处理无键闭合,说明是干扰信号,不作处理 AJMP KEY; 延时延时6ms后转后转KEY继续等待键入继续等待键入 LKEY2: MOV R2, #0FEH; 扫描初值送扫描初值送R2,设定,设定PA0为当前扫描线为当前扫描线 MOV R4, #00H ; 回送初值送回送初值送R4LKEY4: MOV DPTR, #7F01H; 指向指向PA口口MOV A, R2 MOVX DPTR, A; 扫描初值送扫描初值送PA口口 INC DPTR INC DPTR; 指向指向PC口口MOV A, DPTR; 取回送线状态取回送线状态JB ACC.0, LONE ; ACC.0=1,第,第0行无键闭合,转行无键闭合,转LONEMOV A, #00H; 装第装第0行行值行行值AJMP LKEYP; 转计算键码转计算键码 LONE: JB ACC.1, LTWO; ACC.1=1,第,第1行无键闭合,转行无键闭合,转LTWO MOV A, #08H; 装第装第1行行值行行值 AJMP LKEYP; 转计算键码转计算键码 LTWO: JB ACC.2, LTHR; ACC.2=1,第,第2行无键闭合,转行无键闭合,转LTHR MOV A, #10H; 装第装第2行行值行行值 AJMP LKEYP LTHR: JB ACC.3, NEXT; ACC.3=1,第,第3行无键闭合,转行无键闭合,转NEXT MOV A, #18H; 装第装第3行行值行行值 LKEYP: ADD A, R4 ; 计算键码计算键码 PUSH ACC ; 保存键码保存键码 LKEY3:ACALL DELAY1; 延时延时6ms ACALL KEY1; 判断键是否继续闭合,若闭合再延时判断键是否继续闭合,若闭合再延时 JNZ LKEY3 POP ACC; 若键释放,则键码送若键释放,则键码送A RET NEXT: INC R4; 列号加列号加1 MOV A, R2 JNB ACC.7, KND; 第第7位为位为0,以扫描到最高列,转,以扫描到最高列,转KND RL A; 循环右移一位循环右移一位 MOV R2, A AJMP LKEY4; 进行下一列扫描进行下一列扫描 KND: AJMP KEY; 扫描完毕,开始新的一轮扫描完毕,开始新的一轮 DELAY1: ; 延时子程序,略延时子程序,略 END9.3 MCS-51单片机与显示器的接口技术单片机与显示器的接口技术 一、一、 LED (Light Emitting Diode)显示器结构与原理)显示器结构与原理 LED显示器的外形显示器的外形七段七段LED字形码如下表字形码如下表 LED工工作作时时需需要要一一定定的的工工作作电电流流,才才能能正正常常发发光光。单单个个LED实实际际上上是是一一个个压压降降为为1.82.2V的的发发光光二二极极管管。通通常常每每个个段段笔笔画画要要串串一一个个合合适适的的电电阻阻,使使流流过过的的电电流流为为1mA50mA。下图为单个下图为单个LED的驱动接口电路。的驱动接口电路。LED数码管的显示方式数码管的显示方式(1)静态显示方式)静态显示方式 (2)动态显示方式)动态显示方式.6 例题例题 设计设计6位共阴极显示器与位共阴极显示器与8155的接口电路,并写出与之对应的动态的接口电路,并写出与之对应的动态扫描显示子程序。显示数据缓存区在片内扫描显示子程序。显示数据缓存区在片内RAM 79H7EH单元。单元。 .6二、二、 LED (Light Emitting Diode)显示器接口举例)显示器接口举例动态扫描子程序如下:动态扫描子程序如下: ORG 1000H DSP8155: MOV DPTR, #7F00H ;指向指向8155命令寄存器命令寄存器 MOV A, #00000011B; 设定设定PA口、口、PB口为基本输出方式口为基本输出方式 MOVX DPTR, A; 输出命令字输出命令字 DISP1:MOV R0, #7EH; 指向缓冲区末地址指向缓冲区末地址MOV A, #20H; 扫描字,扫描字,PA5为为1,从左至右扫描,从左至右扫描 LOOP: MOV R2, A; 暂存扫描字暂存扫描字 MOV DPTR, #7F01H; 指向指向8155的的PA MOVX DPTR, A; 输出位选码输出位选码 MOV A, R0; 读显示缓冲区一字符读显示缓冲区一字符 MOV DPTR, #PTRN; 指向段数据表首地址指向段数据表首地址 MOVC A, A+DPTR; 查表,得段数据查表,得段数据 MOV DPTR, #7F02H; 指向指向8155的的PB MOVX DPTR, A; 输出段数据输出段数据 CALL D1MS; 延时延时1ms DEC R0; 调整指针调整指针 MOV A, R2; 读回扫描读回扫描 CLR C ; 清进位标志清进位标志 RRC A ; 扫描字右移扫描字右移 JC PASS; 结束结束 AJMP LOOP ; 继续显示继续显示 PASS: RET ; 返回返回 D1MS: MOV R7, #02H; 延时延时1ms子程序子程序 DMS: MOV R6, #0FFH DJNZ R6, $ DJNZ R7, DMS RETPTRN: DB 0C0H, 0F9H, 0A4H, 0B0H, 99H ; 段数据表段数据表 DB DB END9.4 MCS-51单片机键盘和显示器接口设计实例单片机键盘和显示器接口设计实例 一、一、 利用利用8155芯片实现键盘和显示器接口芯片实现键盘和显示器接口1 1接口电路接口电路 下页图是一个典型实用的采用下页图是一个典型实用的采用8155并行扩展接口构成的键并行扩展接口构成的键盘显示电路,图中只设置了盘显示电路,图中只设置了32个键,如果增加个键,如果增加PC口线,可以增口线,可以增加按键,最多可达加按键,最多可达48个键。个键。LED显示器采用共阴极,段选码由显示器采用共阴极,段选码由8155 PB口提供,位选码由口提供,位选码由PA口提供。键盘的列输入由口提供。键盘的列输入由PA口提口提供,行输出由供,行输出由PC0PC3提供,提供,8155的的RAM地址为地址为7E00H7EFFH,I/O地址为地址为7F00H7F05H。图中的图中的8155也可以用也可以用8255A来替代。来替代。 2 2软件设计软件设计 由于键盘与显示设计成一个接口电路,因此在软件中合并由于键盘与显示设计成一个接口电路,因此在软件中合并考虑键盘查询与动态显示,键盘消抖的延时子程序用显示程序考虑键盘查询与动态显示,键盘消抖的延时子程序用显示程序替代。替代。8155动态显示子程序动态显示子程序DSP8155参照动态显示的例题。参照动态显示的例题。 程序如下:程序如下: ORG 1000HKD1:MOV A, #0000 0011B; 8155初始化,初始化,PA,PB基本输出方式,基本输出方式,PC输入方式输入方式MOV DPTR, #7F00HMOVX DPTR, AKEY1:ACALL KS1; 调用判断是否有键闭合子程序调用判断是否有键闭合子程序JNZ LK1; 有键闭合转有键闭合转LK1ACALL DSP8155; 调用调用8155动态显示子程序,延时动态显示子程序,延时6msAJMP KEY1LK1:ACALL DSP8155ACALL DSP8155; 调用两次显示,延时调用两次显示,延时12msACALL KS1JNZ LK2ACALL DSP8155; 调用调用8155动态显示子程序,延时动态显示子程序,延时6msAJMP KEY1LK2:MOV R2, #0FEHMOV R4, #00HLK3:MOV DPTR, #7F01HMOV A, R2MOVX DPTR, AINC DPTRINC DPTRMOVX A, DPTRJB ACC.0, LONEMOV A, #00HAJMP LKP LONE:JB ACC.1, LTWOMOV A, #08HAJMP LKPLTWO:JB ACC.2, LTHRMOV A, #10HAJMP LKPLTHR:JB ACC.3, NEXTMOV A, #18H LKP:ADD A, R4PUSH ACC LK4:ACALL DSP8155ACALL KS1JNZ LK4POP ACCNEXT:INC R4MOV A, R2JNB ACC.7, KNDRL AMOV R2, AAJMP LK3 KND:AJMP KEY1 KS1:MOV DPTR, #7F01HMOV A, #00HMOVX DPTR, AINC DPTRINC DPTR MOVX A, DPTRCPL AANL A, #0FHRETEND例题例题设计设计8051通过通过8255A芯片扩展芯片扩展3位七段共阳极位七段共阳极LED显示器。显示器。初始化及显示程序如下:初始化及显示程序如下: ORG 1000H DSP8255: MOV DPTR, #7FFFH MOV A, #80H; 8255A工作方式设置工作方式设置 MOVX DPTR, A; 工作方式字送工作方式字送8255A控制口控制口 解:解:接口电路如下页图所示,接口电路如下页图所示,8255A与与8051的接口略。在程序的接口略。在程序中将相应的字形码写入中将相应的字形码写入8255A的的PA, PB, PC口,显示器就可以显口,显示器就可以显示出示出3位字符。位字符。 8255A的初始化设定为的初始化设定为PA, PB, PC为基本为基本I/O输出方式,输出方式,待显示的数据存放在内部待显示的数据存放在内部RAM 的的40H42H单元,数据格式为单元,数据格式为非压缩非压缩BCD码。码。 MOV R0, #40H ; 显示数据起始地址显示数据起始地址 MOV R3, #03H; 待显示数据个数待显示数据个数 MOV DPTR, #7FFCH ; 第一个数据在第一个数据在PA口显示口显示 LOOP : MOV A, R0; 取出第一个待显示数据取出第一个待显示数据 ADD A, #06H ; 加上偏移量,查表指令到表加上偏移量,查表指令到表TAB 有有6个字节个字节 MOVC A, A+PC; 查表取出字形码查表取出字形码 MOVX DPTR, A; 字形码送字形码送8255A端口显示端口显示 INC R0; 指向下一个数据存储位置指向下一个数据存储位置 INC DPTR; 指向下一个七段数码显示器指向下一个七段数码显示器 DJNZ R3, LOOP; 未显示结束,返回继续未显示结束,返回继续 RET TAB: DB 0C0H, 0F9H, 0A4H, 0B0H; 0, 1, 2, 3 字形码表字形码表 DB 99H, 92H, 82H, 0F8H; 4, 5, 6, 7 DB 80H, 90H, 88H, 83H; 8, 9, A, b DB 0C6H, 0A1H, 86H, 8EH ; C, d, E, F END
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号