收藏 分销(赏)

单片机原理与应用(第八章).doc

上传人:pc****0 文档编号:7425077 上传时间:2025-01-04 格式:DOC 页数:5 大小:112.50KB 下载积分:10 金币
下载 相关 举报
单片机原理与应用(第八章).doc_第1页
第1页 / 共5页
单片机原理与应用(第八章).doc_第2页
第2页 / 共5页


点击查看更多>>
资源描述
第八章 MCS-51单片机的I/O口扩展设计 8.1 I/O口概述 1. 串行I/O口 一次传送一位信号,字节就要逐位传送,只需一条数据线。 2. 并行I/O口 一次可同时传送多位信号,但需同样多的数据线。 P1.0 +5V 例:用开关来控制指示灯(单点LED)的亮和灭。 8051 程序1: ORG 0000H LJMP Main P1.1 ORG 100H Main: SETB P1.1 ;P口作为输入的位,在测试前必须先置为“1”。 JB P1.1,L1 ;测试开关的电平,为“1”则转移到L1。 SETB P1.0 ;输出高电平,点亮 LCALL Delay ;延时 CLR P1.0 ;输出低电平,熄灭 LCALL Delay ; 延时 LJMP Main ;循环测试开关 L1: CLR P1.0 ;输出低电平,熄灭 SJMP Main ;循环测试开关 Delay: MOV R3, #10 ; 延时10ms De1: MOV R4, #250 ; De2: DJNZ R4, De2 ; 250*4us=1ms,设 f = 6MHz DJNZ R3, De1 RET END 当单片机的I/O口位不够用时,就需进行I/O口的扩展。 MCS-51单片机的外部数据存储器地址可以作为扩展I/O口的地址使用。 8.2 用可编程芯片8155/8156扩展并行I/O口(待) 8.3 用TTL芯片扩展并行I/O口 8.3.1 用74LS377( 373、374 )扩展一个8位并行输出口 1. 利用口位直接扩展的电路图: 对应的控制程序: 8051 E MOV P0,#5AH ;输出的数据。 P0.0 D0 Q0 MOV P2,#7FH ;对CLK 输出一个负电平 P0.1 D1 Q1 NOP ;脉冲锁存信号 P0.2 D2 Q2 MOV P2,#0FFH P0.3 D3 Q3 或: P0.4 D4 Q4       MOV P0,#5AH P0.5 D5 Q5 CLR P2.7 P0.6 D6 Q6 NOP P0.7 D7 Q7 SETB P2.7 ALE 在这里数据口可以和P0~P3的任一个连接, P2.7 CLK CLK也可以和任一个口位连接。 WR 74LS377 当E=0时,CLK从‘0’到‘1’的正跳变,D输入的数据被锁存到Q输出。 应用: 8051 CLK Q0~Q7 E CLK Q0~Q7 E CLK Q0~Q7 E 74LS377 P1 P3.0 P3.1 P3.2 2. 利用数据存储器地址扩展的电路图见P204页的图8-11。 对应的控制程序: 8051 E MOV DPTR,#7FFFH P0.0 D0 Q0 MOV A,#5AH ;输出的数据。 P0.1 D1 Q1 MOVX @DPTR,A P0.2 D2 Q2 执行: P0.3 D3 Q3 ①DPL的值送到P0,P0=D=FFH; P0.4 D4 Q4       DPH的值送到P2,P2.7=E=‘0’; P0.5 D5 Q5 ALE发出锁存的电平信号(没用到); P0.6 D6 Q6 ②A的值送到P0,P0=D=5AH; P0.7 D7 Q7 WR发出“写”的电平信号(脉冲), ALE D的数据被锁存到Q。 P2.7 CLK WR 74LS377 这种方法必须把P0口作为数据口,P2口作为选择位。 当E=0时,CLK从‘0’到‘1’的正跳变,D输入的数据被锁存到Q输出。 8.3.2 1.用74LS244扩展一个8位并行输入口 利用数据存储器地址扩展的电路图见P204页的图8-11。 对应的控制程序: 8051 MOV DPTR,#7FFFH P0.0 1Y1 1A1 MOVX A,@DPTR P0.1 1Y2 1A2 P0.2 1Y3 1A3 执行: P0.3 1Y4 1A4 ①DPL的值送到P0,P0=D=FFH; P0.4 2Y1 2A1 DPH的值送到P2,P2.7=‘0’; P0.5 2Y2 2A2 (这时的RD=‘1’;) P0.6 2Y3 2A3 ALE发出锁存的电平信号(没用到); P0.7 2Y4 2A4 ②RD发出“读”的电平信号, ALE 1EN RD=‘0’,(P2.7) OR (RD)=‘0’, P2.7 2EN 1EN=2EN=‘0’,打开A1àY1和A2àY2的通道, RD 74LS244 外部输入的数据传送到P0ßYi, OR P0口的值送给累加器A=P0=Yi。 当iEN=0时,打开AiàYi的通道。 2. 用74LS245扩展一个8位并行输入输出口 利用数据存储器地址扩展的电路图: 对应的控制程序 8051 输入:当 DIR= ‘1’ P0.0 A0 B0 MOV DPTR,#FFFFH P0.1 A1 B1 MOVX A,@DPTR P0.2 A2 B2 P0.3 A3 B3 输出:当 DIR= ‘0’ P0.4 A4 B4 MOV DPTR,#7FFFH P0.5 A5 B5 MOV A,#58H ;输出的数据。 P0.6 A6 B6 MOVX @DPTR,A P0.7 A7 B7 ALE P2.7 DIR 从这里可看出:利用数据存储器地址扩展,比直接 RD 用P口位扩展要节省口位。 WR G AND 74LS245 当 DIR= ‘1’且G=‘0’时,打开BiàAi的输入通道; 当 DIR= ‘0’且G=‘0’时,打开AiàBi的输出通道。 8.4 用MSC-51单片机的串行口扩展I/O口 8.4.1扩展并行输入口 用CD4014扩展一个16位并行输入口: P/S PI1 D0 1 CD4014芯片工作原理: 8051 PI2 D1 2 ① 当P/S=1时, P3.0 Q8 PI3 D2 3 Di存入内部寄存器PIi; (RXD) PI4 D3 4 ② 当P/S=0时, CLK PI5 D4 5 (R3) CLK从‘0’到‘1’的正跳变, P1.0 PI6 D5 6 内部寄存器PIi左移一位, SI PI7 D6 7 即:Q8≡PI8ßPI7, P3.1 VSS PI8 D7 8 PI7ßPI6,… ,PI3ßPI2, (TXD) CD4014(1) PI2ßPI1,PI1ßSI≡Q8(2); P/S PI1 D0 9 Q8(2)≡PI8(2)ßPI7(2), … PI2 D1 10 Q8 PI3 D2 11 PI4 D3 12 (R4) CLK PI5 D4 13 PI6 D5 14 SI PI7 D6 15 VSS PI8 D7 16 CD4014(2) 对应的控制程序,读入16位数据存入R3、R4中: RD16:SETB P1.0 ; 置CD4014为并行输入方式 CLR P3.1 SETB P3.1 ; 产生一个脉冲,读入外部并行输入数据 CLR P1.0 ; 允许CD4014串行移位 MOV SCON,#10H ; 设置串行口为方式0,并启动串行接收 KT1: JNB RI,KT1 ; 等待接收 CLR RI ;清除RI MOV A,SBUF ; 从串行缓冲区中读数 MOV R3,A ; 第一个数存入R3中 MOV SCON,#10H ; 设置串行口为方式0,并启动串行接收 KT2: JNB RI,KT2 ; 等待接收 CLR RI ; 清除RI MOV A,SBUF ; 从串行缓冲区中读数 MOV R4,A ; 第二个数存入R4中 RET ; 用74LS165扩展一个16位并行输入口: S/L d0 D0 1 74LS165芯片工作原理: 8051 d1 D1 2 ① 当S/L=0时, P3.0 QH d2 D2 3 Di存入内部寄存器di; (RXD) d3 D3 4 ② 当S/L=1时, CP1 d4 D4 5 (R3) CP1从‘0’到‘1’的正跳变, P1.0 d5 D5 6 内部寄存器di左移一位, SI d6 D6 7 即:QH≡d7ßd6, P3.1 CP2 d7 D7 8 d6ßd5,… ,d2ßd1, (TXD) 74LS165(1) d1ßd0,d0ßSI≡QH(2); S/L d0 D0 9 QH(2)≡d7(2)ßD6(2), … d1 D1 10 QH d2 D2 11 d3 D3 12 (R4) CP1 d4 D4 13 d5 D5 14 SI d6 D6 15 CP2 d7 D7 16 74LS165(2) 对应的控制程序,读入16位数据存入R3、R4中: RD16:CLR P1.0 ; 读入外部并行输入数据 SETB P1.0 ; 允许74LS165串行移位 MOV SCON,#10H ; 设置串行口为方式0,并启动串行接收 KT1: JNB RI,KT1 ; 等待接收 CLR RI ; 清除接收标志 MOV A,SBUF ; 从串行缓冲区中读数 MOV R3,A ; 第一个数存入R3中 MOV SCON,#10H ; 设置串行口为方式0,并启动串行接收 KT2: JNB RI,KT2 ; 等待接收 CLR RI ; 清除接收标志 MOV A,SBUF ; 从串行缓冲区中读数 MOV R4,A ; 第二个数存入R4中 RET ; 8.4.2扩展并行输出口 用74LS164扩展两个8位并行输出口: 74LS164(1) QA D0 1 A QB 2 B QC 3 QD 4 8051 QE 5 R3 CLR QF 6 P1.0 CLK QG 7 QH D7 8 P3.1 (TXD) QA D0 9 A QB 10 P3.0 B QC 11 (RXD) QD 12 R4 QE 13 CLR QF 14 CLK QG 15 QH D7 16 74LS164(2) 对应的控制程序,R3、R4的数据经串行口输出: WR16:CLR P1.0 ; 清除74LS164中的数据 SETB P1.0 ; 允许74LS164串行移位 MOV SCON,#00H ; 设置串行口为方式0 MOV A,R3 ; MOV SBUF,A ; 启动串行口发送 WT1: JNB TI,WT1 ; 等待发送完毕 CLR TI MOV A,R4 ; MOV SBUF,A ; 启动串行口发送 WT2: JNB TI,WT2 ; 等待发送完毕 CLR TI RET ; 作业: (一) P210页的 二、填空题 1. 3. 4. 题。 (二) 请简述74LS374、244、245芯片的工作原理。 (三) 使用8051的串行口和利用一块74LS165扩展一个8位并行输入口, 请画出扩展芯片与CPU的连接示意图,并写出相应的输入程序段。 (四) 使用8051的串行口和利用一块74LS164扩展一个8位并行输出口, 请画出扩展芯片与CPU的连接示意图,并写出相应的输出程序段。 (五) 用74LS245芯片扩展一个8位并行输入输出口,要求利用P1和P3口位直接扩展。 请画出扩展芯片与CPU的连接示意图,并写出相应的输入和输出程序段。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服