流水灯控制实验报告及程序

合集下载

流水灯实验报告总结

流水灯实验报告总结

流水灯实验报告总结一、实验目的本次流水灯实验的主要目的是通过实际操作,深入理解数字电路中时序逻辑电路的工作原理,掌握基本的硬件电路设计和编程方法,提高我们对电子电路的实践操作能力和问题解决能力。

二、实验原理流水灯是通过控制一系列发光二极管(LED)依次点亮和熄灭,从而产生一种流动的视觉效果。

其实现的核心原理是利用计数器和译码器来控制 LED 的亮灭状态。

在数字电路中,计数器可以对输入的时钟脉冲进行计数,从而产生不同的计数值。

译码器则将计数器输出的计数值转换为对应的控制信号,使得相应的 LED 点亮或熄灭。

例如,使用常见的 74LS161 四位二进制同步计数器和 74LS138 三线八线译码器,可以构建一个简单的八路流水灯电路。

计数器在时钟脉冲的驱动下不断计数,译码器根据计数器的输出值依次选通不同的输出端口,从而实现 LED 的顺序点亮。

三、实验设备及材料1、数字电路实验箱2、 74LS161 计数器芯片3、 74LS138 译码器芯片4、发光二极管(LED)若干5、电阻、电容等基本电子元件6、杜邦线若干7、数字万用表8、示波器四、实验步骤(一)电路设计1、根据实验原理,在实验箱上规划好芯片的布局和连线方式。

2、使用杜邦线将计数器、译码器和 LED 等元件按照设计好的电路连接起来。

3、注意连接的正确性,避免短路和断路现象。

(二)硬件搭建1、仔细对照电路设计图,将芯片插入实验箱的相应插槽中。

2、确保芯片引脚与插槽接触良好,无松动现象。

(三)编程与调试1、使用数字电路实验箱提供的编程工具,对计数器和译码器进行编程设置。

2、例如,设置计数器的计数模式、初始值等参数。

3、打开电源,观察 LED 的亮灭情况。

4、如果流水灯效果不符合预期,使用数字万用表和示波器等工具检测电路中的信号和电压,排查故障。

五、实验中遇到的问题及解决方法(一)LED 不亮1、问题描述:接通电源后,所有 LED 均不亮。

2、排查过程:首先检查电源是否正常,然后使用万用表测量芯片引脚的电压,发现计数器芯片没有正常工作。

流水灯实验报告

流水灯实验报告

流水灯实验报告实验目的,通过搭建流水灯电路,了解流水灯的工作原理,并掌握基本的电路连接方法和元器件的使用。

实验仪器与设备,LED灯、电阻、导线、面包板、电源等。

实验原理,流水灯是一种常见的LED灯效应,通过控制LED灯的亮灭顺序,形成灯光流动的效果。

在电路连接方面,我们需要使用电阻来限制LED灯的电流,以保护LED灯不受损坏。

实验步骤:1. 将LED灯和电阻连接到面包板上,按照电路图连接好各个元器件。

2. 将面包板连接到电源上,注意接线的正确性和稳定性。

3. 打开电源,观察LED灯的亮灭顺序,确认流水灯效果是否正常。

实验结果与分析:经过实验,我们成功搭建了流水灯电路,并且观察到LED灯按照一定的顺序亮灭,形成了流水灯的效果。

这说明电路连接正确,元器件工作正常。

在实验过程中,我们发现电阻的作用是非常重要的,它可以限制LED灯的电流,防止LED灯受损。

同时,电源的稳定性也对流水灯的效果有着重要的影响,稳定的电源可以保证LED灯的正常工作。

实验总结:通过本次实验,我们对流水灯的工作原理有了更深入的了解,也掌握了搭建流水灯电路的基本方法。

在今后的学习和实践中,我们可以运用这些知识,进行更多有趣的电路搭建和实验。

实验中还需要注意安全问题,避免短路和触电等意外情况的发生。

在实验过程中,要严格按照操作规程进行,确保实验的顺利进行。

