第5章 跑马灯实验

合集下载

跑马灯实验报告实验原理

跑马灯实验报告实验原理

跑马灯实验报告实验原理实验背景:跑马灯实验主要用于研究光的传播和反射原理。

通过实验可以观察到光在不同介质中的传播路径和光的反射规律。

本实验旨在通过搭建跑马灯实验装置,探究光在直线和曲线光路中的传播特点,并观察反射光线的方向。

实验原理:1. 光的传播特点光在真空中的传播速度为光速,约为3×10^8 m/s。

当光从真空射入介质时,光速会发生变化,根据折射定律可知,光从光疏介质射入光密介质时,会向法线方向弯曲,光从光密介质射入光疏介质时,会离开法线方向。

这种光线的弯曲现象称为折射。

2. 反射光线的方向当光线从一种介质射入另一种介质时,会发生折射,但同时也会发生反射。

根据反射定律可知,入射光线和反射光线在入射面上的法线上的投影具有相同的夹角,反射光线与入射光线在入射面上的法线在同一平面内。

实验装置:1. 实验器材:跑马灯实验装置、直尺、激光笔、纸片、墨水笔等。

2. 实验步骤:a. 将跑马灯实验装置放置在平整的桌面上,调整好实验装置的角度,使得光线能够正常传播。

b. 使用激光笔在纸片上绘制直线和曲线光路图案,并进行标记。

c. 将纸片放置在实验装置上,将激光笔对准跑马灯实验装置的光源入口,发射激光光线。

d. 观察光线在直线和曲线光路中的传播路径,以及光线的反射方向。

e. 根据观察结果记录实验数据,并进行分析和总结。

实验结果:通过实验观察可以得出以下结论:1. 在直线光路中,光线沿直线传播,不会发生弯曲。

2. 在曲线光路中,光线在曲线上弯曲传播,沿着曲线的切线方向传播。

3. 光线在跑马灯实验装置中的反射方向符合反射定律,入射光线和反射光线在入射面上的法线上的投影具有相同的夹角。

实验分析:根据实验结果可知,光在不同介质中的传播路径受到折射定律的影响,而光线在界面上的反射方向受到反射定律的影响。

这些定律的存在使得光在不同介质中的传播具有一定的规律性和可预测性。

实验应用:跑马灯实验的原理和结论在日常生活中有着广泛的应用。

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

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

单片机跑马灯(流水灯)控制实验报告实验目的:本实验旨在通过使用单片机对LED灯进行控制,实现跑马灯(流水灯)的效果,同时熟悉单片机编程和IO口的使用。

实验器材:1)STC89C52单片机2)最基本的LED灯3)面包板4)若干跳线实验过程:1.硬件连接:将单片机的P2口与面包板上的相应位置连接,再将LED灯接入面包板中。

2.编写程序:按照题目要求编写所需程序。

3.单片机烧录:将程序烧录进单片机中,即可实现跑马灯效果。

程序详解:1. 由于LED灯是呈现亮灭效果,我们要编写程序来控制LED的亮灭状态。

2. 在程序中,我们通过P2口控制LED灯的亮灭状态。

例如,若要让LED1亮,我们就将P2口的第一个引脚设置为低电平(0),此时LED1就会发光。

同样地,若要LED2,LED3等依次点亮,则需要将P2口的第二个、第三个引脚设置为低电平,依此类推即可。

3. 接下来,我们要实现每个LED灯的亮灭时间间隔,并实现跑马灯的效果。

4. 在本实验中,我们采用了计时器中断的方式来实现灯光的控制,即在定时器中断函数中对P2口进行控制,这样可以方便地控制灯亮灭时间和亮度。

通过改变定时器中断的时间,可以改变LED灯的亮灭时间;通过改变P2口的控制顺序,可以实现跑马灯效果。

5. 整个程序比较简单,具体的代码实现可以参考以下程序:#include <REG52.H>#include <intrins.h>#define uint unsigned int #define uchar unsigned char void Delay1ms(uchar _ms); void InitTimer0();sbit led1=P2^0;sbit led2=P2^1;sbit led3=P2^3;sbit led4=P2^4;sbit led5=P2^5;sbit led6=P2^6;sbit led7=P2^7;void InitTimer0(){TMOD=0x01;TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1;ET0=1;TR0=1;}void Timer0() interrupt 1 {static uint i;TH0=(65536-50000)/256; TL0=(65536-50000)%256;i++;if(i%2==0){led1=~led1;}if(i%4==0){led2=~led2;}if(i%6==0){led3=~led3;}if(i%8==0){led4=~led4;}if(i%10==0){led5=~led5;}if(i%12==0){led6=~led6;}if(i%14==0){led7=~led7;}}void Delay1ms(uchar _ms){uchar i;while(_ms--){i=130;while(i--);}}实验总结:通过本次实验,我们掌握了单片机控制跑马灯(流水灯)的方法,对单片机编程和IO 口的使用有了更深入的了解。

跑马灯实验报告

跑马灯实验报告

跑马灯实验报告引言跑马灯是一种常见的公共场所宣传和广告工具。

它通过不断闪烁的灯光来吸引人们的注意,向他们传达信息和内容。

在这个报告中,我们将通过一系列实验来研究跑马灯的工作原理、效果和可能的应用领域。

实验一:跑马灯的基本构造实验目的通过拆解和分析跑马灯的结构,理解其基本构造和工作原理。

实验步骤1.拆解一台跑马灯,将其分解为基本组成部分,如灯管、控制电路和外壳等。

2.分析每个组成部分的作用和功能。

实验结果根据我们的拆解和分析,我们得出了以下结论:•灯管:灯管是跑马灯的核心部件,它通过发光来吸引人们的注意。

•控制电路:控制电路负责控制灯管的闪烁频率和模式。

•外壳:外壳起到保护和美化跑马灯的作用。

实验二:跑马灯的效果分析实验目的评估不同频率和模式的跑马灯对人眼的刺激程度和注意力吸引效果。

实验步骤1.准备三台不同频率的跑马灯(低频、中频和高频)。

2.让一组实验参与者观察每种频率的灯光,并记录他们的感受和注意力集中程度。

3.对比不同频率下的实验结果,并做出分析和总结。

实验结果我们的实验结果表明:•高频率的跑马灯更容易引起人们的注意,但也会让他们感到疲劳或不适。

•低频率的跑马灯对人眼的刺激相对较轻,但可能不足以引起足够的关注。

•中频率的跑马灯在刺激度和注意力吸引效果之间取得了一个平衡,被认为是比较理想的选择。

