嵌入式系统流水灯、按键、定时器实验报告

合集下载

嵌入式系统实习报告

嵌入式系统实习报告

嵌入式系统实习报告一、嵌入式系统实习报告1、实习项目简介(1)在实习期间,我参与了一项嵌入式系统开发项目。

该项目的目标是设计和开发一个嵌入式系统,用于控制并监测一个温室的环境参数,如温度、湿度和光照强度等。

为了实现这个目标,我需要进行硬件设计、嵌入式编程和外设控制等方面的实践。

2、硬件设计经验和成果展示(1)在硬件设计方面,我负责选择和设计相应的传感器和执行器,并与其他团队成员进行紧密合作,确保系统的整体性能和稳定性。

我了解了传感器的工作原理和选择方法,并根据项目的需求选择了适合的温度、湿度和光照传感器。

在执行器方面,我选择了合适的风扇和灯光控制器,以便对温室内的环境进行调控。

(2)在设计过程中,我还学习了相关的电路原理和布局设计。

我根据传感器和执行器的要求,设计了相应的电路,并进行了仿真和测试。

通过这个过程,我熟悉了硬件设计的流程和方法,并深入了解了嵌入式系统的硬件架构。

3、嵌入式编程经验和成果展示(1)在嵌入式编程方面,我使用C语言进行了嵌入式系统的软件开发。

我根据项目的需求,编写了相应的程序,实现了对传感器和执行器的数据读取和控制。

我学习了嵌入式系统的基本编程思想和方法,如中断处理、定时器和IO口控制等。

(2)在编程过程中,我遇到了一些困难,如如何优化程序的运行效率和内存开销,以及如何处理实时数据的采集和处理等。

为了解决这些困难,我查阅了相关的资料并与导师和同事进行了讨论和交流。

最终,我通过对程序的优化和对数据采集时间的控制,成功解决了这些问题,并达到了预期的效果。

4、外设控制经验和成果展示(1)为了实现对温室环境的控制,我学习并实践了外设控制的方法。

我使用了GPIO接口来控制风扇和灯光的开关,通过PWM信号来控制风扇和灯光的转速和亮度。

我还学习了串口通信和I2C总线通信等方法,以实现与其他设备的数据交换和控制。

(2)在外设控制过程中,我也遇到了一些问题,如如何正确配置和使用外设引脚、如何处理外设的中断和异常等。

嵌入式系统与单片机 流水灯 实验报告

嵌入式系统与单片机 流水灯 实验报告

中南大学嵌入式系统与单片机实验报告学生姓名学号专业班级指导教师学院信息科学与工程学院完成时间2012年5月[实验名称]单片机流水灯。

[实验目的]进一步熟悉keil仿真软件、伟福仿真器和实验板的使用。

了解并熟悉实验板上单片机I/O口和LED灯的电路结构,掌握C51中单片机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口内部结构如图3-1所示。

作输出时:输出0时,将0输出到内部总线上,在写锁存器信号控制下写入锁存器,锁存器的反向输出端输出1,下面的场效应管导通,输出引脚成低电平。

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

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

为了能读到真实的引脚信号,下面的场效应管必须截止,即锁存器的内容必须是1。

为了能正确读取引脚信号,锁存器必须先写1。

通过C51程序的编写,可以使I/O口的每根引脚在不同的时间输出不同的0、1信号,从而控制外部的设备。

[实验步骤]1.keil的使用:新建项目--选择单片机型号--建C语言程序--添加到项目--设置项目--编译加载--选择仿真板新建项目添加到项目设置项目选择仿真板2. 将实验板上51单片机的P1口的8根线与实验板上的8位LED灯连接,I/O口的一根引脚控制一个LED灯。

根据实验板上LED的硬件连接,编写程序使8个LED灯从最下面依次点亮,每次只亮一盏灯。

嵌入式定时器实验报告

嵌入式定时器实验报告

嵌入式定时器实验报告
实验目的:
本实验旨在通过使用嵌入式定时器,实现对特定时间间隔的定时功能,并验证定时器的准确性和稳定性。

实验原理:
嵌入式定时器是一种内部硬件定时器,可以根据程序的要求进行定时操作。

在本实验中,我们将使用定时器模块来控制LED灯的闪烁频率。

定时器模块具有配置定时器周期、中断控制等功能,通过编程的方式可以灵活地控制定时器的工作。

实验步骤:
1. 初始化定时器模块的相关寄存器,设置定时器的工作参数。

2. 设置定时器的中断使能,以便在定时结束时触发中断。

3. 在中断服务函数中编写LED灯闪烁的控制代码。

4. 循环执行程序,定时器会按照设定的时间间隔不断触发中断并控制LED灯闪烁。

实验结果:
经过实验,我们成功地实现了定时器的定时功能,并通过LED灯的闪烁来验证了定时器的准确性和稳定性。

LED灯按照设定的时间间隔不断闪烁,无论程序的执行时间如何变化,定时器都能按照预定的周期来触发中断。

