嵌入式流水灯实验

合集下载

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

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

中南大学嵌入式系统与单片机实验报告学生姓名学号专业班级指导教师学院信息科学与工程学院完成时间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灯从最下面依次点亮,每次只亮一盏灯。

嵌入式实验 流水灯

嵌入式实验 流水灯

#include "config.h"# define LED1 1 << 17 /* P0.17控制LED1 */# define LED2 1 << 18 /* P0.18控制LED2 */# define LED3 1 << 19 /* P0.19控制LED3 */# define LED4 1 << 20 /* P0.20控制LED4 *//****************************************************************************** ***************************** Function name: DelayNS** Descriptions: 延时函数** input parameters: uiDly 值越大,延时时间越长** output parameters: 无** Returned value: 无******************************************************************************* **************************/void DelayNS (uint32 uiDly){uint32 i;for (; uiDly > 0; uiDly--){for(i = 0; i < 50000; i++);}}/****************************************************************************** ***************************** Function name: main** Descriptions: 跳线JP4短接,LED1闪烁** input parameters: 无** output parameters: 无** Returned value: 无******************************************************************************* **************************/int main (void){PINSEL1 = PINSEL1 & (~(0x03 << 2)); /* 将P0.17设置为GPIO *//* 将P0.20设置为GPIO */ IO0DIR = LED1; /* 设置LED控制口为输出*/IO0SET = LED1; /* LED1熄灭*/while (1) {IO0DIR = LED1; /* 设置LED控制口为输出*/IO0SET = LED1; /* LED1熄灭*/IO0SET = LED1; /* LED1熄灭*/DelayNS(50); /* 延时*/IO0CLR = LED1; /* LED1点亮*/DelayNS(50); /* 延时*/IO0DIR = LED2; /* 设置LED控制口为输出*/IO0SET = LED2; /* LED1熄灭*/IO0SET = LED2; /* LED1熄灭*/DelayNS(50); /* 延时*/IO0CLR = LED2; /* LED1点亮*/DelayNS(50); /* 延时*/IO0DIR = LED3; /* 设置LED控制口为输出*/IO0SET = LED3; /* LED1熄灭*/IO0SET = LED3; /* LED1熄灭*/DelayNS(50); /* 延时*/IO0CLR = LED3; /*LED1点亮*/DelayNS(50); /* 延时*/IO0DIR = LED4; /* 设置LED控制口为输出*/IO0SET = LED4; /* LED1熄灭*/IO0SET = LED4; /* LED1熄灭*/DelayNS(50); /* 延时*/IO0CLR = LED4; /* LED1点亮*/DelayNS(50); /* 延时*/}return 0;}/****************************************************************************** ***************************** End Of File******************************************************************************* ***************************/。

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

嵌入式系统原理与应用 :流水灯实验
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

嵌入式实验流水灯

嵌入式实验流水灯
实验一 流水灯控制显示
一、实验目的:
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灯的亮灭顺序,我们也掌握了嵌入式开发工具的使用技巧。

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

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

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

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

STM32实验-GPIO输出-流水灯实验报告

STM32实验-GPIO输出-流水灯实验报告
1.实验目的
通过一个经典的跑马灯程序,了解STM32F1的IO口作为输出使用的方法。通过代码控制开发板上的4个LED灯交替闪烁,实现类似跑马灯的效果。
2.实验内容
工程文件建立、程序的调试,编译、jlink驱动的安装与配置、程序下载、实验结果验证。
3.实验环境
Windouws10 Keil uVision5
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 !!!
2018年10月18日姓名学号班级指导老师课程名称嵌入式系统原理与应用实验成绩实验名称gpio输出流水灯1实验目的通过一个经典的跑马灯程序了解stm32f1的io口作为输出使用的方法
课程实验报告
学院:专业:2018年10月18日
姓名
学号
班级
指导老师
课程名称
嵌入式系统原理与应用实验


实验名称
GPIO输出-流水灯
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);
4. 实验方法和步骤(含设计)
(1)实验硬件连接图

嵌入式流水灯实验

嵌入式流水灯实验

