发布论文 | 上传资料 | 发布供求 | 发布求职 | 发布项目 | 加入收藏 | RSS
您当前的位置:首页 > 文章中心 > 电子应用 > 电子制作

关于8155并行扩展3*3、4位LED显示概述

时间:2008-09-22 14:19:52  来源:  作者: 点击:10

一、实验目的

    ⑴掌握8155并行口的扩展与编程方法。

⑵了解8155并行口的键盘扫描及LED动态显示程序的编程方法。

8155介绍:

1)、8155是一个多功能的芯片,它的片内具有256字节的静态RAM、三个可编程选择工作方式

的并行I/O端口(2个8位口、一个6位口)、1个14位的可编程选择工作方式的减法计数器、1

地址锁存器,因此外接一片8155,就相当于综合扩展了数据存储器、I/O口、定时器/计数

器。

8015芯片的引脚功能:

PA0~PA7

端口A的I/O线(8位,接外设)

PB0~PB7

端口B的I/O线(8位,接外设)

PC0~PC5

端口C的I/O线(6位,接外设)

AD0~AD7

三态地址/数据复用线(8位,一般接单片机P0口,CPU与8155之间的地址、数据、命令、状态等信号都通过它来传送)

IO/ M

端口/存储器 选择控制 “0”选择片内RAM

                       “1”选择片内I/O口

TIMER IN

8155片内定时器/计数器的计数脉冲输入引脚

TIMER OUT

8155片内定时器/计数器的计满回零输出引脚

RD、WR

分别是对8155片内的RAM或I/O口的的读、写控制信号

ALE

地址锁存引脚

CE

选片

RESET

复位引脚

2)、8155的RAM和I/O口地址

RAM地址:当给8155的IO/ M 加低电平时,其AD0~AD7上得到的地址值是指8155的某一RAM单元的地址,地址范围是0000 0000到1111 1111,分别指向8155 RAM 的256个存储单元。

I/O口地址:当给8155的IO/ M 加高电平时,其AD0~AD7(仅用到低三位AD2、AD1、AD0)上得到的地址值是指8155的某一I/O口的地址.

3)、8155的使用

8155内RAM的使用:与一般外部数据存储器的使用基本一样,唯一区别是事先要使IO/ M 为低电平。

8155各端口的使用:A、B、C各端口可工作于不同的工作方式,使用前要进行初始化(写命令字到命令口),我们只要求基本输入/输出方式。

   

二、实验电路

上图为8155扩展I/O控制的4位共阴极LED动态显示接口电路。图中,PB口输出段选码,PA口输出位选码,位选码占用输出口的线数决定于显示器位数,比如4位就要占4条。75452是反向驱动器(30v高电压,OC门),这是因为8155PA口正逻辑输出的位控与共阴极LED要求的低电平点亮正好相反,即当PA口位控线输出高电平时,点亮一位LED240是同向OC门,做段选码驱动器。

    逐位轮流点亮各个LED,每一位保持1ms,在10ms~20ms之内再点亮一次,重复不止,这样。利用人的视觉赞留,好像4LED同时点亮了。

三、实验连线

    对于后缀名含有“H”的机型,按实验电路图连接138译码输入端A.B.C,其中AA2BA3CA4138使能控制输入端G与位于地址线A0引出孔所在位置下方的使能控制输出端G作对应连接,该端的寻址范围为0FFE0H~0FFFFH

 

①用一8芯扁平线把位于16×16点阵显示单元右下角的总线接口与数据总线单元的D0~D7任一接口相连,并把Y2插孔与8155片选CS相连。

  ②位于显示器左下方的控制总线WR/IOWRRD/IORD分别与8155并行口的WRRD引出端相连。

  ③显示控制端LED-GGND相连、8155并行口的I/M引出端与六位LED显示右下方的地址总线A8相连。

  ④8155并行口的ALERST引出端分别与六位LED显示左下方ALE/CLR端相连。

四、实验步骤

    ⑴在“P.”状态下按“0F14F20EV”,进行实验程序装载。

    ⑵在“P.”状态下键入“ 3C6EEXEC”命令,以连续方式运行键扫、显示控制程序。

    LED左边第一位显示闪动的“P”,在“P”状态下按“0~7”任意一个数字键,闪动位显示与其对应的数字,按“MON”返回命令键,显示器返“P”待命。

五、实验说明

  本实验仅适用于通用机型,不适用于Dais-8086H+等微机接口专用机型。

六、实验程序

    CODE    SEGMENT

        ASSUME CS:CODE,DS:CODE,ES:CODE

;=========4位七段显示、3x3键扫实验==============

LED_CS  EQU 0FFE8H        ;8155命令口

LED_JR  EQU 0FFEBH        ;键入口

LCD_RW  EQU 0FFE9H        ;PA=字形口

LCD_RS  EQU 0FFEAH        ;PB=字位口/键扫口

;================================================

        ORG 3C6EH

LEDGD:  MOV DX,led_cs     ;8155控制字

        MOV Al,43H

        out dx,Al         ;AB 口为输出口、C口为输入口

led_jg: MOV BUF,11H       ;送待令符“p

        MOV BUF+1,10H     ;清显示缓冲单元

        MOV BUF+2,10H

        MOV BUF+3,10H

        MOV BX,OFFSET BUF

        MOV BUF+6,bL

        MOV BUF+7,bH