实验总结:
嵌入式定时器是一种常用的硬件模块,可以在嵌入式系统中实现定时功能。

通过本次实验,我们深入了解了定时器的工作原
理,学会了如何配置和使用定时器模块。

定时器在嵌入式系统中有广泛的应用,可以用于实现周期性任务、定时采集数据、定时发送数据等功能,对于提高系统的实时性和稳定性具有重要意义。

嵌入式系统原理与应用 :流水灯实验

嵌入式系统原理与应用 :流水灯实验
Delay();
}
for(i=0;i<8;i++)
{
P0=tab3[i]; //逐个熄灭D9~D16
Delay();
}
for(i=0;i<8;i++)
{
P3=tab3[i]; //逐个熄灭D17~D24
Delay();
}
for(i=0;i<8;i++)
{
P2=tab3[i]; //逐个熄灭D25~D32
unsigned char code tab3[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff,0x00};//左移逐个熄灭
void Delay()
{
unsigned char i,j;
for(i=0;i<255;i++)
for(j=0;j<255;j++);
}
评语及成绩
教师(签署)
(4)重复上述过程
实验电路
程序及
主要模块流程图
#include <reg51.h>
unsigned char code tab1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};//左移单个点亮
unsigned char code tab2[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00,0xff};//右移逐个点亮
void main()
{
unsigned char i;
while(1)
{
//左移单个点亮,VD1---VD2---
for(i=0;i<9个点亮D1~D8,0xfe=11111110 0xfd=11111101

嵌入式系统试验报告

嵌入式系统试验报告

嵌入式系统实验报告学院:计算机科学与工程姓名:___________学号:_______________专业:_______________指导老师:______________完成日期:______________实验一:流水灯案例、8位数码管动态扫描案例一、实验目的1.1 进一步熟悉Keil C51集成开发环境调试功能的使用;1.2 学会自己编写程序,进行编译和仿真测试;1.3 利用开发板下载hex 文件后验证功能。

二、实验原理2.1 :实验原理图030B 〜I ।卜RSI I ™Hi 」 口 UICDR Hr hJJK RR 18q U I. 海水灯电浒周LhE U_EEM^Li > > 第 X > k >n - » =白 L a £0EBS2.2:工作原理2.2.1:流水灯电路中有LO,1,L2,L3,4,L5,L6,L7共八个发光二极管,当引脚LED_ SEL输入为1,对于A、B、C、D、E、F、G、H引脚,只要输入为1,则点亮相连接的发光二极管。

A〜H引脚连接STM32F108VB芯片的PE8〜PE15,程序初始化时,对其进行初始设置。

引脚LED_SEL为1时,发光二极管才工作,否则右边的数码管工作。

注意,LED SEL 连接于PB3,该引脚具有复用功能,在默认状态下,该引脚的I0不可用,需对AFIO_ MAPR寄存器进行设置,设置其为10可用。

2.2.2: 8位数码管数码管中的A~G、DP段分别连接到电路图中的A~G、H线上,当某段上有一-定的电压差值时,便会点亮该段。

当£3输入为1,也就是LED_ 5£1输入为0时,根据SELO〜SEL2的值确定选中的数码管,即位选,再根据A~H引脚的高低电平,点亮对应段,即段选。

三、实验结果3.1:流水灯对于给出的流水灯案例,下载HEX文件后,在开发板上可观察到L0-L7从左至右依次点亮,间隔300ms。

嵌入式系统 实验报告

嵌入式系统 实验报告

使能 IRQ 中断。
4 装载并使能外中断;
5 选用 DebugInExram 生成目标,然后编译连接工程。
6 选择【Project】->【Debug】,启动 AXD 进行 JTAG 仿真调试。
7 全速运行程序,LED 闪烁;
8 每一次按键 Key,蜂鸣器就会转换静音或鸣响状态。
四.测试数据及运行结果
1
五.总结
1.实验过程中遇到的问题及解决办法;
由于本次实验较简单,且我们之前学习的微机原理课程也进行了流水灯的设
计实验,所以对于本次实验,我完成地很顺利,在实验中没有遇到问题。
2.对设计及调试过程的心得体会。
本次实验是本学期该课程我们进行的第一次实验,总的来说,实验不是很难,
设计过程也相对简单,其主要目的是让我们熟悉一下实验环境,并且能在实验环
6
五.总结 1.实验过程中遇到的问题及解决办法;
实验第一次运行时,蜂鸣器一直处于鸣响状态,及时按了按键,蜂鸣器还是 一直鸣叫,不产生外中断。后来仔细检查了程序,发现原来是忘记使能 EINT0 中 断了,加上 VICIntEnable = 1<<0x0e 代码,程序就能正常运行了。 2. 对设计及调试过程的心得体会。
境下进行简单的实验操作,为之后的实验打下坚实的基础。
六.附录:源代码(电子版)
#include "config.h"
const uint32 LEDS8 = 0xFF << 18;//P1[25:18]控制 LED1~LED8,低电平点亮
const uint32 KEY = 1 << 16;
//P0.16 连接 KEY1
三.方案设计
① 启动 ADS1.2IDE 集成开发环境,选择 ARM Executable Image for lpc2131

嵌入式系统原理与应用定时器实验报告

嵌入式系统原理与应用定时器实验报告

嵌入式系统原理与应用定时器实验报告《嵌入式系统原理与应用》实验报告实验序号:5 实验项目名称: 定时器实验11计算机学号 1107012150 姓名陈晓霞专业、班2013-5-10 实验地点实验楼1#416 指导教师黄鹏程实验时间一、实验目的1. 掌握LPC2200 专用工程模板的使用;2. 熟悉LPC2000 系列ARM7 微控制器的VIC的使用;3. 熟悉LPC2000 系列ARM7 微控制器的定时器的控制。

二、实验设备(环境)及要求硬件:PC机;软件:PC机操作系统windows XP,ADS1.2集成开发环境,Proteus软件。

三、实验内容与步骤实验内容:设置P0.2 脚为GPIO 功能,外接一个LED灯。

配置并初始化ARM的定时器0,并使能定时器中断,中断服务程序在2秒钟将LED灯控制输出信号取反,然后清除中断标志并退出中断。

四、实验结果与数据处理1.实验效果截图12.源程序#include "config.h"void __irq Timer0_ISR(void) {if((IO0SET&0x00000004)==0) IO0SET=0x00000004; elseIO0CLR=0x00000004;T0IR=0x01;2VICVectAddr=0;}int main (void){PINSEL0&=0xFFFFFFCF; IO0DIR |=0x00000004; T0TC=0; T0PR=0;T0MCR=0x03;T0MR0=Fpclk/2.5;T0TCR=0x01;VICIntSelect=VICIntSelect&(~(1<<4));VICVectCntl0=0x20|4; VICVectAddr0=(uint32)Timer0_ISR;VICIntEnable=(1<<4); }3.流程图开始设置Timer0_ISR函数定时器0定时中断初始化 3结束五、分析与讨论又忘了打开中断开关。

嵌入式实验流水灯

嵌入式实验流水灯
实验一 流水灯控制显示
一、实验目的:
1.了解基于ARM7核的LPC2106的管脚功能和特点,掌握I/O控制寄存器的设置方法; 2.掌握ARM7应用系统编程开发方法,能用C语言编写应用程序;
3.熟练掌握ADS1.2软件的使用以及PROTEUS仿真调试的方法;
二、具体任务: 1.采用PROTEUS完成流水灯控制的硬件电路设计,要求单片机选型为飞 利浦公司的LPC2106; 2.用ADS1.2编写C语言应用程序,完成流水灯控制显示; 3.采用PROTEUS将应用程序装载在LPC2106中,进行仿真验证
实验三 计数器(向量中断)
一、实验目的: 1.掌握外部中断寄存器与向量中断寄存器的设置方法; 2.掌握ARM7应用系统编程开发方法,能用C语言编写应用程序; 3.熟练掌握ADS1.2软件的使用以及PROTEUS仿真调试的方法;
二、具体任务: 1.采用PROTEUS完成外部中断的硬件电路设计(按下按键1数码管加1;按下按 键2数码管清零;按下按键3数码管减1 ); 2.用ADS1.2编写C语言应用程序,完成控制; 3.采用PROTEUS将应用程序装载在LPC2106中,进行仿真验证
void delay(uint32 n) {n--;}
int main(void) { uint32 i; while(1){ PINSEL0=0x00000000; PINSEL1=0x00000000; IODIR=0x000003ff; for(i=0;i<11;i++) { IOCLR=0x000003ff; IOSET=1<<i; delay(500000000); delay(500000000); } } return(0); }
计数器电路图
流水灯实验电路图

嵌入式流水灯实训报告

嵌入式流水灯实训报告

一、实验背景随着物联网、智能家居等领域的快速发展,嵌入式系统在各个行业中的应用越来越广泛。

为了提高对嵌入式系统的理解,本实训选择了“流水灯”作为实验项目。

通过本实验,旨在掌握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端口的配置,观察流水灯效果的变化。

嵌入式系统 流水灯、按键、定时器实验报告

嵌入式系统 流水灯、按键、定时器实验报告

嵌入式系统应用实验报告姓名:学号:学院:专业:班级:指导教师:实验1、流水灯实验1、1实验要求编程控制实验板上LED灯轮流点亮、熄灭,中间间隔一定时间。

1、2原理分析实验主要考察对STM32F10X系列单片机GPIO的输出操作。

参阅数据手册可知,通过软件编程,GPIO可以配置成以下几种模式: ◇输入浮空◇输入上拉◇输入下拉◇模拟输入◇开漏输出◇推挽式输出◇推挽式复用功能◇开漏式复用功能根据实验要求,应该首先将GPIO配置为推挽输出模式。

由原理图可知,单片机GPIO输出信号经过74HC244缓冲器,连接LED灯。

由于74HC244的OE1与OE2都接地,为相同电平,故A端电平与Y端电平相同且LED 灯共阳,所以,如果要点亮LED,GPIO应输出低电平。

反之,LED灯熄灭。

1、3程序分析软件方面,在程序启动时,调用SystemInit()函数(见附录1),对系统时钟等关键部分进行初始化,然后再对GPIO进行配置。

GPIO配置函数为SZ_STM32_LEDInit()(见附录2),函数中首先使能GPIO时钟:RCC_APB2PeriphClockCmd(GPIO_CLK[Led], ENABLE);然后配置GPIO输入输出模式:GPIO_InitStructure、GPIO_Mode = GPIO_Mode_Out_PP;再配置GPIO端口翻转速度:GPIO_InitStructure、GPIO_Speed = GPIO_Speed_50MHz;最后将配置好的参数写入寄存器,初始化完成:GPIO_Init(GPIO_PORT[Led], &GPIO_InitStructure)。

初始化完成后,程序循环点亮一个LED并熄灭其她LED,中间通过Delay()函数进行延时,达到流水灯的效果(程序完整代码见附录3)。

实验程序流程图如下:硬件方面,根据实验指南,将实验板做如下连接:1、3实验结果实验二、按键实验2、1实验要求利用STM32读取外部按键状态,按键按下一次产生一次外部中断在中断处理函数中使按键所对应的灯亮起。

嵌入式流水灯实验报告

嵌入式流水灯实验报告

嵌入式流水灯实验报告嵌入式流水灯实验报告引言嵌入式系统是一种特殊的计算机系统,它被嵌入到其他设备中,用于控制和管理设备的各种功能。

流水灯是嵌入式系统中最基础的实验之一,通过控制LED 灯的亮灭顺序,可以展示出流水般的效果。

本文将介绍嵌入式流水灯实验的原理、实施步骤以及实验结果。

实验原理流水灯实验的原理基于二进制数的移位操作。

在嵌入式系统中,LED灯的亮灭状态是通过控制引脚的电平高低来实现的。

通过不断改变引脚的电平状态,可以使LED灯在不同的位置上亮起,从而实现流水灯的效果。

实施步骤1. 准备材料:嵌入式开发板、面包板、导线、电阻、LED灯等。

2. 连接电路:将电阻与LED灯连接,再将它们连接到嵌入式开发板的引脚上。

需要注意的是,根据开发板的引脚电压和LED灯的额定电压,选择合适的电阻以限制电流。

3. 编写程序:使用嵌入式开发工具,编写控制LED灯流水效果的程序。

在程序中,通过改变引脚的电平状态来控制LED灯的亮灭。

4. 烧录程序:将编写好的程序烧录到嵌入式开发板中,使其能够执行程序。

5. 运行实验:将嵌入式开发板连接到电源,启动开发板,观察LED灯的流水效果。

实验结果经过以上步骤,我们成功地实现了嵌入式流水灯实验。

在实验中,LED灯按照一定的顺序亮灭,形成了流水灯的效果。

通过改变程序中的控制逻辑,我们可以实现不同的流水灯效果,如快速流动、逐渐加速或减速等。

结论嵌入式流水灯实验是嵌入式系统学习中最基础的实验之一。

通过这个实验,我们了解了嵌入式系统的基本原理和操作方法。

同时,通过编写程序控制LED灯的亮灭顺序,我们也掌握了嵌入式开发工具的使用技巧。

这个实验为我们进一步学习和探索嵌入式系统打下了坚实的基础。

展望嵌入式系统在现代科技中扮演着重要的角色,它广泛应用于各个领域,如智能家居、智能交通、医疗设备等。

通过学习嵌入式流水灯实验,我们可以更好地理解和应用嵌入式系统的原理和技术。

未来,我们可以进一步深入学习嵌入式系统的高级应用,如无线通信、图像处理等,为实现更多创新和发展做出贡献。

嵌入式实验报告

嵌入式实验报告

《嵌入式系统导论》实验报告学院:姓名:上海工程技术大学电子电气工程学院实验一GPIO (按键和LED)实验一、实验要求1、掌握基于STM32F103微控制器的嵌入式系统、仿真器和开发用PC机之间的连接方法,能够搭建基于STM32F103微控制器的嵌入式系统交叉开发环境。

2、熟悉常用的嵌入式开发工具KEIL MDK或IAR EWARM的操作环境和基本功能(包括编辑、编译、链接、调试和下载等),学会创建、配置和管理STM32工程,掌握嵌入式程序的基本调试方法,学会使用逻辑分析仪窗口和外设窗口等信息窗口调试嵌入式程序。

3、理解LED和按键的构件原理,学会设计它们与微控制器间的接口电路4、掌握STM32F103微控制器GPIO的工作原理,熟悉STM32的GPIO库函数5、学会使用STM32的GPIO库函数在KEIL MDK 或IAR EWARM下开发基于LED和按键的简单嵌入式应用程序二、实验环境1、硬件:ALIENTEK STM32F103 嵌入式开发板2、软件:KEIL MDK 或IAR EWARM三、实验内容1、流水灯实验一:在KEIL MDK 或IAR EWARM 中建立STM32工程,并使用GPIO库函数和延时循环设计基于无限循环架构的嵌入式应用程序,使开发板上的红色LED以一定周期闪烁。

采用软件仿真的方式调试程序,通过“ LogicAnalyzeF',观察程序模拟运行时连接红色LED的引脚PA8上的输出波形。

采用硬件下载的方式调试程序,观察程序下载硬件运行时红色LED的闪烁情况。

2、按键控制LED实验:在KEIL MDK或IAR EWARM 中建立STM32工程,并使用GPIO库函数设计基于无限循环架构的嵌入式应用程序,实现以下功能:当按键KEY0按下时,目标板上红色LED点亮;当按键KEY0释放时,目标板上红色LED熄灭。

采用软件仿真的方式调试程序,通过“AngiyzeF'和“ Peripherals f GPIOC”,观察程序模拟运行时连接红色LED的引脚PA8和连接按键KEY0的PC5上的输出波形。

流水灯实训报告心得体会

流水灯实训报告心得体会

一、前言流水灯实训是嵌入式系统学习过程中的一个重要环节,通过本次实训,我对嵌入式系统有了更深入的了解,提高了自己的动手能力和实践能力。

以下是我对本次流水灯实训的心得体会。

二、实训目的与内容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. 实验总结在实验过程中,我遇到了许多问题,如代码编译错误、下载失败等。

通过查阅资料和请教老师,我逐渐解决了这些问题。

这次实训让我深刻体会到,嵌入式系统开发需要耐心和细心,同时也需要具备一定的调试技巧。

嵌入式系统实验报告

嵌入式系统实验报告

嵌入式系统实验报告姓名:班级:学号:实验一:流水灯实验要求:编写一个程序,是开发板上的的3个LED灯按流水灯方式闪烁。

实验工具:ADSv1.2,超级终端,DNW.exe,MY-2440开发板,电脑实验程序如下:;汇编指令实验;定义端口E寄存器预定义rGPBCON EQU 0x56000010rGPBDAT EQU 0x56000014rGPBUP EQU 0x56000018AREA Init,CODE,READONLY ;该伪指令定义了一个代码段,段名为Init,属性只读ENTRY ;程序的入口点标识ResetEntry;下面这三条语句,主要是用来设置I/O口GPB5、GPB6、GPB7为输出属性ldr r0,=rGPBCON ;将寄存器rPCONB的地址存放到寄存器r0中ldr r1,=0x5400str r1,[r0] ;将r1中的数据存放到寄存器rPCONB中;下面这三条语句,主要是禁止GPB端口的上拉电阻ldr r0,=rGPBUPldr r1,=0xffffstr r1,[r0]ldr r2,=rGPBDAT ;将数据端口B的数据寄存器的地址附给寄存器r2ledloopldr r1,=0xdfstr r1,[r2] ;使GPB5输出低电平,LED1亮bl delay ;调用延迟子程序ldr r1,=0xbfstr r1,[r2] ;使GPB5输出低电平,LED1亮bl delay ;调用延迟子程序ldr r1,=0x7fstr r1,[r2] ;使GPB5输出低电平,LED1亮bl delay ;调用延迟子程序b ledloop;下面是延迟子程序delayldr r3,=0xbffff ;设置延迟的时间delay1sub r3,r3,#1 ;r3=r3-1cmp r3,#0x0 ;将r3的值与0相比较bne delay1 ;比较的结果不为0(r3不为0),继续调用delay1,否则执行下一条语句mov pc,lr ;返回END ;程序结束符实验程序说明:要实现三个LED闪烁,须设置GPB5、GPB6、GPB7为输出属性,所以“ldr r1,=0x5400”,将r1的地址设置为0x5400。

按键控制流水灯实训报告

按键控制流水灯实训报告

一、实训目的1. 熟悉51单片机的I/O口编程,掌握按键输入和LED输出控制的基本方法。

2. 学习单片机程序设计的基本思路,提高编程能力。

3. 培养动手实践能力,提高电路焊接和调试水平。

二、实训原理1. 单片机I/O口编程:51单片机的I/O口可以编程设置为输入或输出模式。

在本实训中,我们将I/O口配置为输出模式,用于控制LED灯的亮灭;同时,将I/O口配置为输入模式,用于检测按键状态。

2. 按键输入:当按键未被按下时,单片机通过检测I/O口输入电平,判断按键是否处于高电平状态;当按键被按下时,单片机检测到低电平状态。

3. LED输出:单片机通过编程控制I/O口输出电平,从而控制LED灯的亮灭。

在本实训中,我们通过依次点亮LED灯来实现流水灯效果。

4. 流水灯控制逻辑:根据按键状态,单片机在无限循环中不断检测按键状态,并改变流水灯的方向。

三、实训步骤1. 准备工作:准备51单片机开发板、按键、LED灯、电阻等元器件,以及相关编程软件。

2. 电路连接:按照电路图连接好51单片机、按键、LED灯和电阻等元器件。

3. 编程:使用Keil C51集成开发环境编写程序,实现按键控制流水灯功能。

4. 调试:将编写好的程序烧录到单片机中,进行电路调试。

5. 测试:验证按键控制流水灯功能是否正常。

四、程序设计1. 初始化I/O口:将P1口配置为输出模式,用于控制LED灯;将P3口配置为输入模式,用于检测按键状态。

2. 按键检测:在主循环中,不断检测P3口状态,判断按键是否被按下。

3. 流水灯控制:根据按键状态,控制LED灯依次点亮,实现流水灯效果。

4. 延时函数:为了使流水灯效果更加明显,使用延时函数控制LED灯点亮时间。

5. 按键状态处理:当检测到按键被按下时,改变流水灯方向。

五、实训结果与分析1. 实训结果:通过编程和调试,成功实现了按键控制流水灯功能。

2. 分析:(1)I/O口编程:通过编程将51单片机的I/O口配置为输入或输出模式,是实现流水灯功能的基础。

嵌入式系统开发2 按键实验

嵌入式系统开发2 按键实验

河南机电高等专科学校《嵌入式系统开发》课程实验报告系部:电子通信工程系班级:电信@@@姓名: @@@@@@学号: @@@@@@@@@实验二按键实验(查询方式)一.实验简介在实验一的基础上,使用按键控制流水灯速度,及使用按键控制流水灯流水方向。

二.实验目的熟练使用库函数操作GPIO,掌握利用查询方式控制按键的程序编写方法。

三.实验内容实现初始化GPIO,并配置中断,在中断服务程序中通过修改全局变量,达到控制流水灯速度及方向。

四.实验设备硬件部分:PC计算机(宿主机)、STM32实验板。

软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件。

五.实验步骤1在实验一代码的基础上,编写按键控制部分代码2编写完成主程序4编译代码,下载到实验板5.单步调试6记录实验过程,撰写实验报告六.实验结果及测试通过软件设置寄存器,打开GPIO的时钟,设置其速率为50MHz,设置相应LED灯引脚PB0,PC4,PC3为推挽模式,使引脚能够驱动较大电流,然后通过软件延时的方式改变引脚的关断与开启,使led灯亮与灭。

呈现流水灯的效果。

实验程序的主函数的文件内容如下:#include "stm32f10x.h"#include "bsp_led.h"void Delay(__IO u32 nCount);int main(void){/* LED 端口初始化*/LED_GPIO_Config();while (1){LED1( ON ); // 亮Delay(0x0FFFFF);LED1( OFF ); // 灭LED2( ON ); // 亮Delay(0x0FFFFF);LED2( OFF ); // 灭LED3( ON ); // 亮Delay(0x0FFFFF);LED3( OFF ); // 灭}}void Delay(__IO uint32_t nCount) //简单的延时函数{for(; nCount != 0; nCount--);}七.实验总结做实验时,老师还会根据自己的亲身体会,将一些课本上没有的知识教给我们,拓宽我们的眼界,使我们认识到这门课程在生活中的应用是那么的广泛。

嵌入式系统实践_实验报告_样板

嵌入式系统实践_实验报告_样板

嵌入式系统实践科实验报告计算机专业 07 级姓名郑其帜学号 030701119 实验时间 2010年 9月29日基础实验一1.系统引导(流水灯显示)实验[实验目的]了解PXA270 处理器功能结构了解系统的基本硬件组成了解ARM 指令集掌握嵌入式系统的一般引导规律掌握常见ARM 开发工具软件的使用[实验内容]编写开发板的启动程序,并编写一个流水灯显示程序。

可以驱动底板上的八盏LED 就会向右点亮,不断循环下去。

[实验步骤]1)分析参考代码和编写实验代码结合以上要求,对本实验所提供的参考源代码进行分析,深入理解针对具体的硬件实现,软件是如何配合工作的,并编写实验所需的源代码。

2)程序的编译和下载打开ADS,执行Project Make ,也可以直接用快捷键F7 进行编译、连接生成映像文件。

编译、连接后就生成映像文件,我们可以把它下载到FLASH 或者SDRAM 运行和调试。

3)观察系统运行情况,对系统进行源码调试。