最后,希望通过这次实验,大家能够对电路连接和LED灯效应有更深入的理解,为今后的学习和科研打下坚实的基础。

结语,本次实验结束,谢谢大家的参与和配合,希望大家能够从中收获知识,不断提高自己的实验能力和动手能力。

实验三流水灯实验(io口和定时器实验)

实验三流水灯实验(io口和定时器实验)

实验三流水灯实验(I/O口和定时器实验)一、实验目的1.学会单片机I/O口的使用方法和定时器的使用方法;2.掌握延时子程序的编程方法、内部中断服务子程序的编程方法;3.学会使用I/O口控制LED灯的应用程序设计。

二、实验内容1.控制单片机P1口输出,使LED1~LED8右循环轮流点亮(即右流水),间隔时间为100毫秒。

2.控制单片机P1口输出,使LED1~LED8左循环轮流点亮(即左流水),间隔时间为100毫秒。

3.使用K1开关控制上面LED灯的两种循环状态交替进行;4. 用定时器使P1口输出周期为100ms的方波,使LED闪烁。

5.使用定时器定时,使LED灯的两种循环状态自动交替,每一种状态持续1.6秒钟(选作)。

三、实验方法和步骤1.硬件电路设计使用实验仪上的E1、E5和E7模块电路,把E1区的JP1(单片机的P1口)和E5区的8针接口L1~L8(LED的驱动芯片74HC245的输入端)连接起来,P1口就可以控制LED 灯了。

当P1口上输出低电平“0”时,LED灯亮,反之,LED灯灭。

E7区的K1开关可以接单片机P3.0口,用P3.0口读取K1开关的控制信号,根据K1开关的状态(置“1”还是置“0”),来决定LED进行左流水还是右流水。

综上,画出实验电路原理图。

2.程序设计实验1和实验2程序流程图如图3-1实验3程序流程图如图3-2所示。

图3-1 实验1,2程序流程图图3-2 实验3程序流程图实验4程序流程图如图3-3,3-4所示。

实验5程序流程图如图3-5,3-6所示。

图3-5 实验5主程序流程图图3-6 定时器中断服务子程序流程图图3-4 定时器中断服务子程序流程图图3-3 实验4主程序流程图编程要点:(1)Pl,P3口为准双向口,每一位都可独立地定义为输入或输出,在作输入线使用前,必须向锁存器相应位写入“1”,该位才能作为输入。

例如:MOV P1,A; P1口做输出MOV P1,#0FFHMOV A,P1;P1口做输入SETB P3.0MOV C,P3.1;从P3.1口读入数据(2)每个端口对应着一个寄存器,例:P1→90H(P1寄存器地址);P3→B0H(P3寄存器地址);寄存器的每一位对应着一个引脚,例:B0H.0→P3.0(3)对寄存器写入“0”、“1”,对应的外部引脚则输出“低电平”、“高电平”。

流水灯实验报告

流水灯实验报告