实验三:跑马灯的应用展望实验目的探索跑马灯在不同场景和领域的应用潜力,并分析其优势和限制。

实验步骤1.分析跑马灯目前的主要应用领域,如商业广告、警示通知和信息发布等。

2.探寻跑马灯在其他领域中的潜在应用,如教育、娱乐和医疗等。

3.分析跑马灯在不同应用领域中的优势和限制。

实验结果我们的分析结果表明:•跑马灯在商业广告和公共通知中具有广泛应用的潜力,因为它能够吸引人们的注意并传达信息。

•跑马灯在教育领域中可以用于展示学生作品、提醒学生重要事项等,但需注意不要过度刺激学生眼睛。

•跑马灯在医疗领域中可以用于显示患者信息、提醒医生注意事项等,但需确保灯光不会对患者或医生造成不适。

跑马灯实验报告

跑马灯实验报告

跑马灯实验报告
实验目的,通过搭建一个简单的跑马灯电路,了解电子元件的基本原理和电路的工作方式。

实验器材,LED灯、电阻、导线、电池、开关、面包板。

实验步骤:
1. 将LED灯的正极与电池的正极通过导线连接起来,负极与电阻连接,然后再将电阻的另一端与电池的负极连接。

2. 将开关连接到电路中,使得可以通过开关控制电路的通断。

3. 将整个电路搭建在面包板上,确保连接牢固。

4. 打开开关,观察LED灯的亮灭情况。

实验结果:
经过搭建和观察,我们发现当开关闭合时,LED灯会亮起;当开关断开时,LED灯会熄灭。

通过不断地开合开关,我们可以看到LED灯会不断地亮灭,就像跑马灯一样在不同的位置闪烁。

实验分析:
跑马灯实验的原理是利用开关控制电路的通断,从而控制LED灯的亮灭。

当开关闭合时,电路闭合,电流可以流通,LED灯就会亮起;当开关断开时,电路断开,电流无法流通,LED灯就会熄灭。

通过不断地开合开关,就可以实现LED 灯的频繁闪烁,呈现出跑马灯的效果。

实验总结:
通过这个简单的跑马灯实验,我们了解了电子元件的基本原理和电路的工作方式。

同时,我们也体会到了实验中的观察和分析的重要性。

在今后的学习中,我们将进一步深入学习电子电路的知识,探索更多有趣的实验和应用。

以上就是本次跑马灯实验的实验报告,希望对大家有所帮助。

跑马灯实验报告

跑马灯实验报告

跑马灯实验报告跑马灯实验报告引言:跑马灯,又称为旋转灯,是一种常见的灯光装置,广泛应用于舞台、广告牌和娱乐场所等场合。

在这个实验报告中,我们将探讨跑马灯的原理、构造和应用,并通过实验验证其工作原理。

一、跑马灯的原理跑马灯的原理基于电机的旋转运动和灯泡的亮灭变化。

电机通过驱动轴带动跑马灯旋转,而灯泡则根据电路控制的信号进行亮灭操作。

通过电机的旋转和灯泡的变化,跑马灯能够呈现出循环闪烁的效果。

二、跑马灯的构造跑马灯一般由电机、驱动轴、灯泡和控制电路等组成。

电机是跑马灯的核心部件,通过驱动轴将旋转运动转化为灯泡的亮灭变化。

灯泡则通过控制电路接收信号,根据信号的变化来控制灯泡的亮灭。

整个跑马灯的构造简单而紧凑,能够实现稳定的循环闪烁效果。

三、跑马灯的应用跑马灯广泛应用于各个领域,其中最常见的是在舞台表演中的应用。

跑马灯通过循环闪烁的效果,能够为舞台表演增添动感和视觉冲击力。

此外,跑马灯还被广泛应用于广告牌、商场和娱乐场所等场合,通过灯光的变化吸引人们的注意力,起到宣传和促销的作用。

四、跑马灯实验为了验证跑马灯的工作原理,我们进行了一次简单的实验。

首先,我们准备了一个跑马灯实验装置,包括一个电机、驱动轴和三个灯泡。

然后,我们通过控制电路将电机和灯泡连接起来,确保信号的传输和控制正常。

接下来,我们启动电机,通过控制电路的信号变化,使灯泡循环闪烁。

实验结果表明,跑马灯能够按照预期的方式工作,实现循环闪烁的效果。

结论:通过本次实验,我们深入了解了跑马灯的原理、构造和应用。

跑马灯作为一种常见的灯光装置,在舞台表演、广告宣传和娱乐场所等场合起到了重要的作用。

通过实验验证,我们证实了跑马灯能够按照预期的方式工作,实现循环闪烁的效果。

跑马灯的应用前景广阔,未来有望在更多领域发挥其独特的作用。

总结:本次实验报告详细介绍了跑马灯的原理、构造和应用,并通过实验验证了其工作原理。

跑马灯作为一种常见的灯光装置,不仅能够为舞台表演增添动感和视觉冲击力,还能够在广告宣传和娱乐场所等场合起到重要的作用。

实验五 交通灯、跑马灯轮换实验

实验五  交通灯、跑马灯轮换实验

实验五交通灯、跑马灯轮换实验
一、实验要求
1.以74LS273作为输出口,控制4个双色LED灯(可发红,绿,黄光),
模拟交通灯管理。

2.以K1为切换输入口,控制双色LED灯在交通灯、跑马灯两种状态切换。

二、实验目的
1.学习使用定时计数器进行定时中断控制的方法。

2.学习使用外部中断控制数据输出的设计方法。

3.进一步巩固中断程序的设计技巧。

4.掌握数据表的设计方法。

三、实验电路及连线
接线说明:K1接P3.2;PO0~PO3接DG1~DG4;
PO4~PO7接DR1~DR4。

/CS接8300H
四、实验说明
1.本实验涉及到交通灯控制和跑马灯控制两种状态。

交通灯的变化规律可以参考实验
四之描述。

跑马灯规律如下:四个双色LED灯在任意一时刻,只有两个灯亮,颜
色自定。

在跑马灯的运行中,按照顺时针的方向依次点亮相邻的两个双色LED灯,经过四次变化,跑马灯跑完一圈。

2.双色LED是由一个红色LED管芯和一个绿色LED管芯封装在一起,公用负端。

当红色正端加高电平,绿色正端加低电平时,红灯亮;红色正端加低电平,绿色正
端加高电平时,绿灯亮;两端都加高电平时,黄灯亮。

3.实验进行时,首先是跑马灯状态,在任意时刻,拨动一次KEY1键(自定中断触
发方式),由跑马灯状态切换为交通灯状态;任意时刻拨动一次KEY1键,又由交
通灯状态切换为跑马灯状态。