[实验代码]#define LED_CS4 (*((volatile unsigned char *)(0x10500000)))#define LED_V ALUE (0xff)int i;void Delay(unsigned int x){ unsigned int i, j, k;for (i =0; i <=x; i++)for (j = 0; j <0xff; j++)for (k = 0; k <0xff; k++);}void dummyOs(void){ while (1){ LED_CS4 = 0xff;for (i = 0; i < 8; i++){ LED_CS4 = (LED_V ALUE << i) -1;Delay(200);}}}[实验结果]实验得到的结果为,系统启动后,8盏LED灯就会向右循环点亮。

2.键盘实验[实验目的]了解直入键盘与矩阵键盘的原理了解键盘寄存器的功能[实验内容]编写一个键盘和的七段数码管的控制程序,实现对七段数码管控制。

嵌入式实验报告

嵌入式实验报告

嵌⼊式实验报告实验⼀流⽔灯实验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、查找到串⼝对应的引脚,达到串⾏的效果。

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

嵌入式系统应用实验报告姓名:学号:学院:专业:班级:指导教师:实验1、流水灯实验1.1实验要求编程控制实验板上LED灯轮流点亮、熄灭,中间间隔一定时间。

1.2原理分析实验主要考察对STM32F10X系列单片机GPIO的输出操作。

