(完整word版)基于单片机仿真软件proteus的流水灯实验报告

合集下载

单片机流水灯实验报告

单片机流水灯实验报告

单片机流水灯实验报告1. 实验目的本实验旨在通过使用单片机控制LED灯的亮灭来实现流水灯效果,以加深对单片机控制原理的理解,并培养学生动手实践的能力。

2. 实验器材•单片机开发板•面包板•LED灯•连接线•电源3. 实验原理流水灯是一种常见的LED灯效果,通过控制多个LED灯的亮灭顺序和速度,形成流动的效果。

在本实验中,我们使用单片机通过改变IO口的输出电平来控制LED灯的亮灭。

4. 实验步骤第一步:准备工作•将单片机开发板连接到电脑上,并确保单片机开发环境已经正确安装。

•将面包板连接到单片机开发板上的IO口。

•将LED灯连接到面包板上,确保连接正确。

第二步:编写程序在单片机开发环境中,编写下列代码:#include <reg52.h>sbit LED1=P1^0;sbit LED2=P1^1;sbit LED3=P1^2;sbit LED4=P1^3;void delay(int t) {int i, j;for(i=t;i>0;i--) {for(j=110;j>0;j--);}}void main() {while(1) {LED1=0;delay(1000);LED1=1;delay(1000);LED2=0;delay(1000);LED2=1;delay(1000);LED3=0;delay(1000);LED3=1;delay(1000);LED4=0;delay(1000);LED4=1;delay(1000);}}第三步:烧录程序将编写好的程序烧录到单片机开发板上,确保烧录成功。

第四步:实验测试•将单片机开发板连接到电源上,并打开开关。

•观察LED灯的亮灭情况,是否能够形成流水灯效果。

•如果效果与预期一致,则说明实验成功。

5. 实验结果分析经过实验测试,LED灯能够按照程序中设定的流水灯顺序亮灭,形成了流水灯效果。

说明通过单片机控制IO口输出电平能够实现对LED灯的控制,并且通过改变控制程序中的延时时间可以调整流水灯的速度。

单片机流水灯实验报告

单片机流水灯实验报告

单片机流水灯实验报告
实验目的:
通过编程实现单片机控制的流水灯电路的设计与实现,熟悉单片机的输入输出功能和简单的控制逻辑。

实验原理:
流水灯是一种常见的LED灯控制电路,通过依次点亮多个LED灯,从而形成“流水”的效果。

单片机作为控制中心,根据程序设计的指令,通过I/0口控制LED灯的状态。

实验材料:
1. STM32F103C8T6 ARM Cortex-M3开发板
2. 杜邦线
3. LED灯
4. 220 Ω电阻
实验步骤:
1. 将STM32F103C8T6开发板与电脑连接,打开开发板软件。

2. 将LED灯分别连接到开发板的引脚PA0-PA7。

3. 在开发板软件中新建一个工程,选择合适的模板,例如“BlinkLed”模板。

4. 在程序中编写控制流水灯的代码,控制LED灯的点亮和熄灭。

5. 通过编译、下载和运行,将程序烧录到STM32F103C8T6开发板中。

6. 接通电源,观察LED灯的闪烁情况,确认流水灯控制电路的正常工作。

实验结果与分析:
经过实验,我们成功设计和实现了单片机控制的流水灯电路。

LED灯按照预定的顺序依次点亮和熄灭,形成了流水灯的效果。

调整程序中的控制逻辑,可以改变流水的速度和方向,实现不同的灯光效果。

实验总结:
通过这次实验,我们深入了解了单片机的输入输出功能和简单的控制逻辑。

通过编写程序,实现了流水灯的控制,加深了对单片机的理解和应用。

在实验过程中,我们还学会了使用开发板软件进行工程的创建、编译、下载和调试操作,提高了工程能力和实践能力。

单片机流水灯实验总结

单片机流水灯实验总结

单片机流水灯实验总结引言:单片机流水灯实验是学习嵌入式系统和单片机基础的重要实践环节。

通过设计和搭建流水灯电路,我们可以深入理解单片机的工作机制和时序控制。

本文将总结我在流水灯实验中的心得体会,分享一些有关单片机流水灯设计的经验。

一、实验概述这个实验的目标是设计一个能够连续闪烁的流水灯电路,通过单片机的控制,实现一串灯按照固定的顺序不断亮灭的效果。

我们可以通过改变灯的亮灭时间和顺序,来获得不同的流水灯效果。

二、选材准备在进行单片机流水灯实验之前,我们需要准备一些基本的材料和工具。

首先,我们需要一块单片机开发板,最常用的是STC89C52系列的开发板,该开发板搭载了一颗51单片机。

此外,我们还需要准备串联的LED灯,该灯可以选择常见的5mm直径的LED灯,同时需要配备一定数量的适量电阻用于限流。

三、实验步骤1. 连接电路:首先,需要将电路图中的元件按照连接要求连接好,确保各个元件之间的连接无误且紧固可靠。

2. 编写程序:接下来,我们需要使用Keil等软件编写单片机的程序。

通过学习嵌入式C语言编程,我们可以控制单片机的输入输出,包括控制LED灯的亮灭。

3. 烧录程序:编写完程序后,需要借助烧录器将程序烧录到单片机中。

这样单片机才能按照我们设计的程序来控制灯的状态。