实验三GPIO输出控制实验一、实验目的熟悉LPC2000系列ARM7微控制器的GPIO输入控制.二、实验设备●硬件:PC机一台LPC2131教学实验开发平台一套●软件:Windows 98/XP/2000系统,ADS1.2集成开发环境.三、实验内容1. P0.7管脚控制EasyARM教学实验开发平台上的蜂鸣器报警.2. GPIO 输出实验-流水灯实验实验预习要求:LPC2000 GPIO管脚的设置和控制.四、实验原理1.GPIO 输出实验,蜂鸣器控制在EasyARM2131 开发板上,接有一个蜂鸣器,由P0.7 控制,通过跳线JP11 选择连接.蜂鸣器控制电路如所示.图3-1 蜂鸣器控制电路如果跳线JP11 选择蜂鸣器,当P0.7 输出低电平时,蜂鸣器鸣叫,当P0.7 输出高电平则停止鸣叫.程序设置PINSEL0 使P0.7 连接GPIO,并通过IO0DIR将其设置为输出状态,然后通过IO0CLR 和IO0SET清零和置位P0.7 口,控制蜂鸣器,流程图见图3-2.图3-2 蜂鸣器控制实验流程图2.GPIO 输出实验-流水灯实验单路LED 控制EasyARM2131 开发板上有8 个独立的LED,分别由8 个GPIO口控制,现在使用其中一路进行实验,使用的电路如图3-3所示.图3-3 单路LED 电路图当跳线JP12 连接LED1 时,P1.18 采用灌电流方式驱动LED1,当P1.18 输出低电平时,LED1 点亮,当P1.18 输出高电平时,LED1 熄灭.实验程序首先设置管脚连接GPIO,接着设置P1.18 口为输出模式,然后通过IO1CLR和IO1SET控制P1.18,驱动LED1 的亮灭.GPIO 输出实验-流水灯实验EasyARM2131 开发板上的8 路LED<LED8~LED1>分别可选择P1[25:18]进行控制,电路如图3-4 所示.图3-4 8 路LED 控制电路当跳线JP12 全部选择LED8~LED1 后,P1.25~P1.18 分别控制这8 路LED,就可以进行流水灯实验.流水灯显示花样可以通过数组人为定义,亦可通过一定的算法计算,程序清单所示为采用人为定义数组控制显示花样的实验程序,流程图如图3-5 所示.图3-5 流水灯花样显示流程图五、实验步骤实验内容1步骤① 启动ADS1.2IDE集成开发环境,选择ARM Executable Image for lpc2131工程模板建立一个工程BeepCon_C.② 在user组里编写主程序代码main.c.③将EasyARM教学实验开发平台上的P0.7管脚与Beep跳线短接.④选择Project->Debug,启动AXD进行JLINK仿真调试.在工程窗口中选择DebugInRAM 生成目标,然后编译连接工程〔单击Make按钮〕.如图所示.选择DebugInRAM生成目标时,编译连接生成的目标代码就是用于在片内RAM 调试.打开ADS开发环境下的[Edit]->[DebugInFLASH Settings...],在"ARM fromELF"下Output format做如图选择,输出文件选择你的文件同一目录下,扩展名’.HEX’⑥ 全速运行程序,程序将会在main.c的主函数中停止〔因为main函数起始处默认设置有断点〕.⑦ 单击Context Variable图标按钮〔或者选择Processor Views->Variables〕打开变量观察窗口,通过此窗口可以观察局部变量和全局变量.选择System Views->Debugger Internals 即可打开LPC2000系列ARM7微控制器的片内外寄存器窗口.⑧ 可以单步运行程序,可以设置/取消断点;或者全速运行程序,停止程序运行,观察变量的值,判断蜂鸣器控制是否正确.在FLASH 中调试在工程窗口中选择DebugInFLASH生成目标,然后编译连接工程〔单击Make 按钮〕.选择DebugInFLASH生成目标时,编译连接生成的目标代码就是用于在片内FLASH 调试.编译连接通过后,按键盘的F5 键,启动AXD进行调试.注意,由于程序要烧写到片内FLASH,默认选项在每次装载FLASH 地址的调试文件时,将会擦除FLASH 并下载代码到FLASH 中.脱机运行使用DebugInFLASH生成目标,并进行调试后〔使用JLINK 仿真器〕,程序即烧写到片内FLASH 中.将JLINK 电源断开,重新上电,程序将脱机运行;实验内容2实验步骤① 启动ADS1.2IDE集成开发环境,选择ARM Executable Image for lpc2131工程模板建立一个工程LedDisp_C.② 在user组里编写主程序代码main.c.③ 选用DebugInRam生成目标,然后编译工程.④ 将EasyARM教学实验开发平台上的P1.[18:25]管脚对应与LED[1:8]跳线短接.⑤ 选择Project->Debug,启动AXD进行JLINK仿真调试.⑥ 全速运行程序,程序将会在main.c的主函数中停止.⑦ 单击Context Variable图标按钮〔或者选择Processor Views->Variables〕打开变量观察窗口,通过此窗口可以观察局部变量和全局变量.选择System Views->Debugger Internals 即可打开LPC2000系列ARM7微控制器的片内外寄存器窗口.⑧ 可以单步运行程序,可以设置/取消断点;或者全速运行程序,停止程序运行,观察变量的值,判断LED1~LED8控制是否正确.〔3〕实验参考程序GPIO输出控制实验的参考程序见3-1.程序清单1 错误!文档中没有指定样式的文字。