参阅数据手册可知,通过软件编程,GPIO可以配置成以下几种模式:◇输入浮空◇输入上拉◇输入下拉◇模拟输入◇开漏输出◇推挽式输出◇推挽式复用功能◇开漏式复用功能根据实验要求,应该首先将GPIO配置为推挽输出模式。

由原理图可知,单片机GPIO输出信号经过74HC244缓冲器,连接LED灯。

由于74HC244的OE1和OE2都接地,为相同电平,故A端电平与Y端电平相同且LED灯共阳,所以,如果要点亮LED,GPIO应输出低电平。

反之,LED灯熄灭。

1.3程序分析软件方面,在程序启动时,调用SystemInit()函数(见附录1),对系统时钟等关键部分进行初始化,然后再对GPIO进行配置。

GPIO配置函数为SZ_STM32_LEDInit()(见附录2),函数中首先使能GPIO 时钟:RCC_APB2PeriphClockCmd(GPIO_CLK[Led], ENABLE);然后配置GPIO输入输出模式:GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;再配置GPIO端口翻转速度:GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;最后将配置好的参数写入寄存器,初始化完成:GPIO_Init(GPIO_PORT[Led], &GPIO_InitStructure)。

初始化完成后,程序循环点亮一个LED并熄灭其他LED,中间通过Delay()函数进行延时,达到流水灯的效果(程序完整代码见附录3)。