4. 调试与测试:当烧录完成后,可将单片机开发板上的电源与电源线连接,并打开开关,此时,流水灯便会开始闪烁。

通过观察流水灯的灯光变化,我们可以判断我们的程序是否正确。

四、实验心得通过进行单片机流水灯实验,我深刻体会到了嵌入式系统的编程和硬件设计的重要性。

在编写程序时,我们需要仔细思考流水灯的亮灭规律和顺序,以及每个灯亮灭的时间间隔。

这需要我们对嵌入式C语言的基本语法和单片机的时序控制有一定的理解。

另外,在实验过程中,我遇到了一些问题和挑战。

例如,如何控制灯的顺序和亮灭时间,如何调整程序的延时时间等。

在解决这些问题的过程中,通过查阅资料和与同学的讨论,我逐渐积累了解决问题的经验,并在实践中不断调试和优化程序。

单片机流水灯实验报告

单片机流水灯实验报告

单片机流水灯实验报告单片机流水灯实验报告引言:单片机是一种集成电路,具有微处理器、存储器和输入输出设备等功能,被广泛应用于各个领域。

流水灯是一种常见的实验项目,通过控制单片机的输出端口,使多个LED灯依次亮起,形成流动的效果。

本实验旨在通过搭建流水灯电路,了解单片机的基本原理和操作方法。

实验目的:1. 掌握单片机的基本工作原理;2. 学习使用单片机控制LED灯的亮灭;3. 熟悉流水灯电路的搭建和控制。

实验器材:1. 单片机开发板;2. LED灯若干;3. 连线电缆。

实验步骤:1. 将单片机开发板连接至电源,并接通电源开关;2. 将LED灯连接至单片机的输出端口,确保极性正确;3. 打开单片机开发板上的编程软件,编写流水灯控制程序;4. 将编写好的程序下载至单片机开发板;5. 按下开发板上的复位按钮,观察LED灯是否依次亮起。

实验结果:经过实验,我们成功搭建了单片机流水灯电路,并通过编写程序实现了流水灯的效果。

当按下复位按钮后,第一个LED灯亮起,随后依次是第二个、第三个……最后一个LED灯亮起,然后再从第一个开始循环。

整个过程形成了一个流动的效果。

实验分析:通过本次实验,我们深入了解了单片机的基本工作原理。

单片机通过控制输出端口的电平状态,来控制外部设备的亮灭。

在流水灯实验中,我们通过改变输出端口的状态,实现了LED灯的顺序亮灭。

同时,本次实验也让我们学会了使用单片机开发板上的编程软件。

通过编写程序,我们可以灵活控制单片机的输出端口,实现各种不同的功能。

在流水灯实验中,我们编写的程序控制了LED灯的亮灭顺序,形成了流动的效果。

实验总结:通过本次实验,我们不仅了解了单片机的基本原理和操作方法,还掌握了流水灯电路的搭建和控制。

单片机作为一种重要的集成电路,在各个领域都有广泛的应用。

通过学习和实践,我们可以进一步探索单片机的更多功能和应用。

在今后的学习和工作中,我们可以运用单片机的知识,设计和实现更加复杂和有趣的项目。

单片机流水灯实验报告

单片机流水灯实验报告

单片机流水灯实验报告本实验旨在通过单片机控制LED灯的亮灭,实现流水灯效果。

通过对实验的设计、搭建和调试,我们可以更深入地理解单片机的工作原理和掌握相应的编程技巧。

实验器材和元件:1. 单片机,我们选用了STC89C52单片机作为控制核心;2. LED灯,我们使用8个LED灯作为实验的输出设备;3. 电阻,为了限流,我们使用了适当的电阻;4. 连接线、面包板等。

实验步骤:1. 搭建电路,首先,我们按照电路图将单片机、LED灯和电阻连接在一起,并将电路连接到电源上;2. 编写程序,接下来,我们使用C语言编写单片机的控制程序,实现LED灯的流水灯效果;3. 烧录程序,将编写好的程序通过烧录器烧录到单片机中;4. 调试程序,将烧录好的单片机连接到电路上,进行程序的调试和验证;5. 完善电路,根据实际调试情况,对电路进行必要的调整和完善,确保LED 灯能够按照预期的流水灯效果工作。

实验结果:经过反复调试和完善,我们成功实现了单片机控制LED灯的流水灯效果。

在程序控制下,8个LED灯按照顺序依次亮起并熄灭,形成了流水灯的效果。

整个实验过程非常顺利,取得了预期的效果。

实验心得:通过本次实验,我们对单片机的控制原理有了更深入的理解,也掌握了一定的C语言编程技巧。

在实验的过程中,我们遇到了一些问题,如LED灯未按预期工作、程序逻辑错误等,但通过分析和调试,最终都得到了解决。

实验不仅提高了我们的动手能力,也培养了我们的分析和解决问题的能力。

总结:本次实验不仅让我们熟悉了单片机的控制方法,也让我们体验了从实验设计到调试完善的整个过程。

通过这次实验,我们不仅学到了专业知识,也培养了动手能力和解决问题的能力。

希望在以后的学习和实践中,能够更好地运用所学知识,不断提升自己的能力。

以上就是本次单片机流水灯实验的报告内容,希望对大家有所帮助。

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

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

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

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

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

口接一按键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:自行设计效果。

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

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

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

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

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

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

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

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

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

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