嵌入式实验报告(电子表流水灯设计)

嵌入式实验报告(电子表流水灯设计)

山西大学计算机组装与维护论文题目电子表设计学院计算机与信息技术学院专业软件工程指导教师李月香学生姓名曹艳艳学号 2008242001 日期 2010-12-10电子表设计内容提要:LCD 电视是 Liquid Crystal Display 的简称,是液晶显示屏的全称:它包括了TFT,UFB,TFD,STN等类型的液晶显示屏。

LCD 的构造是在两片平行的玻璃当中放置液态的晶体,两片玻璃中间有许多垂直和水平的细小电线,透过通电与否来控制杆状水晶分子改变方向,将光线折射出来产生画面。

1888年奥地利植物学家发现了一种白浊有粘性的液体,后来,德国物理学家发现了这种白浊物质具有多种弯曲性质,认为这种物质是流动性结晶的一种,由此而取名为Liquid Crystal即液晶LCD显示器是智能仪器仪表中最常用的显示器件。

近年来一些单片机内部也集成了LCD控制级驱动电路,更方便了单片机在嵌入式系统中的应用,特别是微功耗智能化仪器仪表上的应用。

关键词:LCD 工作原理应用发展参考文献:1.《嵌入式系统应用基础》。

2. 百度百科。

一、实验目的1.熟练掌握单片机控制系统硬件电路的设计、测试;单片机监控程序的编写、调试及运行。

2.学习使用单片机设计出简单的应用系统。

二、实验设备1.PC计算机;2.NEC全系列微控制器(单片机)开发工具EM/EZ-1系统;3.实验系统。

三、实验内容及要求1.设计方案本次使用主要使用了LCD,做了一个电子表。

主函数显示电子表。

P3.0按键中断用来测温度并在LCD上显示。

P4.0按键中断用来进入更改时间的中断。

P4.1按键中断用来进入设置闹钟的中断。

P4.2用来在进入更改时间中断和设置闹钟中断时进行小时的设置。

P4.3用来在进入更改时间中断和设置闹钟中断时进行分钟的十位设置。

P4.4用来在进入更改时间中断和设置闹钟中断时进行分钟的个位设置。

P4.5是一个流水灯和蜂鸣器中断。

2.结构图3.实现的功能1.实现了利用LCD 动态的显示秒数的走动。

流水灯实训报告心得体会

流水灯实训报告心得体会

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

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

二、实训目的与内容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。

嵌入式课程设计流水灯

嵌入式课程设计流水灯

流水灯编程实验目的:掌握GPIO端口的基本控制方法掌握硬件电路仿真方法。

实验内容:1.复习流水灯的工作原理。

2.按教材上3.4节的内容或实验指导书2.1节的内容创建好项目,生成可执行文件。

3.阅读LED示例程序代码。

4.软件模拟,无误后下载到实验板上运行,观察效果。

5.通过硬件仿真的方式调试程序。

分析LED_Init、main这2个函数中每一行代码的作用。

6.修改程序使得灯改变一次状态的时间间隔为0.02、0.01、0.1、0.3、0.5、1、2秒。

7.修改程序使得灯闪动的方向反向。

8.修改循环亮灯的程序,使每次亮灯的起始位置依次下移。