实验一流水灯实验一、实验目的1)简单I/O引脚的输出2)掌握软件延时编程方法3)简单按键输入捕获判断二、实验实现的功能1)开机时点亮12发光二极管, 闪烁三下2)按照顺时针循环依次点亮发光二极管3)通过按键将发光二极管的显示由顺时针改为逆时针方式三、系统硬件设计单片机STC10F08XE 1片发光二极管led 红4个黄4个绿4个按键6个复位电路时钟电路如下图所示:四、系统软件设计#include<reg51.h>sbit L1=P0^5; sbit L2=P0^6; sbit L3=P0^7; void Delay(void){unsigned char i,j,k;for(i=10;i>0;i--)for(j=132;j>0;j--)for(k=150;k>0;k--); }Scan_Key(){ unsigned char FLAG=0;unsigned char n;n=(L1==0)||(L2==0)||(L3==0);if(n) { FLAG=1;}return FLAG; }main(){ unsigned char y,n,s=0,b=1,m=0;unsigned char c=1;unsigned char a[]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char h[]={0xff,0x38,0x34,0x2f,0x1f};n=Scan_Key(); for(y=0;y<3;y++){ P2=0; P3=0; Delay(); Delay(); Delay();P2=0xff; P3=0xff; Delay(); Delay(); Delay(); }while(1) { while(1){ m=m+n; P3=0x3f; while(1){ for(;b<9;b++){ n=Scan_Key(); m=m+n;if((P3==0x3f)&&(m%2==0)){P2=a[b];Delay();}else { P2=0xff;break; }if(m%2==0) c=1; P2=0xff; }for(;c<5;c++){n=Scan_Key(); m=m+n;if((P2==0xff)&&(m%2==0)){ P3=h[c];Delay();}else { P3=0x3f;break;} }if(m%2==0) b=1; break; }if(m%2==1) break; }while(1){ for(;b>0;b--){n=Scan_Key(); m=m+n;if((P3==0x3f)&&(m%2==1)){P2=a[b];Delay(); } else{P2=0xff;break;} P2=0xff; }if(m%2==1) c=4; for(;c>0;c--){ n=Scan_Key(); m=m+n;if((P2==0xff)&&(m%2==1)){ P3=h[c]; Delay();}else { P3=0x3f;break;} P3=0x3f; }if(m%2==0) break;if(m%2==1) b=8; } } }五、实验过程中遇到的问题及解决方法问题1: 如何实现顺、逆时针依次点亮流水灯?解决: 利用循环右移_cror_(m,1)和循环左移_crol_(n,1)依次点亮。

流水灯的实验报告

流水灯的实验报告

流水灯的实验报告流水灯的实验报告引言:流水灯是一种常见的电子元件,它通过控制电流的流动,使灯光依次在一组灯泡之间流动,形成一种流水般的效果。

在本次实验中,我们将探索流水灯的工作原理,并通过自己动手搭建电路,观察流水灯的效果。

实验目的:1. 了解流水灯的工作原理;2. 学习使用电子元件搭建电路;3. 观察流水灯的效果。

实验材料:1. 流水灯电路板;2. 线缆;3. 电源;4. 灯泡。

实验步骤:1. 将流水灯电路板连接到电源上,确保电路板的正负极正确连接;2. 将灯泡依次连接到电路板上,确保灯泡的极性正确;3. 打开电源,观察流水灯的效果。

实验结果:当电源打开后,流水灯开始工作。

灯泡依次亮起,然后熄灭,再亮起下一盏灯泡,如此循环。

整个流水灯的效果就像水流般流动,非常美观。

实验分析:流水灯的实现原理是通过控制电流的流动方向和路径来实现的。

在流水灯电路板上,灯泡被连接成一条线,电流从一个灯泡流向下一个灯泡,依次循环。

每个灯泡都有一个开关,控制灯泡的亮灭。

当电流通过一个灯泡时,该灯泡亮起,当电流流向下一个灯泡时,前一个灯泡熄灭,下一个灯泡亮起,如此循环,形成流水灯的效果。

流水灯的原理与实际生活中的流水有些类似。

我们可以将每个灯泡看作是水流中的一个水滴,电流的流动就像水流一样,从一个水滴流向下一个水滴。

每个灯泡的亮灭就像水滴的存在和消失,整个流水灯的效果就像水流般流动。

流水灯不仅在实验中有应用,也在现实生活中有广泛的应用。

例如,在舞台演出中,流水灯常常被用来营造出动感和变幻的效果。

在夜店、酒吧等娱乐场所,流水灯也是常见的装饰元素之一。

流水灯的效果不仅美观,还能吸引人们的注意力,增加场景的氛围。

实验总结:通过本次实验,我们了解了流水灯的工作原理,并亲自搭建了一个流水灯电路。

实验结果显示,流水灯的效果非常美观,给人一种流动的感觉。

流水灯不仅在实验中有应用,也在现实生活中有广泛的应用。