流水灯实验报告

流水灯实验报告
void main()//主函数 {
while(1) { ucha r i; P0=P1=P3=0xff;
fo;)//逐个点亮 { P0=table1[i]; delayms(500); } for(i=0;i<8;i++) { P1=table[i]; delayms(500); } for(i=0;i<8;i++)
并 行
P1 接口的 8 个 led



P2 接口的 8 个 led 灯
第1页共5页
五、硬件电路设计 根据设计任务,首先进行系统硬件的设计。其硬件原理图由 LED 显示电路和单片机最 小系统组成,如图所示,其中包括时钟电路采用内部时钟方式,复位电路采用上电自 动复位。由于单片机的 I/O 口的高电平驱动能力只有微安级,而灌电流可以达到 3 毫 安以上,因此采用低电平驱动。P1、P2、P3 分别控制 8 个 led 灯。
第3页共5页
{ P3=table1[i]; delayms(500); }
shan();//全部闪烁
for(i=0;i<8;i++)//逐个熄灭 { P3=table2[i]; delayms(500); } for(i=0;i<8;i++) { P1=table3[i]; delayms(500); } for(i=0;i<8;i++) { P0=table2[i]; delayms(500); }
二、实验主要仪器设备和材料
Keil 软件;Proteus 软件
三、任务设计要求
采用 STC89C52 单片机构建最小系统,在 P0-2 口外接 24 只发光二极管,编程实现 24 只灯的 花样显示控制。

单片机流水灯实验报告

单片机流水灯实验报告

单片机流水灯实验报告电子信息工程学系实验报告课程名称:单片机原理及接口实验项目名称:实验2 流水灯实验时间: xx-10-21 班级:电信092 姓名:蔡松亮学号: 910706247一、实验目的:进一步熟悉keil仿真软件、proteus仿真软件的使用。

了解并熟悉单片机I/O口和LED灯的电路结构,学会构建简单的流水灯电路。

掌握C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。

二、实验原理:MCS-51系列单片机有四组8位并行I/O口,记作P0、P1、P2和P3。

每组I/O口内部都有8位数据输入缓冲器、8位数据输出锁存器及数据输出驱动等电路。

四组并行I/O端口即可以按字节操作,又可以按位操作。

当系统没有扩展外部器件时,I/O端口用作双向输入输出口;当系统作外部扩展时,使用P0、P2口作系统地址和数据总线、P3口有第二功能,与MCS-51的内部功能器件配合使用。

以P1口为例,内部结构如下图所示:图 P1口的位结构作输出时:输出0时,将0输出到内部总线上,在写锁存器信号控制下写入锁存器,锁存器的反向输出端输出1,下面的场效应管导通,输出引脚成低电平。

输出1时,下面的场效应管截止,上面的上拉电阻使输出为1。

作输入时:P1端口引脚信号通过一个输入三态缓冲器接入内部总线,再读引脚信号控制下,引脚电平出现在内部总线上。

I/O口的注意事项,如果单片机内部有程序存贮器,不需要扩展外部存贮器和I/O接口,单片机的四个口均可作I/O口使用;四个口在作输入口使用时,均应先对其写“1”,以避免误读;P0口作I/O 口使用时应外接10K的上拉电阻,其它口则可不必;P2可某几根线作地址使用时,剩下的线不能作I/O口线使用;P3口的某些口线作第二功能时,剩下的口线可以单独作I/O口线使用。

三、实验环境:硬件:PC机,基本配置CPU PII以上,内存2G 软件:keil 2, Proteus 7.5四、实验内容及过程:1、用Proteus画流水灯电路图流程:1)、运行Proteus仿真软件,单击pick from libraries,打开搜索元器件窗口,如图 1 所示:图 1 打开搜索元器件窗口2)、搜索添加元器件,如图2 所示:图2 搜索添加元器件窗口3)、添加元器件,修改元器件的参数,绘制流水灯原理图,元器件参数为c1=c2=20pf、c3=10uf;R1=R2=R3=R4=R5=R6=R7=R8=470欧姆、R9=10k欧姆;晶振=12M;VCC=5V。

单片机课程设计报告流水灯(WORD档)

单片机课程设计报告流水灯(WORD档)

XX工程学院单片机课程设计报告题目:流水灯学生姓名:学号:系部名称:职业技术学院班级:机电一体化Z11-1 指导教师:目录摘要 (3)一、课程设计题目 (4)二、设计任务及要求 (4)三、实验方案 (4)四、流程图 (4)五、硬件电路 (6)六、软件设计 (6)1 主体程序 (6)2 键扫描子程序 (6)3 闪烁控制程序 (6)4 延时子程序 (6)5 源程序设计 (7)七、功能调试 (12)八、设计总结 (12)九、参考文献 (13)【摘要】单片机课程设计主要是为了让我们增进对单片机芯片电路的感性认识,加深对理论方面的理解。

了解软硬件的有关知识,并掌握软件设计过程、方法及实现,为以后设计和实现应用系统打下良好基础。

另外,通过简单课题的设计练习,使我们了解必须提交的各项工程文件,达到巩固、充实和综合运用所学知识解决实际问题的目的。

