教学课件PPT MCS51单片机IO接口技术.ppt

上传人:仙人指路1688 文档编号:2347453 上传时间:2023-02-14 格式:PPT 页数:60 大小:1.14MB
返回 下载 相关 举报
教学课件PPT MCS51单片机IO接口技术.ppt_第1页
第1页 / 共60页
教学课件PPT MCS51单片机IO接口技术.ppt_第2页
第2页 / 共60页
教学课件PPT MCS51单片机IO接口技术.ppt_第3页
第3页 / 共60页
教学课件PPT MCS51单片机IO接口技术.ppt_第4页
第4页 / 共60页
教学课件PPT MCS51单片机IO接口技术.ppt_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《教学课件PPT MCS51单片机IO接口技术.ppt》由会员分享,可在线阅读,更多相关《教学课件PPT MCS51单片机IO接口技术.ppt(60页珍藏版)》请在三一办公上搜索。

1、第九章 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接口芯片扩展,

2、可编程I/O接口芯片的特点:适应多种功能需求,使用灵活,可扩展多个并行I/O口,可以编程设定为输入或输出口,应用非常广泛。1可编程并行口8255A芯片,Intel 8255A芯片是通用可编程并行接口电路,广泛应用于单片机扩展并行I/O口。它具有3个8位并行口PA,PB和PC,一个8位的数据口D0D7,PC口分高4位和低4位。高4位可与PA口合为一组(A组),低4位可与PB口合为一组(B组),PC口可按位置位/复位。40条引脚,DIP封装。,8255A引脚信号图,(1)A口、B口和C口。A口、B口和C口均为8位I/O数据口,但结构上略有差别。A口由一个8位的数据输出缓冲/锁存器和一个8位的数据输

3、入缓冲/锁存器组成。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 端口选择线(选片内

4、四个端口寄存器)/RD 读信号线/WR 写信号线,(2)内部逻辑部分PAPC7 PC4PBPC3 PC0,(3)外设接口部分可由编程决定三个端口的功能 输出 输入 其它A口 8位锁存/缓冲 8位锁存/缓冲 双向B口 8位锁存/缓冲 8位缓冲C口 8位锁存/缓冲 8位缓冲 可分成两组分别作A 口、B口的控制/联络线,二、8255A的工作方式及方式选择1、8255A的工作方式(1)方式0 基本输入/输出方式 A口、B口、C口均有此方式,无需选通,是单片机 与外部设备之间的直接数据通道,适用于无条件传 送随时准备好的外设,如键盘、显示器等。(2)方式1 选通输入/输出方式 PA口、PB口作为数据输入

5、/输出口,PC口专为PA口,PB口作选通联络信号线,适用于查 询或中断方式的数据传送。,(3)方式2 双向数据输入/输出方式 仅PA口有此方式。PC3 PC7此时作联络线,PB口可以是方式0;也可以是方式1(PC0 PC1作联络线)。,2、8255A的方式控制字 用编程方法向8255A的控制口写控制字,可决定它的工作 方式。,(1)工作方式控制字,(2)PC口置位/复位控制字,“0”标志位。D6、D5、D4 不使用位。D3、D2、D1 位选择位,000 111 分别对应PC7 PC0。D0 位状态位,1 置位,0 复位。,三、单片机和8255A的连接及应用,单片机 8255A A0 A0 A1

6、 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个连续单元中的

7、内容打印输出,试编程。,P2.7 P0 8031 ALE/RD/WR RST/EA,74LS3731D 8D 2Q 1QG/OC,/CS 8255A PA0PA7A1A0 PC0 PC7D0 D7/RD/WRRESET,微型打印机DB0DB7BUSY/STB,8,8,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

8、口地址: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;若

9、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-51单片机与键盘的接口技术,一、概述键盘:单片机系统中完成控制参数输入及修改的基本输入设备,是人工干预系统的重要手段。各种按键或开关。键盘的分类:按编码方式可分为编码键盘与非编码键盘。按键盘连接方式可分为独立连接式键盘与矩阵

10、连接式键盘。1独立连接式键盘 每键相互独立,各自与一条I/O线相连,CPU可直接读取该I/O线的高/低电平状态。其优点是硬件、软件结构简单,判键速度快,使用方便;缺点是占I/O口线多。适用场合:多用于设置控制键、功能键。适用于键数较少的场合。,2.矩阵连接式键盘 键按矩阵排列,各键处于矩阵行/列的结点处,CPU通过对连在行(列)的I/O线送已知电平的信号,然后读取列(行)线的状态信息。逐线扫描,得出键码。其特点是键多时占用I/O口线少,硬件资源利用合理,但判键速度慢。适用场合:多用于设置数字键,适用于键数多的场合。,二、使用键盘时必须解决的问题,(1)开关状态的可靠输入。必须消除键抖动。可以采