通过这个实验,我们不仅学到了电子元件的使用方法,还培养了动手实践的能力,提高了对电路原理的理解。

流水灯实验报告

流水灯实验报告

流水灯实验报告流水灯实验报告引言:流水灯是一种常见的电子实验,通过控制电路中的LED灯的亮灭顺序,形成灯光在一组LED灯之间流动的效果。

本文将介绍流水灯实验的背景、实验目的、实验步骤、实验结果和实验总结。

一、实验背景:流水灯是电子电路实验中的经典实验之一,它通过控制LED灯的亮灭顺序,展示了数字电路中的时序控制技术。

流水灯实验不仅能够培养学生的动手能力,还能够加深对数字电路原理的理解。

二、实验目的:1. 学习和掌握流水灯电路的基本原理;2. 熟悉数字电路中的时序控制技术;3. 提高实验操作和电路调试能力。

三、实验器材和元器件:1. Arduino开发板;2. 电阻、电容等基本元器件;3. LED灯。

四、实验步骤:1. 搭建电路:将Arduino开发板与电阻、电容和LED灯连接起来,按照流水灯电路的原理图进行连接。

2. 编写程序:使用Arduino开发环境,编写控制LED灯流动的程序。

程序中需要设置LED灯的亮灭时间和顺序。

3. 上传程序:将编写好的程序上传到Arduino开发板中。

4. 调试电路:通过观察LED灯的亮灭情况,检查电路连接是否正确。

如有问题,及时调整电路连接。

5. 运行实验:将Arduino开发板上电,观察LED灯按照预设的顺序流动。

五、实验结果:经过实验,LED灯按照预设的顺序流动,形成了流水灯的效果。

LED灯的亮灭时间和顺序可以根据程序的编写进行调整。

实验结果符合预期,实验成功。

六、实验总结:通过本次流水灯实验,我深入了解了数字电路中的时序控制技术,并通过实际操作提高了自己的动手能力和电路调试能力。

流水灯实验是一种理论联系实际的有效方式,通过实验可以更好地理解数字电路的原理和工作方式。

在实验过程中,我遇到了一些困难,例如电路连接错误、程序编写有误等。

但通过仔细检查和调试,最终解决了这些问题。

这个过程让我学会了耐心和细致,也增强了我的问题解决能力。

总之,流水灯实验是一种基础且有趣的电子实验,通过实验可以深入理解数字电路中的时序控制技术。

实训报告单片机流水灯

实训报告单片机流水灯

一、实验目的1. 熟悉单片机的基本原理和组成,掌握51单片机的编程方法。

2. 理解单片机I/O口的使用,学会利用单片机控制LED灯的流水灯效果。

3. 提高动手实践能力,培养团队协作精神。

二、实验环境1. 实验设备:51单片机开发板、LED灯、面包板、电源、连接线等。

2. 实验软件:Proteus仿真软件、Keil uVision5集成开发环境。

三、实验原理流水灯实验是单片机入门级实验之一,通过控制单片机的I/O口输出高低电平,使LED灯依次点亮,形成流水灯效果。

实验中,利用单片机的定时器产生定时中断,每隔一定时间改变I/O口的输出状态,实现LED灯的流水灯效果。

四、实验步骤1. 打开Proteus软件,新建一个工程项目,添加51单片机开发板和LED灯等元件,绘制电路图。

2. 打开Keil uVision5,新建一个C51工程项目,选择对应的单片机型号。

3. 编写程序:(1)初始化I/O口:将P0口设置为输出模式,将P1口设置为输出模式。

(2)设置定时器:选择合适的定时器,设置定时时间,使其产生定时中断。

(3)编写中断服务程序:在中断服务程序中,改变I/O口的输出状态,实现LED灯的流水灯效果。

(4)编写主程序:在主程序中,启动定时器,进入中断服务程序。

4. 编译程序,生成HEX文件。

5. 将生成的HEX文件导入Proteus软件,运行仿真实验。

6. 观察实验现象,检查LED灯的流水灯效果是否正常。