选做进阶版1.用左边4个灯闪烁代表绿灯,右边4个灯闪烁代表红灯,8个灯全亮代表黄灯。

模拟交通信号灯运行(绿灯10秒,红灯20秒,绿到红过渡时黄灯3秒)2.将自己的学号编码用LED灯效果展示出来。

实验原理:电路中有L0,L1,L2,L3,L4,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,该引脚具有复用功能,在默认状态下,该引脚的IO不可用,需对AFIO_MAPR寄存器进行设置,设置其为IO可用。

实验过程及结果描述:按实验内容的步骤一步一步的来。

重点描述实验内容的6、7、8还有选修进阶的1、2.要实现改变灯状态的时间间隔,只需改变delay_ms这函数的里面的参数即可,例如时间间隔改为0.02秒就将参数改为20,1秒就将参数改为1000,(delay_ms()函数里面参数的单位为ms)其它以此类推。

通过参数的改变可以看到灯状态改变的时延相应的改变了。

改变灯的闪动方向则将light左移或者右移位数的值赋给light,例如循环一次左移一位,则light=light<<1,右移则是light=light>>1;这里又涉及到当左移(右移)到最左(右)一位时,再次亮灯时的起始位置设置的问题,这里就可以设置当左移(右移)到最左(最右),设置一个判断语句当左移(右移)到左(右)端点时,将初始值赋给题目要求的位置即可。

嵌入式实验报告

嵌入式实验报告

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

嵌入式流水灯实验

嵌入式流水灯实验
编译连接通过后,按键盘的F5键,启动AXD进行调试。注意,由于程序要烧写到片内FLASH,默认选项在每次装载FLASH地址的调试文件时,将会擦除FLASH并下载代码到FLASH中。
脱机运行
使用DebugInFLASH生成目标,并进行调试后(使用JLINK仿真器),程序即烧写到片内FLASH中。将JLINK电源断开,重新上电,程序将脱机运行;
蜂鸣器控制电路如所示。
图3-1蜂鸣器控制电路
如果跳线JP11选择蜂鸣器,当P0.7输出低电平时,蜂鸣器鸣叫,当P0.7输出高电平则停止鸣叫。程序设置PINSEL0使P0.7连接GPIO,并通过IO0DIR将其设置为输出状态,然后通过IO0CLR和IO0SET清零和置位P0.7口,控制蜂鸣器,流程图见图3-2。
图3-5流水灯花样显示流程图
五、实验步骤
实验内容1步骤
①启动ADS1.2IDE集成开发环境,选择ARM ExecutableImageforlpc2131工程模板建立一个工程BeepCon_C。
②在user组里编写主程序代码main.c。
③将EasyARM教学实验开发平台上的P0.7管脚与Beep跳线短接gde台ngthengXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX。

嵌入式系统实验报告

嵌入式系统实验报告

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

二、实验原理2.1:实验原理图2.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线上,当某段上有一-定的电压差值时,便会点亮该段。

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

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

当全部点亮八个发光二极管后,八个发光二极管同时熄灭,间隔300ms后,发光二极管再次从左至右依次点亮。

如此反复循坏。

3.2:8位数码管对于给出的8位数码管动态扫描案例,下载后,在开发板上可观察到8个数码管从左至右依次显示对应的数字,且每一个数码显示的数字在1-9之间循环。

可以通过加快扫描频率,使得八位数码管在人眼看上去是同时显示。

在后续的案例中可以看到该现象。

嵌入式uPD78F0485单片机实验报告 流水灯 音乐盒

嵌入式uPD78F0485单片机实验报告 流水灯 音乐盒

《嵌入式系统应用技术基础》实验报告(一)基于µPD78F0485单片机的流水灯音乐盒设计与实现专业:软件工程班级:2009学号:**********姓名:***1.设计环境及使用工具1.1设计环境:PC机、瑞萨EZ/EM-1仿真器、程序下载及仿真调试电缆、PC机到仿真器的USB通信线。

1.2使用工具:NEC upd78F0485单片机。

2.需求分析当前,在世界范围内,一个以微电子技术,计算机的通讯技术为先导的,一信息技术及信息产业的信息革命时期。

而计算机技术怎样与实际应用更有效的结合并有效地发挥其作用是科学界最热门的话题,也是当今计算机应用中空前活跃的领域。