如此循环。

4.实验要求:程序必须用到定时计数器中断和外部中断。

五、实验框图
六、实验代码
七、实验数据
八、实验小结。

实验报告 跑马灯

实验报告 跑马灯

实验报告跑马灯实验报告:跑马灯引言:跑马灯作为一种常见的室内装饰和广告展示工具,广泛应用于商场、剧院、车站等公共场所。

本实验旨在探究跑马灯的工作原理和设计过程,并通过实际搭建跑马灯模型进行验证。

一、跑马灯的工作原理跑马灯是通过一组灯泡或LED灯组成的,它们按照一定的顺序依次亮灭,从而形成连续的动态效果。

跑马灯的工作原理主要包括电路控制和程序设计两个方面。

1. 电路控制:跑马灯的电路控制是通过继电器或集成电路实现的。

继电器是一种电磁开关,通过控制电磁铁的通断来控制灯泡的亮灭。

而集成电路则是通过逻辑门和计时器等元件实现灯泡的顺序控制。

2. 程序设计:跑马灯的程序设计是通过编写一段简单的代码来实现的。

在代码中,通过控制灯泡或LED灯的亮灭时间和顺序来实现跑马灯效果。

常见的程序设计语言如C、Python等都可以用来编写跑马灯的代码。

二、跑马灯的设计过程跑马灯的设计过程包括灯泡或LED灯的选型、电路设计、程序编写和外壳制作等步骤。

1. 灯泡或LED灯的选型:在跑马灯的设计中,选择合适的灯泡或LED灯是非常重要的。

灯泡的亮度、寿命和能耗等指标需要进行综合考虑。

而LED灯则具有节能、寿命长和颜色丰富等优点,因此在现代跑马灯设计中更加常见。

2. 电路设计:电路设计是跑马灯设计中的关键环节。

在电路设计中,需要考虑灯泡或LED灯的亮灭顺序、时间间隔和电源供应等因素。

通过合理的电路设计,可以实现跑马灯的稳定运行和灯泡的长寿命。

3. 程序编写:程序编写是跑马灯设计中的另一个重要环节。

通过编写一段简单的代码,可以控制灯泡或LED灯的亮灭顺序和时间间隔。

程序编写需要考虑灯泡或LED灯的数量和控制方式等因素,以实现预期的跑马灯效果。

4. 外壳制作:外壳制作是跑马灯设计中的最后一步。

通过设计和制作合适的外壳,可以保护电路和灯泡或LED灯,同时也可以增加跑马灯的美观性。

外壳的材料可以选择塑料、金属或木材等,根据实际需要进行选择。

跑马灯实验报告

跑马灯实验报告

一、实验目的1. 熟悉嵌入式系统硬件电路的搭建与调试;2. 掌握C语言编程,实现跑马灯功能;3. 理解并掌握GPIO口操作,学习定时器中断的使用。

二、实验环境1. 开发板:STM32F103C8T6开发板2. 编译器:Keil uVision53. 软件库:STM32标准外设库三、实验原理跑马灯实验是通过控制LED灯的亮灭,实现LED灯依次点亮的效果。

实验原理如下:1. GPIO口控制:将LED灯连接到开发板的GPIO口,通过控制GPIO口的输出电平,实现LED灯的点亮与熄灭;2. 定时器中断:定时器产生中断,实现LED灯点亮与熄灭的时间间隔;3. 循环控制:通过循环控制LED灯的点亮顺序,实现跑马灯效果。

四、实验步骤1. 硬件电路搭建(1)将LED灯的正极连接到开发板的GPIO口,负极接地;(2)将开发板的电源和地线连接到电源模块。

2. 软件编程(1)在Keil uVision5中创建项目,并导入STM32标准外设库;(2)编写程序,实现以下功能:a. 初始化GPIO口,将LED灯连接的GPIO口配置为输出模式;b. 初始化定时器,设置定时器中断周期,使LED灯点亮与熄灭的时间间隔为1ms;c. 编写定时器中断服务程序,控制LED灯的点亮与熄灭;d. 编写主函数,实现LED灯依次点亮的效果。

3. 编译与下载(1)编译程序,生成可执行文件;(2)将开发板连接到计算机,通过串口下载程序到开发板。

4. 实验调试(1)打开串口调试助手,观察LED灯的点亮与熄灭效果;(2)调整程序参数,优化跑马灯效果。

五、实验结果与分析1. 实验结果(1)LED灯依次点亮,实现跑马灯效果;(2)LED灯点亮与熄灭的时间间隔可调。

2. 实验分析(1)通过控制GPIO口的输出电平,实现LED灯的点亮与熄灭;(2)定时器中断实现LED灯点亮与熄灭的时间间隔控制;(3)循环控制实现LED灯依次点亮的效果。

六、实验总结本次实验成功实现了跑马灯功能,加深了对嵌入式系统硬件电路、C语言编程和GPIO口操作的理解。

单片机 跑马灯实验精选全文

单片机 跑马灯实验精选全文

可编辑修改精选全文完整版实验一跑马灯实验一、实验内容1、基本的流水灯根据图1电路,编写一段程序,使8个发光二极管D1、D2、D3、D4、D5、D6、D7、D8顺序(正序)点亮:先点亮D1,再点亮D2、D3……D8、D1……,循环点亮。

每点亮一个LED,采用软件延时一段时间。

2、简单键控的流水灯不按键,按正序点亮流水灯;按下K1不松手,按倒序点亮流水灯,即先点亮D8,再顺序点亮D7、D6……D1、D8……。

松手后,又按正序点亮流水灯。

3、键控的流水灯上电,不点亮LED,按一下K1键,按正序点亮流水灯。

按一下K2键,按倒序点亮流水灯,按一下K3键,全部关闭LED。

二、实验方案1、总体方案设计考虑到K4键未被使用,所以将实验内容中的三项合并到一个主函数中:K4键代替实验内容第二项中的K1键;单片机一开机即执行实验内容第一项;K1、K2、K3键实现实验内容第三项。

所用硬件:AT89C52、BUTTON、LED-BLUE、电源输入:P2.0-K1;P2.1-K2;P2.2-K3;P2.3-K4。

低电平有效输出:P0.0~P0.7-D0~D7。