实验程序流程图如下:硬件方面,根据实验指南,将实验板做如下连接:1.3实验结果实验二、按键实验2.1实验要求利用STM32读取外部按键状态,按键按下一次产生一次外部中断在中断处理函数中使按键所对应的灯亮起。

2.2原理分析实验主要考察对STM32F10X系列单片机GPIO外部中断功能的使用。

STM32F107VCT一共有5组GPIO,分别是PA[15:0]、PB[15:0]、PC[15:0]、PD[15:0]、PE[15:0]。

STM32的所有GPIO都可以作为中断输入源,单片机通过复用的方式使其对处理器来说来自GPIO 的一共有16 个中断Px[15:0]。

具体实现是PA[0]、PB[0]、PC[0]、PD[0]和PE[0]共享一个GPIO中断;PA[1]、PB[1]、PC[1]、PD[1]和PE[1]共享一个GPIO中断;……PA[15]、PB[15]、PC[15]、PD[15]和PE[15]共享一个GPIO中断。

以下图片为以EXTI0为例的外部中断/事件线路映像:要产生中断,必须先配置好并使能中断线。

根据需要的边沿检测设置2个触发寄存器,同时在中断屏蔽寄存器的相应位写‘1’允许中断请求。

当外部中断线上发生了期待的边沿时,将产生一个中断请求,对应的挂起位也随之被置‘1’。