一、课程设计题目:流水灯二、设计任务及要求:任务:完成对接在P1,P3口的发光二极管闪亮控制程序的设计1.用程序延时方法让P1的一个LED小灯每隔1S交替闪亮2.用程序延时方法让P1的8个LED小灯循环(每个亮50MS)闪亮3.用程序延时方法让P1的8个LED小灯追逐闪亮(50MS间隔变化)4.用程序延时方法让P1、P3的16个LED小灯循环(每个亮50MS)闪亮要求:1. 根据硬件电路原理,画出接线2. 设计出相应的软件程序三、实验方案:方案:单片机采用40脚的89C52标准双列直插系列,有4个标准输入/输出端口共32位控制端口。

本次设计采用并行口低电平(吸电流)直接驱动LED发光管发光形式,选择了P1和P3口的16个端口进行模拟LED小灯控制,如要多些小灯单元可再将P2口、P0口及其他空余端口用LED小灯驱动控制。

因系统功能要求能控制灯亮的方式,在P0.0—P0.3端口接了4个按键小开关,每个小开关可控制一种亮灯方式。

在端口较紧张的情况下,LED小灯驱动也可用串入/并出移位寄存器(如74HC595),单片机用并行移位方式进行驱动。

单片机流水灯实验报告

单片机流水灯实验报告

单片机流水灯实验报告:实验一:用C51实现流水灯实验实验要求:完成亮流水,即LED从低位流向高位流动,每次流动一位,且每次只亮一个LED灯,其它LED灭。

实验原理:单片机流水的实质是单片机各引脚在规定的时间逐个上电,使LED灯能逐个亮起来但过了该引脚通电的时间后便灭灯的过程,实验中使用了单片机的P2端口,对8个LED灯进行控制,要实现逐个亮灯即将P2的各端口逐一置零,中间使用时间间隔隔开各灯的亮灭。

使用r1或rr a实现位的转换。

实验内容:通过仿真来实现实验电路图代码如下;for(x=0;x<8;x++){P0=num[x];delay();}for(x=6;x>0;x--){P0=num[x];delay();}P0=0xfe;实验结果:实验程序:#include<REG51.H>void delay();//延时函数声明void main()//主函数{unsigned charx,num[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};while(1){for(x=0;x<8;x++){P0=num[x];delay();}for(x=6;x>0;x--){P0=num[x];delay();}P0=0xfe;}}void delay()//延时函数,无符号字符型变量i为形式参数{unsigned int j,k;//定义无符号字符型变量j和kfor(k=0;k<500;k++)//双重for循环语句实现软件延时for(j=0;j<100;j++);}实验总结:这次试验通过仿真实验软件实现流水灯实验,充分学会了keil 软件和Proteus电路仿真的联合调试,为后期的实验做足了功课。

也认识到仿真实用性。

单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。

单片机流水灯实验报告

单片机流水灯实验报告

单片机流水灯实验报告引言单片机是一种集成电路,可以通过编程来控制不同的功能。

其中,流水灯是一个最简单的单片机实验项目,也是学习单片机的第一步。

本篇实验报告将详细介绍如何通过使用 AVR 单片机来实现一个流水灯的控制器。

实验原理流水灯的原理很简单,就是通过一个方向控制信号,以及一定的时间延时控制来逐步点亮和熄灭多个 LED 灯。

在本次实验中,我们将使用 AVR ATmega328P 单片机,它可以通过编程来实现流水灯的控制功能。

实验步骤1. 硬件准备将 ATmega328P 单片机插入到开发板中,并使用杜邦线将单片机的引脚连接到各个 LED 灯。

我们需要将一个引脚连接到方向控制信号,用于控制灯的点亮方向。

同时,我们还需要连接一个电位器,用于调节流水灯的速度。

2. 程序设计使用 Arduino 开发环境来编写 AVR 单片机的程序。

首先需要包含头文件 avr/io.h 和 util/delay.h,并定义输入输出引脚。

然后,我们需要定义一个名为“led” 的一个数组,来存储各个 LED 灯的输出状态。

同时,还需要定义一个变量“dir”,来表示流水灯的方向。

在程序主循环中,我们使用 for 循环来遍历各个 LED 灯。

同时,根据“dir”变量的不同,我们可以实现流水灯的正向和反向控制。

另外,我们还需要使用“_delay_ms()”函数来延时一定的时间,实现流水灯的闪烁效果。

3. 程序烧录使用 AVR ISP 编程器将编写好的程序烧录到单片机中。

在烧录过程中需要设置正确的程序和芯片类型,并选择正确的口线连接方式。

实验结果经过实际测试,我们成功地实现了一个流水灯控制器。

在调节电位器之后,灯的闪烁速度可以得到不同的调整。

同时,也可以通过改变方向控制信号来改变流水灯的运动方向。

结论通过本次实验可以学习到如何使用 AVR 单片机来实现一个简单的流水灯控制器。

通过编写程序、烧录编译等过程,可以加深对单片机的基础知识和理解。

单片机流水灯实验报告

单片机流水灯实验报告

实验目的:实现单片机流水 灯功能
实验结果:LED灯按照预设 顺序依次点亮,实现流水灯
效果
分析与讨论:实验结果与预 期相符,验证了单片机流水
灯功能的实现。
实验结果分析
实验目的:验证单片 机流水灯控制电路的
设计与实现
实验设备:单片机、 LED灯、电阻、电源