本文主要从计算机的应用上来实现流水灯加蜂鸣器的音乐盒。

3.设计方案设计一个电路,在uPD78F0485单片机的P40/KR0~P45/KR5引脚上各连接1个按键,即KEY1-KEY6;在P30-P33、P40-这43、P50-P53引脚上连接12个LED灯,即LED1-LED2.在P33/BUZ引脚上连接一个蜂鸣器。

编写程序实现按键控5种不同的流水灯(LED灯亮、灭闪烁)显示方案,并且伴随蜂鸣器的声音,每次灯闪、灯灭蜂鸣器换种频率,如果在显示某种方案的过程中有按键探马下,则会中断现在的方案,进入所按下按键所设定的方案进行显示。

4.程序设计(包括程序流程图)图4.1 程序流程图5.操作说明表5.1 操作对照表6.设计中遇到的主要问题及解决办法表6.1 问题及对应解决方案7.总结及展望随着微控技术的日益完善和发展,单片机的应用在不断走向深入。

它的应用比定导致传统的控制技术从根本上发生变革。

也就是说单片机应用的出现是对传统控制技术的革命。

它在工业控制、数据采集、智能化仪表、机电一体化、家用电器等领路得到了广泛应用,极大的提高了这些领域的技术水平和自动化控制。

因此单片机的开发应用已成为高技术工程领域的一项重大课题。