11、用硬件和软件两种方法,硬件方法就是在按键输入通道上添加去抖动电路;软件方法则采用延迟1020ms,键盘的抖动时间一般为510ms,抖动现象会引起CPU对一次键操作进行多次处理,从而可能产生错误。,(2)键盘状态的监测方法中断方式还是查询方式。(3)键盘编码方法。(4)键盘控制程序的编制。,三、键盘接口 功能:对键盘上所按下的键进行识别。分类:(1)编码键盘:采用专用的编码/译码器件,被按下的键由该器件译码输出相应的键码/键值。其特点是增加了硬件开销,编码固定,但编程简单。适用于规模大的键盘。(2)非编码键盘:采用软件编/译码的方式,通过扫描,对每个被按下的键判别输出相应的键码/键值。其特点是不

12、增加硬件开销,编码灵活,但编程较复杂,占CPU时间。适用于小规模的键盘,特别是单片机系统键盘。,1键盘接口的工作原理 对于矩阵式键盘,如图所示,键盘的行线X0X3通过电阻接+5V,当键盘上没有键闭合时,所有的扫描线和回送线都断开,无论扫描线处于何种状态,回送线都呈高电平。当键盘上某一键闭合时,则该键所对应的扫描线和回送线被短路,可以确定,变为低电平的回送线与扫描线相交处的键闭合。,CPU对键盘扫描的方式:程序控制的随机方式(CPU空闲时扫描键盘)、定时控制方式(定时扫描键盘)、中断方式。CPU对键盘上闭合键的键号确定方法:根据扫描线和回送线的状态计算求得,或根据行线和列线的状态查表求得。,2键

13、输入程序的设计方法(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:SE

14、TB 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

15、,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)第一步读进的列线值与第二步读进的行线值运算,从而得到代表此键

16、的唯一的特征值。行反转法因输入与输出线反过来用而得名。优点是判键速度快,两次即可。例题 请为8051微处理器设计一个由4行4列键阵构成的键盘。解:44矩阵键盘的线路连接如下页图所示。其中P2口的低4位作为输出线。P1口的低4位作为输入线,输入线通过74LS21进行逻辑相与后作为8051的一个外部中断源输入。当有键按下时就将引起中断。中断服务程序要对所按的键进行判别。,(1)查询闭合键的位置子程序KEYR KEYR子程序用以确定每组线中哪一位为0,是否有多个0。在调用前,应将读某组线的数据存入累加器A中。KEYR子程序返回时,某组线中0的位置(03)保存在R3中。按键闭合引起中断后,执行中断服务

17、程序。,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)中断服务程序 中断服务程序开始部分应利用软件延时消除键抖动,然后再对所按的键

18、做出处理。中断服务程序如下: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单元中。此键的输

19、出线号位于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为高级中断(因被键

20、盘中断调用)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个键,顺序从左到右)

21、分别为00H+(00H07H)、08H+(00H07H)、10H+(00H07H)、18H+(00H07H)。其中,(00H07H)的具体内容由扫描线决定,存放在R4中。,(1)扫描是否有键按下子程序KEY1,回扫线的值存放在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;返

22、回(2)判断是否有键按下子程序KEY,如果有,识别按键的键码。其中DELAY1是延时子程序。程序如下:,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 R

23、2,#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

24、.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

25、A;循环右移一位 MOV R2,A AJMP LKEY4;进行下一列扫描 KND:AJMP KEY;扫描完毕,开始新的一轮 DELAY1:;延时子程序,略 END,9.3 MCS-51单片机与显示器的接口技术,一、LED(Light Emitting Diode)显示器结构与原理,LED显示器的外形,七段LED字形码如下表,LED工作时需要一定的工作电流,才能正常发光。单个LED实际上是一个压降为1.82.2V的发光二极管。通常每个段笔画要串一个合适的电阻,使流过的电流为1mA50mA。下图为单个LED的驱动接口电路。,LED数码管的显示方式,(1)静态显示方式,(2)动态显示方式,例题 设计

26、6位共阴极显示器与8155的接口电路,并写出与之对应的动态扫描显示子程序。显示数据缓存区在片内RAM 79H7EH单元。,二、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

27、的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

28、RETPTRN:DB 0C0H,0F9H,0A4H,0B0H,99H;段数据表 DB DB END,9.4 MCS-51单片机键盘和显示器接口设计实例,一、利用8155芯片实现键盘和显示器接口1接口电路 下页图是一个典型实用的采用8155并行扩展接口构成的键盘显示电路,图中只设置了32个键,如果增加PC口线,可以增加按键,最多可达48个键。LED显示器采用共阴极,段选码由8155 PB口提供,位选码由PA口提供。键盘的列输入由PA口提供,行输出由PC0PC3提供,8155的RAM地址为7E00H7EFFH,I/O地址为7F00H7F05H。图中的8155也可以用8255A来替代。2软件设计 由

29、于键盘与显示设计成一个接口电路,因此在软件中合并考虑键盘查询与动态显示,键盘消抖的延时子程序用显示程序替代。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;调用两次显示,延时12m

30、sACALL 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

31、 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工作方

32、式设置 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,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号