《单片机 第4章 输入、输出接口p0~p3》由会员分享,可在线阅读,更多相关《单片机 第4章 输入、输出接口p0~p3(16页珍藏版)》请在金锄头文库上搜索。
1、第四章 输入、输出接口P0P3,华中科技大学生命科学与技术学院,2018/9/7,1,概述 第一节 P0P3端口的功能和内部结构 第二节 编程举例 第三节 用并行口设计LED数码显示器和键盘电路,2018/9/7,2,MCS-51单片机有P0、P1、P2、P3四个8位双向IO口,每个端口可以按字节输入或输出,也可以按位进行输入或输出,共32根口线,用于位控制十分方便。P0口为三态双向口,能带8个TTL电路。 P1、P2、P3门为准双向口,负载能力为4个TTL电路。,2018/9/7,3,P0口(P0.0P0.7):该端口为8位准双向口,负载能力为8高LSTTL负载。P1口(P1.0P1.7):
2、8位准双向I/O口,P1口的驱动能力为4个LSTTL负载。P2口(P2.0P2.7):8位准双向I/O口,P2口的驱动能力也为4个LSTTL负载。在访问外部程序存储器时,它作存储器的高8位地址线。P3口(P3.0P3.7):P3口同样是内部带上拉电阻的8位准双向I/O口,P3口除了作为一般的I/O口使用之外,其还具有特殊功能。,2018/9/7,4,5.1 P0P3端口的功能和内部结构,P3 口的第二功能,2018/9/7,5,例:设计一电路,监视某开关K,用发光二极管LED显示开关状态,如果开关合上,LED亮;开关打开,LED熄灭。分析:设计电路如图5-2(a)如示。开关接在P1.1口线,L
3、ED接P1.0口线,当开关断开时, P1.1为+5V,对应数字量为“1”,开关合上时,P1.1电平为0V,对应数字量为“0”,这样就可以用JB指令对开关状态进行检测。LED正偏时才能发亮,按电路接法,当P1.0 输出“1”时LED正偏而发光,当P1.0输出“0”,LED的两端电压为0时熄灭。,2018/9/7,6,5.2 编程举例,编程如下:CLR P1.0 ;使发光二极管灭 AGA:SETB P1.1;对输入位P1.1写“1” JB P1.1,LIG ;开关开,转LIG SETB P1.0 ;开关合上,二极管亮 SJMP AGA LIG: CLR P1.0 ;开关开,二极管灭SJMP AGA
4、,2018/9/7,7,例:如图53所示, P1.0 P1.3接4个发光二极管LED, P1.4 P1.7接4个开关,编程将开关的状态反映到发光二极管上。,2018/9/7,8,汇编语言编程如下: ORG 0000H MOV P1,#0FFH ;高4位LED全灭,低4位输入线送“1” ABC:MOV A,P1;读P1口引脚开关状态,并送入ASWAP A ;低4位开关状态换到高4位ANL A,#0F0H;保留高4位MOV P1,A ;从P1口输出ORL P1,#0FH ;高4位不变,低4位送“1”,准备下一轮;读开关SJMP ABC ;循环执行,反复调整开关状态并执行观;结果,2018/9/7,
5、9,COM 为公共点,根据内部发光二极管的接线形式,可分成共阴极型和共阳极型。,2018/9/7,10,5.3 用并行口设计LED数码显示器和键盘电路,LED字形显示代码表,2018/9/7,11,LED 数码管的接口: 静态接口:固定显示方式,无闪烁,其电路可以采用一个并行口接一个数码管,数码管的公共端按共阴或共阳分别接地或Vcc。动态接口:采用各数码管循环轮流显示的方法,当循环显示的频率较高时,利用人眼的暂留特性,看不出闪烁显示现象。,2018/9/7,12,例:如图57是接有5个共阴极数码管的动态显示接口电路,用74LS373接成直通的方式作为驱动电路,阴极用非门74LS04反向门驱动,
6、字形选择由P1口提供,位选择由P3口控制。当P3.0P3.4轮流输出1时,5个数码管轮流显示。P1.7接开关,当开关打向位置“1”时,显示“12345”字样;当开关打向位置“2”时,显示“HELLO”字样。,2018/9/7,13,汇编程序编程如下:ORG 0000H ;清显示MOV P3,#0 TEST:SBTB P1.7JB P1.7,DIR1 ;检测开关MOV DPTR,#TAB1;开关打向1,置“12345”字形表头地址SJMP DIR DIR1: MOV DPTR,#TAB2;开关打向2,置“HELLO”表头地址 DIR: MOV R0,#0 ;R0存字形表偏移量MOV R1,#01
7、 ;R1置数码表位选代码 NEXT:MOV A,R0 MOVC A,A+DPTR ;查字形码表1 MOV P1,A ;送P1口输出,2018/9/7,14,MOV A,R1 MOV P3,A ;输出位选码 ACALL DAY ;延时 INC R0 ;指向下一位字形 RL A ;指向下一位 MOV R1,A CJNE R1,#20H,NEXT ;5个数码管显示完否 SJMP TEST DAY:MOV R6,#20 ;延时子程序,在focs=6MHz时;可延时20ms DL2:MOV R7,#7DH DL1:NOPNOP,2018/9/7,15,DJNZ R7,DL1 DJNZ R6,DL2 RET TAB1: db 06H,5BH,4FH,66H,6DH ;“15”字形码 TAB2: db 76H,79H,38H,38H,3FH;“HELLO”的字形码 END,2018/9/7,16,