• 实验六 并行口8255的使用—LED静态显示


    一、实验目的

    熟悉使用8255并行口扩展芯片
    熟悉使用发光二极管及数码管等常见的外围设备
    理解静态显示的方法

    二、实验内容

    使用数码管静态显示的方法,使最右边的数码管循环显示0-9的数值。
    在这里插入图片描述
    硬件连接:
    选通端:PC0-S0

    段码端:PA0-a、PA1-b、PA2-c、PA3-d、PA4-e、PA5-f、PA6-g、PA7-dp

    8255的CS:接288H

    已知:
    1、8255的端口地址:
              A口为 288H、C口为28AH、控制口为28BH,
    放在数据段定义
                  C8255 equ 28ah
                  K8255 equ 28bh
                  A8255 equ 288h

    2、实验台上的七段数码管为共阴型,本应在公共端S0加低电平点亮,但是内部做了反向处理,所以输入端S0为1才选中最右边的数码管显示,位码输入端(段码端)高电平点亮。所以,可以求得0-9的段码可如下定义为(段码也应写在数据段的定义中):
        LED db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh

    3、8255的设置:注意设置A、C口都为输出。

    4、延时程序:
                mov cx,60000
                delay: loop delay ;延时
       如果延时时间不够,可以多次使用。

    三、实验报告

    ①写出该程序中8255的控制字中每一位设置的意义。
    D6、D5基本输入输出方式 (方式0)
    D4:A口是输出的,所以是0
    D3:C口也是输出的,所以是0
    D2、D1:B口没有用,都是0
    D0:C口的第四位也是输出的,所以是0

    D7 D6 D5 D4 D3 D2 D1 D0
    1 0 0 0 0 0 0 0

    即(80H)
    在这里插入图片描述

    ②写出程序代码并加上注释。

    data segment
        C8255        equ 	28ah
    	K8255        equ 	28bh
    	A8255        equ 	288h    
    	LED db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
    ends
    
    stacks segment
        dw   128  dup(0)
    ends
    
    code segment 
        ASSUME CS:CODE,DS:DATA,SS:stacks
    start:
    	mov ax, data
          mov ds, ax
    
    	MOV	DX,K8255	;控制口的端口地址
    	MOV AL,80H	;AL是命令字
    	OUT	DX,AL	;80H控制字送入8255的控制口,让它的A口和C口都属于输出形式
    
    	MOV AL,0FH;低四位都是1,高四位都是0----那些数码管会点亮?
    	MOV DX,C8255
    	OUT DX,AL;把AL中的内容out到DX端口去
    
    	
    	;取段码
    N1:MOV BX,OFFSET	LED
       MOV SI,10
       loop delay
    N2:MOV	AL,[BX]
    	
    	MOV	DX,A8255;通过A口送出去
    	OUT DX,AL;这样我们就可以在整个LED上显示0这个数字
    	INC BX
    	SUB SI,1
    	CMP SI,0
    	JE N1
    	mov cx,0  
    delay:  loop delay                  ;延时
    	mov di,0 
    delays:  loop delays                  ;延时
    	JMP  N2
    ends
    
    end start 
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47

    最右边单个数码管显示
    只需要将上述的0FH改为01H
    并在此基础上连接上PC2—S2,PC3—S3

    在这里插入图片描述
    在这里插入图片描述

    另一份代码,此代码正确,已经验证

    data segment
        C8255        equ 	28ah
    	K8255        equ 	28bh
    	A8255        equ 	288h    
    	LED db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
    ends
    
    stack segment
        dw   128  dup(0)
    ends
    
    code segment 
        ASSUME CS:CODE,DS:DATA,SS:stack
      	start:
      			mov al,80H
      			mov	dx,K8255 
      			out dx,al
      	n2:
      			mov	bx,offset LED
      			mov si,10
      			mov	ax,data
      			mov	ds,ax
      	n1:		
      			mov	al,[bx]
      			mov	dx,A8255 
      			out dx,al
    			
    			mov cx,60000
    	delay:	loop delay
    			mov	al,01h
    			mov dx,C8255
    			out dx,al
    	
    			inc bx
    			dec si
    			jz n2
    			jmp n1
    	ends
    	end start
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

    四、程序流程图

    在这里插入图片描述

    五、实验结果显示

    在这里插入图片描述

    在这里插入图片描述

      




  • 相关阅读:
    [推荐]Linux安装与配置虚拟机之虚拟机服务器坏境配置
    linux查看日志文件内容命令sed、cat、tac、more、less、head、tail、echo 1、按时间查询
    深入理解 Django 模板系统
    Service Mesh之Istio基础入门
    通过例子学习Rust
    2022年《数据结构试验》上机考试一(计科2103,2105班+数据2101,2102班)题解
    【第200篇原创文章】解决低于1%概率出现的芯片VPSS模块跑飞的问题
    java基于SpringBoot+Vued的小区物业管理系统 elementui 前后端分离
    基于Javamail的邮件收发系统(系统+论文+开题报告+任务书+外文翻译+文献综述+答辩PPT)
    MATLAB程序设计与应用 2.5 MATLAB运算
  • 原文地址:https://blog.csdn.net/CSDN_e_1/article/details/127911896