STM32 LED流水灯实验报告
STM32实验-GPIO输出-流水灯实验报告
课程实验报告学院:专业: 2018年10月18日姓名学号班级指导老师课程名称嵌入式系统原理与应用实验成绩实验名称GPIO输出-流水灯1.实验目的通过一个经典的跑马灯程序,了解 STM32F1的IO口作为输出使用的方法。
通过代码控制开发板上的4个 LED灯交替闪烁,实现类似跑马灯的效果。
2.实验内容工程文件建立、程序的调试,编译、jlink驱动的安装与配置、程序下载、实验结果验证。
3.实验环境Windouws10 Keil uVision5 4.实验方法和步骤(含设计)(1)实验硬件连接图四个led灯如图连接到GPIO的6~9引脚上。
(2)软件分析使用到的GPIO端口需配置为输出模式,使用推挽(PP)模式输出,IO口速度为 50MHz。
(3)实验步骤①建立工程文件:导入程序运行需要的库,加入主程序,调试运行环境,使程序可以成功被编译和运行且没有错误和警告。
②安装JLINK驱动程序,点击下载按钮将程序烧写进开发板中。
③检查led灯是否逐一顺序点亮,能够通过调整程序使点亮顺序改变。
(4)原函数5.程序及测试结果6.实验分析与体会如果4个LED灯是与A口的PA1、PA2、PA3、PA4相连,将led.c文件中的“GPIOC”改为“GPIOA”,并将Pin_X改为对应的1~4脚。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9; GPIO_Init(GPIOC, &GPIO_InitStructure);GPIO_SetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9);改为RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4; GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_SetBits(GPIOA,GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4);实验日期: 2018 年 10 月 18 日成绩评定教师签名:年月日Welcome To Download欢迎您的下载,资料仅供参考!。
STM32实验报告
STM32实验报告实验一:一个灯的闪烁一、实验要求1.熟悉使用STM32F103ZET6开发板2.利用C语言程序实现一个灯闪烁二、电路原理图图1-1 LED灯硬件连接图三、软件分析1.本实验用到以下3个库函数(省略了参数):RCC_DeInit();RCC_APB2PeriphClockCmd();GPIO_Init();2.配置输入的时钟:SystemInit()主要对RCC寄存器进行配置,GPIOA连接在APB2上,因此RCC_APB2PeriphClockCmd()函数需要使能APB2Periph_GPIOA3.声明GPIO结构: PF6~PF10口配置为输出GPIO_InitStructure.GPIO_Pin =GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_1 0;4.应用GPIO口:点亮LED1有五种方法①ODR寄存器法:GPIOA->ODR=0xffbf;②位设置/清除寄存器法:GPIOA->BRR|=0X001;③方法③只适用于GPIOx_BSRR寄存器④GPIO_WriteBit()函数法:GPIO_Write(0xffbf);⑤置位复位库函数法:GPIO_ResetBits(GPIOF,GPIO_Pin_8);5.主函数程序:int main(void){RCC_Configuration(); /* 配置系统时钟 */GPIO_Configuration(); /* 配置GPIO IO口初始化 */for(;;){GPIOF->ODR = 0xfeff; /* PF8=0 --> 点亮D3 */Delay(600000);GPIOF->ODR = 0xffff; /* PF8=1 --> 熄灭D3 */Delay(600000);}}四、实验现象下载程序后开发板上的LED1灯闪烁五、总结通过对本实验可以发现,和51等8位单片机相比,STM32对I/O 端口的操作变得复杂了许多。
单片机流水灯实验报告
单片机流水灯实验报告
实验目的:
通过编程实现单片机控制的流水灯电路的设计与实现,熟悉单片机的输入输出功能和简单的控制逻辑。
实验原理:
流水灯是一种常见的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灯按照预定的顺序依次点亮和熄灭,形成了流水灯的效果。
调整程序中的控制逻辑,可以改变流水的速度和方向,实现不同的灯光效果。
实验总结:
通过这次实验,我们深入了解了单片机的输入输出功能和简单的控制逻辑。
通过编写程序,实现了流水灯的控制,加深了对单片机的理解和应用。
在实验过程中,我们还学会了使用开发板软件进行工程的创建、编译、下载和调试操作,提高了工程能力和实践能力。
STM32实验报告
实验一:一个灯的闪烁一、实验要求1.熟悉使用STM32F103ZET6开发板2.利用C语言程序实现一个灯闪烁二、电路原理图图1-1 LED灯硬件连接图三、软件分析1.本实验用到以下3个库函数(省略了参数):RCC_DeInit();RCC_APB2PeriphClockCmd();GPIO_Init();2.配置输入的时钟:SystemInit()主要对RCC寄存器进行配置,GPIOA连接在APB2上,因此RCC_APB2PeriphClockCmd()函数需要使能APB2Periph_GPIOA3.声明GPIO结构: PF6~PF10口配置为输出GPIO_InitStructure.GPIO_Pin =GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10;4.应用GPIO口:点亮LED1有五种方法①ODR寄存器法:GPIOA->ODR=0xffbf;②位设置/清除寄存器法:GPIOA->BRR|=0X001;③方法③只适用于GPIOx_BSRR寄存器④GPIO_WriteBit()函数法:GPIO_Write(0xffbf);⑤置位复位库函数法:GPIO_ResetBits(GPIOF,GPIO_Pin_8);5.主函数程序:int main(void){RCC_Configuration(); /* 配置系统时钟 */GPIO_Configuration(); /* 配置GPIO IO口初始化 */ for(;;){GPIOF->ODR = 0xfeff; /* PF8=0 --> 点亮D3 */Delay(600000);GPIOF->ODR = 0xffff; /* PF8=1 --> 熄灭D3 */Delay(600000);}}四、实验现象下载程序后开发板上的LED1灯闪烁五、总结通过对本实验可以发现,和51等8位单片机相比,STM32对I/O端口的操作变得复杂了许多。
STM32实训实验1报告
STM32实训实验1报告
实验一我的第一个工程实验
一.实验简介
我的第一个工程,STM32固件库点亮LED灯。
二.实验目的
掌握STM32开发环境,掌握从无到有的构建工程。
三.实验内容
基本要求:熟悉MDK KEIL开发环境,构建基于固件库的工程,编写代码实现GPIO 口控制开发板上LED灯亮灭。
扩展要求:实现流水灯功能。
使用JLINK下载代码到目标板,查看运行结果。
四.实验设备
硬件部分:PC计算机(宿主机)、奋斗STM32实验板、JLINK。
软件部分:PC机WINDOWS系统、MDK KEIL软件。
五.实验步骤
1.熟悉MDK KEIL开发环境
2.查看固件库结构和文件
3.建立工程目录,复制库文件
4.建立和配置工程
5.编写代码
6.编译代码
7.测试运行结果
8.使用JLINK下载到实验板
9.记录实验过程,撰写实验报告
六.实验过程
1.创建本地文件夹和软件中的文件夹
2.对软件中的文件夹进行配置
3.GPIO初始化过程
4.软件设计及代码(写一个简单的main函数)
七.实验心得体会
1.遇到的问题及解决方法。
实验一基于STM32固件库的MDK工程的建立及流水灯
实验一基于STM32固件库的MDK工程的建立及流水灯一、实验类型验证性实验。
二、实验器材1、PC微机1台2、MDK开发环境三、实验目的与任务实验目的:1、熟悉Cortex-M3处理器开发平台MDK2、熟悉基于STM32固件库的MDK项目的配置3、理解STM32处理器GPIO的结构,掌握GPIO引脚的配置方法4、熟悉GPIO的配置过程5、熟悉MDK开发平台软件仿真环境及外设仿真方法实验任务:如下图,STM32F103R8T6处理器GPIOA的GPIO_Pin_6控制LED1 GPIO_Pin_7控制LED2,建立一个基于STM32固件库的MDK项目,实现对LED灯的控制,使LED1每秒闪烁1次。
LED2每秒闪烁2次。
四、参考资料1、《嵌入式系统基础及应用》第7章 GPIO部分2、参考手册:STM32F10xxx_RM0008_CH_Rev7V3.pdf3、数据手册:STM32F103CDE增强型系列数据手册(2009年3月).pdf4、固件库:STM32F101xx和STM32F103xx固件函数库.pdf五、实验基本原理1、STM32每个GPIO引脚具有工作模有:浮空输入、带上拉输入、带下拉输入、模拟输入、开漏输出、推挽输出、复用功能的推挽输出、复用功能的开漏输出等。
由上图可知,若驱动LED1、LED2,需要设置相应的IO引脚为开漏输出或推挽输出。
2、对于STM32 GPIO端口的配置,涉及的寄存器的作用。
2个32bits的配置寄存器(GPIOx_CRL,GPIOx_CRH),用于配置各IO引脚的输入输出方式和速度,各位含义如下:2个32bits的数据寄存器 (GPIOx_IDR,GPIOx_ODR),用于读取IO引脚的状态和设置IO 引脚输出电位。
1个32bits的置位/复位寄存器(GPIOx_BSRR),用于置位复位某些IO引脚的原子操作。
1个16bits的复位寄存器(GPIOx_BRR),用于复位某些引脚的原子操作1个32bits的Lock寄存器(GPIOx_LCKR)。
STM32 LED流水灯实验报告
中断接收。这里只是针对串口 1,比如你要用串口 2 或者其他的串口,只要对代码稍 修改就可以了。usart.c 里面包含了 2 个函数一个是 void USART1_IRQHandler(void); 另 外一个是 void uart_init(u32 bound);里面还有一段对串口 printf 的支持代码,如果去掉, 则会导致 printf 无法使用, 虽然软件编译不会报错, 但是硬件上 STM32 是无法启动的, 这段代码不要去修改
LED1=1; delay_ms(1000); delay_ms(1000); LED0=1; LED1=0; delay_ms(1000); delay_ms(1000); LED0=1; LED1=1; delay_ms(1000);//ÑÓʱ300ms delay_ms(1000); } } /* LED0=0; LED_a=0; LED1=1; LED_a=1; delay_ms(5000); LED0=1; LED0_a=1; LED1=0; LED1_a=0; delay_ms(5000);
姓名:楚昕 1. 图
班级:轨道 1502 班
学号:201523050224
2. 实验目的 通过 delay 函数的应用实现流水灯的控制 3. 代码 #include "led.h" #include "delay.h" #include "sys.h" u8 a,LED1_a,LED0_a; void delay(u16 a) { u16 i,j; for(i=0;i<a;i++) {for(j=0;j<1000;j++); } } int main(void) { delay_init(); LED_Init(); delay_init(); SysTick->LOAD=90000; SysTick->CTRL =SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk ; while(1) { LED0=0; LED1=1; delay_ms(1000); delay_ms(1000); LED0=1;
LED流水灯实验报告
while(1)
{
P0=temp1;
P2=temp2;
delays(200);
temp1=_crol_(temp1,1);
temp2=_crol_(temp1,1);
}
}
Hex文件生成
本设计着重在于分析计算器软件和开发过程中的环节和步骤,并从实践经验出发计算器设计做了详细的分析和研究。本系统就是充分利用了8051芯片的I/O引脚。系统已采用MCS—51系列单片机为中心器件来设计LED流水灯系统,实现LED左循环显示,并实现循环的速度可调。
二、设计目的
1.学习基本理论在实践中综合运用的初步经验,掌握电路设计的基本方法、设计步骤,培养综合设计与调试能力。
#include "intrins.h"
#define uint unsigned int
void delays(uint z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
uint temp1,temp2;
temp1=0x01;
RST/VPD:复位/备用电源线,可以使单片机处于复位工作状态,外接人工按钮复位。
EA/VPP允许访问片外存储器/编程电源线,他可控制单片机使用片内ROM还是还是使用片外ROM,若EA为1允许使用片内ROM,为0则允许使用片外ROM。
七、实验过程
下载程序:
程序下载成功
程序检测
新建文本文档(程序)
#include "reg52.h"
如果要让接在P1.0口的LED1亮起来,那么只需要把P1.0口的电平变为低电平就可以了;相反,如果要让接在P1.0口的LED1熄灭,那么只需要把P1.0口的电平变为高电平就可以了;同理,接在P1.1—P1.7口的其他7个LED的点亮的熄灭的方法同LED1。因此,只要使接在单片机上的八个LED灯在接通电源后除了最右端一个其余都亮,一秒后倒数第二个熄灭其余都亮,如此循环往复,就可以达到流水的效果。
STM32实验-GPIO输出-流水灯实验报告
改为
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4;
课程实验报告
学院:专业:2018年10月18日
姓名
学号
班级
指导老师
课程名称
嵌入式系统原理与应用实验
成
绩
实验名称
GPIO输出-流水灯
1.实验目的
通过一个经典的跑马灯程序,了解STM32F1的IO口作为输出使用的方法。通过代码控制开发板上的4个LED灯交替闪烁,实现类似跑马灯的效果。
2.实验内容
工程文件建立、程序的调试,编译、jlink驱动的安装与配置、程序下载、实验结果验证。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;
GPIO_Init(GPIOC, &GPIO_InitStructure);
欢迎您的下载,资料仅供参考!
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4);
实验日期:2018年10月18日
嵌入式流水灯实训报告
一、实验背景随着物联网、智能家居等领域的快速发展,嵌入式系统在各个行业中的应用越来越广泛。
为了提高对嵌入式系统的理解,本实训选择了“流水灯”作为实验项目。
通过本实验,旨在掌握STM32单片机的基本操作,熟悉GPIO端口的使用,以及定时器的配置和应用。
二、实验目的1. 熟悉STM32单片机的基本结构和工作原理;2. 掌握GPIO端口的使用方法,实现LED灯的亮灭控制;3. 学习定时器的配置和应用,实现流水灯效果的实现;4. 提高嵌入式系统开发的理解和应用能力。
三、实验原理1. STM32单片机简介STM32是一款基于ARM Cortex-M3内核的微控制器,具有高性能、低功耗、丰富的外设和强大的处理能力。
本实验使用STM32F103ZET6单片机作为实验平台。
2. GPIO端口GPIO(通用输入输出)端口是STM32单片机的重要组成部分,可以用于输入或输出信号。
在本实验中,GPIO端口用于控制LED灯的亮灭。
3. 定时器定时器是STM32单片机的一个功能模块,可以用于实现定时功能。
在本实验中,定时器用于控制LED灯的流水效果。
四、实验步骤1. 准备实验环境(1)准备STM32F103ZET6单片机开发板、电源、LED灯、连接线等实验器材;(2)安装Keil 5软件,并配置ST-Link Debugger环境。
2. 编写程序(1)创建一个新的STM32工程,并添加必要的头文件和库文件;(2)编写主函数main.c,实现以下功能:a. 初始化GPIO端口,设置LED灯的引脚为输出模式;b. 初始化定时器,设置定时时间;c. 在定时器中断服务程序中,实现LED灯的流水效果;d. 主循环中,调用延时函数,实现流水灯效果的持续显示。
3. 编译程序(1)编译工程,生成可执行文件;(2)将可执行文件下载到STM32单片机中。
4. 测试实验(1)接通电源,观察LED灯的流水效果;(2)根据需要调整定时器和GPIO端口的配置,观察流水灯效果的变化。
单片机流水灯实验报告
实验目的:实现单片机流水 灯功能
实验结果:LED灯按照预设 顺序依次点亮,实现流水灯
效果
分析与讨论:实验结果与预 期相符,验证了单片机流水
灯功能的实现。
实验结果分析
实验目的:验证单片 机流水灯控制电路的
设计与实现
实验设备:单片机、 LED灯、电阻、电源
等
实验步骤:编写程序、 连接电路、运行程序、
观察现象
实验过程中,对实验结果 的分析不够全面,容易导 致实验结论不准确。
实验过程中,对实验数据 的记录不够详细,容易导 致实验数据丢失。
实验过程中,对实验设备 的维护不够重视,容易导 致实验设备损坏。
实验过程中,对实验环境 的控制不够严格,容易导 致实验结果不准确。
对未来实验的展望
创新实验方法:尝试新的实 验方法,提高实验效果
掌握流水灯电路 的搭建方法
学习单片机的编 程和调试方法
掌握流水灯电路 的调试方法
添加标题
添加标题
添加标题
添加标题
培养实践操作和问题解决能力
通过实验操作, 提高动手能力
学习单片机的基 本原理和编程方
法
培养发现问题、 分析问题和解 决问题的能力
提高团队合作和 沟通能力
02
实验设备
单片机开发板
添加标题 添加标题 添加标题 添加标题 添加标题 添加标题
编写流水灯程序
确定流水灯的 硬件连接方式
编写流水灯控 制程序
编译并下载程 序到单片机
调试程序,确 保流水灯正常 工作
0
0
0
0
1
2
3
4
烧录程序到单片机
准备烧录器:选择合适的烧录器,如USB烧录器 连接单片机:将烧录器连接到单片机的烧录接口 打开烧录软件:启动烧录软件,选择要烧录的程序文件 开始烧录:点击烧录按钮,开始烧录程序到单片机 检查烧录结果:烧录完成后,检查单片机的运行情况,确保程序正常运行
流水灯实训报告心得体会
一、前言流水灯实训是嵌入式系统学习过程中的一个重要环节,通过本次实训,我对嵌入式系统有了更深入的了解,提高了自己的动手能力和实践能力。
以下是我对本次流水灯实训的心得体会。
二、实训目的与内容1. 实训目的本次流水灯实训的主要目的是:(1)掌握STM32单片机的基本结构与工作原理;(2)学习使用GPIO端口进行简单的输出控制;(3)了解定时器的基本使用方法,通过定时器控制LED灯的流水效果;(4)提升对嵌入式系统开发的理解与应用能力。
2. 实训内容本次实训主要涉及以下几个方面:(1)STM32F103ZET6单片机的基本结构和工作原理;(2)GPIO端口的使用方法;(3)定时器的基本使用方法;(4)LED流水灯的实现。
三、实训过程1. 实验准备在实验前,我首先下载了Keil 5软件和ST-Link Debugger环境,并对实验板进行了简单的认识。
接着,我学习了STM32F103ZET6单片机的基本结构和工作原理,了解了GPIO端口和定时器的使用方法。
2. 实验步骤(1)编写代码根据实验要求,我编写了main.c、led.c和led.h三个文件。
在main.c文件中,我设置了单片机的时钟频率、初始化GPIO端口和定时器。
在led.c文件中,我编写了控制LED流水灯的函数。
在led.h文件中,我定义了LED流水灯的相关宏。
(2)编译代码将编写的代码编译生成.hex文件。
(3)下载代码使用ST-Link Debugger将生成的.hex文件下载到实验板上。
(4)调试代码通过观察实验现象,我发现LED流水灯效果不理想。
经过分析,我发现是定时器设置不当导致的。
我修改了定时器的相关参数,再次下载代码并观察实验现象,最终实现了LED流水灯的效果。
3. 实验总结在实验过程中,我遇到了许多问题,如代码编译错误、下载失败等。
通过查阅资料和请教老师,我逐渐解决了这些问题。
这次实训让我深刻体会到,嵌入式系统开发需要耐心和细心,同时也需要具备一定的调试技巧。
流水灯控制实验报告
流水灯控制实验报告一、引言流水灯是一种常见的电子实验和电路设计项目,它通过控制一组LED灯的亮灭顺序和时间间隔来呈现出一种流动的效果。
本实验旨在通过搭建一个流水灯电路,学习并掌握流水灯的原理和控制方法。
二、实验原理1.流水灯电路的组成本实验采用的流水灯电路是由多个LED灯组成的,LED灯的正极与电源相连,负极通过电阻连接到单片机的输出端口。
通过控制单片机输出高低电平来控制LED灯的亮灭。
2.流水灯的工作原理流水灯电路通过单片机的输出端口控制LED灯的亮灭顺序和时间间隔,实现流动的效果。
在一个循环中,每个LED灯按顺序依次亮起,然后熄灭,接着下一个LED灯亮起,如此循环往复,形成了流水灯的效果。
三、实验器材和元件1.单片机:选用STC89C52RC型单片机;2. LED灯:选用红色5mm直径的共阳极LED灯4个;3.电阻:选用220Ω的电阻4个;4.面包板、导线等。
四、实验步骤1.连接电路将单片机、LED灯和电阻等元件按照电路图,通过面包板和导线连接起来。
2.编写程序使用C语言编写程序,在单片机上控制LED灯的亮灭顺序和时间间隔。
通过设置单片机输出端口的高低电平,控制LED灯的亮灭。
3.烧写程序将编好的程序通过编程器烧写到单片机中,使其能够执行程序。
4.测试实验将电路连接到电源,并接通电源。
观察LED灯的亮灭情况,检查流水灯效果是否符合预期。
五、实验结果分析经过反复测试,流水灯电路能够正常工作,LED灯按照预设的顺序亮灭,形成了流动的效果。
六、实验总结通过本次实验,我学习了流水灯电路的原理和控制方法,并成功搭建了一个流水灯电路。
通过编写程序,我掌握了如何通过单片机控制LED灯的亮灭。
在实验过程中,我深刻理解了流水灯电路的工作原理,培养了动手实践和问题解决的能力。
七、实验改进措施1.可以通过调整LED灯的亮灭顺序和时间间隔,改变流水灯的效果和速度;2.可以使用其他颜色的LED灯,增加流水灯的变化效果;3.可以将流水灯电路与其他电子元件结合,设计更复杂的电路和效果。
单片机流水灯闪烁实训报告
一、实验目的1. 熟悉单片机基本原理和组成,掌握单片机编程的基本方法。
2. 理解单片机I/O口控制LED灯的原理,实现流水灯闪烁功能。
3. 提高单片机实际应用能力,为以后从事相关领域工作打下基础。
二、实验原理1. 单片机简介:单片机(Microcontroller Unit,MCU)是一种将中央处理器(CPU)、存储器(RAM、ROM)、输入/输出接口(I/O)、定时器/计数器、串行通信接口等集成在一个芯片上的微型计算机。
2. LED灯简介:LED(Light Emitting Diode)是一种发光二极管,具有体积小、亮度高、寿命长、响应速度快等优点,广泛应用于各种显示、照明等领域。
3. 流水灯闪烁原理:通过单片机的I/O口控制LED灯的亮与灭,实现流水灯效果。
本实验中,采用定时器中断的方式,定时改变LED灯的状态,从而实现闪烁效果。
三、实验设备1. 单片机开发板:选用STC89C52单片机开发板。
2. LED灯:8个LED灯。
3. 电阻:8个220Ω电阻。
4. 连接线:若干。
5. 仿真软件:Proteus。
四、实验步骤1. 搭建电路:将8个LED灯依次连接到单片机的P1口,每个LED灯串联一个220Ω电阻,以保护LED灯。
2. 编写程序:使用C语言编写单片机程序,实现流水灯闪烁功能。
3. 编译程序:将编写好的程序编译成机器码。
4. 仿真测试:在Proteus中加载编译好的程序,观察LED灯的闪烁效果。
5. 实际测试:将程序烧录到单片机中,观察LED灯的闪烁效果。
五、程序设计1. 初始化:设置单片机的I/O口、定时器等。
2. 定时器中断:设置定时器中断,定时改变LED灯的状态。
3. 主循环:在主循环中不断读取定时器中断标志,根据标志改变LED灯的状态。
4. 代码示例:```c#include <reg51.h>#define LED P1void Timer0_Init(void) {TMOD = 0x01; // 设置定时器0为模式1TH0 = 0xFC; // 设置定时器0初始值TL0 = 0x66;ET0 = 1; // 开启定时器0中断EA = 1; // 开启全局中断TR0 = 1; // 启动定时器0}void main(void) {unsigned char i = 0;LED = 0xFF; // 初始化LED灯Timer0_Init(); // 初始化定时器while (1) {if (TF0) { // 定时器0溢出中断TF0 = 0; // 清除溢出标志TH0 = 0xFC; // 重新加载定时器0初始值TL0 = 0x66;for (i = 0; i < 8; i++) {LED = ~(1 << i); // 改变LED灯状态delay(1000); // 延时1秒}}}}void delay(unsigned int ms) {unsigned int i, j;for (i = 0; i < ms; i++)for (j = 0; j < 120; j++);}```六、实验结果与分析1. 实验结果:LED灯按照预设的规律闪烁,实现了流水灯效果。
简易STM32流水灯
3.1、 LED 初始化函数
void LED_Init(Led_TypeDef led) { GPIO_InitTypeDef GPIO_InitStructure;//定义 GPIO 操作及配置结构体 /* Enable the GPIO_LED Clock */ RCC_APB2PeriphClockCmd(LED_GPIO_CLK, ENABLE);//使能 LED 端口时钟 /* Configure the GPIO_LED pin */ GPIO_InitStructure.GPIO_Pin =led; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//配置 GPIO 为输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//配置 GPIO 速度为 50MHz GPIO_Init(LED_GPIO_PORT, &GPIO_InitStructure);//初始化 LED 相关的 GPIO }
EEPW ARM DIY 手记之软件设计 (二 )—— LED 跑马灯实验
作者:胡恩伟 日期: 2012 年 3 月 17 日星期六
目录
一、利用 STM32 工程模板快速建立用户应用工程 ......................................................... 2 二、LED 跑马灯硬件原理介绍......................................................................................... 4 三、LED 跑马灯软件设计代码说明 ................................................................................. 4 3.1、LED 初始化函数................................................................................................... 5 3.2、LED 操作函数 ...................................................................................................... 5 3.3、闪烁 LED 操作函数 .............................................................................................. 5 3.4、LED 跑马灯循环程序代码 .................................................................................... 6 四、程序下载及调试....................................................................................................... 7
嵌入式实验报告
嵌⼊式实验报告实验⼀流⽔灯实验1实验⽬的1、掌握如何利⽤STM32F407IGTb芯⽚的I/O⼝控制LED。
2、了解掌握STM32F407GPIO的使⽤。
3、点亮⼀个led,使4个LED灯循环流动,达到流⽔效果。
2实验环境FS-STM32F407开发平台ST-Link仿真器RealView MDK5.10集成开发软件STM32CUBEMX图形开发软件PC机Xp3实验内容熟悉开发环境,构建基于固件库的⼯程,编写实验代码实现流⽔灯⼯程,实现FS-STM32F407开发平台上的LED循环闪烁。
调试编译好固件程序后,将程序下载到开发板,按复位键观察实验结果。
4实验步骤1.new project-stm32f4-stm32f407/417-LQFP176-STM32F407IGTX然后点⿏标⽣成。
2.将4个引脚设置为GPIO_Output。
3.如图所⽰设置RCC。
4.将下图时钟频率改为168。
5.点击⽣成按钮--选择⼯程路径Project Location-⼯程名字Project Name-⼯具/开发集成⼯具(Toolchain/IDE)(MDK-ARM V5)。
6.在Code Generator当中,在Generated Files当中,将Generate peripheral。
勾上然后OK。
5实验结果编译完程序后,下载到实验箱,按RESET键,按键数码管附近D4,D3,D2,D1附近四个灯循环亮灭,⽽且每次只有⼀个灯亮,达到流⽔效果。
实验⼆串⼝实验1实验⽬的1、了解TM32F407GPIO的配置过程及使⽤⽅法。
2、查找到串⼝对应的引脚,达到串⾏的效果。
3、了解实验箱底板图等。
2实验环境FS-STM32F407开发平台ST-Link仿真器RealView MDK5.10集成开发软件PC机XP、Window7/8(32/64bit)串⼝调试⼯具串⼝交叉线3实验内容1、了解keil的使⽤2、STM32CUBEMX软件的使⽤3、查找到串⼝对应的引脚,达到串⾏的效果。
STM32实验一 LED流水灯
图1.2 project文件夹下的内容
4. 在project文件夹下建立文件夹RVMDK,并将下列文 件”cortexm3_macro.s”和”stm32f10x_vector.s”复制 过来,如下图所示.
图1.3 RVMDK文件夹
1.2 进入工程建立
1.打开Keil uVision4软件. 2.新建MDK工程,然后选择Project -> New uVision Project 选项,如下图所示.
实验一 LED流水灯
1.1 创建工程的准备
1.在硬盘新建文件夹”实验一流水灯” 2.在”实验一流水灯”下建立文件夹project和library,并 将ST提供的类库头文件夹”inc”和源文件夹”src”复制 到library下,如下图所示.
图1.1 ST提供的类库
3.将下列文件”Font_Lib.h”,”hz16.h”,”hz16.c”, ”ili9320.h”,”ili9320.c”,”ili9320_font.h”,”main.c”,”platform _config.h”,”stm32f10x_conf.h”,”stm32f10x_it.h”,”stm 32f10x_it.c”复制到project文件夹下,如下图所示.
图1.4 新建工程
3.起名”LED”,并保存建立工程在RVMDK文件夹下. 4.选择STMicroelectronics下的STM32F103ZE,如下图所示.
图1.4 选择器件
5.弹出询问是否加载启动代码到工程下,选择否,如下图所 示.
图1.6 启动代码选择提示
6.在Target 1上右击,在弹出的快捷菜单中选择Manage Components,如下图所示.
图1.9 Debug选项卡设置
毕业设计led流水灯实习报告
毕业设计led流水灯实习报告实习报告:LED流水灯的设计与实现一、项目背景随着科技的不断发展,LED技术也得到了广泛应用。
LED作为一种高效、低耗、环保的照明产品,在室内照明、室外广告牌、装饰灯饰等领域都具有很大的应用潜力。
因此,本项目选择设计和实现一种LED流水灯,以展示LED技术的应用,同时提高我们对电子设计的实践能力。
二、项目目标1. 设计一种能够实现流水灯效果的电路。
2. 实现电路的硬件设计和焊接,搭建LED流水灯的物理框架。
3. 使用开发板进行软件编程,实现流水灯效果的控制和调节。
4. 经过实际测试和评估,对流水灯进行调整和优化。
三、项目流程1. 初步了解流水灯的工作原理和电路设计的一般步骤。
2. 进行硬件设计,确定电路所需的元器件及其连接方式。
3. 进行元器件的选型和购买。
4. 进行焊接和搭建LED流水灯的物理框架。
5. 使用开发板进行软件编程,实现流水灯的控制效果。
6. 对流水灯进行测试,调整和优化。
四、项目设计与实现1. LED流水灯的电路设计LED是一种二极管,能够发光。
因此,我们需要通过交替打开和关闭不同的LED灯珠,来实现流水灯的效果。
根据这一原理,我们设计了以下电路:- 选择一种单片机作为控制核心,通过控制单片机的IO口来控制LED灯珠的开关。
- 选择合适的移位寄存器芯片,将一系列的控制信号转换成并行输出,并连接到LED灯珠的引脚上。
- 选择合适的电阻和电容来保证电流和电压的稳定。
2. LED流水灯的硬件设计和焊接根据电路设计图,我们选购了所需的元器件,包括LED灯珠、单片机、移位寄存器芯片、电阻、电容等。
然后,我们按照设计图的要求,对这些元器件进行焊接和连接,搭建了整个LED流水灯的物理框架。
3. LED流水灯的软件编程通过调用开发板上的软件开发工具,我们进行了软件编程。
首先,我们编写了单片机的程序代码,实现了流水灯的基本效果。
然后,我们通过调节程序代码中的参数值和时间延迟,对流水灯进行了进一步调试和优化。
stm32实训心得体会
stm32实训心得体会篇一:STM32 实验2报告实验2MINI STM32按键控制LED灯实验一、实验目的1、掌握嵌入式程序设计流程。
2、熟悉STM32固件库的基本使用。
二、实验内容1、编程使用I/O口作为输入,控制板载的两个LED 灯。
2、使用固件库编程。
三、实验设备硬件: PC机一台MINI STM32开发板一套软件: RVMDK 一套Windows XP 一套四、实验步骤1、设计工程,使用固件库来编程设置。
、在这里我们建立一个文件夹为: STM32-Projects.点击Keil 的菜单:Project –>New Uvision Project ,然后将目录定位到刚才建立的文件夹STM32-Projecst 之下,在这个目录下面建立子文件夹shiyan1, 然后定位到 shiyan1目录下面,我们的工程文件就都保存到shiyan1 文件夹下面。
工程命名为shiyan1, 点击保存.是这个型号。
、这里我们定位到STMicroelectronics 下面的STM32F103RB ,然后点击Add ,然后Close.、用同样的方法,将 Groups 定位到CORE 和USER 下面,添加需要的文件。
这里我们的CORE 下面需要添加的文件为core_ ,startup_stm32f10x_ ,USER 目录下面需要添加的文件为,stm32f10x_,system_ 这样我们需要添加的文件已经添加到我们的工程中去了,最后点击 OK,回到工程主界面、下面我们要告诉 MDK,在哪些路径之下搜索相应的文件。
回到工程主菜单,点击魔术棒,出来一个菜单,然后点击 c/c++ 选项. 然后点击 Include Paths 右边的按钮。
弹出一个添加path 的对话框,然后我们将图上面的 3 个目录添加进去。
记住,keil 只会在一级目录查找,所以如果你的目录下面还有子目录,记得path 一定要定位到最后一级子目录。
流水灯单片机实验报告
流水灯单片机实验报告流水灯单片机实验报告引言:单片机是一种集成电路芯片,具有微处理器的功能。
它广泛应用于各个领域,包括家电、电子产品、汽车等。
在本次实验中,我们将使用单片机实现一个简单的流水灯效果,通过这个实验,我们可以深入了解单片机的原理和应用。
实验目的:1. 了解单片机的基本原理和工作方式;2. 掌握单片机的编程方法和流程;3. 实现流水灯效果,并通过调整参数改变灯光的亮度和频率。
实验器材:1. 单片机开发板;2. LED灯若干;3. 连接线。
实验步骤:1. 连接电路:将LED灯与单片机开发板相连,确保连接正确无误。
2. 编写程序:使用C语言编写单片机程序,实现流水灯效果。
3. 烧录程序:将编写好的程序通过编程器烧录到单片机中。
4. 调试程序:将烧录好的单片机插入开发板,启动电源,观察LED灯的亮灭情况。
5. 调整参数:根据需要,可以通过修改程序中的参数来改变流水灯的亮度和频率。
实验结果:经过调试和调整参数,我们成功实现了流水灯效果。
LED灯在单片机的控制下,按照一定的顺序依次亮起和熄灭,形成了流水灯的效果。
通过修改程序中的参数,我们还可以调整灯光的亮度和频率,使得流水灯的效果更加丰富多样。
实验分析:通过这个实验,我们深入了解了单片机的原理和应用。
单片机作为一种集成电路芯片,具有微处理器的功能,可以通过编程来实现各种各样的功能。
在流水灯实验中,我们通过编写程序,控制LED灯的亮灭,实现了流水灯的效果。
通过调整参数,我们还可以改变灯光的亮度和频率,使得流水灯的效果更加丰富多样。
结论:本次实验通过使用单片机实现了流水灯效果,深入了解了单片机的原理和应用。
通过编写程序和调整参数,我们成功控制了LED灯的亮灭,实现了流水灯的效果。
这个实验不仅提高了我们对单片机的理解和应用能力,还培养了我们的动手能力和解决问题的能力。
希望通过这个实验,我们能够更好地掌握单片机的原理和应用,为今后的学习和工作打下坚实的基础。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
班级:轨道 1502 班
学号:201523050224
2. 实验目的 通过 delay 函数的应用实现流水灯的控制 3. 代码 #include "led.h" #include "delay.h" #include "sys.h" u8 a,LED1_a,LED0_a; void delay(u16 a) { u16 i,j; for(i=0;i<a;i++) {for(j=0;j<1000;j++); } } int main(void) { delay_init(); LED_Init(); delay_init(); SysTick->LOAD=90000; SysTick->CTRL =SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk ; while(1) { LED0=0; LED1=1; delay_ms(1000); delay_ms(1000); LED0=1;
} } 4. 实现功能 Led1 亮,led0 不亮,延迟两个 1000ms;Led0 亮,led1 亮,延迟两个 1000ms;Led0 亮,led1 不亮,延迟两个 1000ms;Led0 亮,led1 亮,延迟两个 1000ms,如此实现流水灯。 5. 总结 (1) delay 文件夹内包含了 delay.c 和 delay.h 两个文件,这两个文件用来实现系统的延时 功能 (2) delay 延时的编程思想:CM3 内核的处理器,内部包含了一个 SysTick 定时器,SysTick 是一个 24 位的倒计数定时器,当计数到 0 时,将从 RELOAD 寄存器中自动重装载定 时初值,开始新一轮计数。只要不把它在 SysTick 控制及状态寄存器中的使能位清除, 就永不停息 (3) 在 ucos 下 SysTick 不能再被随意更改,故利用时钟摘取法,以 delay_us 为例,比如 delay_us(50),在刚进入 delay_us 的时候先计算好这段延时需要等待的 SysTick 计数次 数,这里为 50*9(假设系统时钟为 72Mhz,那么 SysTick 每增加 1,就是 1/9us) ,然 后我们就一直统计 SysTick 的计数变化,直到这个值变化了 50*9,一旦检测到变化达 到或者超过这个值,就说明延时 50us 时间到了。 (4) sys 文件夹内包含了 sys.c 和 sys.h 两个文件。在 sys.h 里面定义了 STM32 的 IO 口 输入读取宏定义和输出宏定义。sys.c 里面只定义了一个中断分组函数。 (5) usart 文件夹内包含了 usart.c 和 usart.h 两个文件。这两个文件用于串口的初始化和
LED1=1; delay_ms(1000); delay_ms(1000); LED0=1; LED1=0; delay_ms(1000); delay_ms(1000); LED0=1; LED1=1; delay_ms(1000);//ÑÓʱ300ms delay_ms(1000); } } /* LED0=0; LED_a=0; LED1=1; LED_a=1; delay_ms(5000); LED0=1; LED0_a=1; LED1=0; LED1_a=0; delay_ms(5000);
Hale Waihona Puke 中断接收。这里只是针对串口 1,比如你要用串口 2 或者其他的串口,只要对代码稍 修改就可以了。usart.c 里面包含了 2 个函数一个是 void USART1_IRQHandler(void); 另 外一个是 void uart_init(u32 bound);里面还有一段对串口 printf 的支持代码,如果去掉, 则会导致 printf 无法使用, 虽然软件编译不会报错, 但是硬件上 STM32 是无法启动的, 这段代码不要去修改