实验步骤:编写程序、 连接电路、运行程序、
观察现象
实验过程中,对实验结果 的分析不够全面,容易导 致实验结论不准确。
实验过程中,对实验数据 的记录不够详细,容易导 致实验数据丢失。
实验过程中,对实验设备 的维护不够重视,容易导 致实验设备损坏。
实验过程中,对实验环境 的控制不够严格,容易导 致实验结果不准确。
对未来实验的展望
创新实验方法:尝试新的实 验方法,提高实验效果
掌握流水灯电路 的搭建方法
学习单片机的编 程和调试方法
掌握流水灯电路 的调试方法
添加标题
添加标题
添加标题
添加标题
培养实践操作和问题解决能力
通过实验操作, 提高动手能力
学习单片机的基 本原理和编程方

培养发现问题、 分析问题和解 决问题的能力
提高团队合作和 沟通能力
02
实验设备
单片机开发板
添加标题 添加标题 添加标题 添加标题 添加标题 添加标题
编写流水灯程序
确定流水灯的 硬件连接方式
编写流水灯控 制程序
编译并下载程 序到单片机
调试程序,确 保流水灯正常 工作
0
0
0
0
1
2
3
4
烧录程序到单片机
准备烧录器:选择合适的烧录器,如USB烧录器 连接单片机:将烧录器连接到单片机的烧录接口 打开烧录软件:启动烧录软件,选择要烧录的程序文件 开始烧录:点击烧录按钮,开始烧录程序到单片机 检查烧录结果:烧录完成后,检查单片机的运行情况,确保程序正常运行

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

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

实验三流水灯控制实验姓名专业通信工程学号成绩一、实验目的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延时程序;让前沿抖动消失后,再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有按键按下。

单片机流水灯实训报告

单片机流水灯实训报告

基于AT89C52单片机的流水灯设计实训报告学院:信息工程学院班级:12级电子信息工程本科班学号:姓名:指导教师:2014年 12月29日目录前言 (1)一、总体设计 (2)1.1 总体设计框图 (2)1.2 硬件具体原理图 (3)二、设计内容 (3)2.1 设计要求 (3)2.2 硬件设计 (3)2.3 软件设计 (5)2.3.1 Keil的使用步骤: (5)2.3.2 程序流程 (8)2.3.3 程序代码 (9)三、最小系统板的焊接及调试流程 (12)3.1 最小系统板电路焊接流程: (12)3.1.1焊前准备: (12)3.1.2焊接步骤: (12)3.2 调试及问题解决方法 (13)3.2.1仿真 (13)3.2.2下载 (14)3.2.3问题及解决方法 (14)四、总结体会 (15)前言随着社会的进步和发展和人们生活水平的不断提高单片机技术已经成为当今各种新技术的载体各个应用领域的工程技术人员都应掌握单片机应用术。

同时,它所给人带来的方便也是不可否定的。

其中,数码管就是一个典型的例子。

但人们对它的要求越来越高要为现代人工作、科研、生活、提供更好的方便的设施,就需要从单片机技术入手,一切向着数字化控制、智能化控制方向发展。

单片机应用的意义不仅在于它的广阔范围及所带来的经济效益。

更重要的意义在于,单片机的应用从根本上改变了控制系统传统的设计思想和设计方法。

以前采用硬件电路实现的大部分控制功能,正在用单片机通过软件方法来实现。

单片微型计算机就是将CPU、RAM、ROM、时/计数器和多种接口都集成到一块集成电路芯片上的微型计算机。

近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。

在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。

我们周围有许多广告牌。

单片机跑马灯(流水灯)控制实验报告

单片机跑马灯(流水灯)控制实验报告

单片机实验报告姓名: 学号:一、 实验实现功能:1:计数器功能2:流水灯二、 具体操作:1、计数器功能数码管的动态显示。

每按一次K2键计数器加1通过数码管显示出来,计数器可以实现从0计数到9999。

2、流水灯当在计数器模式下的时候按下K3键时程序进入跑马灯模式,8个小灯轮流点亮每次只点亮一个,间隔时间为50ms 。

