上一篇 | 下一篇

第九章 基本I/O的应用(单片机应用教程之课次十九,电子圈原创)

发布: 2008-5-27 09:07 | 作者: feller | 来源: 本站原创 | 查看: 112次

第九章 基本I/O的应用

    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显示器的编程方法及硬件扩展方法。

TAG: 单片机 电子 电阻 发光二极管 教程 原创

字号: | 推荐给好友

 

评分:0

我来说两句