微机原理实验:流水灯实验

实验一  流水灯实验

一、实验目的及要求

1、通过对并行接口8255编程、调试,掌握仿真工具软件Proteus的使用方法,掌握8255的基本编程及调试方法,掌握编写控制并行接口程序的方法。

2、学生在实验前必须认真预习教材与资料中的相关内容,绘制流程图,编写源程序,为实验做好充分准备,实验后撰写实验报告。

二、实验设备

PC机一台、DOSBox 0.74、masm 5、EditPlus 5.2、Proteus 8 Professional

三、实验内容

实现8255控制8个指示灯,循环点亮(瞬间只有一个灯亮)。

四、实验原理图

图1.1 8086CPU最小模式

图1.2 地址总线

图1.3 译码电路

图1.4 8255接口流水灯实验原理图

五、实验步骤

1、建立实验工程文件,绘制实验的原理图方案;

2、编写程序源代码,实现8255控制8个指示灯,循环点亮(瞬间只有一个灯亮)。

3、观察验证实验结果。

六、程序参考流程图

图1.5 8255接口流水灯程序流程图

七、参考源程序

PORT_8255_A         EQU 9000H

PORT_8255_B         EQU 9002H

PORT_8255_C         EQU 9004H

CONTROL_PORT_8255   EQU 9006H

DELAY_NUM1          EQU 0BH

DELAY_NUM2          EQU 1FFFH

STACK SEGMENT PARA STACK 'STACK'

STA DB 1024 DUP(?)

STACK ENDS

CODE SEGMENT

     ASSUME CS:CODE,SS:STACK

BEGIN:MOV DX,CONTROL_PORT_8255

      MOV AL,10000000B  ;A Port,Mode 0,Output

      OUT DX,AL

      MOV DX,PORT_8255_A

      MOV AL,0FFH

      OUT DX,AL         ;Close LED

      MOV AL,0FEH       ;11111110B 字模

 NEXT:OUT DX,AL

      CALL DELAY

      ROL AL,1          ;11111101--11111011

      JMP  NEXT

DELAY PROC NEAR

       PUSH BX

       PUSH CX

       MOV CX,DELAY_NUM1    ;Delay Times=DELAY_NUM1*DELAY_NUM2

AGAIN2:MOV BX,DELAY_NUM2         

AGAIN1:NOP

       NOP

       DEC BX

       JNZ AGAIN1

       DEC CX

       JNZ AGAIN2           

       POP CX

       POP BX

       RET

DELAY ENDP

CODE ENDS

     END BEGIN

八、实验结果及思考问题(可扩展)

1.如何使LED闪亮的顺序反向?

2.如何调整LED闪亮的时间间隔?

  • 25
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
流水灯实验是一个经典的电子实验,通过控制LED灯的亮灭顺序,可以让LED灯像水流一样流动。在这个实验中,我们可以使用基于系统总线的扩展IO芯片8255来控制LED灯的亮灭顺序。 以下是流水灯实验的步骤: 1. 连接硬件电路 将8255芯片连接到系统总线上,同时将LED灯连接到8255的输出端口。具体连接方式可以参考8255芯片的数据手册。在连接完电路后,可以通过编程来控制8255芯片的输入输出端口,从而控制LED灯的亮灭。 2. 编写程序 以下是一个基于8255芯片的流水灯实验程序示例,你可以参考这个程序来完成实验。 ``` #include <reg52.h> #define PortA P0 #define PortC P2 void main() { int i; PortC = 0xFF; // 设置C口为输出模式 while(1) { for(i = 0; i < 8; i++) { PortA = 0x01 << i; // 设置A口为输出模式,用于控制LED灯 PortC = ~(0x01 << i); // 控制C口输出,让LED灯像水流一样流动 delay(); // 延时一段时间 } } } void delay() { int i, j; for(i = 0; i < 100; i++) { for(j = 0; j < 100; j++); } } ``` 在上面的程序中,PortA用于控制LED灯的亮灭,PortC用于控制LED灯的流动顺序。程序会循环执行,每次让LED灯从左到右依次点亮,然后再从右到左依次点亮。通过延时函数,可以控制LED灯的流动速度。 3. 运行程序 将编写好的程序下载到单片机中,然后将电路连接上电源。你会看到LED灯像水流一样流动,这就完成了流水灯实验。 总的来说,利用基于系统总线扩展IO进行流水灯实验是一个非常好的学习电子原理和单片机编程的方法。通过这个实验,你可以更好地了解8255芯片的功能和使用方法,同时也可以更深入地理解单片机的工作原理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值