9.1 P1口的应用
(1)实训目的
◆熟悉单片机基本I/O口的控制及应用
◆掌握P1口的输入输出功能及编程方法
(2)功能设计
根据P1口低4位输入开关量的状态,控制P1口高4位外接发光二极管的亮与灭。
(3)背景知识
P1口是一个8位准双向I/O接口,作为输入接口时,要先向锁存器中置“1”。可直接进行位操作,内部有上拉电阻,每一位输出可驱动4个LS型的TTL负载。
(4)硬件原理
硬件电路如图9-1所示。(去除了其他的电路部分,下同)
图9-1 P1口输入输出控制电路
(5)参考程序
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN: MOV A,#0FH ;主程序开始,设置输入为读引脚
MOV P1,A ;数据送P1
MOV A,P1 ;读4位键值
SWAP A ;P1口低4位与高4位数据交换
MOV P1,A ;送显示
ACALL LOOP1 ;调延时程序
ACALL LOOP1
AJMP MAIN
LOOP1:MOV R3,#0FFH
DJNZ R3,$
RET
END
(6)总结与提高
通过编程训练,读者可以掌握P1口用作I/O时的使用方法。本训练中用开关量作输入,用发光二极管做输出。实际应用时,输入的信号需要经过相应的调理电路调理后输入P1口。当P1口做输出时,应注意其带负载的能力,需要时可进行功率扩展。
9.2 P0口的应用
(1)实训目的
◆了解单片机基本I/O口的控制及应用
◆掌握用数据口扩展I/O的基本方法
(2)功能设计
用P0口扩展两片74LS273锁存器,控制两位LED数码管的显示,采用静态扫描方式。
(3)背景知识
1)LED显示器是由发光二级管显示字段的显示器件,分为共阳极和共阴极两种型式。图9-2(a)和(b)分别位共阳极和共阴极LED数码管原理图。
(a) (b)
图9-2 LED数码管内部电路2)LED显示器扫描方式
◆动态扫描显示方式
多位LED显示时,通常将所有位的段选线并联在一起,由一个8位I/O控制,而位选则由一个I/O口线控制,实现各位的分时选通。每一位LED的选通时间位1~2ms,如果导通时间太短,发光太弱,人眼无法看清,如果导通时间太长,占用CPU时间太长。由于人眼有视觉暂留现象,所以只要每位显示时间足够短,就能够造成多位同时亮的假象,每一位显示的时间间隔不能超过20ms,若时间太长,就会造成闪烁现象。
◆静态扫描显示方式
多位LED显示时,所有位的段选线都是独立的,只要将位选线接地或高电平即可,段码只要不改变,LED就保持原来状态。采用静态扫描方式,使LED亮度强,编程简单,但功耗大。
特别注意:应用数码管作为显示部件时,应在数码管的每一段加有线流电阻。
3)LED数码管的字型段码见表9-1
表9-1 LED字型段码表(4)硬件原理
在如图9-3所示的硬件电路中,采用P0口扩展2片锁存器74LS273,用来锁存2位共阴极LED的段码,采用静态扫描方式。P2.7、P2.6为位选线。
图9-3 P0口扩展的LED显示电路
(5)参考程序
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN: MOV R2,#00H ;主程序开始,显示“0”
KE1: MOV A,R2
MOV DPTR,#TAB ;送LED显示软件译码表首址
MOVC A,@A+DPTR ;查表求出键值显示的段码
MOV DPTR,#7FFFH ;选通第一片273
MOVX @DPTR,A ;数据送锁存器
INC R2 ;显示下一个数
MOV A,R2
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV DPTR,#0BFFFH ;选通第二片273
MOVX @DPTR,A ;数据送锁存器
LCALL LOOP1 ;调延时程序
INC R2 ;显示下一个数
CJNE R2,#0AH,KE1 ;判断显示是否结束
AJMP MAIN
LOOP1:MOV R3,#0FFH
LOOP: MOV R4,#0FFH
DJNZ R4,$
DJNZ R3 LOOP
RET
TAB: DB 3FH,06H,5BH,4FH,66H ;数字0~9的段码表
DB 6DH,7DH,07H,7FH,6FH
END
(6)总结与提高
通过训练,读者可以熟悉LED数码管显示器的原理,掌握静态扫描方式的硬件扩展方法。
9.3 矩阵式LED显示器的扩展
(1)实训目的
◆熟悉用单片机基本I/O口扩展矩阵式LED显示器的基本原理
◆掌握基本I/O的的功能及编程方法
(2)功能设计
用P1口扩展矩阵式LED显示器的行线,用P2口控制矩阵式LED显示器的列线。
具体要求:用8×8矩阵式共阴极LED显示器循环显示字母“P”。
(3)背景知识
矩阵式LED显示器有共阴极和共阳极两种型式。图9-4为8×8矩阵式LED显示字母“P”的字型图。
显示一个完整“P”,需要进行8次扫描(相当于多位7段LED的动态扫描),每一次扫描的数据格式如图9-5所示。
图9-4 字母P的点阵图图9-5 矩阵式LED显示字母P扫描数据格式
(4)硬件原理与资源分配
硬件电路如图9-6所示,由于LED显示器需要的电流较大,所以在行线和列线上都要加驱动器。本电路行线上采用74LS273锁存器进行驱动,列线上采用2003达林顿反向驱动器进行驱动。
资源分配:R1:字符的偏移量;R3:扫描的列数;R2:扫描信号值;R4、R5:软件延时参数。
图9-6 矩阵式LED显示电路
(5)参考程序
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN: MOV R1,#00H ;R1为字符的偏移量
MOV R3,#08H ;R3为扫描的列数
MOV R2,#01H ;R2为扫描信号值,取反后为0FEH
GN1: ANL P2,00H
MOV DPTR,#LAB ;送字符表首地址
MOV A,R1 ;取偏移量
MOVC A,@A+DPTR ;取字符表数据
MOV P1,A ;送显示
INC R1 ;下一个字符的偏移量
MOV A,R2 ;选通第一列
MOV P2,A
LCALL LOOP1
RL A ;准备进行第二列扫描
MOV R2,A
DJNZ R3,GN1 ;判断8次扫描是否结束
LJMP MAIN
LOOP1:MOV R4,#0FFH
LOOP: MOV R5,#0FFH
DJNZ R5,$
DJNZ R4 LOOP
RET
LAB: DB 00H,81H,0FFH,91H,11H,11H,0EH,00H
END
(6)总结与提高
通过编程训练读者可以掌握矩阵式LED显示器的编程方法及硬件扩展方法。