五、实验结果与分析1. 实验现象:在Proteus软件中,LED灯依次点亮,形成流水灯效果。

2. 实验分析:通过设置定时器,每隔一定时间改变I/O口的输出状态,实现LED 灯的流水灯效果。

实验过程中,可以调整定时器的定时时间,改变流水灯的速度。

六、实验总结1. 本实验使我们对单片机的基本原理和组成有了更深入的了解。

2. 通过编写程序,掌握了51单片机的编程方法,提高了编程能力。

3. 实验过程中,我们学会了利用单片机控制LED灯,实现了流水灯效果。

最新流水灯控制实验报告

最新流水灯控制实验报告

最新流水灯控制实验报告实验目的:本实验旨在通过设计和实现一个流水灯控制系统,加深对数字电路和微控制器编程的理解。

通过实验,学习如何使用微控制器的GPIO(通用输入输出)引脚来控制LED灯的亮灭,以及如何编写程序实现流水灯效果。

实验设备和材料:1. 微控制器开发板(如Arduino UNO)2. LED灯条或LED灯珠(数量根据实验要求确定)3. 电阻(用于保护LED,防止电流过大)4. 面包板或PCB板(用于搭建电路)5. 杜邦线(用于连接微控制器和LED)6. 电源适配器(为微控制器和LED提供电源)7. 相关软件(如Arduino IDE)实验步骤:1. 根据LED的额定电流和电压选择合适的电阻,计算出限流电阻的阻值。

2. 将LED灯珠通过限流电阻依次连接到微控制器的数字输出引脚。

3. 使用杜邦线将LED电路连接到微控制器的相应GPIO引脚。

4. 编写微控制器程序,控制每个GPIO引脚的高低电平,实现LED依次点亮和熄灭的效果。

5. 调整程序中的延时参数,以达到理想的流水灯效果。

6. 将编写的程序通过Arduino IDE上传到微控制器中。

7. 观察实验结果,确保所有LED灯能够按照预期进行流水式点亮。

实验结果:实验成功实现了流水灯效果。

通过调整程序中的延时参数,流水灯的速度可以在一定范围内调节。

所有LED灯均能稳定工作,没有出现闪烁或过热现象。

实验结论:通过本次实验,我们验证了微控制器控制GPIO引脚输出高低电平的基本功能,并且通过编程实现了流水灯的动态效果。

实验过程中,对电路设计和编程能力有了进一步的提高,同时也加深了对电子元件特性的理解。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三流水灯控制实验
姓名专业通信工程学号成绩
一、实验目的
1.掌握Keil C51 软件与protues软件联合仿真调试的方法;
2.掌握如何使用程序与查表等方法实现流水效果;
3.掌握按键去抖原理及处理方法。

二、实验仪器与设备
1. 微机1台
2. Keil C51集成开发环境
3. Proteus仿真软件
三、实验内容
1.用Proteus设计一流水灯控制电路。

利用P1口控制8个发光二级管L1—L8。

P3.3口接一按
键K1。

参考电路如下图所示。

其中74LS240为八反响三态缓冲器/线驱动器。

2.用中断或查询方式编写程序,每按动一次K1键,演示不同的流水效果。

若用KEY表示按键的
次数,则其对应的流水效果如下:
① KEY=0: L1-L8全亮;
② KEY=1: L1-L8先全灭,然后自右向左单管点亮,如此循环;
③ KEY=2: L1-L8先全灭,然后自右向左依次点亮,如此循环;
④ KEY=3: L1-L8先全亮,然后自左向右依次熄灭,如此循环;
⑤ KEY=4: L1-L8先全灭,然后整体闪烁,如此循环;
⑥ KEY=5:自行设计效果。

以上移位及闪烁时间间隔均设置为0.3秒,按动5次按键后,再按键时,流水效果从头开始循环。

四、实验原理
1.按键去抖原理:通常按键所用的开关为机械弹性开关,当机械触点断开、闭合时,电压信号
波形如下图所示。