在挂起寄存器的对应位写’1’,将清除该中断请求。

要把IO口作为外部中断输入,有以下几个步骤:(1)初始化IO 口为输入。

这一步设置要作为外部中断输入的IO口的状态,可以设置为上拉/下拉输入,也可以设置为浮空输入,但浮空的时候外部一定要带上拉,或者下拉电阻。

否则可能导致中断不停的触发。

在干扰较大的地方,就算使用了上拉/下拉,也建议使用外部上拉/下拉电阻,这样可以一定程度防止外部干扰带来的影响。

(2)开启IO口复用时钟,设置IO口与中断线的映射关系。

STM32的IO口与中断线的对应关系需要配置外部中断配置寄存器EXTICR,这样我们要先开启复用时钟,然后配置IO口与中断线的对应关系。

才能把外部中断与中断线连接起来。

(3)开启与该IO口相对的线上中断/事件,设置触发条件。

这一步,我们要配置中断产生的条件,STM32可以配置成上升沿触发,下降沿触发,或者任意电平变化触发,但是不能配置成高电平触发和低电平触发。

这里根据自己的实际情况来配置。

同时要开启中断线上的中断,这里需要注意的是:如果使用外部中断,并设置该中断的EMR位的话,会引起软件仿真不能跳到中断,而硬件上是可以的。