三、 程序流程图开始 定时器T0 设置初值,启动定时器,打开中断复位 Key2按下 中断关闭 计数器模式 计数器加1 Key3按下 流水灯模式 数码管显示数字加1 跑马灯点亮间隔50ms Key1按下中断打开四、程序#include <reg51.h>typedef unsigned char uint8;typedef unsigned int uint16; //类型定义sbit P2_1 = P2^1;sbit P2_2 = P2^2;sbit P2_3 = P2^3;sbit P2_4 = P2^4; //位声明四个数码管开关sbit Key2 = P3^2;sbit Key3 = P3^3; //位声明2个按键K2和K3sbit Ledk = P2^0 ; //LED 开关void delay(uint16 i); //延时函数声明void refresh (); // 数码管刷新函数声明void liushuideng(); //流水灯函数声明uint8 number[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//数码管的真值表uint8 out[4] = {0}; // 数组变量uint16 counter=0; //用作计数器的变量uint16 Time_counter=0; //用作定时器的变量void main() //主函数{TMOD = 0x01; //定时器0,工作方式一TH0 = 0xFC;TL0 = 0x18; //定时器初值使每次循环为1msTR0 = 0; //定时器0开始作ET0 = 0; // 定时器中断关EA = 0; // 关中断while(1) //计数器模式{Ledk =1 ; //led开关关out[0]=number[counter%10]; //取个位out[1]=number[counter%100/10]; //十位out[2]=number[counter%1000/100]; //百位out[3]=number[counter/1000]; //千位if (!Key2) //计数器加1{++counter; //自加out[0]=number[counter%10]; //取个位out[1]=number[counter%100/10]; //十位out[2]=number[counter%1000/100]; //百位out[3]=number[counter/1000]; //千位while(!Key2) //等待键盘抬起refresh(); //刷新数码管}refresh(); //刷新数码管if (!Key3) // 进入跑马灯模式liushuideng();}} //主函数结束/*******************延时*************/void delay(uint16 i){uint8 j; // 定义局部变量for(i;i>0;i--) //循环i*240 次for(j=240;j>0;j--);}/************数码管刷新******************/void refresh (){uint8 j;for (j=0;j<4;j++) //四次循环刷新数码管{switch(j){case 0: P2_1=1;P2_2=1;P2_3=1;P2_4=0;break;case 1: P2_1=1;P2_2=1;P2_3=0;P2_4=1;break;case 2: P2_1=1;P2_2=0;P2_3=1;P2_4=1;break;case 3: P2_1=0;P2_2=1;P2_3=1;P2_4=1;break;//每次循环只选中一个数码管default:break;}P0 = out[j]; // 位选,给数码管送值delay (20); //延时消抖}}/*************定时器的中断服务函数**************/void Timer0_Overflow() interrupt 1 //定时器0溢出中断,这个语句1ms执行一次{TH0 = 0xFC;TL0 = 0x18; //每1ms重新赋定时器初值Time_counter++; //计数,看经过了几个1ms}/***********************流水灯子函数****************************/ void liushuideng(){uint8 j = 0 ; //定义局部变量P0 = 0xff; // 小灯全关TR0 = 1; //定时器1开始计时EA = 1; //中断开放ET0 = 1; //定时器0中断开while(1){Ledk = 0 ; //打开LED开关P2 = P2|0x1E; //关掉数码管if(50 == Time_counter) //50个毫秒{P0=~(1<<j++); //控制小灯Time_counter = 0; //清零开始下一次循环定时}if (8==j) //移完8次再重新移{j=0;}}}。

单片机流水灯实验总结

单片机流水灯实验总结

篇一:单片机实验报告——流水灯电子信息工程学系实验报告课程名称:单片机原理及接口实验项目名称:实验2 流水灯实验时间: 2011-10-21 班级:电信092 姓名:蔡松亮学号: 910706247一、实验目的:进一步熟悉keil 仿真软件、proteus仿真软件的使用。

了解并熟悉单片机i/o口和led灯的电路结构,学会构建简单的流水灯电路。

掌握c51中单片机i/o口的编程方法和使用i/o口进行输入输出的注意事项。

二、实验原理:mcs-51系列单片机有四组8位并行i/o口,记作p0、p1、p2和p3。

每组i/o口内部都有8位数据输入缓冲器、8位数据输出锁存器及数据输出驱动等电路。

四组并行i/o端口即可以按字节操作,又可以按位操作。

当系统没有扩展外部器件时,i/o端口用作双向输入输出口;当系统作外部扩展时,使用p0、p2口作系统地址和数据总线、p3口有第二功能,与mcs-51的内部功能器件配合使用。

以p1口为例,内部结构如下图所示:图 p1口的位结构作输出时:输出0时,将0输出到内部总线上,在写锁存器信号控制下写入锁存器,锁存器的反向输出端输出1,下面的场效应管导通,输出引脚成低电平。

输出1时,下面的场效应管截止,上面的上拉电阻使输出为1。

作输入时:p1端口引脚信号通过一个输入三态缓冲器接入内部总线,再读引脚信号控制下,引脚电平出现在内部总线上。

i/o口的注意事项,如果单片机内部有程序存贮器,不需要扩展外部存贮器和i/o接口,单片机的四个口均可作i/o口使用;四个口在作输入口使用时,均应先对其写“1”,以避免误读;p0口作i/o口使用时应外接10k的上拉电阻,其它口则可不必;p2可某几根线作地址使用时,剩下的线不能作i/o口线使用;p3口的某些口线作第二功能时,剩下的口线可以单独作i/o口线使用。

三、实验环境:硬件:pc机,基本配置cpu pii以上,内存2g 软件:keil 2, proteus 7.5四、实验内容及过程:1、用proteus画流水灯电路图流程:1)、运行proteus仿真软件,单击pick from libraries,打开搜索元器件窗口,如图 1 所示:图 1 打开搜索元器件窗口2)、搜索添加元器件,如图2 所示:图2 搜索添加元器件窗口3)、添加元器件,修改元器件的参数,绘制流水灯原理图,元器件参数为c1=c2=20pf、c3=10uf;r1=r2=r3=r4=r5=r6=r7=r8=470欧姆、r9=10k欧姆;晶振=12m;vcc=5v。

最新单片机实验流水灯报告

最新单片机实验流水灯报告

最新单片机实验流水灯报告在本次实验中,我们设计并实现了一个基于单片机的流水灯系统。

该系统的主要功能是通过编程控制LED灯按照一定的顺序和时间间隔依次点亮和熄灭,从而形成流水灯效果。

以下是实验的详细报告:实验目的:1. 熟悉单片机的基本操作和编程。

2. 掌握GPIO(通用输入输出)的配置和使用。

3. 提高编程能力,理解时间控制的概念。