LEDT:   CALL X2           ;调闪动显示、键扫消抖子程序

        CMP AL,10H

        JNC led_jg        ;是返“P”命令转!

        call x3           ;送当前LED光标闪动单元

        JMP LEDT          ;完成送数操作返回显示键扫入口

;=======刷新光标单元调正闪动指针==========

X3:     mov cx,ax

        MOV BX,OFFSET BUF+6

        MOV AX,[BX]

        MOV BX,AX

        MOV [BX],cL       ;接收值送显示缓冲区

        INC ax            ;调整显示指针

        MOV BX,OFFSET BUF+4

        CMP AX,BX

        JC SERI3

        MOV AX,OFFSET BUF

SERI3:  MOV BUF +6,AL

        MOV BUF+7,AH

        RET

;==========闪动显示子程序===============

X2:     MOV buf+4,80H

X0:     CALL DISPKEY

        cmp al,20h

        jc XX0

        mov bx,OFFSET buF

        mov al,04h

        XLAT

        sub al,01h

        mov buf+4,al

        jnc x0

        mov buf+4,30H

        mov bx,OFFSET buF+6

        mov ax,[bx]

        mov bx,ax

        mov al,[bx]

        mov buf+5,al

        mov al,10h

        mov [bx],al

X1:     CALL DISPKEY

        cmp al,20h

        jc XX1

        mov bx,OFFSET buF

        mov al,04h

        XLAT

        sub al,01h

        mov buf+4,al

        jnc x1

        mov bx,OFFSET buF

        mov al,05h

        XLAT

        push ax

        mov bx,OFFSET buF+6

        mov ax,[bx]

        mov bx,ax

        pop ax

        mov [bx],al

        JMP X2

XX1:    mov bx,OFFSET buF

        mov al,05h

        XLAT

        push ax

        mov bx,OFFSET buF+6

        mov ax,[bx]

        mov bx,ax

        pop ax

        mov [bx],al

XX0:    RET

;==================================

LS3:    DB 00H,01H,02H,20H,20H,20H,20H,20H

        ; 0,1,2,无键按下值

        DB 03H,04H,05H,20H,20H,20H,20H,20H

        ; 3,4,5,

        DB 06H,07H,10H,20H,20H,20H,20H,20H

        ; 6,7,返回键按下值

;==================================

LED     DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

        DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3H,0BFH

;================================

BUF     DB ?,?,?,?,?,?,?,?,?,?

        ; 3,2,1,0,4,6,8,

;================================

DISPKEY:CALL DIS;调显示子程序

DISCDEY:CALL KEY ;调键扫子程序

        MOV AH,AL ;键消抖处理

        MOV BX,OFFSET buF+8

        MOV CX,[BX]

        MOV BL,CL

        MOV BH,CH

        CMP AH,BH

        MOV BH,AH

        MOV AH,BL

        JZ DISK4

        MOV BL,88H

        MOV AH,88H

DISK4:  DEC AH

        CMP AH,82H

        JZ DISK6

        CMP AH,0EH

        JZ DISK6

        CMP AH,00H

        JZ DISK5

        MOV AH,20H

        DEC BL

        JMP DISK7

DISK5:  MOV AH,0FH

DISK6:  MOV BL,AH

        MOV AH,BH

DISK7:  mov buF+8,bL

        mov buF+9,bh

        mov aL,ah

        cmp cl,ah

        RET

;===========显示子程序=============

DIS:    MOV CL,80H           ;显示子程序

        MOV BX,OFFSET BUF

DIS1:   MOV AL,[BX]

        PUSH BX

        MOV BX,OFFSET LED

        XLAT

        POP BX

        MOV DX,lcd_rw

        or al,80h

        OUT DX,AL

        MOV AL,CL

        or al,0fh

        MOV DX,lcd_rs

        OUT DX,AL

        PUSH CX

        MOV CX,0100H

DELAY:  LOOP $

        POP CX

        CMP CL,10H

        JZ EXIT

        INC BX

        SHR CL,1

        JMP DIS1

EXIT:   MOV AL,0fH

        MOV DX,lcd_rs

        OUT DX,AL

        RET

;============键扫子程序==============

key:    mov aL,0ffh ;关显示口

        mov dx,lcd_rw

        out dx,aL

        mov bL,00h

        mov ah,0feh

        mov cx,0003h

key1:   mov al,ah

        mov dx,lcd_rs

        out dx,aL

        SHL AL,01H

        MOV AH,AL

        NOP

        NOP

        NOP

        NOP

        NOP

        NOP

        MOV DX,led_jr

        IN AL,DX

        NOT AL

        NOP

        NOP

        AND AL,07H

        JNZ KEY2

        INC BL

        LOOP KEY1

NKEY:   MOV AL,20H

        ret

KEY2:   TEST AL,01H

        JE KEY3

        MOV AL,00H

        JMP KEY6

KEY3:   TEST AL,02H

        JE KEY4

        MOV AL,08H

        JMP KEY6

KEY4:   TEST AL,04H

        JE NKEY

        MOV AL,10H

KEY6:   ADD AL,BL

        mov bx,offset LS3

        xlat

        ret

;==================================

<