而不设置EMR,软件仿真就可以进入中断服务函数,并且硬件上也是可以的。

建议不要配置EMR位。

(4) 配置中断分组(NVIC),并使能中断。

这一步,我们就是配置中断的分组以及使能,对STM32的中断来说,只有配置了NVIC 的设置,并开启才能被执行,否则是不会执行到中断服务函数里面去的。

(5)编写中断服务函数。

这是中断设置的最后一步,中断服务函数,是必不可少的,如果在代码里面开启了中断,但是没编写中断服务函数,就可能引起硬件错误,从而导致程序崩溃。

所以在开启了某个中断后,应为该中断编写服务函数。

在中断服务函数里面编写要执行的中断后的操作,并很据情况判断是否要对中断产生的标志位进行清零。

由原理图可知,按键未按下时,GPIO读到的为高电平,按键按下后,IO口接地,产生一个电平跳变,所以外部中断触发方式应该设置为下降沿触发。

2.3程序分析LED灯的点亮与实验一中相同,不过多赘述。

程序首先对按键进行初始化,初始化函数为GPIO_KEY_Config()(见附录4),配置过程与实验一中GPIO配置基本一致。

由于此处GPIO需要采集外界按键信号,故GPIO模式应该为调整为部上拉电阻输入GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU。

然后执行GPIO中断初始化函数KEY_EXIT_Init()(见附录5),首先将连接按键的IO口与EXTI线到一起:GPIO_EXTILineConfig(GPIO_KEY1_EXTI_PORT_SOURCE,GPIO_KEY1_EXTI_PIN_ SOURCE);然后将触发方式设置为下降沿触发并写入中断配置寄存器,并使能中断:EXTI_InitStructure.EXTI_Line = GPIO_KEY1_EXTI_LINE;EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure)。