实验材料:- 单片机开发板- LED灯若干- 杜邦线若干- 电源适配器- 计算机及相应的编程软件实验步骤:1. 首先,将LED灯通过杜邦线连接到单片机的GPIO端口上。

确保每个LED连接正确,并且限流电阻已经安装以保护LED不被烧毁。

2. 使用编程软件编写单片机程序。

程序的主要逻辑是通过循环结构控制每个GPIO端口的高低电平,从而控制LED的亮灭。

3. 在程序中设置适当的延时函数,以控制LED点亮和熄灭的时间间隔,实现流水灯的效果。

4. 将编写好的程序通过编程软件下载到单片机中。

5. 连接电源,观察LED灯是否按照预期进行流水式点亮。

实验结果:通过实验,我们成功实现了流水灯效果。

LED灯按照预定的顺序依次点亮和熄灭,形成了流畅的动态效果。

通过调整延时参数,我们还可以改变流水的速度,从而观察不同设置下的灯光变化。

实验分析:在实验过程中,我们发现GPIO端口的配置对于LED的亮灭至关重要。

同时,延时函数的精确度直接影响了流水灯效果的平滑度。

通过对程序的不断调试和优化,我们加深了对单片机编程和硬件控制的理解。

结论:本次单片机实验不仅锻炼了我们的编程技能,而且增强了我们对电子硬件的认识和操作能力。

通过实际操作,我们更加深刻地理解了理论知识,为未来的电子设计和创新打下了坚实的基础。

(完整word版)基于单片机仿真软件proteus的流水灯实验报告

(完整word版)基于单片机仿真软件proteus的流水灯实验报告

单片机原理》实验报告题目:流水灯设计姓名:刘伟学号:1042157110专业:10 计科特色班院系:信息工程学院指导老师:史先桂完成时间:2014 年 4 月19 日安徽新华学院教务处制一、实验目的1、熟练掌握单片机仿真软件proteus 使用方法和注意事项。

2、了解简单单片机应用系统的设计方法。

3、帮助学生养成良好实验习惯。

二、实验内容单片机仿真软件proteus 上实现8个发光LED “流水”的现象,实现两个流水灯情况:1、先奇数灯亮,再偶数灯亮;2、实现流水灯从两边向中间亮,再从中间到两边亮。

并通过编写程序控制流水现象。

三、实验说明依照实验的硬件电路原理,在单片机仿真软件proteus 上进行硬件电路的模拟,然后进行实验。

在发光二极管两次点亮的间隔中加延时程序,让每次点亮停留一段时间,像这样人眼就可以看到“流水” 的现象。

四、实验环境硬件:pc 机;软件:单片机仿真软件proteus。

五、实验原理图六、实验参考程序#include<reg52.h>#include<intrins.h>void delay_ms(int n){int i,j;for(i=0;i<n;i++)for(j=0;j<110;j++);void main(){int i, num; unsigned char p1; unsigned char p0, p; while(1) {for(i=0; i<3; i++) // 间隔500ms 先奇数亮再偶数亮,循环三次{P1=0xaa; P0=p1; delay_ms(500);// 延时n 毫秒P1=0x55;P0=p1; delay_ms(500);}p1= 0xfe;num=3;while(num-- > 0) // 一个灯上下循环三?{ for(i=0; i<8; i++) {P0=p1; delay_ms(100); p1=_cror_(p1,1);}}//两个分别从两边往中间流动三?p1= 0xfe;p0= 0x7f;num=3;while(num-- > 0){for(i=0; i<4; i++) //让LED 灯从两边向中间点亮{p1=_crol_(p1,1);p0=_cror_(p0,1); p=p1&p0;delay_ms(100);P1=p;P0=p;// p1= 0xef;p0= 0xf7;num=3;while(num-- > 0){for(i=0; i<4; i++){p1=_crol_(p1,1);p0=_cror_(p0,1); p=p1&p0; delay_ms(100);P1=p;P0=p;}}//8 个全部闪烁3 次? num=3;while(num-- > 0){p1=0;delay_ms(500);p1=1; delay_ms(500);}break;}}模拟演示图:1)模拟单片机的偶数灯亮2)模拟单片机的奇数灯亮3)模拟单片机流水灯从两边到中间亮4)模拟单片机流水灯从中间到两边亮。

流水灯显示实验报告

流水灯显示实验报告

流水灯显示实验报告实验结果分析及讨论论 1. 实验中出现过的问题或错误、原因分析程序输入错误导致无法完全编译2. 保证实验成功的关键问题保证代码输入正确以及操作正确对实验自我评价价更加熟悉了keil 软件操作,理解了proteus 软件中构建流水灯显示实验,理解了keil源程序,通过两个软件成功联调得出实验现象。