LED组连线采用共阳极,低电平有效软件设计:软件延时采用延时函数delay(t),可调整延迟时间:void delay(uint t){uint i;while(t--)for(i=0;i<1000;i++){if(P2!=oldK&&P2!=K[0])break;//按下了其他键退出循环}}由于涉及到按键变化所以要设置一个变量oldK保留按键键值,要在延时程序中检测是否按键,当按键后立即设置oldK的值。

按键判断采用在while循环中利用条件语句判断P2的值然后执行该键对应的代码段,达到相应的响应。

为了让K4键的效果优化,即状态变化从当前已亮灯开始顺序点亮或逆序点亮,利用全局变量n来记录灯号,利用算法即可实现。

主要算法:1、全局变量的定义:uchar D[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0X7f};//单个LED亮uchar AllOff=0xff;//LED全灭uchar AllOn=0x00;//LED全亮uchar K[]={0xff,0xfe,0xfd,0xfb,0xf7};//按键开关uchar oldK;//记录已按键int n;2、顺序、逆序点亮流水灯:void forward(){for(n=0;n<=7;n++){out=D[n];delay(15);if(P2!=oldK&&P2!=K[0])break;}out=AllOff;}void backward(){for(n=7;n>=0;n--){out=D[n];delay(15);if(P2!=oldK&&P2!=K[0])break;}out=AllOff;}3、实验内容第二项流水灯灯亮顺序变换:void hold(){n=8;while(1){if(P2==K[4]){//一直按着K4键,逆序点亮跑马灯oldK=K[4];if(n==-1)n=7; //D0灯亮后点亮D7while(n>=0){out=D[n];n--;if(delay4(15))break;}}if(P2==K[0]){//未按下K4键,一直正序点亮跑马灯oldK=K[0];if(n==8)n=0;//D7灯亮后点亮D0while(n<=7){out=D[n];n++;if(delay4(15))break;}}if(P2!=K[4]&&P2!=K[0]){//按下了其他键,退出hold函数break;}}}4、对应实验内容第一项,开机顺序点亮流水灯:while(1){//开机即正序点亮流水灯forward();if(P2!=K[0]){break;}}2、实验原理图图2-1 实验原理图3、程序流程图图2-2 程序流程图三、源程序#include"reg51.h"#define uchar unsigned char#define uint unsigned int#define out P0uchar D[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0X7f};//单个LED亮uchar AllOff=0xff;//LED全灭uchar AllOn=0x00;//LED全亮uchar K[]={0xff,0xfe,0xfd,0xfb,0xf7};//按键开关uchar oldK;//记录已按键int n;//记录当前亮的灯号void delay(uint t){uint i;while(t--)for(i=0;i<1000;i++){if(P2!=oldK&&P2!=K[0])break;//按下了其他键退出循环}}void delay10ms(){uint i;for(i=0;i<10000;i++);}void forward(){for(n=0;n<=7;n++){out=D[n];delay(15);if(P2!=oldK&&P2!=K[0])break;}out=AllOff;}void backward(){for(n=7;n>=0;n--){out=D[n];delay(15);if(P2!=oldK&&P2!=K[0])break;}out=AllOff;}int delay4(uint t){uint i;while(t--)for(i=0;i<1000;i++){if(P2!=oldK){ //按键变化退出循环return 1;}}return 0;}void hold(){n=8;while(1){if(P2==K[4]){//一直按着K4键,逆序点亮跑马灯oldK=K[4];if(n==-1)n=7; //D0灯亮后点亮D7while(n>=0){n--;if(delay4(15))break;}}if(P2==K[0]){//未按下K4键,一直正序点亮跑马灯oldK=K[0];if(n==8)n=0;//D7灯亮后点亮D0while(n<=7){out=D[n];n++;if(delay4(15))break;}}if(P2!=K[4]&&P2!=K[0]){//按下了其他键,退出hold函数break;}}}void main(){oldK=K[0];while(1){//开机即正序点亮流水灯forward();if(P2!=K[0]){break;}}while(1){out=AllOff;if((P2&0x0f)!=0x0f){//检测有键按下delay10ms();//延时10ms再去检测//P2.0_K1键按下正序点亮流水灯if(P2==K[1]){oldK=K[1];while(1){forward();if(P2!=K[1]&&P2!=K[0]){//按下了其他键,退出break;}}}//P2.1_K2键按下逆序点亮流水灯if(P2==K[2]){while(1){backward();if(P2!=K[2]&&P2!=K[0]){//按下了其他键,退出break;}}}//P2.2_K3键按下关闭全部LEDif(P2==K[3]){oldK=K[3];out=AllOff;}//P2.3_K4键按下长按逆序点亮流水灯,不按正序点亮流水灯,直到其他键按下停止if(P2==K[4]){hold();}}}}四、实验结果1、基本的流水灯:开机后即重复顺序点亮流水灯,等待其他按键。

跑马灯实验报告

跑马灯实验报告

跑马灯实验报告
实验题目:跑马灯实验
实验目的:通过搭建跑马灯电路,了解并掌握LED的使用方法。

实验器材:
1. Arduino UNO开发板
2. 面包板
3. 跑马灯电路板(包括LED灯和电阻)
4. 杜邦线若干
实验原理:
跑马灯实验是利用Arduino开发板来控制LED灯的亮灭,从而实现类似跑马灯效果。

Arduino将在不同的引脚上输出高电平或低电平的信号,通过连接到对应的LED灯,使其亮灭,从而实现不同的灯光变化。

实验步骤:
1. 将Arduino UNO开发板插入面包板中心位置,确保与面包板上电源和地线相连。

2. 在面包板上将跑马灯电路板与Arduino开发板连接起来。

跑马灯电路板上有多个LED灯和电阻,每个LED灯和电阻组合连接到一个引脚上。

3. 使用杜邦线将跑马灯电路板与Arduino开发板连接起来。

确保正极连接到正极,负极连接到负极。

4. 在Arduino开发板上打开Arduino IDE软件,编写控制LED灯亮灭的程序。

5. 将程序上传到Arduino开发板中,程序运行后,跑马灯电路板上的LED灯将会按照程序的设定亮灭。

实验结果:
根据实验所编写的程序,跑马灯电路板上的LED灯将会依次亮起,然后逐渐熄灭,再重复以上过程,实现类似跑马灯效果。

实验总结:
通过本次跑马灯实验,我了解并掌握了LED的使用方法和原理,掌握了Arduino开发板的基本使用方法和程序编写方法。

这对于我进一步学习和应用其他电子电路和Arduino的实验具有重要的基础作用。

同时,本次实验也增强了我的动手实践能力和对电路原理的理解能力。

《跑马灯实验》课件

《跑马灯实验》课件

选择串口通信或485通信作为跑马灯的通
搭建硬件电路
2
信方式。
在接线板上搭建单片机、MAX485转串口
芯片和光电开关电路。
3
编写程序
根据选择的通信方式编写程序,实现跑
调试程序
4
马灯功能。
将程序下载到单片机板上,接上LED灯,
进行跑马灯的调试。
5
扩展功能
增加按键控制、亮度调节等功能,提升
实验总结
6
跑马灯的灵活性。
《跑马灯实验》PPT课件
掌握跑马灯通信原理,理解跑马灯实验的实现方法,培养实验操作能力。
实验目的
通过该实验,我们的目标是掌握跑马灯通信原理,并深入理解实验过程中所 使用的各种元器件和设备。我们还将培养实验操作能力,以便在日后的学习 和工作中更好地运用所学。
实验器材与元器件
STC89C52 单片机开发 板
总结实验经验,收集实验数据并进行结 果分析,为以后的实验提供参考。
实验注意事项
1 操作时应注意安全
使用实验设备和器材时需注意安全,避免发生意外事故。
2 接线应正确
在搭建电路时,确保接线和连接正确,以防止短路、漏电等情况的发生。
3 注意设备维护
在实验结束后,记得关闭相关设备,并及时进行设备的维护和保养。
用于控制跑马灯的运行
LED灯
作为跑马灯的展示器件
接线板
用于连接各种元器件和设备
MAX485 转串口芯片
实现单片机与电脑之间的通信
光电开关
用于检测运动,并触发跑马 灯的亮灭
电容
用于稳定电流和电压
电阻
用于限制电流和调节电压
面包板
提供便捷的元器件搭建平台
其他配件
为实验搭建提供辅助工

单片机跑马课程设计

单片机跑马课程设计

单片机跑马课程设计一、课程目标知识目标:1. 让学生掌握单片机的基本原理,理解跑马灯程序的设计思路。

2. 使学生了解单片机编程的基本语法和指令,并能运用到跑马灯程序编写中。

3. 帮助学生掌握跑马灯程序中涉及的电子元件使用方法,如LED灯、电阻等。

技能目标:1. 培养学生动手操作单片机的能力,能够独立完成跑马灯程序的下载、调试和运行。

2. 提高学生的问题解决能力,能够分析并解决跑马灯程序中可能出现的故障。

3. 培养学生的团队协作能力,能够在小组内分工合作,共同完成跑马灯项目的设计与实现。

情感态度价值观目标:1. 激发学生对单片机及电子制作的兴趣,培养其创新意识和探索精神。

2. 培养学生严谨、细心的学习态度,养成良好的编程习惯。

3. 增强学生的自信心,使其在跑马灯项目实践中感受到成功的喜悦。

本课程针对单片机跑马项目设计,结合学生年级特点,注重理论与实践相结合,旨在提高学生的动手能力、问题解决能力和团队协作能力。

课程目标具体、可衡量,为后续教学设计和评估提供明确方向。

二、教学内容1. 单片机基本原理:介绍单片机的组成、工作原理,引导学生了解和掌握单片机的基本功能和应用。

- 教材章节:第1章 单片机概述- 内容:单片机的发展历程、内部结构、工作原理。

2. 单片机编程基础:讲解单片机编程的基本语法、指令和编程环境,为学生编写跑马灯程序奠定基础。

- 教材章节:第2章 单片机编程基础- 内容:C语言基础、单片机指令系统、编程环境搭建。

3. 跑马灯程序设计:分析跑马灯程序的设计思路,教授编程技巧,让学生学会编写和调试程序。

- 教材章节:第3章 单片机程序设计实例- 内容:跑马灯程序设计原理、程序编写、调试方法。

4. 电子元件应用:介绍跑马灯项目中涉及的LED灯、电阻等元件的使用方法,指导学生进行电路搭建。

- 教材章节:第4章 电子元件及其应用- 内容:LED灯、电阻、杜邦线等元件的功能和连接方法。

5. 跑马灯项目实践:引导学生分组进行跑马灯项目的设计与实现,培养其动手能力、团队协作能力和问题解决能力。

走马灯实验的实验方法

走马灯实验的实验方法

走马灯实验的实验方法走马灯实验是一种经典的心理学实验方法,用于研究注意力和认知的相关问题。

以下是50条关于走马灯实验的实验方法,并展开详细描述:1. 实验目的:通过走马灯实验,探索参与者在一系列刺激中的注意力分配和反应速度。

2. 实验设计:使用计算机软件或实验室设备模拟走马灯环境,以观察被试者的表现。

3. 实验参与者:招募一定数量的健康被试者,进行实验前的屏蔽,确保他们没有相关的心理问题或疾病。

4. 实验条件:根据实验设计,确定实验组和对照组,以及可能的变量控制。

5. 实验材料:走马灯实验所需的材料包括计算机、屏幕、软件、键盘等。

6. 实验任务:被试者需要对屏幕上不断变化的文字或图像做出指定的反应,例如按下空格键或点击鼠标。

7. 实验程序:制定详细的实验流程,包括被试者的登记、实验条件的设定、实验任务的说明等。

8. 实验指导:对被试者进行实验前的指导,解释任务的内容和要求。

9. 实验训练:在进行正式实验之前,对被试者进行一定的训练,以确保他们理解任务并能够正确执行。

10. 实验控制:在实验过程中,保持实验室环境的稳定,避免外部干扰。

11. 数据记录:使用实验软件或手动记录被试者的反应数据,包括反应时间、准确性等。

12. 数据分析:对实验数据进行统计分析,比较不同条件下被试者的表现,寻找规律和趋势。

13. 实验结果:总结实验结果,发现注意力分配和认知反应的相关规律。

14. 结果解释:根据实验结果,对走马灯实验的心理学意义进行解释和探讨。

15. 结论及讨论:得出结论,并将实验结果与现有研究成果进行比较和讨论,提出可能的启示和进一步研究方向。

16. 文献综述:根据实验结果,撰写相关的研究论文,并对相关文献进行综述。

17. 实验伦理:在进行实验前,进行伦理评估,确保实验程序符合伦理标准,保护被试者的权益和隐私。

18. 实验报告:撰写实验报告,包括实验方法、结果、讨论和参考文献等部分。

19. 实验复制:如果可能,允许其他研究者对实验进行复制,以验证结果的可靠性。

走马灯实验报告

走马灯实验报告

走马灯实验报告走马灯实验报告引言:走马灯实验是一种常见的物理实验,通过旋转的灯泡和立体旋转的反射镜,使得灯光在空间中形成连续的图案。

这种实验不仅能够展示光的传播和反射原理,还能够给人带来美妙的视觉体验。

本篇报告将详细介绍走马灯实验的原理、实验装置以及实验过程中的观察结果与分析。

一、实验原理走马灯实验的原理基于光的传播和反射。

当灯泡旋转时,灯光会以一定的频率照射到反射镜上。

反射镜上有一系列倾斜的镜面,灯光经过反射后会形成一条条连续的光线。

这些光线在空间中形成一个圆弧,就像走马灯一样不断旋转。

人眼捕捉到这些连续的光线时,会形成一个完整的图案。

二、实验装置走马灯实验需要准备以下装置:1. 一个旋转的灯泡:灯泡上应有一个小孔,灯泡旋转时,只有小孔处的光线能够射出。

2. 一个立体旋转的反射镜:反射镜上有一系列倾斜的镜面,可以将灯光反射成连续的光线。

3. 一个支架:用于固定灯泡和反射镜。

4. 一个电源:用于给灯泡供电。

三、实验过程与观察结果1. 将灯泡和反射镜固定在支架上,并接通电源。

2. 调节灯泡的旋转速度,观察灯光的变化。

3. 观察灯光形成的图案,注意观察图案的大小、形状和运动方向等。

在实验过程中,我们观察到了以下现象:1. 当灯泡旋转速度较慢时,图案较为稳定,光线形成的圆弧较大。

2. 当灯泡旋转速度逐渐增加时,图案开始变得模糊,光线形成的圆弧逐渐缩小。

3. 当灯泡旋转速度达到一定程度时,图案会变得非常模糊,甚至无法辨认出具体的形状。

4. 如果调整反射镜的角度,可以改变图案的形状和运动方向。

四、实验分析走马灯实验中,灯光的旋转速度对图案的形成有重要影响。

当旋转速度较慢时,光线的间隔较大,人眼能够清晰地分辨出每一条光线,从而形成一个完整的图案。

随着旋转速度的增加,光线的间隔变小,人眼无法快速捕捉到每一条光线,从而导致图案模糊。

当旋转速度达到一定程度时,光线的间隔变得非常短,甚至无法辨认出具体的形状。

此外,反射镜的角度也会影响图案的形状和运动方向。

跑马灯实验报告

跑马灯实验报告

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

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

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

三、程序流程图四、程序#include &lt;reg50 ;//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&gt;0;i--) //循环i*240 次for(j=240;j&gt;0;j--);}/************数码管刷新******************/void refresh (){uint8 j;for (j=0;j&lt;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&lt;&lt;j++);//控制小灯Time_counter = 0; //清零开始下一次循环定时}if (8==j) //移完8次再重新移{ j=0;}。

跑马灯实验报告

跑马灯实验报告

跑马灯实验报告跑马灯实验报告摘要:本文通过跑马灯实验,研究了不同颜色、不同速度和不同方向的跑马灯对人眼的视觉效应。

实验结果表明,不同颜色和速度的跑马灯会对人眼产生不同的影响,而方向对视觉效应的影响并不明显。

关键词:跑马灯,颜色,速度,方向,视觉效应引言跑马灯是一种常见的视觉刺激,其通过快速闪烁的光源产生视觉效应。

在日常生活中,跑马灯可以用于广告宣传、娱乐等多种场合。

在科学研究中,跑马灯也被广泛应用于心理学、神经科学等领域。

本实验旨在研究不同颜色、不同速度和不同方向的跑马灯对人眼的视觉效应,并探讨其可能的机制。

材料与方法实验对象:20名年龄在20岁至30岁之间、无色盲和视力问题的大学生。

实验设备:跑马灯装置、计算机、眼动仪、屏幕。

实验流程:1. 让实验对象坐在距离屏幕50厘米处的沙发上,调整好眼睛的位置。

2. 通过计算机控制跑马灯装置,在屏幕上显示跑马灯,并记录下显示的颜色、速度和方向。

3. 让实验对象注视跑马灯,并使用眼动仪记录下注视的位置和时间。

4. 完成实验后,让实验对象填写调查问卷,以了解他们对跑马灯的视觉效应的感受和体验。

实验设计本实验采用单因素设计,即分别研究跑马灯的颜色、速度和方向对人眼的视觉效应的影响。

每个因素分为两个水平进行实验,具体如下:颜色:红色、绿色速度:慢速(1圈/秒)、快速(3圈/秒)方向:顺时针、逆时针结果颜色对视觉效应的影响在红色和绿色跑马灯实验中,实验对象对红色跑马灯的反应时间比绿色跑马灯短,视觉效应更为显著。

具体而言,实验对象在注视红色跑马灯时眼动速度更快,注视时长更短,说明红色跑马灯对视觉注意力的吸引力更大。

速度对视觉效应的影响在慢速和快速跑马灯实验中,实验对象在注视快速跑马灯时反应时间更短,视觉效应更为显著。

具体而言,实验对象在注视快速跑马灯时眼动速度更快,注视时长更短,说明快速跑马灯对视觉注意力的吸引力更大。

方向对视觉效应的影响在顺时针和逆时针跑马灯实验中,实验对象在注视两种方向的跑马灯时没有显著的差异,说明方向对视觉效应的影响不明显。

跑马灯实验报告

跑马灯实验报告

跑马灯实验报告实验目的,通过搭建一个简易的跑马灯电路,了解电路的基本原理和运作方式,加深对电子电路的理解。

实验器材,LED灯、电阻、导线、电池、开关、面包板。

实验步骤:1. 将面包板上的LED灯、电阻、开关、电池依次连接起来,注意连接的顺序和方向。

2. 确保连接无误后,打开开关,观察LED灯的亮灭情况。

3. 如果LED灯正常亮起,可以尝试将多个LED灯连接在一起,形成跑马灯效果。

4. 通过调整电阻的阻值,观察LED灯的亮度变化,体会电阻在电路中的作用。

实验结果:经过实验,我们成功搭建了一个简易的跑马灯电路。

当打开开关时,LED灯依次亮起,形成了跑马灯效果。

通过调整电阻的阻值,我们发现LED灯的亮度会有所变化,这说明电阻在电路中起到了调节电流的作用。

实验结果符合我们的预期,并且加深了我们对电子电路原理的理解。

实验分析:跑马灯电路是一种简单的序列灯光控制电路,通过合理连接LED灯和电阻,可以实现灯光的顺序亮起和熄灭。

在实验过程中,我们需要注意LED灯的正负极连接方向,以及电阻的阻值选择,这些都会影响到电路的正常运作。

同时,电池的电压也会对LED灯的亮度产生影响,需要合理选择电池的电压等级。

实验总结:通过本次实验,我们对跑马灯电路有了更深入的了解,同时也加深了对电子电路原理的理解。

在今后的学习和实践中,我们将更加注重电路的搭建和调试,不断提高自己的实验操作能力和电子电路设计水平。

希望通过不断的实践和学习,我们能够掌握更多的电子电路知识,为将来的创新和发明打下坚实的基础。

实验感想:本次实验让我更加深入地了解了电子电路的原理和运作方式,也增强了我对电子学科的兴趣。

通过动手搭建电路,我不仅学到了知识,还培养了实践能力和动手能力。

希望在今后的学习中,能够继续保持对电子学科的热爱,不断提高自己的技能和能力。

led跑马灯实验报告

led跑马灯实验报告

led跑马灯实验报告
LED跑马灯实验报告
引言
LED跑马灯是一种常见的电子产品,它能够以特定的频率闪烁,产生视觉上的连续移动效果。

在本次实验中,我们将利用LED灯和一些基本的电子元件,设计并搭建一个LED跑马灯,并通过实验验证其工作原理和效果。

实验目的
1.了解LED跑马灯的工作原理
2.掌握LED跑马灯的搭建方法
3.观察LED跑马灯的闪烁效果
实验材料
1. LED灯
2. 电阻
3. 电容
4. 电路连接线
5. 电源
实验步骤
1. 按照电路图连接LED灯、电阻和电容
2. 将电路连接至电源
3. 观察LED跑马灯的闪烁效果
实验结果
通过实验我们成功搭建了一个LED跑马灯,并观察到了其连续移动的效果。

LED灯以一定的频率闪烁,产生了视觉上的连续移动效果,符合LED跑马灯的工作原理。

实验结论
LED跑马灯是一种基于LED灯的电子产品,通过LED灯的频繁闪烁,产生了视觉上的连续移动效果。

通过本次实验,我们了解了LED跑马灯的工作原理,掌握了LED跑马灯的搭建方法,并观察到了LED跑马灯的闪烁效果。

这些都为我们进一步了解和应用LED跑马灯提供了基础。

总结
LED跑马灯作为一种常见的电子产品,在日常生活中有着广泛的应用。

通过本次实验,我们对LED跑马灯有了更深入的了解,也为我们今后的学习和实践提供了基础。

希望通过今后的学习和实践,我们能够更好地掌握LED跑马灯的原理和应用,为我们的日常生活和工作带来更多的便利。

跑马灯实验

跑马灯实验

数学计算机科学学院实验报告专业名称:物联网工程实验室:学苑南楼1幢403室实验课程:微机原理和接口技术实验名称:跑马灯姓名:高鹏飞学号:120706006实验日期:2014年11月1日星期一一、实验目的1.掌握跑马灯实验原理2.熟悉debug环境下编写程序3.在独立运行的单板机配置方式下,输入目标代码,运行,观察实验现象,分析其结果的正确性。

二、实验仪器1、AEDK8688ET教学实验机2.pc机三、实验原理CPU将数据通过8255并口送入LED,控制显示输出并口8255内部结构框图工作方式控制字:方式0-基本输入输出方式8255驱动LED显示输出jmp abc(3)修改程序,每输出一个数据延迟一段时间mov cx,ffffhdely: loop dely观察实验现象(4)在debug环境下,反汇编找出其目标代码(5)在独立运行的单板机配置方式下,输入目标代码,运行,观察实验现象,分析其结果的正确性。

(6)全速运行:GO IP.在实验箱的具体操作步骤(1)在实验箱上先执行EB命令显示/修改内存单元的内容。

(2)将段地址设置为8000,偏移地址设置为300(在“-”状态下,按“EB”出现“.”提示符,输入段地址8000“:”偏移地址300“,”出现该单元内容,按“,”出现下一单元内容,继续按“,”出现下一单元内容,此时输入新的内容,此单元内容可以修改(内容即反汇编中输入内容),按“ .”可以退出。

)在跑马灯实验当中即(B080BA1B02EEBOFEBA1802EED0C0EBFB000000000000000000000000340053130 0)(3)在“-”状态下,按“ST”出现,出现IP的值,若和输入的不符,直接新值,按“,”执行。

即把段地址和偏移地址改成8000和300五、实验结果和分析跑马灯从左至右依次亮起。

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

硬件设计 本章用到的硬件只有 LED( DS0 和 DS1)。其电路在 STM32 开发 板上默认是已经连接好了的。 DS0 接 PB5, DS1 接 PE5。所以在 硬件上不需要动任何东西。
软件设计 跑马灯实验我们主要用到的固件库文件是: stm32f10x_gpio.c /stm32f10x_gpio.h stm32f10x_rcc.c/stm32f10x_rcc.h misc.c/ misc.h stm32f10x_usart /stm32f10x_usart.h 其中 stm32f10x_rcc.h 头文件在每个实验中都要引入,因为系统时 钟配置函数以及相关的外设时钟使能函数都在这个其源文件 stm32f10x_rcc.c 中。 stm32f10x_usart.h 和 misc.h 头文件在我们 SYSTEM 文件夹中都需要使用到,所以每个实验都会引用。
第三个参数是 IO 口速度设置, 有三个可选值,在 MDK 中同样是 通过枚举类型定义: typedef enum { GPIO_Speed_10MHz = 1, GPIO_Speed_2MHz, GPIO_Speed_50MHz }GPIOSpeed_TypeDef;
IDR 是一个端口输入数据寄存器,只用了低 16 位。该寄存器为只 读寄存器,并且只能以16 位的形式读出。该寄存器各位的描述如 图 所示:
BRR 寄存器是端口位清除寄存器。该寄存器的作用跟 BSRR 的高 16 位雷同,这里就不做详细讲解。
在 STM32 固件库中, 通过 BSRR 和 BRR 寄存器设置 GPIO 端口输 出是通过函数GPIO_SetBits()和函数 GPIO_ResetBits()来完成的。
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) 在多数情况下,我们都是采用这两个函数来设置 GPIO 端口的输 入和输出状态。 比如我们要设置 GPIOB.5 输出 1,那么方法为: GPIO_SetBits(GPIOB, GPIO_Pin_5);
② 组 CORE 下面存放的是固件库必须的核心文件和启动文件。这 里面的文件用户不需要修改. ③ 组 SYSTEM 是 ALIENTEK 提供的共用代码. ④ 组 HARDWARE 下面存放的是每个实验的外设驱动代码,他的 实现是通过调用 FWLib下面的固件库文件实现的,比如 led.c 里面 调用 stm32f10x_gpio.c 里面的函数对 led 进行初始化,这里面的函 数是讲解的重点。 后面的实验中可以看到会引入多个源文件。 ⑤ 组 USER 下面存放的主要是用户代码。但是 system_stm32f10x.c 文件用户不需要修改,同时 stm32f10x_it.c 里面存放的是中断服务 函数, Main.c 函数主要存放的是主函数了,这个大家应该很清楚。
ODR 是一个端口输出数据寄存器,也只用了低 16 位。该寄存器为 可读写,从该寄存器读出来的数据可以用于判断当前 IO 口的输出 状态。而向该寄存器写数据,则可以控制某个 IO 口的输出电平。 该寄存器的各位描述如图 所示:
Hale Waihona Puke 在固件库中设置 ODR 寄存器的值来控制 IO 口的输出状态是通过 函数 GPIO_Write 实现: void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal); 该函数一般用来往一次性一个 GPIO 的多个端口设值。
要想知道某个 IO 口的电平状态,你只要读这个寄存器,再看某个 位的状态就可以了。使用起来是比较简单的。 在固件库中操作 IDR 寄存器读取 IO 端口数据是通过 GPIO_ReadInputDataBit 函数实现的: uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) 比如我要读 GPIOA.5 的电平状态,那么方法是: GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_5); 返回值是 1(Bit_SET)或者 0(Bit_RESET);
STM32 的 IO 口相比 51 而言要复杂得多,所以使用起来也困难很多。 首先 STM32 的 IO 口可以由软件配置成如下 8 种模式: 1、 输入浮空 2、 输入上拉 3、 输入下拉 4、 模拟输入 5、 开漏输出 6、 推挽输出 7、 推挽式复用功能 8、 开漏复用功能 每个 IO 口可以自由编程, 但 IO 口寄存器必须要按 32 位字被访问。 STM32 的很多 IO 口都是 5V 兼容的,这些 IO 口在与 5V 电平的外设 连接的时候很有优势.
在固件库开发中, 操作寄存器 CRH 和 CRL 来配置 IO 口的模式和 速度是通过 GPIO 初始化函数完成: void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct); 这个函数有两个参数, 第一个参数是用来指定 GPIO,取值范围 为 GPIOA~GPIOG。 第二个参数为初始化参数结构体指针,结构体类型为 GPIO_InitTypeDef。下面我们看看这个结构体的定义。 首先我们 打开我们光盘的跑马灯实验,然后找到 FWLib 组下面的 stm32f10x_gpio.c文件,定位到 GPIO_Init 函数体处, 双击入口参 数类型 GPIO_InitTypeDef 后右键选择“Go todefinition of…” 可以 查看结构体的定义: typedef struct { uint16_t GPIO_Pin; GPIOSpeed_TypeDef GPIO_Speed; GPIOMode_TypeDef GPIO_Mode; }GPIO_InitTypeDef;
反之如果要设置 GPIOB.5 输出位 0,方法为:
GPIO_ResetBits (GPIOB, GPIO_Pin_5);
GPIO 相关的函数我们先讲解到这里。 虽然 IO 操作步骤很简单, 这里我们还是做个概括性的总结,操作步骤为:
1) 使能 IO 口时钟。调用函数为 RCC_APB2PeriphClockCmd()。 2) 初始化 IO 参数。调用函数 GPIO_Init(); 3) 操作 IO。操作 IO 的方法就是上面我们讲解的方法。
该寄存器的复位值为 0X4444 4444,复位值其实就是配置端口为 浮空输入模式。
STM32 的 CRL 控制着每组 IO 端口( A~G)的低 8 位的模式。 每个 IO 端口的位占用 CRL 的 4 个位,高两位为 CNF,低两位为 MODE。这里我们可以记住几个常用的配置,比如 0X0 表示模拟 输入模式( ADC 用)、 0X3 表示推挽输出模式(做输出口用, 50M 速率)、 0X8 表示上/下拉输入模式(做输入口用)、 0XB 表示复用输出(使用 IO 口的第二功能, 50M 速率)。CRH 的作 用和 CRL 完全一样,只是 CRL 控制的是低 8 位输出口,而 CRH 控 制的是高 8位输出口。
typedef enum { GPIO_Mode_AIN = 0x0, //模拟输入 GPIO_Mode_IN_FLOATING = 0x04, //浮空输入 GPIO_Mode_IPD = 0x28, //下拉输入 GPIO_Mode_IPU = 0x48, //上拉输入 GPIO_Mode_Out_OD = 0x14, //开漏输出 GPIO_Mode_Out_PP = 0x10, //通用推挽输出 GPIO_Mode_AF_OD = 0x1C, //复用开漏输出 GPIO_Mode_AF_PP = 0x18 //复用推挽 } GPIOMode_TypeDef;
stm32f10x_gpio.c 源文件下面 include 了好几个头文件,其中有一 个 stm32f10x_conf.h,这个文件会被每个固件库源文件引用。
从图中可以看出, 在头文件 stm32f10x_conf.h 文件中,我们包含 了四个.h 头文件,那是因为我们的 FWLib 组下面引入了相应的 4 个.c 源文件。 同时大家记住,后面三个源文件 stm32f10x_rcc.c,stm32f10x_usart.c 以及 misc.c 在每个实验基本都 要添加。在这个实验中,因为 LED 是关系到 STM32 的 GPIO,所 以我们增加了 stm32f10x_gpio.c 和头文件 stm32f10x_gpio.h的引入。 添加和删除固件库源文件的步骤是: 1. 在 stm32f10x_conf.h 文件引入需要的 .h 头文件。 这些头文件在 每个实验的目录\STM32F10x_FWLib\inc 下面都有存放。 2. 在 FWLib 下面加入步骤一中引入的.h 头文件对应的源文件。记 住最好一一对应,否则就有可能会报错。 这些源文件在每个实验 的\STM32F10x_FWLib\src 目录下面都有存放.
BSRR 寄存器是端口位设置/清除寄存器。 该寄存器和 ODR 寄存器 具有类似的作用,都可以用来设置 GPIO 端口的输出位是 1 还是 0。 下面我们看看该寄存器的描述如下图:
该寄存器通过举例子可以很清楚了解它的使用方法。 例如你要设 置 GPIOA 的第 1 个端口值为 1,那么你只需要往寄存器 BSRR 的低 16 位对应位写 1 即可: GPIOA->BSRR=1<<1; 如果你要设置 GPIOA 的第 1 个端口值为 0, 你只需要往寄存器高 16 位对应为写 1 即可: GPIOA->BSRR=1<<(16+1) 该寄存器往相应位写 0 是无影响的,所以我们要设置某些位,我 们不用管其他位的值。
跑马灯实验
1, STM32 IO 口简介 2, 硬件设计 3, 软件设计 4, 仿真与下载
库函数实现
相关文档
最新文档