由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定的接通,在断开时也不会一下子断开。

因而在闭合及断开的瞬间均伴随有一连串的抖动。

抖动时间的长短由按键的机械特性决定,一般为5~10ms。

按键抖动会引起一次按键被误读多次。

为了确保CPU对键的一次闭合仅做一次处理,必须去除按键抖动。

在键闭合稳定时,读取键的状态,并且必须判别;在键释放稳定后,再作处理。

按键的抖动,可用硬件或软件两种方法消除。

常用软件方法去抖动,即检测到按键闭合后执行一个5~10ms延时程序;让前沿抖动消失后,再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有按键按下。

当检测到按键释放后,也要给5~10ms的延时,待后延抖动消失后,才能转入该键的处理程序。

2.74LS240:八反相三态缓冲器/线驱动器
引脚排列图:
3.中断原理:当某种内部或外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程
序,转而去进行中断事件的处理,中断处理完毕后,又返回被中断的程序处,继续执行下去。

每次按键是一次外部中断,按下按键后,CPU利用switch case语句跳转到相应语句执行。

五、实验步骤
1. 用Proteus设计流水灯控制电路;
2. 在Keil C51中编写流水灯控制程序,编译通过后,与Proteus联合调试;
3. 按动K1键,观察是否达到演示效果;
4. 试用中断和查询两种方式编写程序,比较二者区别。

六、电路设计及调试
1. 实验电路
2.程序设计与调试
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar i=0,j,k,m,n;
uchar code table1[]={0x00,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};//自右向左单个点亮二极管的代码
uchar code table2[]={0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};//自右向左依次点亮二极管的代码
uchar code table3[]={0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};//自左向右依次熄灭二极管的代码
uchar code table4[]={0x00,0x03,0x06,0x0c,0x18,0x30,0x60,0xc0};//双灯循环右移
void delay(uint a);
void INT_1() interrupt 2
{
EX1=0;
delay(20);
EX1=1;
i++;
if(i==6)
i=0;
}
void main()
{
EA=1; //打开总中断
EX1=1; //打开外部中断1
IT1=1; //设置中断触发方式为下降沿触发方式
while(1)
{
switch(i)
{
case 0:P1=0xff;
break;
case 1:P1=table1[j];delay(500);j++; if(j==10) j=0;
break;
case 2:P1=table2[k];delay(500);k++; if(k==10) k=0;
break;
case 3:P1=table3[m];delay(500);m++; if(m==10) m=0;
break;
case 4:P1=0x00;delay(300);P1=~P1;delay(300);
break;
case 5:P1=table4[n];delay(500);n++; if(n==10) n=0;
break;
default:break;
}
}
}
void delay( uint a)
{
uchar b;
for(a; a > 0; a--) //循环600*255次机器在这里执行需要一段时间也就达到了延时效果
for(b = 255; b > 0; b--);
}
在“Options for target”的“debug”里选中“Proteus VSM Simulator”并选择输出“hex”文件进行联合调试。

分别进行全速调试与单步调试,看是否出现编程所想要实现的效果。

3.实验结果
按下不同的按键次数,执行不同的流水效果,自行设计效果为双灯循环右移。

七、实验总结及问题
通过本次流水灯控制实验,进一步掌握了Keil C51软件与proteus联合仿真调试的方法,逐步熟练了单步调试的方法。

自己用中断方法完成了本次实验,也尝试用查询方法编写程序,知道中断方法是在有中断请求时CPU再去处理,之前可一直忙于其他事情,而查询方法需一直查询标志位,CPU 不能做其他事情,中断方法效率要比查询方式高而且较简单。

第一次用按键控制电路,学习了按键的去抖原理及使用方法。

在实验中,会出现未知效果,总体看来原因不明,只要进行单步调试就可找到问题所在。

思考:如果不进行去抖处理,CPU可能会误判,按下后认为按键松开,多次执行相应程序,得不到想要的控制效果。

相关文档
最新文档