教教师师评评阅阅1. 学生实验动手能力(20 分):□优秀(20~18)□较好(17~15)□合格(14~12)□不合格(11~0) 2. 实验报告内容(共60 分) (1)实验目的、材料、原理、内容及步骤记录(20 分):□正确、清晰、重点突出(20~18)□较正确、较清晰(17~15) □有少数错误(14~12)□有较多错误(11~0) (2)实验数据(现象)及结果记录、处理(20分):□清晰、正确(20~18)□较清晰、较正确(17~15)□合格(14~12)□不合格(11~0) (3)实验结果分析及讨论(20 分):□结果详实、结论清晰、讨论合理(20~18)□结果正确、讨论适当(17~15)□合格(14~12)□不合格(11~0) 3. 学生遵循实验室规定及实验要求程度(20 分):□好(20~18)□较好(17~15)□合格(14~12)□不合格(11~0) 4. 其它意见:教师签名:年月日课程名称单片机原理及应用实验成成绩实验名称流水灯显示实验专专业电子信息科学与技术年级/ 班级学学号实验地点实验日期姓姓名实验类型□ 演示性□ 验证性☑综合性□ 设计性指导教师实实验验目目的的1.加强对keil 软件的使用2.在proteus 软件中构建流水灯显示实验,并理解keil 源程序,通过两个软件的联调得出实验现象。

实验仪器及耗材材1 .THDPJ-3 型单片机开发综合实验装置; 2. PC 机; 3. Keil uVision4 仿真软件。

4.proteus 软件实实验验原原理理实验原理如图(低电平点亮)第2 页,共4 页第3 页,共4 页实实验验内内容容及及步步骤骤实验内容:1.搭建流水灯实验原理图。

keil+proteus流水灯实验

keil+proteus流水灯实验
v,查了一下也可以直接改成5v。
下面的这个东西就不用说了吧,开关运行按钮。
下面这个就是结果了。
5,程序
#include "reg51.h"
#include "intrins.h" //该文件包含—crol—(。。。)的函数原型
void mdelay(unsigned int delaytime)//延时程序
流水灯实验《仅供参考》
1
必须的两个软件,没有的自己去下了。太大了没办法传。 2
Keil软件
,,
别忘记设置这些参数。
在creat HEX Fi上打狗。。。打钩,嘿嘿,这是proteus中需要的文件。
3
Proteus软件,照图放一下就ok了。最小系统随便一搜就知道了。Crystal,找晶振使用(双击该属性12MHZ),cap电容(两个30pf,一个10uf),resistor电阻的(8个1k的,一个10k)的),AT89c52,switch开关。
各位都是聪明人,智商都是高高的。相信你一定可以的。
while(1)//死循环。相当于for(;;)
{
P3|=0x3c;
{
while((P3|0xfb)!=0xff)//判断按下的开关
{P1=outdata;
outdata=_crol_(outdata,1); //循环左移命令—crol—()
mdelay(1000);
}
P1=0xff;
}
}
}
6,完事。
{
unsigned int j=0;//无符号整数j
for(;delaytime>0;delaytime--)//for循环
{
for(j=0;j<125;j++)//125*delaytime为所延迟的时间
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机原理》实验报告
题目:流水灯设计
姓名:刘伟
学号:1042157110
专业:10 计科特色班院系:信息工程学院指导老师:史先桂
完成时间:2014 年 4 月19 日
安徽新华学院教务处制
一、实验目的
1、熟练掌握单片机仿真软件proteus 使用方法和注意事项。

2、了解简单单片机应用系统的设计方法。

3、帮助学生养成良好实验习惯。

二、实验内容单片机仿真软件proteus 上实现8个发光LED “流水”的现象,实现两个流水灯情况:1、先奇数
灯亮,再偶数灯亮;2、实现流水灯从两边向中间亮,再从中间到两边亮。

并通过编写程序控制流水现象。

三、实验说明依照实验的硬件电路原理,在单片机仿真软件proteus 上进行硬件电路的模拟,然后进行实验。

在发光二极管两次点亮的间隔中加延时程序,让每次点亮停留一段时间,像这样人眼就可以看到“流水” 的现象。

四、实验环境
硬件:pc 机;软件:单片机仿真软件proteus。

五、实验原理图
六、实验参考程序
#include<reg52.h>
#include<intrins.h>
void delay_ms(int n)
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<110;j++);
void main()
{
int i, num; unsigned char p1; unsigned char p0, p; while(1) {
for(i=0; i<3; i++) // 间隔500ms 先奇数亮再偶数亮,循环三次
{
P1=0xaa; P0=p1; delay_ms(500);
// 延时n 毫秒
P1=0x55;
P0=p1; delay_ms(500);
}
p1= 0xfe;
num=3;
while(num-- > 0) // 一个灯上下循环三?
{ for(i=0; i<8; i++) {
P0=p1; delay_ms(100); p1=_cror_(p1,1);
}
}
//两个分别从两边往中间流动三?
p1= 0xfe;
p0= 0x7f;
num=3;
while(num-- > 0)
{
for(i=0; i<4; i++) //让LED 灯从两边向中间点亮{
p1=_crol_(p1,1);
p0=_cror_(p0,1); p=p1&p0;
delay_ms(100);
P1=p;
P0=p;
// p1= 0xef;
p0= 0xf7;
num=3;
while(num-- > 0)
{
for(i=0; i<4; i++)
{
p1=_crol_(p1,1);
p0=_cror_(p0,1); p=p1&p0; delay_ms(100);
P1=p;
P0=p;
}
}
//8 个全部闪烁3 次? num=3;
while(num-- > 0)
{
p1=0;
delay_ms(500);
p1=1; delay_ms(500);
}
break;
}}
模拟演示图:
1)模拟单片机的偶数灯亮2)模拟单片机的奇数灯亮
3)模拟单片机流水灯从两边到中间亮4)模拟单片机流水灯从中间到两边亮。

相关文档
最新文档