因此了解单片机知识,掌握单片机的应用技术具有重大的意义。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验
一、实验目的
熟悉LPC2000系列ARM7微控制器的GPIO输入控制。
二、实验设备
硬件:PC机一台
LPC2131教学实验开发平台一套
软件:Windows 98/XP/2000系统,ADS1.2集成开发环境。
三、实验内容
1. P0.7管脚控制EasyARM教学实验开发平台上的蜂鸣器报警。
2. GPIO输出实验-流水灯实验
图3-5流水灯花样显示流程图
五、实验步骤
实验内容1步骤
①启动ADS1.2IDE集成开发环境,选择ARM Executable Image for lpc2131工程模板建立一个工程BeepCon_C。
②在user组里编写主程序代码main.c。
③将EasyARM教学实验开发平台上的P0.7管脚与Beep跳线短接gde台ngtheng。
图3-2蜂鸣器控制实验流程图
2.GPIO输出实验-流水灯实验
单路LED控制
EasyARM2131开发板上有8个独立的LED,分别由8个GPIO口控制,现在使用其中一路进行实验,使用的电路如图3-3所示。
图3-3单路LED电路图
当跳线JP12连接LED1时,P1.18采用灌电流方式驱动LED1,当P1.18输出低电平时,LED1点亮,当P1.18输出高电平时,LED1熄灭。实验程序首先设置管脚连接GPIO,接着设置P1.18口为输出模式,然后通过IO1CLR和IO1SET控制P1.18,驱动LED1的亮灭。
⑤选择Project->Debug,启动AXD进行JLINK仿真调试。
⑥全速运行程序,程序将会在main.c的主函数中停止。
⑦单击ContextVariable图标按钮(或者选择Processor Views->Variables)打开变量观察窗口,通过此窗口可以观察局部变量和全局变量。选择System Views->Debugger Internals即可打开LPC2000系列ARM7微控制器的片内外寄存器窗口。
0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, //依次逐个递减
0x81, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x81, //两个靠拢后分开
0x81, 0xC3,0xE7, 0xFF, 0xFF, 0xE7, 0xC3, 0x81 //从两边叠加后递减
const uint32 DISP_TAB2[10] = { 0x80 , 0x40, 0x20, 0x10, 0x08,0x04, 0x02,0x01, 0xff, 0xff};
**函数功能:长软件延时
**入口参数:dly延时参数,值越大,延时越久
**出口参数:无
*******************************************************************************************/
void DelayNS (uint32 dly)
GPIO输出实验-流水灯实验
EasyARM2131开发板上的8路LED(LED8~LED1)分别可选择P1[25:18]进行控制,电路如图3-4所示。
图3-4 8路LED控制电路
当跳线JP12全部选择LED8~LED1后,P1.25~P1.18分别控制这8路LED,就可以进行流水灯实验。流水灯显示花样可以通过数组人为定义,亦可通过一定的算法计算,程序清单所示为采用人为定义数组控制显示花样的实验程序,流程图如图3-5所示。
for(; dly>0; dly--)
{
for(i=0; i<5000; i++);
}
}
/****************************************************************************
*名称:main()
*功能:控制蜂鸣器蜂鸣。
****************************************************************************/
⑥全速运行程序,程序将会在main.c的主函数中停止(因为main函数起始处默认设置有断点)。
⑦单击Context Variable图标按钮(或者选择Processor Views->Variables)打开变量观察窗口,通过此窗口可以观察局部变量和全局变量。选择System Views->Debugger Internals即可打开LPC2000系列ARM7微控制器的片内外寄存器窗口。
⑧可以单步运行程序,可以设置/取消断点;或者全速运行程序,停止程序运行,观察变量的值,判断LED1~LED8控制是否正确。
(3)实验参考程序
GPIO输出控制实验的参考程序见3-1。
程序清单1GPIO输出控制实验1的参考程序
/****************************************************************************
{ uint32 i;
for ( ; dly>0; dly--)
for (i=0; i<50000; i++);
}
/**********************************************************
**函数名称:main()
实验内容2实验步骤
①启动ADS1.2IDE集成开发环境,选择ARM Executable Image for lpc2131工程模板建立一个工程LedDisp_C。
②在user组里编写主程序代码main.c。
③选用DebugInRam生成目标,然后编译链接工程。
④将EasyARM教学实验开发平台上的P1.[18:25]管脚对应与LED[1:8]跳线短接gde台ngtheng。
*功能:长软件延时。
*入口参数:dly延时参数,值越大,延时越久
*出口参数:无
****************************************************************************/
void DelayNS(uint32 dly)
{
uint32 i;
DelayNS(20);
IO1CLR =((LED_TBL[i]) << 18);
DelayNS(20);
}
}
return 0;
}
参考程序3
/****************************************************************************
*文件名:main.c
#include "config.h"
#define BEEPCON 1<<7// P0.7引脚控制Beep,低电平蜂鸣
/****************************************************************************
*名称:DelayNS()
#include "config.h"
const uint32 LEDS8 = 0xFF << 18;//P1[25:18]控制LED1~LED8,低电平点亮
const uint32 KEY = 1 << 16;//P0.16连接KEY1
const uint32DISP_TAB[10] = { 0x01, 0x02, 0x04, 0x08,0x10,0x20,0x40,0x80, 0xff, 0xff};
const uint32 LED_TBL[] =
{
0x00, 0xFF, //全部熄灭后,再全部点亮
0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, //依次逐个点亮
0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, //依次逐个叠加
编译连接通过后,按键盘的F5键,启动AXD进行调试。注意,由于程序要烧写到片内FLASH,默认选项在每次装载FLASH地址的调试文件时,将会擦除FLASH并下载代码到FLASH中。
脱机运行
使用DebugInFLASH生成目标,并进行调试后(使用JLINK仿真器),程序即烧写到片内FLASH中。将JLINK电源断开,重新上电,程序将脱机运行;
实验预习要求:
LPC2000 GPIO管脚的设置和控制。
四、实验原理
1.GPIO输出实验,蜂鸣器控制
在EasyARM2131开发板上,接有一个蜂鸣器,由P0.7控制,通过跳线JP11选择连接。
蜂鸣器控制电路如所示。
图3-1蜂鸣器控制电路
如果跳线JP11选择蜂鸣器,当P0.7输出低电平时,蜂鸣器鸣叫,当P0.7输出高电平则停止鸣叫。程序设置PINSEL0使P0.7连接GPIO,并通过IO0DIR将其设置为输出状态,然后通过IO0CLR和IO0SET清零和置位P0.7口,控制蜂鸣器,流程图见图3-2。
*文件名:main.c
*功能:蜂鸣器控制。对蜂鸣器进行控制,采用软件延时方法。
*使用I/O口直接控制,采用灌电流方式。
*说明:将P0.7与Beep短接。
****************************************************************************/
*功能:LED显示控制。
*通过GPIO直接控制8个LED产生流水灯效果
*说明:P1.[18:25]管脚对应与LED[1:8]跳线短接,把P0.16与KEY跳线短接,
*使用KEY1键来操作流水灯的运行方向
相关文档
最新文档