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

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

流水灯实验1.实验内容使用GPIO口控制8个LED流水灯显示。
2.实验步骤①启动ADS1.2IDE集成开发环境,选择ARM Executable Image for lpc2131工程模板建立一个工程LedDisp_C。
②在user组里编写主程序代码main.c。
③选用DebugInRam生成目标,然后编译链接工程。
④将EasyARM教学实验开发平台上的P1.[18:25]管脚对应与LED[1:8]跳线短接。
⑤选择Project->Debug,启动AXD进行JTAG仿真调试。
3.实验参考程序程序清单错误!文档中没有指定样式的文字。
-1 GPIO输出控制实验2的参考程序#include "config.h"/* LED8~LED1 8个LED分别由P1.25~P1.18控制*/const uint32 LEDS8=(0XFF<<18); //p1[25:18]控制LED8~LED1低电平点亮/********************************************************************函数DelayNS()进行长软件延时*********************************************************************/void DelayNS(uint32 dly){uint32 i;for(;dly>0;dly--)for(i=0;i<50000;i++);}const uint32 LED_TBL[]={0X00,0XFF, //全部熄灭后,点亮0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80, //逐次逐个点亮0X01,0X03,0X07,0X0F,0X1F,0X3F,0X7F,0XFF, //逐次逐个叠加0XFF,0X7F,0X3F,0X1F,0X0F,0X07,0X03,0X01, //逐次逐个递减0X81,0X42,0X24,0X18,0X18,0X24,0X42,0X81, //两个靠拢后分开0X81,0XC3,0XE7,0XFF,0XFF,0XE7,0XC3,0X81 //两边叠加后递减};int main (void){ uint8 i;PINSEL2=PINSEL2&(~0X08); //p1[25:16]链接GPIOIO1DIR=LEDS8; //设置为LED输出口while(1){ for(i=0;i<42;i++){IO1SET=~((LED_TBL[i])<<18);DelayNS(20);IO1CLR=((LED_TBL[i])<<18);DelayNS(20);}}return 0;}。
嵌入式实验 流水灯

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

}
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灯的亮灭顺序,我们也掌握了嵌入式开发工具的使用技巧。
这个实验为我们进一步学习和探索嵌入式系统打下了坚实的基础。
展望嵌入式系统在现代科技中扮演着重要的角色,它广泛应用于各个领域,如智能家居、智能交通、医疗设备等。
通过学习嵌入式流水灯实验,我们可以更好地理解和应用嵌入式系统的原理和技术。
未来,我们可以进一步深入学习嵌入式系统的高级应用,如无线通信、图像处理等,为实现更多创新和发展做出贡献。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
流水灯实验电路图
1、将要使用的管脚设置为通用IO端口
例:
2、IOห้องสมุดไป่ตู้口方向寄存器IODIR
3、IO端口置位寄存器IOSET
4、IO端口清零寄存器IOCLR
5、IO端口管脚值寄存器IOPIN
三、流水灯应用C程序
#include "config.h" #define LED1CON 0x000000ff *P0.0~p0.15输出*/
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); }
计数器电路图
实验一 流水灯控制显示
一、实验目的:
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中,进行仿真验证