之后进行中断分组配置及中断优先级配置,函数为InterruptConfig()(见附录6)。

配置过程较为复杂,涉及到抢占优先级和响应优先级的概念。

程序首先将所有外部中断归为NVIC_PriorityGroup_2,即2位抢占优先级和2位响应优先级:NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);然后将所有外部中断信号的抢占优先级规定为0、1、2,使其可以相互区别,并将配置好的参数写入对应寄存器中,完成配置:NVIC_InitStructure.NVIC_IRQChannel = GPIO_KEY1_EXTI_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);NVIC_InitStructure.NVIC_IRQChannel = GPIO_KEY2_EXTI_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;NVIC_Init(&NVIC_InitStructure);NVIC_InitStructure.NVIC_IRQChannel = GPIO_KEY3_EXTI_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;NVIC_Init(&NVIC_InitStructure)。

初始化完成后,程序进入等待按键中断触发状态,一旦按键按下,则进入中断服务函数EXTI9_5_IRQHandler()(见附录7)中。

在函数中对LED灯进行点亮、熄灭操作,并重置中断产生标志位。

实验流程图如下(主函数代码见附录8):硬件连接方式如下图所示:2.3实验结果实验三、定时器实验3.1实验要求利用STM32的通用定时器TIM5 产生一个1S的中断,在中断函数中实现LED1、LED2、LED3、LED4同时翻转的效果。

3.2原理分析实验主要考察对STM32F10X系列单片机定时器的使用。

实验中使用的STM32F107单片机有多达10个定时器,包括:◇多达4个16位定时器,每个定时器有多达4个用于输入捕获/输出比较/PWM 或脉冲计数的通道和增量编码器输入◇1个16位带死区控制和紧急刹车,用于电机控制的PWM 高级控制定时器◇2个独立的看门狗定时器(独立的和窗口型的)◇系统时间定时器:24 位自减型计数器◇2个16 位基本定时器用于驱动DAC根据时钟树可知,系统时钟经过分频之后,进入TIM5的时钟模块入口,在经过预分频处理,才供给TIM5作时钟使用。

预分频器的系数为:TIMx_PSC,当TIMx_PSC = 0时表示不分频,则TIM5定时器的时钟用CK_T =模块入口时钟72MHz;当TIMx_PSC = 1时表示不分频,则TIM5定时器的时钟用CK_T=模块入口时钟36MHz;以此类推。

公式为:CK_T =fCK_PSC/(PSC[15:0]+1),其中PSC最大为65535。

其次是TIM5计数器计数值的设置,TIM5计数器以CK_T为时钟计数,向下计数到0或向上计数到设定值(TIMx_ARR)则产生中断。

以向上计数为例,从0 开始计数到设定值TIMx_ARR 时产生中断。

要产生一秒一次中断则要使计数器的值乘以预分频的值=系统时钟72MHz,其中计数器的值和预分频值都必须小于65535。

我们使预分频值为7200,计数器值为10000,则7200 * 10000 = 72,000,000即72M。

其中拆分方法很多35000*2000 = 72,000,000,只要注意计数器的值和预分频值都必须小于65535即可。

相关文档
最新文档