当前位置: 简表范文网 > 专题范文 > 公文范文 >

gpio控制流水灯实验报告总结18篇

| 来源:网友投稿

gpio控制流水灯实验报告总结18篇gpio控制流水灯实验报告总结  美创作  实验四GPIO输入实验之迟辟智  一、实验目的  1、能够使用GPIO的输入模式读取开关信号.  2、掌握GPIO相关寄存下面是小编为大家整理的gpio控制流水灯实验报告总结18篇,供大家参考。

gpio控制流水灯实验报告总结18篇

篇一:gpio控制流水灯实验报告总结

  美创作

  实验四GPIO输入实验之迟辟智

  一、实验目的

  1、能够使用GPIO的输入模式读取开关信号.

  2、掌握GPIO相关寄存器的用法和设置.

  3、掌握用C语言编写法式控制GPIO.二、实验环境PC机一台

  ADS1.2集成开发环境一套

  EasyARM2131教学实验平台一套

  三、实验内容

  1.实验通过跳线JP8连接,法式检测按键KEY1的状态,控

  制蜂鸣器BEEP的鸣叫.按下KEY1,蜂鸣器鸣叫,松开后

  停止蜂鸣.(调通实验后,改为KEY3键进行输入).

  2.当检测到KEY1有按键输入时点亮发光二极管LED4并控

  制蜂鸣器响,软件延时后关失落发光管并停止蜂鸣,然后

  循环这一过程直到检测按键没有输入.(键输入改为键

  KEY4,发光管改为LED6).

  3.结合实验三,当按下按键Key1时,启动跑马灯法式并控制蜂鸣器响,软件延时后关失落发光管并停止蜂鸣,然后循环这一过程直到检测按键再次按下.

  四、实验原理当P0口用于GPIO输入时(如按键输入),内部无上

  拉电阻,需要加上拉电阻,电路图拜会图4.2.进行GPIO输入实验时,先要设置IODIR使接口线成为

  输入方式,然后读取IOPIN的值即可.图4.2按键电路原理图

  实验通过跳线JP8连接,法式检测按键KEY1的状态,控制蜂鸣器BEEP的鸣叫.按下KEY1,蜂鸣器鸣叫,松开后停止蜂鸣.在这个实验中,需要将按键KEY1输入口P0.16设为输入口而蜂鸣器控制口P0.7设置为输出口.蜂鸣器电路如图4.3所示,当跳线JP6连接蜂鸣器时,P0.7控制蜂鸣器,低电平时蜂鸣器鸣叫.LED灯电路如图4.4所示,低电平时灯亮.

  图4.3蜂鸣器控制电路图4.4LED控制电路法式首先设置管脚连接寄存器PINSEL0和PINSEL1,设置P0.16为输入,设置为输出.然后检测端口P0.16的电平,对

  进行相应的控制,流程图如图4.5所示,实现法式见法式清单

  4.1.图4.5按键输入实验流程图

  五、实验步伐、源代码及调试结果内容1

  实验步伐①启动ADS1.2IDE集成开发环境,选择ARMExecutableImageforlpc2131工程模板建立一个工程BEEP_key.②在user组里编写主法式代码main.c.③选用DebugInFLASH生成目标,然后编译链接工程.④将EasyARM教学实验开发平台上的相应管脚跳线短接.⑤选择Project->Debug,启动AXD进行JLINK仿真调试.⑥全速运行法式,法式将会在main.c的主函数中停止.如

  下图所示:⑦单击ContextVariable图标按钮(或者选择ProcessorViews->Variables)翻开变量观察窗口,通过此窗口可以观察局部变量和全局变量.选择SystemViews>DebuggerInternals即可翻开LPC2000系列ARM7微控制器的片内外寄存器窗口.

  通过变量窗口可以观察变量BEEP、KEY1等的值和ARM7

  微控制器的片内外寄存器窗口.如下图所示:

  ⑧可以单步运行法式,先按下Key1,观察IO0PIN寄存器

  的值,然后断开Key1,观察IO0PIN寄存器的值.可以设

  置/取消断点;或者全速运行法

  式,停止法式运行,观察变量

  的值,判断蜂鸣器控制是否正

  确.如下图所示:

  图4.6未按下Key1时IO0PIN

  的值

  图4.7按下Key1时IO0PIN的值

  由上两图可知,当按下Key1时,IO0PIN寄存器的第16位由

  1酿成0(F酿成E),key1与P,按下Key1时,1酿成0,

  寄存器值变动,蜂鸣器响,说明控制是正确的.

  现象描述:按下KEY1,蜂鸣器鸣叫,松开后停止蜂鸣.

  源代码:

  #include"config.h"constuint32BEEP=1<<7;//P0.7控制蜂鸣器constuint32KEY1=1<<16;//P0.16连接KEY1(改为KEY3时,只需“constuint32KEY1=1<<16”改为“constuint32KEY3=1<<18”,其余不变.)

  /*********************************************************************************************函数名称:main()**函数功能:GPIO输入实验测试.**检测按键KEY1.KEY1按下,蜂鸣器蜂鸣,松开后停止蜂鸣.**跳线说明:把JP8的KEY1跳线短接,JP11连接蜂鸣器.*******************************************************************************************/intmain(void){PINSEL0=0x00000000;//所有管脚连接GPIOPINSEL1=0x00000000;IO0DIR=BEEP;//蜂鸣器控制口输出,其余输入while(1){if((IO0PIN&KEY1)==0)IO0CLR=BEEP;//如果KEY1按下,蜂鸣器鸣叫elseIO0SET=BEEP;//松开则停止蜂鸣}return0;}内容二

  实验步伐①启动ADS1.2IDE集成开发环境,选择ARMExecutableImageforlpc2131工程模板建立一个工程BEEP_key.②在user组里编写主法式代码main.c.③选用DebugInFLASH生成目标,然后编译链接工程.④将EasyARM教学实验开发平台上的相应管脚跳线短接.⑤选择Project->Debug,启动AXD进行JLINK仿真调试.

  ⑥全速运行法式,法式将会在main.c的主函数中停止.如下图所示:⑦单击ContextVariable图标按钮(或者选择ProcessorViews>Variables)翻开变量观察窗口,通过此窗口可以观察局部变

  量和全局变量.选择SystemViews->DebuggerInternals即可翻

  开LPC2000系列ARM7微控制器的片内外寄存器窗口.

  通过变量窗口可以观察变量BEEP、KEY1等全局变量、i

  等本地变量和ARM7微控制器的片内外寄存器窗口.如下图

  所示:

  左图所示为ARM7微控制器的片内寄存器窗口.

  图4.9本地变量图4.8全局变量

  ⑧可以单步运行法式,先

  按下Key1,观察IO0PIN寄存器的值,然后断开Key1,观察IO0PIN寄存器的值.可以设置/取消断点;或者全速运行法式,停止法式运行,观察变量的值,判断蜂鸣器控制是否正确.如下图所示:

  .图未按下KEY1时

  IO0PIN的值图4.11按下KEY1后IO0PIN的值

  比较图4.10和4.11,发现按下KEY1后,IO0PIN寄存器的第16位由1酿成0;而KEY,当按下时输入低电平,这说明KEY1的控制是正确的.

  上图所示为运行“IO0CLR=BEEP”后IO0PIN寄存器的值,与图4.10比较,发现第8位由1酿成0,BEEP对应P,这说明BEEP的控制是对的.现象描述:当按下KEY1时,蜂鸣器鸣响,LED4亮;当松开

  KEY1后,蜂鸣器静音,LED4灭.源代码如下:

  #include"config.h"constuint32BEEP=1<<7;//P0.7控制蜂鸣器constuint32KEY1=1<<16;//P0.16连接KEY1(改为KEY4按键时,只需把上句代码改为“constuint32KEY4=1<<19”,其余不变)constuint32LEDS4=1<<21;//P1[21]控制LED4,低电平点亮(改为LED6时,只需把上句代码改为“constuint32LED6=1<<23”,其余不变.)

  /*****************************************************************************函数名称:main()**函数功能:GPIO输入实验测试.**检测按键KEY1.KEY1按下,蜂鸣器蜂鸣,松开后停止蜂鸣.**跳线说明:把JP8的KEY1跳线短接,JP11连接蜂鸣器.

  *******************************************************************************************/intmain(void){Uint32i;PINSEL0=0x00000000;//所有管脚连接GPIOPINSEL1=0x00000000;IO0DIR=BEEP;//蜂鸣器控制口输出0IO1DIR=LEDS4;//设置LED4灯亮while(1){if((IO0PIN&KEY1)==0)for(i=0;i<1000;i++);//软件延时

  {IO0CLR=BEEP;//如果KEY1按下,蜂鸣器鸣叫IO1DCLR=LEDS4;//设置LED4灯亮}else{IO0SET=BEEP;//松开则停止蜂鸣IO1SET=LEDS4;//设置LED4灯灭

  }for(i=0;i<1000;i++);//软件延时

  }return0;}内容三实验步伐

  ①启动ADS1.2IDE集成开发环境,选择ARMExecutableImageforlpc2131工程模板建立一个工程BEEP_key.

  ②在user组里编写主法式代码main.c.③选用DebugInFLASH生成目标,然后编译链接工程.④将EasyARM教学实验开发平台上的相应管脚跳线短接.⑤选择Project->Debug,启动AXD进行JLINK仿真调试.⑥全速运行法式,法式将会在main.c的主函数中停止.如下图所示:⑦单击ContextVariable图标按钮(或者选择Processor

  Views->Variables)翻开变量观察窗口,通过此窗口可以观察局部变量和全局变量.选择SystemViews>DebuggerInternals即可翻开LPC2000系列ARM7微控制器的片内外寄存器窗口.

  通过变量窗口可以观察变量BEEP、KEY1等的值和ARM7微控制器的片内外寄存器窗口.如下图所示:

  ⑧可以单步运行法式,先按下Key1,观察IO0PIN寄存器的值,然后断开Key1,观察IO0PIN寄存器的值.可以设置/取消断点;或者全速运行法式,停止法式运行,观察变量的值,判断蜂鸣器控制是否正确.如下图所示:1时IO0PIN的值1时IO0PIN

  的值由上两图可知,当按下Key1时,IO0PIN寄存器的第16位由1酿成0(F酿成E),key1与P,按下Key1时,1酿成0,寄存器值变动,蜂鸣器响,流水灯亮,说明控制是正确的.现象描述:当按下按键KEY1时,蜂鸣器鸣响,流水灯亮;松开后,蜂鸣器静音,流水灯灭.源代码如下:#include"config.h"constuint32BEEP=1<<7;//P0.7控制蜂鸣器constuint32KEY=1<<16;//P0.16连接KEY1constuint32LEDS8=0xFF<<18;//P1[25:18]控制LED8~LED1,低电平点亮voidDelayNS(uint32dly){uint32i;

  for(;dly>0;dly--){

  for(i=0;i<50000;i++);}}/*********************************************************************************************函数名称:liushuideng()**函数功能:流水灯显示实验.**调试说明:连接跳线JP12至LED8~LED1.

  *******************************************************************************************//*流水灯花样,低电平点亮,注意调用时候用了取反把持*/

  constuint32LED_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//从两边叠加后递加

  };intliushuideng(void){uint8i;PINSEL1=0x00000000;//设置管脚连接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);}}return0;}//主函数

  intmain(void){uint32i;PINSEL0=0x00000000;//所有管脚连接GPIO

  PINSEL1=0x00000000;IO0DIR=BEEP;//蜂鸣器控制口输出0

  while(1){if((IO0PIN&KEY)==0){for(i=0;i<1000;i++);//软件延时

  {IO0CLR=BEEP;//如果KEY按下,蜂鸣器鸣叫

  liushuideng();}}else{

  IO0SET=BEEP;//松开则停止蜂鸣

  IO1SET=LEDS8;}for(i=0;i<100;i++);//软件延时

  }return0;}六、思考题1、如果将P0.30设置为GPIO输入模式,且管脚悬空,那么

  读取P0.30获得的值是0还是1?或者是不确定?当管脚悬空时,该管脚有可能是高电平也有可能是低电平.读

  取IO0PIN的值其实不能确定管教的值.有时管脚是高电平,读取到的纷歧定是高电平.2、如果需要读取以后P0.7的输出值(不是管脚上的电平),如何实现?

  将该管脚与一个LED连接,若LED亮,则输出值为0,否则

  为1.

  

  

篇二:gpio控制流水灯实验报告总结

  实验二

  实验2GPIO实现LED流水灯

  IO口实现LED灯闪烁

  一、实验目的:

  1.正确安装keil软件2.正确安装调试驱动,熟悉实验板的用法3.学习IO口的使用方法。

  二、实验设备:

  单片机开发板、学生自带笔记本电脑

  三、实验内容:

  利用单片机IO口做输出,接发光二极管,编写程序,使发光二极管按照要求点亮。

  四、实验原理:

  1.LPC1114一共有42个GPIO,分为4个端口,P0、P1、P2口都是12位的宽度,引脚从Px。0~Px.11,P3口是6位的宽度,引脚从P3。0~P3.5.引脚的内部构造如图所示。其中Rpu为上拉电阻、Rpd为下拉电阻。

  2.为了节省芯片的空间和引脚的数目,LPC1100系列微处理器的大多数引脚都采用功能复用方式,用户在使用某个外设的时候,要先设置引脚。控制引脚设置的寄存器称之为IO配置寄存器,每个端口管脚PIOn_m都分配一个了一个IO配置寄存器IOCON_PIOn_m,以控制管脚功能和电气特性。

  3.IOCON_PIOn_m寄存器其位域定义如表所列。

  实验2GPIO实现LED流水灯

  位域

  符号

  描述

  选择管脚功能

  000:选择功能1

  2:0

  FUNC

  001:选择功能2(如果未定义功能2,则保留)010:选择功能3(如果未定义功能3,则保留)

  011:选择功能4(如果未定义功能4,则保留)

  100~111:保留

  选择功能模式(片内上拉/下拉电阻控制)

  00:无效模式(无上拉和下拉电阻被允许)

  4:3

  MODE01:允许下拉电阻

  10:允许上拉电阻

  11:中继模式

  滞后模式

  5

  HYS1:禁止

  0:允许

  6

  -

  保留,复位值为1

  选择模拟/数字模式(无AD功能,则保留,复位值为1)

  7

  ADMODE0:模拟输入模式

  1:数字功能模式

  选择为I2C模式

  00:标准I2C模式/快速I2C模式(默认)

  9:8I2CMODE01:标准I/O功能

  10:FM+I2C模式

  11:保留

  31:8

  -

  保留,复位值为0

  4.各引脚IOCON寄存器的位[2:0]配置不同的值所相应功能。

  实验2GPIO实现LED流水灯

  5.GPIO寄存器

  GPIO数据寄存器用于读取输入管脚的状态数据,或配置输出管脚的输出状态,表5-5对GPIOnDATA寄存器位进行描述。

  位

  符号

  访问

  描述

  11:031:12

  DATA-

  实验2GPIO实现LED流水灯

  R/W

  管脚PIOn_0~PIOn_11输入数据(读)或输出数据(写)

  -

  保留

  GPIO的数据方向的设置是通过对GPIOnDIR寄存器的位进行与或操作实现的,LPC1100微处理器和8051单片机的GPIO不同,在使用前一定要先设置数据方向才能使用,

  位

  符号

  访问

  值

  描述

  0

  11:0

  IO

  R/W

  1

  引脚PIOn_0~PIOn_11配置为输入引脚PIOn_0~PIOn_11配置为输出

  31:12

  —

  -

  -

  保留

  6.发光二级管的工作电压和工作电流如何?_______________________________________________________________________________________________________________________________________________________________________________________________________________________________。7.发光二极管的限流电阻如何计算?__________________________________________________________________________。

  五、实验原理图:

  实验2GPIO实现LED流水灯

  六、实验步骤:

  一、基本要求1、默写发光二极管闪烁程序。二、扩展要求1.查找关于呼吸灯的资料,弄懂呼吸灯工作原理。2。自行编写呼吸灯代码,在实验板子上面验证。

  七、程序框图:

  八、供参考程序:

  /**************************************************************

  ***********/

  #include"LPC11XX.H”

  //头文件

  #defineLED1_ON()(LPC_GPIO1—〉DATA&=~(1〈〈0))//点亮连接到P1。0的LED

  #defineLED1_OFF()(LPC_GPIO1-〉DATA|=(1<〈0))

  //熄灭连接到P1.0的LED

  #defineLED2_ON()(LPC_GPIO1-〉DATA&=~(1〈<1))//点亮连接到P1。1的LED

  #defineLED2_OFF()(LPC_GPIO1—>DATA|=(1〈〈1))

  //熄灭连接到P1.1的LED

  /********************************************************

  ******************

  *FunctionName:Delay()

  *Description:延时函数

  *EntryParameter:None

  *ReturnValue:None

  ***********************************************************

  ***************/

  voidDelay()

  {

  uint16_ti,j;

  实验2GPIO实现LED流水灯

  for(i=0;i〈5000;i++)for(j=0;j<200;j++);

  }/**************************************************************************

  *FunctionName:LedInit()*Description:初始化LED引脚*EntryParameter:None*ReturnValue:None**************************************************************************/voidLedInit(void){

  

篇三:gpio控制流水灯实验报告总结

  实验四:GPIO输出控制实验

  一、实验目的1.掌握LPC21XX专用工程模板的使用;2.掌握EasyJTAG仿真器的安装和使用;3.能够在EasyARM21XX开发板上运行第一个程序(无操作系统);4.熟悉LPC2000系列ARM7微控制器的GPIO控制。二、实验设备硬件:PC机一台、EasyARM2103开发板一套软件:Windows98/XP/2000系统,ADS1.2集成开发环境三、实验内容

  控制EasyARM2103开发板上的LED闪烁形成流水灯效果。四、实验预习要求

  仔细阅读《EasyARM2103》手册第4章的内容,熟悉GIPO的设置。仔细阅读《EasyARM2103》第2章的内容,了解EasyARM2103开发板的硬件结构,注意LED灯的相关控制电路。仔细阅读《EasyARM2103》第3章的内容,了解ADS1.2集成开发环境、LPC2200专用工程模板、EasyJTAG仿真器的应用。五、实验原理如何在EasyARM2103上运行第一个程序。安装ADS1.2(PC)了解ADS1.2(PC)连接EasyJTAG仿真器和EasyARM2103开发板(硬件)安装EasyJTAG驱动程序(PC)添加工程模板(PC)用工程模板建立第一个工程(PC)仿真调试第一个工程(PC+硬件)说明:(PC)----------------属于在PC机上操作,即软件的操作(硬件)--------------属于开发板硬件操作(PC+硬件)--------属于在PC机上进行软件操作,硬件上要连接或跳线操作六、实验步骤1.连接EasyJTAG仿真器和EasyARM2103开发板,然后安装EasyJTAG仿真器的驱动程序(若已经安装过,此步省略)。2.为ADS1.2增加LPC2103专用工程模板(若已增加过,此步省略)。3.启动ADS1.2,使用ARMExecutableImageforlpc2103工程模板建立一个工程BeepCon_C。4.建立C源文件BeepCon.c,编写实验程序,然后添加到工程的user组中。5.选用DebugInRAM生成目标,如图3.9所示,然后编译连接工程。

  图3.9选择生成目标

  6.将EasyARM2103开发板上的JP4跳线短接。

  7.选择【Project】->【Debug】,启动AXD进行JTAG仿真调试。

  8.全速运行程序,程序将会在beepcon.c的主函数中停止(因为main函数起始处默认设置

  有断点)。

  9.单击ContextVariable图标按钮(或者选择【ProcessorViews】->【Variables】)打开变量观

  察窗口,通过此窗口可以观察局部变量和全局变量。选择【SystemViews】->【Debugger

  Internals】即可打开LPC2100系列ARM7微控制器的片内外设寄存器窗口。

  10.可以单步运行程序,可以设置/取消断点,或者全速运行程序,停止程序运行,观察变量

  的值,判断LED控制是否正确。

  11.实验结束后,在AXD中设置仿真器为片外RAM调试方式的设置,以便于后面实

  验的正确操作。、

  12.更改程序实现流水等的功能,一秒亮一盏灯,从左向右,一直循环。

  七、实验参考程序

  选择低速GPIO,控制LED灯闪烁,示例程序如程序清单4.1所示。此示例操作需要短接

  JP4的P0.17,输出控制LED1。

  程序清单4.1GPIO控制LED闪烁

  #include"config.h"#defineLED11<<17

  /*P0.17控制LED1

  */

  /****************************************************************************

  **函数名称:DelayNS

  **功能描述:延时函数

  **入口参数:uiDly值越大,延时时间越长

  **出口参数:无

  ****************************************************************************/

  voidDelayNS(uint32uiDly)

  {

  uint32i;

  for(;uiDly>0;uiDly--){

  for(i=0;i<50000;i++);

  }

  /***************************************************************************/

  **函数名称:main

  **功能描述:跳线JP4短接,LED1闪烁

  **入口参数:无

  **出口参数:无

  ****************************************************************************/

  intmain(void)

  {

  PINSEL1=PINSEL1&(~(0x03<<2));

  /*将P0.17设置为GPIO*/

  IO0DIR=LED1;

  /*设置LED控制口为输出*/

  IO0SET=LED1;

  /*LED1熄灭

  */

  while(1){

  IO0SET=LED1;

  /*LED1熄灭

  */

  DelayNS(50);

  /*延时

  */

  IO0CLR=LED1;

  /*LED1点亮

  */

  DelayNS(50);

  /*延时

  */

  }

  return0;

  }

  3.4.8思考

  为什么这个实验的工程不需要设置连接地址?(提示:LPC2200专用工程模板已集成了起

  动代码、编译选项和连接地址设置等等)

  在实验参考程序中,如何控制蜂鸣器报警的速度?

  在LPC2000系列ARM7微控制器中,有哪两个管脚作GPIO输出时需要外接上拉电阻?

  

  

篇四:gpio控制流水灯实验报告总结

  修改源程序实现修改源程序实现修改源程序实现ledledled的各种不同移动闪烁效果的各种不同移动闪烁效果的各种不同移动闪烁效果lpclpclpc系列处理器系列处理器系列处理器gpiogpiogpio口的原理口的原理口的原理pinselxpinselxpinselx管脚功能选择寄存器管脚功能选择寄存器管脚功能选择寄存器iopiniopiniopinxgpiogpiogpio引脚值寄存器引脚值寄存器引脚值寄存器iosetiosetiosetxgpiogpiogpio输出置位寄存器输出置位寄存器输出置位寄存器iodiriodiriodirxgpiogpiogpio方向控制寄存器方向控制寄存器方向控制寄存器ioclrioclrioclrxgpiogpiogpio输出清零寄存器输出清零寄存器输出清零寄存器222实验电路原理图实验电路原理图实验电路原理图实验电路的连接如下图实验电路的连接如下图实验电路的连接如下图44个个个ledledled是利用是利用是利用lpc1368lpc1368lpc1368的gpiogpiogpio口的p114p114p114到到到p117p117p117来控制来控制来控制的

  控制流水灯流水灯实验实验1、GPIO控制流水灯实验

  【实验目的】实验目的】1、学习LPC系列处理器GPIO口的使用方法;2、学习用Keil软件开发ARM程序方法和步骤。3、理解基于ARM内核的LPC2368实验开发平台的管脚链接及原理。(实验原理图见文件夹下PROTEL文件夹)4、掌握使用J——LINK下载程序的方法。(驱动程序和使用手册见J—LINK仿真器文件夹)【实验要求】实验要求】1、了解LPC系列处理器GPIO口的功能原理;2、在Keil中设计ARM程序,实现对流水灯的控制;3、下载到实验平台,并成功运行。4、附加要求:修改源程序,实现LED的各种不同移动、闪烁效果【实验原理】实验原理】1、LPC系列处理器GPIO口的原理PINSEL(x)管脚功能选择寄存器

  IOPIN(x)GPIO引脚值寄存器IOSET(x)GPIO输出置位寄存器IODIR(x)GPIO方向控制寄存器

  IOCLR(x)GPIO输出清零寄存器2、实验电路原理图实验电路的连接如下图,4个LED是利用LPC1368的GPIO口的P1.14到P1.17来控制的。引脚输出高电平则LED点亮,输出低电平则LED熄灭(因为LED的另一端接地)。

  对管脚的操作实际上就是对控制管脚寄存器的操作,所以可以通过对管脚寄存器的操作,实现管脚的不同输出(即高低电平),从而控制LED的状态(亮、灭)。#include<LPC23xx.h>

  #definep14_17(0x0f<<14)

  //指定P1.14到p1.17口

  constunsignedcharLED[]={0x0e,0x0d,0x0b,0x07,0x0b,0x0d};//流水灯控制数组

  voidDelay(unsignedlongt){while(t--);}

  //延时函数

  intmain(){inti;IODIR1|=p14_17;//选择p14_17的方向为输出IOCLR1|=p14_17;//p14_17输出低电平,使所有的灯都灭while(1){for(i=0;i<6;i++){IOCLR1|=p14_17;//每次给p14_17赋值都要将管脚先清零,保证写入正确

  IOSET1=(LED[i]<<14);//将数组内容左移14位到p14_17口Delay(10000000);}}}//延时保证灯的状态停留一段时间,否则无闪烁效果

  

  

篇五:gpio控制流水灯实验报告总结

  实验三

  流水灯控制实验

  姓名专业通信工程学号成绩

  一、实验目的

  1.掌握KeilC51软件与protues软件联合仿真调试的方法;

  2.掌握如何使用程序与查表等方法实现流水效果;

  3.掌握按键去抖原理及处理方法。

  1、实验仪器与设备

  1.微机1台2.KeilC51集成开发环境3.Proteus

  仿真软件

  二、实验内容

  1.用Proteus设计一流水灯控制电路。利用P1口控制8个发光二级管L1—L8。P3.3口接

  一按键K1。参考电路如下图所示。其中74LS240为八反响三态缓冲器/线驱动器。

  2.用中断或查询方式编写程序,每按动一次K1键,演示不同的流水效果。若用KEY

  表示按键的次数,则其对应的流水效果如下:

  ①KEY=0:L1-L8全亮;

  ②KEY=1:L1-L8先全灭,然后自右向左单管点亮,如此循环;

  ③KEY=2:L1-L8先全灭,然后自右向左依次点亮,如此循环;

  ④KEY=3:L1-L8先全亮,然后自左向右依次熄灭,如此循环;

  ⑤KEY=4:L1-L8先全灭,然后整体闪烁,如此循环;

  ⑥KEY=5:自行设计效果。

  以上移位及闪烁时间间隔均设置为0.3秒,按动5次按键后,再按键时,流水效果从头

  开始循环。

  四、实验原理

  1.按键去抖原理:通常按键所用的开关为机械弹性开关,当机械触点断开、闭合时,电压信

  号波形如下图所示。由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定的

  接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动。

  抖动时间的长短由按键的机械特性决定,一般为

  5〜10ms按键抖

  动会引起一次按键被误读多次。为了确保CPU寸键的一次闭合仅做一次处理,必须去除

  按键抖动。在键闭合稳定时,读取键的状态,并且必须判别;在键释放稳定后,再作处

  理。按键的抖动,可用硬件或软件两种方法消除。

  常用软件方法去抖动,即

  检测到按键闭合后执行一个5〜10ms延时程序;让前沿抖动消失后,再一次检测键的状

  态,如果仍保持闭合状态电平,则确认为真正有按键按下。当检测到按键释放

  2.74LS240八反相三态缓冲器/线驱动器

  引脚排列图:

  3.中断原理:当某种内部或外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行

  的程序,转而去进行中断事件的处理,中断处理完毕后,又返回被中断的程序处,

  继续执行下去。每次按键是一次外部中断,按下按键后,CPU利用switchcase语句跳转

  到相应语句执行。

  五、实验步骤

  1.用Proteus设计流水灯控制电路;

  2.在KeilC51中编写流水灯控制程序,编译通过后,与Proteus联合调试;

  3.按动K1键,观察是否达到演示效果;

  4.试用中断和查询两种方式编写程序,比较二者区别。

  六、电路设计及调试

  1.实验电路

  2.程序设计与调试

  #include<reg51.h>

  #defineucharunsignedchar

  #defineuintunsignedint

  uchari=0,j,k,m,n;

  ucharcodetable1[]={0x00,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};//

  自右向

  左单个点亮二极管的代码

  ucharcodetable2[]={0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};//

  自右向

  左依次点亮二极管的代码

  ucharcodetable3[]={0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};//

  自左向

  右依次熄灭二极管的代码

  ucharcodetable4[]={0x00,0x03,0x06,0x0c,0x18,0x30,0x60,0xc0};//

  双灯循环右移

  voiddelay(uinta);

  voidINT_1()interrupt2

  {

  EX1=0;

  delay(20);

  EX1=1;

  i++;

  if(i==6)

  i=0;

  }

  voidmain()

  {

  EA=1;//打开总中断

  EX1=1;//打开外部中断1

  IT1=1;//设置中断触发方式为下降沿触发方式

  while(1)

  {

  switch(i)

  {

  case0:P1=0xff;

  break;

  case1:P1=table1[j];delay(500);j++;if(j==10)j=0;

  break;

  case2:P1=table2[k];delay(500);k++;if(k==10)k=0;

  break;

  case3:P1=table3[m];delay(500);m++;if(m==10)m=0;

  break;

  case4:P1=0x00;delay(300);P1=~P1;delay(300);

  break;

  case5:P1=table4[n];delay(500);n++;if(n==10)n=0;

  break;

  default:break;

  }

  }

  }

  voiddelay(uinta)

  {

  ucharb;

  for(a;a>0;a--)//循环600*255次机器在这里执行需要一段时间也就达到了延时

  效果

  for(b=255;b>0;b--);

  }

  在“Optionsfortarget”的“debug”里选中“ProteusVSMSimulator”并选择输出

  “hex”文件进行联合调试。分别进行全速调试与单步调试,看是否出现编程所想要实现的

  效果。

  3.实验结果按下不同的按键次数,执行不同的流水效果,自行设计效果为双灯循环右移。

  七、实验总结及问题

  通过本次流水灯控制实验,进一步掌握了KeilC51软件与proteus联合仿真调试的方法,

  逐步熟练了单步调试的方法。自己用中断方法完成了本次实验,也尝试用查询方法编写程序,知

  道中断方法是在有中断请求时

  

篇六:gpio控制流水灯实验报告总结

  流水灯实验报告

  实验目的1.了解单片机I/O口的工作原理。2.掌握51单片机的汇编指令。3.熟悉汇编程序开发,调试以及仿真环境。

  一、实验内容通过汇编指令对单片机I/O进行编程(本实验使用P0口),

  以控制八个发光二极管以一定顺序亮灭。(即流水灯效果)

  二、实验原理通过更改P0口8位的高低电平,分别控制8个发光二极管的

  亮灭。具体的亮灭情况如下表:

  P0口输出值十

  发光二极管亮灭情况

  六进制

  P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7

  0xFE

  亮灭灭灭灭灭灭灭

  0xFD

  灭亮灭灭灭灭灭灭

  0xFB

  灭灭亮灭灭灭灭灭

  0xF7

  灭灭灭亮灭灭灭灭

  0xEF0xDF0xBF0x7F

  灭灭灭灭亮灭灭灭灭灭灭灭灭亮灭灭灭灭灭灭灭灭亮灭灭灭灭灭灭灭灭亮

  要实现“流水灯”效果,也就是需要将P0口的输出值发生以下变化:

  FE→FD→FB→F7→EF→DF→BF→7F→BF→DF→EF→F7→FB→FD→FE→......

  可以使用一个循环,不断对数据进行移位运算实现。这里的移位指令采用RL和RR,即不带进位的位移运算指令。如果使用带进位的位移运算指令(RLC和RRC),则需要定期把CY置0,否则会出现同时亮起两个发光二极管的情况。

  三、实验过程

  1.在仿真系统中绘制好单片机的电路图

  2.编写汇编程序,程序如下:

  ORGSJMPStart:MOV

  0000H

  MOVDelay:

  Start

  MOVDelay1:

  A,

  Delay2:NOP

  R0,#0FFHR1,#0FFH

  MOV

  #0FEHP0,A

  CLR

  P2.7

  CLRMove:MOV

  MOVRMove:RL

  MOVCALLDJNZ

  LMove:RRMOVCALLDJNZ

  SJMP

  P3.7R2,#7HR3,#7HAP0,ADelayR2,RMoveAP0,ADelayR3,LMoveMove

  DJNZ

  DJNZ

  RETEND

  R1,Delay2R0,Delay1

  四、实验结果为了便于实验结果的描述,下面分别把P0.0,P0.1…,P0.7对

  应的发光二极管编号为1,2,…,8号二极管。在仿真系统中,先从1号二极管下面是在仿真系统中的实验结

  果:

  1.只有1号二极管点亮2.只有2号二极管点亮

  3.只有3号二极管点亮4.只有4号二极管点亮

  5.只有5号二极管点亮6.只有6号二极管点亮

  7.只有7号二极管点亮8.只有8号二极管点亮实验的结果:二极管的发光状态从1→2→3→4→5→6→7→8

  →7→…→1→2;如此往复循环。

  五、实验总结与分析1.经过这次实验,不难总结出开发单片机程序的方法。第一步:根据需求连接好单片机;第二步:在仿真系统中,使用汇编指令写好单片机的程序;第三步:在仿真系统中对程序进行测试;第四步:把程序下载到单片机中,并观察程序运行结果;如果程序运行不正确,则根据现象分析程序错误之处。改正以后重新下载观察运行结果。

  2.对单片机的悬空针脚进行相应处理:悬空针脚接上高电平。

  

  

篇七:gpio控制流水灯实验报告总结

  自己用中断方法完成了本次实验也尝试用查询方法编写程序知道中断方法是在有中断请求时cpu再去处理之前可一直忙于其他事情而查

  流水灯控制实验报告及程序

  实验三流水灯控制实验姓名专业通信工程学号成绩一、实验目的1.掌握KeilC51软件与protues软件联合仿真调试的方法;2.掌握如何使用程序与查表等方法实现流水效果;3.掌握按键去抖原理及处理方法。1、实验仪器与设备1.微机1台2.KeilC51集成开发环境3.Proteus仿真软件二、实验内容1.用Proteus设计一流水灯控制电路。利用P1口控制8个发光二级管L1—L8。P3.3口接一按键K1。参考电路如下图所示。其中

  74LS240为八反响三态缓冲器/线驱动器。2.用中断或查询方式编写程序,每按动一次K1键,演示不同的流水效果。若用KEY表示按键的次数,则其对应的流水效果如下:①KEY=0:L1-L8全亮;②KEY=1:L1-L8先全灭,然后自右向左单管点亮,如此循环;③KEY=2:L1-L8先全灭,然后自右向左依次点亮,如此循环;④KEY=3:L1-L8先全亮,然后自左向右依次熄灭,如此循环;⑤KEY=4:L1-L8先全灭,然后整体闪烁,如此循环;

  ⑥KEY=5:自行设计效果。以上移位及闪烁时间间隔均设置为0.3秒,按动5次按键后,再按键时,流水效果从头开始循环。四、实验原理1.按键去抖原理:通常按键所用的开关为机械弹性开关,当机械触点断开、闭合时,电压信号波形如下图所示。由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定的接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动。抖动时间的长短由按键的机械特性决定,一般为5?10ms按键抖动会引起一次按键被误读多次。为了确保CPU寸键的一次闭合仅做一次处理,必须去除按键抖动。在键闭合稳定时,读取键的状态,并且必须判别;在键释放稳定后,再作处理。按键的抖动,可用硬件或软件两种方法消除。常用软件方法去抖动,即检测到按键闭合后执行一个5?10ms延时程序;让前沿抖动消失后,再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有按键按下。当检测到按键释放2.74LS240八反相三态缓冲器/线驱动器引脚排列图:3.中断原理:当某种内部或外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理,中断处理完毕后,又返回被中断的程序处,继续执行下去。每次按键是一次外部中断,按下按键后,CPU利用switchcase语句跳转到相应语句执行。五、实验步骤1.用Proteus设计流水灯控制电路;2.在KeilC51中编写流水灯控制程序,编译通过后,与Proteus联合调试;3.按动K1键,观察是否达到演示效果;

  4.试用中断和查询两种方式编写程序,比较二者区别。

  六、电路设计及调试

  1.实验电路

  2.程序设计与调试

  #include

  #defineucharunsignedchar

  #defineuintunsignedint

  uchari=0,j,k,m,n;

  uchar

  code

  table1[]={0x00,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};//自右

  向左单个点亮二极管的代码

  uchar

  code

  table2[]={0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};//自右向

  左依次点亮二极管的代码

  uchar

  code

  table3[]={0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};//自左向

  右依次熄灭二极管的代码

  uchar

  code

  table4[]={0x00,0x03,0x06,0x0c,0x18,0x30,0x60,0xc0};//双灯循环

  右移voiddelay(uinta);

  voidINT_1()interrupt2

  {

  EX1=0;

  delay(20);

  EX1=1;

  i++;

  if(i==6)

  i=0;

  }

  voidmain()

  {EA=1;//打开总中断EX1=1;//打开外部中断1IT1=1;//设置中断触发方式为下降沿触发方式while(1){switch(i){case0:P1=0xff;break;case1:P1=table1[j];delay(500);j++;if(j==10)j=0;break;case2:P1=table2[k];delay(500);k++;if(k==10)k=0;break;case3:P1=table3[m];delay(500);m++;if(m==10)m=0;break;case4:P1=0x00;delay(300);P1=~P1;delay(300);break;case5:P1=table4[n];delay(500);n++;if(n==10)n=0;break;default:break;}}}voiddelay(uinta){ucharb;for(a;a>0;a--)//循环600*255次机器在这里执行需要一段时间也就达到了延时效果for(b=255;b>0;b--);

  }在“Optionsfortarget”的“debug”里选中“ProteusVSMSimulator”并选择输出“hex”文件进行联合调试。分别进行全速调试与单步调试,看是否出现编程所想要实现的效果。3.实验结果按下不同的按键次数,执行不同的流水效果,自行设计效果为双灯循环右移。七、实验总结及问题通过本次流水灯控制实验,进一步掌握了KeilC51软件与proteus联合仿真调试的方法,逐步熟练了单步调试的方法。自己用中断方法完成了本次实验,也尝试用查询方法编写程序,知道中断方法是在有中断请求时CPU再去处理,之前可一直忙于其他事情,而查询方法需一直查询标志位,CPU不能做其他事情,中断方法效率要比查询方式高而且较简单。第一次用按键控制电路,学习了按键的去抖原理及使用方法。在实验中,会出现未知效果,总体看来原因不明,只要进行单步调试就可找到问题所在。思考:如果不进行去抖处理,CPU可能会误判,按下后认为按键松开,多次执行相应程序,得不到想要的控制效果。

  

  

篇八: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读取外部按键状态,按键按下一次产生一次外部中断在中断处理函数中使按键所对应的灯亮起。

  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_CNT=模块入口时钟72MHz;当TIMx_PSC=1时表示不分频,则TIM5定时器的时钟用CK_CNT=模块入口时钟36MHz;以此类推。公式为:CK_CNT=fCK_PSC/(PSC[15:0]+1),其中PSC最大为65535。其次是TIM5计数器计数值的设置,TIM5计数器以CK_CNT为时钟计数,向下计数到0或向上计数到设定值(TIMx_ARR)则产生中断。以向上计数为例,从0开始计数到设定值TIMx_ARR时产生中断。要产生一秒一次中断则要使计数器的值乘以预分频的值=系统时钟72MHz,其中计数器的值和预分频值都必须小于65535。我们使预分频值为7200,计数器值为10000,则7200*10000=72,000,000即72M。其中拆分方法很多35000*2000=72,000,000,只要注意计数器的值和预分频值都必须小于65535即可。当计数值溢出后,会改变计数溢出标志位,并产生定时器中断,实验中使用其产生中断来进行LED灯翻转。

  3.3程序分析

  LED初始化部分与实验一相同,完成初始化后,点亮所有LED灯。定时器配置函数为TIM5_Init()(见附录6)。配置函数首先使能计数器时钟:

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5,ENABLE);

  .-

  然后自动装载计数值,计数从0开始:TIM_TimeBaseStructure.TIM_Period=(100-1);再对计时器进行预分频系数设置:TIM_TimeBaseStructure.TIM_Prescaler=(7200-1);并将计数器设置为向上计数:TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;最后写入计时器配置寄存器,完成配置:TIM_TimeBaseInit(TIM5,&TIM_TimeBaseStructure)。配置完成后,还要对计数器溢出标志位进行清零,并打开溢出中断,使能计数器以开始计数。

  TIM_ClearITPendingBit(TIM5,TIM_IT_Update);TIM_ITConfig(TIM5,TIM_IT_Update,ENABLE);TIM_Cmd(TIM5,ENABLE)。定时器配置完成并使能后,计数器开始工作,当到达预设的计数值之后,产生中断信号。系统在进行相关配置后可以响应定时器产生的中断,中断配置函数为NVIC_Configuration()(见附录7)。函数首先将中断向量表首地址置于0x08000000:NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x0000);然后使能TIM5中断:NVIC_InitStructure.NVIC_IRQChannel=TIM5_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;最后将配置参数写入中断控制寄存器,完成配置:NVIC_Init(&NVIC_InitStructure)。一旦中断产生,系统会对中断产生响应,暂停所有正在执行的低优先级任务且将任务信息和数据压入对应对战区,并进入中断服务函数TIM5_IRQHandler()(见附录8)中进行处理。在中断服务函数中判断并清除了中断标志位,以便定时器下一次计数中断产生。函数中调用了LED_Spark()函数(见附录9),实现了LED的闪烁。程序流程图如下:

  .-

  硬件连接方式如下图所示:

  .-

  实验四、按键中断控制LED灯定时闪烁

  4.1实验要求

  综合实验一、二、三,利用STM32读取外部按键状态,按键按下一次产生一次外部中断在中断处理函数中使按键所对应的灯闪烁,闪烁间隔通过定时器定时控制。其中,SKEY1控制LED1以1S为间隔,闪烁3次,SKEY2控制LED2以2S为间隔闪烁3次,SKEY3控制LED3以3S为间隔,闪烁3次。

  4.2原理分析

  实验需要用到STM32的GPIO输入输出操作,GPIO外部中断和内部定时器中断。在以上三个实验中,对各个部分都已经进行过详尽的解释,这里不再赘述。

  此实验需要将以上实验做综合,并对时序进行调整。难点为,对GPIO外部中断和定时器内部中断的处理,即如何确定两种不同中断的优先级。

  这里的使用的方法是,将所有按键外部中断置于中断分组2,即NVIC_PriorityGroup_2中。将所有按键中断抢占优先级置为0,即最高级别中断,响应优先级置分别置为1、2、3,相互区别。将定时器中断抢占优先级置为1,相应优先级社会中低于按键中断,使其可以被按键信号中断计时,并刷新LED闪烁状态。

  4.3程序分析

  这在程序初始化阶段,分别对LED、按键外部中断和定时器中断进行初始化。主函数如下:

  intmain(void){

  /*LED初始化*/LED_config();

  /*LED闪烁¸*/Led_Turn_on_all();Delay(3000000);Led_Turn_off_all();Delay(3000000);Led_Turn_on_all();Delay(3000000);Led_Turn_off_all();Delay(3000000);Led_Turn_on_all();Delay(3000000);Led_Turn_off_all();

  /*按键初始化*/GPIO_KEY_Config();

  /*按键外部中断初始化*/KEY_EXIT_Init();

  /*外部中断向量初始化*/

  .-

  InterruptConfig();/*定时器5初始化*/TIM5_Init();/*定时器中断初始化*/NVIC_Configuration();/*等待中断触发*/while(1){}}初始化完成后,等待中断触发。一旦按键按下,触发外部中断,则进入外部中断服务函数,函数中将判断哪一个按键被按下,记录按下的按键,然后给定时器清零并开始计数,且清零外部中断标志位。

  

  

篇九:gpio控制流水灯实验报告总结

  篇一:单片机实验报告——流水灯电子信息工程学系实验报告课程名称:单片机原理及接口验2流水灯实验时间:2011-10-21蔡松亮学号:910706247一、实验目的:进一步熟悉keil仿真软件、proteus仿真软件的使用。了解并熟悉单片机i/o口和led灯的电路结构,学会构建简单的流水灯电路。掌握c51中单片机i/o口的编程方法和使用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口的位结构作输出时:输出0时,将0输出到内部总线上,在写锁存器信号控制下写入锁存器,锁存器的反向输出端输出1,下面的场效应管导通,输出引脚成低电平。输出1时,下面的场效应管截止,上面的上拉电阻使输出为1。作输入时:p1端口引脚信号通过一个输入三态缓冲器接入内部总线,再读引脚信号控制下,引脚电平出现在内部总线上。i/o口的注意事项,如果单片机内部有程序存贮器,不需要扩展外部存贮器和i/o接口,单片机的四个口均可作i/o口使用;四个口在作输入口使用时,均应先对其写“1”,以避免误读;p0口作i/o口使用时应外接10k的上拉电阻,其它口则可不必;p2可某几根线作地址使用时,剩下的线不能作i/o口线使用;p3口的某些口线作第二功能时,剩下的口线可以单独作i/o口线使用。三、实验环境:硬件:pc机,基本配置cpupii以上,内存2g软件:keil2,proteus7.5四、实验内容及过程:1、用proteus画流水灯电路图流程:1)、运行proteus实验项目名称:实班级:电信092姓名:

  仿真软件,单击pickfromlibraries,打开搜索元器件窗口,如图1所示:图1打开搜索元器件窗口2)、搜索添加元器件,如图2所示:图2搜索添加元器件窗口3)、添加元器件,修改元器件的参数,绘制流水灯原理图,元器件参数为c1=c2=20pf、c3=10uf;r1=r2=r3=r4=r5=r6=r7=r8=470欧姆、r9=10k欧姆;晶振=12m;vcc=5v。总电路图如图3所示:图3流水灯电路原理图2、用keil建项目流程:1)、运行keil2软件,启动后,点击project菜单新建项目,新建项目后,选择为at89c51的仿真单片机的型号,单击file选择new新建程序文件,保存后,右击sourcegroup1添加入程序文件。2)、编写程序,右击target1打开设置输出hex窗口,如图4所示:图4打开设置输出hex窗口3)、设置输出hex文件,勾选上output下的createhexfi:,单击确定保存,运行程序得到hex文件,如图5所示:图5设置输出hex文件3、实验内容:1)、8个led灯从新建keil文件,编写程序,程

  最高位依次点亮,每次只亮一盏灯,依此循环。序如下:

  #include&lt;reg52.h&gt;#include&lt;intrins.h&gt;#defineuintunsignedint#defineucharunsignedcharvoiddefay(uintz){uintx,y;for(x=100;x&gt;0;x--)main(){temp=0xfe;p2=temp;while(1){for(y=z;y&gt;0;y--);}uchartemp;void

  temp=_crol_(temp,1);defay(500);p2=temp;}}2)、编写程序使8个led灯从两边向中间循环点亮。编写程序,程序如下:uchartemp,m,n;uinti;voidmain(){m=0xfe;n=0x7f;while(1){p2=m&amp;n;m=_crol_(m,1);n=_cror_(n,1);if(m==0xef){m=0xfe;n=0x7f;}}3)、编写程序使用一根或二根i/o线接一开关控制流水灯流向。编写程序,程序如下:sbitvoidmain(){defay(500);}{if{temp=_crol_(temp,1);defay(500);}if(p15==0){temp=_cror_(temp,1);defay(500);}p2=temp;}}五、实验心得:通过本次的实验,熟悉keil仿真软件、proteus仿真软件的使用。了解并熟悉单片机i/o口和led灯篇二:51单片机流水灯实验报告51单片机流水灯试验一、实验目的1.了解51单片机的引脚结构。2.根据所学汇编语言编写代码实现led灯的流水功能。(p15==1)temp=0xfe;p2=temp;while(1)p15=p1^5;

  3.利用开发板下载hex文件后验证功能。二、实验器材个人电脑,80c51单片机,开发板三、实验原理单片机流水的实质是单片机各引脚在规定的时间逐个上电,使led灯能逐个亮起来但过了该引脚通电的时间后便灭灯的过程,实验中使用了单片机的p2端口,对8个led灯进行控制,要实现逐个亮灯即将p2的各端口逐一置零,中间使用时间间隔隔开各灯的亮灭。使用rl或rra实现位的转换。a寄存器的位经过rra之后转换如下所示:然后将a寄存器转换一次便送给p2即movp2,a便将转换后的数送到了p2口,不断循环下去,便实现了逐位置一操作。四、实验电路图五、通过仿真实验正确性代码如下:org0mova,#00000001bloop:movp2,arlaacalldelaysjmploopdelay:movr1,#255del2:movr2,#250del1:djnzr2,del1djnzr1,del2retend实验结果:六、实验总结这次试验我通过proteus仿真实现对流水灯功能的实现。受益匪浅,对80c51的功能和结构有了深层次的了解,我深刻的明白,要想完全了解c51还有一定距离,但我会一如既往的同困难作斗争。在实验中,我遇到了不少困难,比如不知道怎么将程序写进单片机中,写好程序的却总出错,不知道什么原因,原来没有生成hex文件。这些错误令我明白以后在试验中要步步细心,避免出错。篇三:流水灯单片机课程设计报告

  井冈山大学机电工程学院单片机课程设计报告课程名称:单片机设计题目:流水灯姓名:覃家应陈东阳学专业:生物医学工程班工本一班号:100615062指导教师:王佑湖2012年11月10日目录1言„„„„„„„„„„„„„„„„„„„„„„..21.1务„„„„„„„„„„„„„„„.„„„.2求„„„„„„„„„„„„„„„„„„述„„„„„„„„„„„„„„„„„„„„.2源„„„„„„„„„„„„„„„„„..2题„„„„„„„„„„„„„„„„„析„„„„„„„„„„„„„„„„„„„„.22.2面对的问23系统分1.2设计要..22课题综2.1课题的来设计任引级:10级医

  3.189c52单片机引脚图及引脚功能介绍„„„„„„„24系统设计„„„„„„„„„„„„„„„„„„„„.44.1硬件设计„„„„„„„„„„„„„„„„„„...44.1.1硬件框图„„„„„„„„„„„„„„„„..44.1.2硬件详细设计„„„„„„„„„„„„„„..54.2软件设计„„„„„„„„„„„„„„„..............54.3硬件原理图„„„„„„„„„„„„„„„„„..64.4元件清单„„„„„„„„„„„„„„„„„„..6

  4.5硬件焊接图„„„„„„„„„„„„„„„„„..64.6写„„„„„„„„„„„„„„„„„„..75会„„„„„„„„„„„„„„„„„„„„...76谢„„„„„„„„„„„„„„„„„„„„„„..8参献„„„„„„„„„„„„„„„„„„„„.....81引言单片机课程设计主要是为了让我们增进对89c52单片机电路的感性认识,加深对理论方面的理解。了解软硬件的有关知识,并掌握软硬件设计过程、方法及实现,为以后设计和实现应用系统打下良好基础。另外,通过简单课题的设计练习,使我们了解必须提交的各项工程文件,达到巩固、充实和综合运用所学知识解决实际问题的目的。1.1设计任务设计一个单片机控制的流水灯系统1.2设计要求(1)至少8个灯;(2)可实现不同的亮灯(如左循环,右循环,间隔闪等)。2课题综述2.1课题的来源当今社会,这种由单片机芯片控制各种硬件工作的技术也日益成熟,并普及在交通、化工、机械等各个领域。而流水灯这项技术在生活中的应用更是广泛,较为贴近生活。而流水灯控制的设计所需要的知识也正好吻合了我们本学期对于单片机这门课程的学习,所以设计流水灯控制的这个课题让我们对知识的学习和巩固都有了进一步的加深。2.2面对的问题这次课程设计是通过89c52位单片机实现。但面对的问题却是两方面的:一个是软件的设计,也就是实现流水灯控制功能的程序编辑;另一个是硬件的设计,需要我们自己连接、焊接电路板。而更为严峻的就是设计的最后还要将软硬件相结合。首先我们需要通过protel将设计的实物的电路图画出来,再根据电路图连接实物电路。3系统分析3.189c52单片机引脚图及引脚功能介绍本次设计的目的在于加深89c52单片机的理解,首先来简单认识一下,它的引脚如图3-1所示:图考文致心得体代码编

  3.189c52单片机的引脚大致可分为4类:电源、时钟、控制和i/o引脚。1.电源:(1)vcc:芯片电源,接+5v;(2)vss:接地端;2.时钟:xtal1、xtal2:晶体振荡电路反相输入端和输出端。3.控制线:控制线共有4根,(1)ale/prog:地址锁存允许/片内eprom编程脉冲ale功能:用来锁存p0口送出的低8位地址prog功能:片内有eprom的芯片,在eprom编程期间,此引脚输入编程脉冲。(2)psen:外rom读选通信号。(3)rst/vpd:复位/备用电源。rst(reset)功能:复位信号输入端。vpd功能:在vcc掉电情况下,接备用电源。(4)ea/vpp:内外rom选择/片内eprom编程电源。ea功能:内外rom选择端。vpp功能:片内有eprom的芯片,在eprom编程期间,施加编程电源vpp。4.i/o线89c52共有4个8位并行i/o端口:p0、p1、p2、p3口,共32个引脚。篇四:单片机流水灯实验报告单片机流水灯实验报告一、实验目的1、at89s52-ⅰ型开发板的使用方法和注意事项。2、了解简单单片机应用系统的设计方法。3、掌握应用keil软件编辑、编译源汇编程序的操作方法。熟练掌握

  4、usbisp烧录软件的操作方法。

  掌握应用

  5、帮助学生养成良好实验习惯。二、实验内容在at89s52-ⅰ开发板上实现8个发光led“流水”的现象,并通过编写程序控制流水现象。三、实验说明当8255的pa口有低电平输出时,相应的发光二极管就会点亮。应用这一原理我们可以容易的点亮一个数码管,例如令pa口输出01111111时d1就会点亮。若再把01111111向右循环一位,利用pa口输出,就会点亮d2。在发光二极管两次点亮的间隔中加延时程序,让每次点亮停留一段时间,像这样人眼就可以看到“流水”的现象。五、实验原理图六、实验参考程序#include&lt;reg52.h&gt;#defineunsignedchar#defineuintunsignedintuchartable[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};sbitp00=p0^0;sbitp01=p0^1;voiddelay(uchart){uchari,j;for(i=0;i&lt;t;i++)for(j=0;j&lt;110;j++);}voidmain(){uchari;while(1){p00=1;delay(200);p00=0;uchar

  for(i=0;i&lt;8;i++){p1=table[i];p2=table[i];delay(200);}p01=1;delay(200);p01=0;}}实物展示:(1)单片机最小系统板(2)自己焊制的集成最小系统板(3

  )自己制作的心形流水灯实验板(4)系统板与实验板的连接展示篇五:单片机并口简单应用(流水灯)实验报告实验一单片机并口简单应用(流水灯)一、实验目的1、了解单片机汇编语言程序的基本结构2、了解单片机汇编语言程序的设计和调试方法3、掌握顺序控制程序的简单编程二、实验仪器单片机开发板、万利仿真机、稳压电源、计算机三、实验原理1、流水灯硬件电路如图4-1所示,流水灯硬件电路由移位寄存器74ls164、功能选择开关j502、二极管、三极管、单片机并口(p0)、

  限流电阻等组成。发光二极管连接成共阳极结构。发光二极管点亮的条件是:阳极接高电平、各阴极接低电平。因此,通过程序控制74ls164的q0端。q0端输出0,公共端阳极就接成高电平,然后再按一定规则从p0口输出数据,发光二极管就会点亮。图4-1流水灯电路图2、单片机流水灯程序设计由上图可知,发光二极管要点亮,需要先把j502的2、3脚相连,三极管q500导通,然后从p0口输出数据。(1)控制三极管导通程序控制三极管有两种方法,第一种:在74ls164的第8脚产生一个正脉冲,此时1脚为0,三极管就导通;为1,三极管就截止。第二种:在单片机io模拟74ls164时序,一次输出一个字节,只要q0=0即可控制三极管开通。为1,三极管截止。两种方法的程序流程如图4-2所示。图4-2流水灯位选信号控制(2)产生流水灯效果程序三极管导通后,就可以从p0口输出数据控制发光二极管。p0口输出数据既可以编写程序逐个输出,也可以将输出数据序列定义在存储器中,然后用读程序存储器指令逐个取出并输出到p0口。程序流程图如图4-3所示。图4-3流水灯程序流程图四、实验内容1、直接输出法输出数据序列五、实验步骤及调试信息1、新建实验项目hua2、输入实验程序并补充完整程序如下:#include&lt;reg51.h&gt;#defineuint

  unsignedintsbitclk=p3^4;sbitdin=p2^3;uintnum;uintcodetable[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};voiddelay(uintz){uinti,j;for(i=z;i&gt;0;i--)for(j=100;j&gt;0;j--);}voidmain(){din=0;clk=0;*/delay(5);/*74ls164的第8脚,产生一个正脉冲*/clk=1;1脚为0,三极管就导通*/clk=0;*/while(1){for(num=0;num&lt;8;num++){p0=table[num--];delay(500);}}}3、编译下载实验程序,全速运行实验现象:全速运行程序,指示灯从第一个开始亮,8个指示灯依次亮了以后。指示灯就没有规律的几盏一起亮,原因是/**/delay(5);/*/*此时在/*

  for(num=0;num&lt;8;num++){p0=table[num--];程序运行到num=0时,递减以后就为0ffh,此时程序的取值是任意的,修改如下:

  for(num=0;num&lt;8;num++){p0=table[num];实验现象:全速运行程序,指示灯从第一个开始亮,8个指示灯依次亮起。4、整理实验设备六、实验现象指示灯从左到右逐一变亮。七、实验心得通过本次的实验,我对单片机的基本使用和程序的编写有了初步的了解,但是在实验过程中对程序的编写还不够熟练,仍然需要继续学习。八、思考题1、请把学号后两位数进转换成二进制数,然后依次点亮其中为1对应的二极管,写出输出序列。例如,60号转换成二进制后是00111100b,依次点亮四个1对应的二极管,输出序列是0dfh,0efh,0f7h,0fch.(从低位到高位也可以)答:31号(00011111b)输出序列是0efh,0f7h,0fch.ofbh,0fah.2、参考实验内容2,编写程序把输出序列增加到30个。

  

  

篇十:gpio控制流水灯实验报告总结

  db05h0ah50h0a0h55h0aah0ffh0hend四实验功能以实验机上74ls273做输出口接八只发光二极管编写程序使开机后第一秒钟l1l3亮第二秒钟l2l4亮第三秒钟l5l7亮第四秒钟l6l8亮第五秒钟l1l3l5l7亮第六秒钟l2l4l6l8亮第七秒钟八个二极管全亮第八秒钟全灭以后又从头开始l1l3亮然后l2l4亮

  流水灯实习报告

  一、实验原理单片机通过P0口连接锁存器74ls273,P0同时作为低八位地址,实验板内P2口连接74ls138,任意一个输出连接74ls273片选,再将74ls273接八个LED灯,通过软件控制对74ls273送入显示数据就可以按要求显示了。二、硬件原理图三、实验程序ORG00HAJMPSTARTORG001BHAJMPINTORG0100HSTART:MOVSP,#60HMOVTMOD,#10HMOVTL1,#00HMOVTH1,#4CHMOVR0,#00HMOVR1,#20SETBTR1SETBET1SETBEA

  1/4

  SJMP$INT:PUSHACCPUSHPSWPUSHDPLPUSHDPHCLRTR1MOVTL1,#B0HMOVTH1,#3CHSETBTR1DJNZR1,EXITMOVR1,#20MOVDPTR,#DATAMOVA,R0MOVCA,@A+DPTRMOVDPTR,#8000HMovx@DPTR,AINCR0ANL00,#07HEXIT:POPDPH

  2/4

  POPDPL

  POPPSW

  POPACC

  RETI

  DATA:

  DB05H,0AH,50H,0A0H,55H,0AAH,0FFH,0H

  END

  四、实验功能

  以实验机上74LS273做输出口,接八只发光二极管,编写程序,使开机后第一秒钟L1,L3亮,第二秒钟L2,L4亮,第三秒钟L5,L7亮,第四秒钟L6,L8亮,第五秒钟L1,L3,L5,L7亮,第六秒钟L2,L4,L6,L8亮,第七秒钟八个二极管全亮,第八秒钟全灭,以后又从头开始,L1,L3亮,然后L2,L4亮……一直循环下去.

  五、实验总结

  通过这次课程设计,我拓宽了知识面,锻炼了能力,综合素质得到较大提高。而安排课程设计的基本目的,是在于通过理论与实际的结合、人与人的沟通,进一步提高思想觉悟和领悟力。

  尤其是观察、分析和解决问题的实际工作能力。它的一个重要功能,在于运用学习成果,检验学习成果。运用学习成果,把课堂上学到的系统化的理论知识,尝试性地应用于实际设计工作,并从理论的高度对设计工作的现代化提出一些有针对性的建议和设想。检验学习成果,看一看课堂学习与实际工作到底有多大距离,并通过综合分析,找出学习中存在的不足,以便为完善学习计划,改变学习内容与方法提供实践依据。实际能力的培养至关重要,而这种实际能力的培养单靠课堂教学是远远不够的,必须从课堂走向实践。这也是一次预演和准备毕业设计工作。通过课程设计,让我们找出自身状况与实际需要的差距,并在以后的学习期间及时补充相关知识,为求职与正式工作做好充分的知识、能力准备,从而缩短从校园走向社会的心理转型期。课程设计促进了我

  3/4

  系人才培养计划的完善和课程设置的调整。课程设计之后,我们普遍感到不仅实际动手说,这应该是个警示,在剩下的大学生活里,我应该好好珍惜,好好学习各方面的知识。在单片机方面也是了解了一些些,我相信这次课程设计会对我以后的工作通过这次单片机课程设计,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。创新可以是在原有的基础上进行改进,使之功能不断完善,成为自己的东西。

  4/4

  

  

篇十一:gpio控制流水灯实验报告总结

 姓名专业通信工程学号

  成绩

  一、实验目的

  1.掌握KeilC51软件与Protues软件联合仿真调试的方法;

  2.掌握如何使用程序与查表等方法实现流水效果;

  3.掌握按键去抖原理及处理方法。

  二、实验仪器与设备

  1.微机1台2.KeilC51

  集成开发环境3.Proteus仿真软件

  、实验内容

  1.用Proteus设计一流水灯控制电路。利用接一按键K1。P1参考口电控路制8个发光二级管L1—L8。口

  如下图所示。其中器。

  74LS240为八反响三态缓冲器/线驱动

  2.用中断或查询方式编写程序,每按动一次表示按键的次数,则其对

  应的流水效果如下:

  K1键,演示不同的流水效果。若用KEY

  ①

  ②KEY=OL1-L8全亮;

  ③KEY=1

  L1-L8先全灭,然后自右向左单管点亮,如此循环;先全

  ④KEY=2

  L1-L8灭,先全亮然,后自先右全向灭左,依次点亮,如此循环;然后

  ⑤KEY=3L1-L8

  自左向右依次熄灭,如此循环;然后整体

  ⑥KEY=4L1-L8

  闪烁,如此循环;

  KEY=5

  自行设计效果。

  以上移位及闪烁时间间隔均设置为秒,按动

  5次按键后,再按键时,流水效果从

  头开始循环。

  四、实验原理

  1.按键去抖原理:通常按键所用的开关为机械弹性开关,当机械触点断开、闭合时,电压信号波形

  如下图所示。由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定的接通,在断开

  时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动。抖动时间的长短由按

  键的机械特性决定,一般为

  5〜10ms

  按键抖动会引起一次按键被误读多次。为了确保CPU对键的一次闭合仅做一次处理,必须去除

  按键抖动。在键闭合稳定时,读取键的状态,并且必须判别;在键释放稳定后,再作处理。按

  键的抖动,可用硬件或软件两种方法消除。常用软件方法去抖动,即检测到按键闭合后执行一

  个5〜10ms延时程序;让前沿抖动消失后,再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有按键按下。当检测到按键释放后,也要给5〜10ms的延时,待后延抖动消失

  后,才能转入该键

  的

  处

  理

  程序。

  ■e

  m

  2.74LS240八反相三态缓冲器/线驱动器引脚排列图:

  3.中断原理:当某种内部或外部事件发生时,单片机的中断系统将迫使CPI暂停正在执行的程序,

  转而去进行中断事件的处理,中断处理完毕后,又返回被中断的程序处,继续执行下去。每次

  按键是一次外部中断,按下按键后,CPU利用switchcase语句跳转到相应语句执行。

  五、实验步骤

  1.用Proteus设计流水灯控制电路;

  2.在KeilC51中编写流水灯控制程序,编译通过后,与

  Proteus联合调试;

  3.按动K1键,观察是否达到演示效果;

  4.试用中断和查询两种方式编写程序,比较二者区别。

  电路设计及调试

  1.实验电路

  八2.程序设计与调试、#includeo

  #defineucharunsignedchar

  #defineuintunsignedintuchari=O,j,k,m,n;

  ucharcodetable1[]={0x00,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};//

  向左单个点亮二极管的代码

  ucharcodetable2[]={0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};//

  向左依次点亮二极管的代码

  自右

  ucharcodetable3[]={0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};//

  向右依次熄灭二极管的代码

  自右

  ucharcodetable4[]={0x00,0x03,0x06,0x0c,0x18,0x30,0x60,0xc0};//移

  voiddelay(uinta);

  自左

  voidINT_1()interrupt2

  {EX1=0;delay(20);EX1=1;i++;if(i==6)i=0;

  双灯循环右

  }

  voidmain()

  {

  EA=1;//打开总中断EX1=1;//打开外部中断1IT1=1;//设置中断触发方式为下降沿触发方式while(1){

  switch(i){

  case0:P1=0xff;break;

  case1:P1=table1[j];delay(500);j++;if(j==10)j=0;break;case2:P1=table2[k];delay(500);k++;if(k==10)k=0;break;case3:P1=table3[m];delay(500);m++;if(m==10)m=0;break;case4:P1=0x00;delay(300);P1=~P1;delay(300);break;case5:P1=table4[n];delay(500);n++;if(n==10)n=0;break;default:break;}}}voiddelay(uinta){ucharb;for(a;a>0;a--)//达到循环600*255次机器在这里执行需要一段时间也就了延时

  效果

  for(b=255;b>0;b--);

  在}出要实现的效果。

  3.“Optionsfortarget”的“debug”里选中“ProteusVSMSimulator”并选择输实验结“hex”文件进行联合调试。分别进行全速调试与单步调试,看是否出现编程所想

  果按下不同的按键次数,执行不同的流水效果,自行设计效果为双灯循环右移。七、实验总结及问题

  通过本次流水灯控制实验,进一步掌握了KeilC51软件与Proteus联合仿真调试的方法,逐步

  熟练了单步调试的方法。自己用中断方法完成了本次实验,也尝试用查询方法编写程序,知道中断方法

  

篇十二:gpio控制流水灯实验报告总结

 实验三

  流水灯控制实验

  姓名专业通信工程学号成绩

  一、实验目的

  1.掌握KeilC51软件与protues软件联合仿真调试的方法;

  2.掌握如何使用程序与查表等方法实现流水效果;

  3.掌握按键去抖原理及处理方法。

  【、实验仪器与设备

  1.微机1台2.KeilC51

  集成开发环境3.Proteus

  仿真软件

  =实验内容

  1.用Proteus设计一流水灯控制电路。利用P1口控制8个发光二级管L1—L8。P3.3口接

  一按键K1。参考电路如下图所示。其中74LS240为八反响三态缓冲器/线驱动器。

  2.用中断或查询方式编写程序,每按动一次K1键,演示不同的流水效果。若用KEY表

  示按键的次数,则其对应的流水效果如下:

  ①KEY=0:L1-L8全亮;

  ②KEY=1:L1-L8先全灭,然后自右向左单管点亮,如此循环;

  ③KEY=2:L1-L8先全灭,然后自右向左依次点亮,如此循环;

  ④KEY=3:L1-L8先全亮,然后自左向右依次熄灭,如此循环;

  ⑤KEY=4:L1-L8先全灭,然后整体闪烁,如此循环;

  ⑥KEY=5:自行设计效果。

  以上移位及闪烁时间间隔均设置为0.3秒,按动5次按键后,再按键时,流水效果从头

  开始循环。

  四、实验原理

  1.按键去抖原理:通常按键所用的开关为机械弹性开关,当机械触点断开、闭合时,电压信

  号波形如下图所示。由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定的

  接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动。

  抖动时间的长短由按键的机械特性决定,一般为

  5〜10ms按键抖

  动会引起一次按键被误读多次。为了确保CPU寸键的一次闭合仅做一次处理,必须

  去除按键抖动。在键闭合稳定时,读取键的状态,并且必须判别;在键释放稳定后,再

  作处理。按键的抖动,可用硬件或软件两种方法消除。常用软件方法去抖动,即检测到

  按键闭合后执行一个5〜10ms延时程序;让前沿抖动消失后,再一次检测键的状态,

  如果仍保持闭合状态电平,则确认为真正有按键按下。当检测到按键释放

  2.74LS240八反相三态缓冲器/线驱动器引脚排列图:

  后沿抖劫

  3.

  中断原理:当

  某种内部或外部事件发生时,单片机的中断系统将迫使

  CPU暂停正在

  执行的程序,转而去进行中断事件的处理,中断处理完毕后,又返回被中断的程序处,

  继续执行下去。每次按键是一次外部中断,按下按键后,

  CPU利用switchcase

  语句跳转到相应语句执行。

  五、实验步骤1.用Proteus设计流水灯控制电路;

  2.在KeilC51中编写流水灯控制程序,编译通过后,与Proteus联合调试;

  3.按动K1键,观察是否达到演示效果;

  4.试用中断和查询两种方式编写程序,比较二者区别。

  六、电路设计及调试1.实验电路

  2.程序设计与调试#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintuchari=0,j,k,m,n;ucharcodetable1[]={0x00,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};//

  自右向左

  单个点亮二极管的代码ucharcodetable2[]={0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};//

  自右向左

  依次点亮二极管的代码ucharcodetable3[]={0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};//

  自左向右

  依次熄灭二极管的代码ucharcodetable4[]={0x00,0x03,0x06,0x0c,0x18,0x30,0x60,0xc0};//双灯循环右移void

  delay(uinta);

  voidINT_1()interrupt2

  {

  EX1=0;delay(20);EX1=1;

  i++;if(i==6)i=0;

  }

  voidmain()

  {

  EA=1;//打开总中断EX1=1;//打开外部中断1

  IT1=1;//设置中断触发方式为下降沿触发方式

  while(1){

  switch(i){

  case0:P1=0xff;break;

  case1:P1=table1[j];delay(500);j++;if(j==10)j=0;break;

  case2:P1=table2[k];delay(500);k++;if(k==10)k=0;break;

  case3:P1=table3[m];delay(500);m++;if(m==10)m=0;break;

  case4:P1=0x00;delay(300);P1=~P1;delay(300);break;

  case5:P1=table4[n];delay(500);n++;if(n==10)n=0;break;

  default:break;}}

  }

  voiddelay(uinta)

  {

  ucharb;for(a;a>0;a--)//循环600*255次机器在这里执行需要一段时间也就达到了延时效果

  for(b=255;b>0;b--);

  }

  在“Optionsfortarget”的“debug”里选中“ProteusVSMSimulator”并选择输出“hex”文件进行联合调试。分别进行全速调试与单步调试,看是否出现编程所想要实现

  的效果。3.实验结果按下不同的按键次数,执行不同的流水效果,自行设计效果为双灯循环右移。七、实验总结及问题

  通过本次流水灯控制实验,进一步掌握了KeilC51软件与proteus联合仿真调试的方法,逐步熟练了单步调试的方法。自己用中断方法完成了本次实验,也尝试用查询方法编写程序,知道中断方法是在有中断请求时CPU再去处理,之前可一直忙于其他事情,而查询方法需一直查询标志位,CPU不能做其他事情,中断方法效率要比查询方式高而且较简单。第一次用按键控制电路,学习了按键的去抖原理及使用方法。

  

篇十三:gpio控制流水灯实验报告总结

 文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.

  嵌入式流水灯实验心得体会

  篇一:嵌入式流水灯实验实验三GPIO输出控制实验一、实验目的熟悉LPCXX系列ARM7微控制器的GPIO输入控制。二、实验设备?硬件:PC机一台LPC2131教学实验开发平台一套?软件:Windows98/XP/XX系统,集成开发环境。三、实验内容1.管脚控制EasyARM教学实验开发平台上的蜂鸣器报

  警。2.GPIO输出实验-流水灯实验实验预习要求:LPCXXGPIO管脚的设置和控制。四、实验原理输出实验,蜂鸣器控制在EasyARM2131开发板上,接有一个蜂鸣器,由控

  制,通过跳线JP11选择连接。蜂鸣器控制电路如所示。图3-1蜂鸣器控制电路

  如果跳线JP11选择蜂鸣器,当输出低电平时,蜂鸣器鸣叫,当输出高电平则停止鸣叫。程序设置PINSEL0使

  1文档收集于互联网,已整理,word版本可编辑.

  文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.

  连接GPIO,并通过IO0DIR将其设置为输出状态,然后通过IO0CLR和IO0SET清零和置位口,控制蜂鸣器,流程图见图3-2。

  图3-2蜂鸣器控制实验流程图2.GPIO输出实验-流水灯实验单路LED控制EasyARM2131开发板上有8个独立的LED,分别由8个GPIO口控制,现在使用其中一路进行实验,使用的电路如图3-3所示。图3-3单路LED电路图当跳线JP12连接LED1时,采用灌电流方式驱动LED1,当输出低电平时,LED1点亮,当输出高电平时,LED1熄灭。实验程序首先设置管脚连接GPIO,接着设置口为输出模式,然后通过IO1CLR和IO1SET控制,驱动LED1的亮灭。GPIO输出实验-流水灯实验EasyARM2131开发板上的8路LED(LED8~LED1)分别可选择P1[25:18]进行控制,电路如图3-4所示。

  图3-48路LED控制电路当跳线JP12全部选择LED8~LED1后,~分别控制这8路LED,就可以进行流水灯实验。流水灯显示花样可以通过数组人为定义,亦可通过一定的算法计算,程序清单所

  2文档收集于互联网,已整理,word版本可编辑.

  文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.

  示为采用人为定义数组控制显示花样的实验程序,流程图如图3-5所示。

  图3-5流水灯花样显示流程图五、实验步骤实验内容1步骤①启动集成开发环境,选择ARMExecutableImageforlpc2131工程模板建立一个工程BeepCon_C。②在user组里编写主程序代码。③将EasyARM教学实验开发平台上的管脚与Beep跳线短接。④选择Project->Debug,启动AXD进行JLINK仿真调试。在工程窗口中选择DebugInRAM生成目标,然后编译连接工程(单击Make按钮)。如图所示。选择DebugInRAM生成目标时,编译连接生成的目标代码就是用于在片内RAM调试。打开ADS开发环境下的【Edit】->【DebugInFLASHSettings...】,在”ARMfromELF”下Outputformat做如图选择,输出文件选择你的文件同一目录下,扩展名’.HEX’

  ⑥全速运行程序,程序将会在的主函数中停止(因为main函数起始处默认设置有断点)。

  ⑦单击ContextVariable图标按钮(或者选择ProcessorViews->Variables)打开变量观察窗口,通过此

  3文档收集于互联网,已整理,word版本可编辑.

  文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.

  窗口可以观察局部变量和全局变量。选择SystemViews->DebuggerInternals即可打开LPCXX系列ARM7微控制器的片内外寄存器窗口。

  ⑧可以单步运行程序,可以设置/取消断点;或者全速运行程序,停止程序运行,观察变量的值,判断蜂鸣器控制是否正确。

  在FLASH中调试在工程窗口中选择DebugInFLASH生成目标,然后编

  译连接工程(单击Make按钮)。选择DebugInFLASH生成目标时,编译连接生成的目标代码就是用于在片内FLASH调试。编译连接通过后,按键盘的F5键,启动AXD进行调试。注意,由于程序要烧写到片内FLASH,默认选项在每次装载FLASH地址的调试文件时,将会擦除FLASH并下载代码到FLASH中。

  篇二:嵌入式系统与单片机流水灯实验报告中南大学嵌入式系统与单片机实验报告学生姓名学号专业班级

  指导教师学院信息科学与工程学院完成时间XX年5月

  [实验名称]

  4文档收集于互联网,已整理,word版本可编辑.

  文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.

  单片机流水灯。[实验目的]

  进一步熟悉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的内部功能器件配合使用。

  

篇十四:gpio控制流水灯实验报告总结

 课程实验报告

  学院:姓名班级

  专业:学号指导老师

  2018年10月18日

  课程名称嵌入式系统原理与应用实验

  成

  实验名称GPIO输出-流水灯

  绩

  1.实验目的

  通过一个经典的跑马灯程序,了解STM32F1的IO口作为输出使用的方

  法。通过代码控制开发板上的4个LED灯交替闪烁,实现类似跑马灯的效果。

  2.实验内容

  工程文件建立、程序的调试,编译、jlink驱动的安装与配置、程序下载、实验结果验证。

  4.实验方法和步骤(含设计)(1)实验硬件连接图

  四个led灯如图连接到GPIO的6~9引脚上。

  (2)软件分析使用到的GPIO端口需配置为输出模式,使用推挽(PP)模式输出,IO口

  速度为50MHz。(3)实验步骤

  ①建立工程文件:导入程序运行需要的库,加入主程序,调试运行环境,使程序可以成功被编译和运行且没有错误和警告。

  ②安装JLINK驱动程序,点击下载按钮将程序烧写进开发板中。③检查led灯是否逐一顺序点亮,能够通过调整程序使点亮顺序改变。(4)原函数

  3.实验环境Windouws10KeiluVision5

  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日

  教师签名:年月日

  

  

篇十五:gpio控制流水灯实验报告总结

 实验二

  一、实验目的:

  1.正确安装keil软件

  IO口实现LED灯闪烁

  2.正确安装调试驱动,熟悉实验板的用法3.学习IO口的使用方法。

  二、实验设备:

  单片机开发板、学生自带笔记本电脑

  三、实验内容:

  利用单片机IO口做输出,接发光二极管,编写程序,使发光二极管按照要求点亮。

  四、实验原理:

  1.LPC1114一共有42个GPIO,分为4个端口,P0、P1、P2口都是12位的宽度,引脚从Px.0~Px.11,P3口是6位的宽度,引脚从P3.0~P3.5。引脚的内部构造如图所示。其中Rpu为上拉电阻、Rpd为下拉电阻。

  2.为了节省芯片的空间和引脚的数目,LPC1100系列微处理器的大多数引脚都采用功能复用方式,用户在使用某个外设的时候,要先设置引脚。控制引脚设置的寄存器

  称之为IO配置寄存器,每个端口管脚PIOn_m都分配一个了一个IO配置寄存器IOCON_PIOn_m,以控制管脚功能和电气特性。3.IOCON_PIOn_m寄存器其位域定义如表所列。

  位域符号描述

  选择管脚功能000:选择功能1001:选择功能2(如果未定义功能2,则保留)2:0FUNC010:选择功能3(如果未定义功能3,则保留)011:选择功能4(如果未定义功能4,则保留)100~111:保留

  选择功能模式(片内上拉/下拉电阻控制)00:无效模式(无上拉和下拉电阻被允许)4:3MODE01:允许下拉电阻10:允许上拉电阻11:中继模式

  滞后模式5HYS1:禁止0:允许

  6

  -

  保留,复位值为1

  选择模拟/数字模式(无AD功能,则保留,复位值为1)7ADMODE0:模拟输入模式1:数字功能模式

  选择为I2C模式9:8I2CMODE00:标准I2C模式/快速I2C模式(默认)01:标准I/O功能

  10:FM+I2C模式11:保留

  31:8

  -

  保留,复位值为0

  4.各引脚IOCON寄存器的位[2:0]配置不同的值所相应功能。

  5.GPIO寄存器GPIO数据寄存器用于读取输入管脚的状态数据,或配置输出管脚的输出状态,表5-5对GPIOnDATA寄存器位进行描述。

  位11:031:12

  符号DATA-

  访问R/W-

  描述管脚PIOn_0~PIOn_11输入数据(读)或输出数据(写)保留

  GPIO的数据方向的设置是通过对GPIOnDIR寄存器的位进行与或操作实现的,LPC1100微处理器和8051单片机的GPIO不同,在使用前一定要先设置数据方向才能使用,

  位符号访问值011:0IOR/W131:12引脚PIOn_0~PIOn_11配置为输出保留描述引脚PIOn_0~PIOn_11配置为输入

  6.发光二级管的工作电压和工作电流如何?_______________________________________________________________________________________________________________________________________________________________________________________________________________________________。7.发光二极管的限流电阻如何计算?__________________________________________________________________________。

  五、实验原理图:

  六、实验步骤:

  一、基本要求1、默写发光二极管闪烁程序。二、扩展要求1.查找关于呼吸灯的资料,弄懂呼吸灯工作原理。2.自行编写呼吸灯代码,在实验板子上面验证。

  七、程序框图:八、供参考程序:

  /*************************************************************************/#include"LPC11XX.H"//头文件#defineLED1_ON()(LPC_GPIO1->DATA&=~(1<<0))//点亮连接到P1.0的LED#defineLED1_OFF()(LPC_GPIO1->DATA|=(1<<0))//熄灭连接到P1.0的LED#defineLED2_ON()(LPC_GPIO1->DATA&=~(1<<1))//点亮连接到P1.1的LED#defineLED2_OFF()(LPC_GPIO1->DATA|=(1<<1))//熄灭连接到P1.1的LED/***************************************************************************FunctionName:Delay()*Description:延时函数*EntryParameter:None*ReturnValue:None**************************************************************************/voidDelay()

  {uint16_ti,j;for(i=0;i<5000;i++)for(j=0;j<200;j++);}/***************************************************************************FunctionName:LedInit()*Description:初始化LED引脚*EntryParameter:None*ReturnValue:None**************************************************************************/voidLedInit(void){LPC_SYSCON->SYSAHBCLKCTRL|=(1<<16);//使能IOCON时钟LPC_IOCON->R_PIO1_0&=~0x07;LPC_IOCON->R_PIO1_0|=0x01;//把P1.0脚设置为GPIOLPC_IOCON->R_PIO1_1&=~0x07;LPC_IOCON->R_PIO1_1|=0x01;//把P1.1脚设置为GPIOLPC_SYSCON->SYSAHBCLKCTRL&=~(1<<16);//禁能IOCON时钟LPC_GPIO1->DIR|=(1<<0);//把P1.0设置为输出引脚LPC_GPIO1->DATA|=(1<<0);//把P1.0设置为高电平LPC_GPIO1->DIR|=(1<<1);//把P1.1设置为输出引脚LPC_GPIO1->DATA|=(1<<1);//把P1.1设置为高电平}/***************************************************************************FunctionName:main()*Description:主函数*EntryParameter:None*ReturnValue:None**********************************************************************/intmain(void){LedInit();while(1){Delay();LED1_ON();LED2_OFF();Delay();LED1_OFF();LED2_ON();}}

  

  

篇十六:gpio控制流水灯实验报告总结

 实验四GPIO输入实验

  一、实验目的

  1、能够使用GPIO的输入模式读取开关信号。

  2、掌握GPIO相关寄存器的用法和设置。

  3、掌握用C语言编写程序控制GPIO。

  二、实验环境

  PC机一台

  ADS1.2集成开发环境一套

  EasyARM2131教学实验平台一套

  三、实验内容

  1.实验通过跳线JP8连接KEY1与P0.16,程序检测按键KEY1的状态,控制蜂鸣

  器BEEP的鸣叫。按下KEY1,蜂鸣器鸣叫,松开后停止蜂鸣。(调通实验后,改为KEY3键进行输入)。

  2.当检测到KEY1有按键输入时点亮发光二极管LED4并控制蜂鸣器响,软件延时

  后关掉发光管并停止蜂鸣,然后循环这一过程直到检测按键没有输入。(键输入改为键KEY4,发光管改为LED6)。

  3.结合实验三,当按下按键Key1时,启动跑马灯程序并控制蜂鸣器响,软件延时

  后关掉发光管并停止蜂鸣,然后循环这一过程直到检测按键再次按下。

  四、实验原理

  当P0口用于GPIO输入时(如按键输入),内部无上拉电阻,需要加上拉电阻,电路图参见图4.2。

  进行GPIO输入实验时,先要设置IODIR使接口线成为输入方式,然后读取IOPIN的值即可。

  图4.2按键电路原理图

  实验通过跳线JP8连接KEY1_P0.16,程序检测按键KEY1的状态,控制蜂鸣器BEEP的鸣叫。按下KEY1,蜂鸣器鸣叫,松开后停止蜂鸣。

  在这个实验中,需要将按键KEY1输入口P0.16设为输入口而蜂鸣器控制口P0.7设置为输出口。蜂鸣器电路如图4.3所示,当跳线JP6连接蜂鸣器时,P0.7控制蜂鸣器,低电平时蜂鸣器鸣叫。LED灯电路如图4.4所示,低电平时灯亮。

  图4.3蜂鸣器控制电路

  图4.4LED控制电路

  程序首先设置管脚连接寄存器PINSEL0和PINSEL1,设置P0.16为输入,设置P0.7,P1.21为输出。然后检测端口P0.16的电平,对P0.7,P1.21进行相应的控制,流程图如图4.5所示,实现程序见程序清单4.1。

  图4.5按键输入实验流程图

  五、实验步骤、源代码及调试结果

  内容1

  实验步骤

  ①启动ADS1.2IDE集成开发环境,选择ARMExecutableImageforlpc2131工

  程模板建立一个工程BEEP_key。

  ②在user组里编写主程序代码main.c。

  ③选用DebugInFLASH生成目标,然后编译链接工程。

  ④将EasyARM教学实验开发平台上的相应管脚跳线短接。

  ⑤选择Project->Debug,启动AXD进行JLINK仿真调试。

  ⑥全速运行程序,程序将会在main.c的主函数中停止。如下图所示:

  ⑦单击ContextVariable图标按钮(或者选择ProcessorViews->Variables)打

  开变量观察窗口,通过此窗口可以观察局部变量和全局变量。选择SystemViews->DebuggerInternals即可打开LPC2000系列ARM7微控制器的片内外寄存器窗口。

  通过变量窗口可以观察变量BEEP、KEY1等的值和ARM7微控制器的片内外寄存器窗口。如下图所示:

  ⑧可以单步运行程序,先按下Key1,观察IO0PIN寄存器的值,然后断开Key1,观察IO0PIN寄存器的值。可以设置/取消断点;或者全速运行程序,停止程

  序运行,观察变量的值,判断蜂鸣器控制是否正确。如下图所示:

  图4.6未按下Key1时IO0PIN的值图4.7按下Key1时IO0PIN的值

  由上两图可知,当按下Key1时,IO0PIN寄存器的第16位由1变为0(F变为E),key1与P0.16相连,按下Key1时,P0.16管脚输出电平由1变为0,寄存器值变化,蜂鸣器响,说明控制是正确的。

  现象描述:按下KEY1,蜂鸣器鸣叫,松开后停止蜂鸣。

  源代码:

  #include"config.h"

  constuint32BEEP=1<<7;//P0.7控制蜂鸣器

  constuint32KEY1=1<<16;//P0.16连接KEY1

  (改为KEY3时,只需“constuint32KEY1=1<<16”改为“constuint32KEY3=1<<18”,其余不变。)

  /*******************************************************************************************

  **函数名称:main()

  **函数功能:GPIO输入实验测试。

  **检测按键KEY1。KEY1按下,蜂鸣器蜂鸣,松开后停止蜂鸣。

  **跳线说明:把JP8的KEY1跳线短接,JP11连接蜂鸣器。

  *******************************************************************************************/

  intmain(void)

  {PINSEL0=0x00000000;//所有管脚连接GPIO

  PINSEL1=0x00000000;

  IO0DIR=BEEP;//蜂鸣器控制口输出,其余输入

  while(1)

  {if((IO0PIN&KEY1)==0)IO0CLR=BEEP;//如果KEY1按下,蜂鸣器鸣叫

  elseIO0SET=BEEP;//松开则停止蜂鸣

  }

  return0;

  }

  内容二

  实验步骤

  ①启动ADS1.2IDE集成开发环境,选择ARMExecutableImageforlpc2131工

  程模板建立一个工程BEEP_key。

  ②在user组里编写主程序代码main.c。

  ③选用DebugInFLASH生成目标,然后编译链接工程。

  ④将EasyARM教学实验开发平台上的相应管脚跳线短接。

  ⑤选择Project->Debug,启动AXD进行JLINK仿真调试。

  ⑥全速运行程序,程序将会在main.c的主函数中停止。如下图所示:

  ⑦单击ContextVariable图标按钮(或者选择ProcessorViews->Variables)打开变量观察窗口,通过此窗口可以观察局部变量和全局变量。选择SystemViews->DebuggerInternals即可打开LPC2000系列ARM7微控制器的片内外寄存器窗口。

  通过变量窗口可以观察变量BEEP、KEY1等全局变量、i等本地变量和ARM7微控制器的片内外寄存器窗口。如下图所示:

  左图所示为ARM7微控制器的片内

  寄存器窗口。

  图4.9本地变量

  图4.8全局变量

  ⑧可以单步运行程序,先按下Key1,观察IO0PIN寄存器的值,然后断开Key1,观察IO0PIN寄存器的值。可以设置/取消断点;或者全速运行程序,停止程序运行,观察变量的值,判断蜂鸣器控制是否正确。如下图所示:

  .

  图4.10未按下KEY1时IO0PIN的值

  图4.11按下KEY1后IO0PIN的值

  对比图4.10和4.11,发现按下KEY1后,IO0PIN寄存器的第16位由1变为0;而KEY1对应管脚P0.16,当按下时输入低电平,这说明KEY1的控制是正确的。

  上图所示为运行“IO0CLR=BEEP”后IO0PIN寄存器的值,与图4.10对比,发现第8位由1变为0,BEEP对应P0.7管脚,这说明BEEP的控制是对的。

  现象描述:当按下KEY1时,蜂鸣器鸣响,LED4亮;当松开KEY1后,蜂鸣器静音,LED4灭。

  源代码如下:

  #include"config.h"

  constuint32BEEP=1<<7;//P0.7控制蜂鸣器

  constuint32KEY1=1<<16;//P0.16连接KEY1

  (改为KEY4按键时,只需把上句代码改为“constuint32KEY4=1<<19”,其余不变)

  constuint32LEDS4=1<<21;//P1[21]控制LED4,低电平点亮

  (改为LED6时,只需把上句代码改为“constuint32LED6=1<<23”,其余不变。)

  /***************************************************************************

  **函数名称:main()

  **函数功能:GPIO输入实验测试。

  **检测按键KEY1。KEY1按下,蜂鸣器蜂鸣,松开后停止蜂鸣。

  **跳线说明:把JP8的KEY1跳线短接,JP11连接蜂鸣器。

  *******************************************************************************************/

  intmain(void)

  {

  Uint32i;

  PINSEL0=0x00000000;//所有管脚连接GPIOPINSEL1=0x00000000;

  IO0DIR=BEEP;//蜂鸣器控制口输出0

  IO1DIR=LEDS4;//设置LED4灯亮

  while(1)

  {if((IO0PIN&KEY1)==0)

  for(i=0;i<1000;i++);//软件延时

  {

  IO0CLR=BEEP;//如果KEY1按下,蜂鸣器鸣叫IO1DCLR=LEDS4;//设置LED4灯亮

  }

  else

  {

  IO0SET=BEEP;//松开则停止蜂鸣

  IO1SET=LEDS4;//设置LED4灯灭

  }

  for(i=0;i<1000;i++);//软件延时

  }

  return0;

  }

  内容三

  实验步骤

  ①启动ADS1.2IDE集成开发环境,选择ARMExecutableImageforlpc2131工

  程模板建立一个工程BEEP_key。

  ②在user组里编写主程序代码main.c。

  ③选用DebugInFLASH生成目标,然后编译链接工程。

  ④将EasyARM教学实验开发平台上的相应管脚跳线短接。

  ⑤选择Project->Debug,启动AXD进行JLINK仿真调试。

  ⑥全速运行程序,程序将会在main.c的主函数中停止。如下图所示:

  ⑦单击ContextVariable图标按钮(或者选择ProcessorViews->Variables)打

  开变量观察窗口,通过此窗口可以观察局部变量和全局变量。选择System

  Views->DebuggerInternals即可打开LPC2000系列ARM7微控制器的片内

  外寄存器窗口。

  通过变量窗口可以观察变量BEEP、KEY1等的值和ARM7微控制器的片内外寄存器窗口。如下图所示:

  ⑧可以单步运行程序,先按下Key1,观察IO0PIN寄存器的值,然后断开Key1,

  观察IO0PIN寄存器的值。可以设置/取消断点;或者全速运行程序,停止程

  序运行,观察变量的值,判断蜂鸣器控制

  是否正确。如下图所示:

  图4.12未按下Key1时IO0PIN的值图4.13按下Key1时IO0PIN的值

  由上两图可知,当按下Key1时,IO0PIN寄存器的第16位由1变为0(F变为E),key1与P0.16相连,按下Key1时,P0.16管脚输出电平由1变为0,寄存器值变化,蜂鸣器响,流水灯亮,说明控制是正确的。

  现象描述:当按下按键KEY1时,蜂鸣器鸣响,流水灯亮;松开后,蜂鸣器静音,流水灯灭。

  源代码如下:

  #include"config.h"

  constuint32BEEP=1<<7;//P0.7控制蜂鸣器

  constuint32KEY=1<<16;//P0.16连接KEY1

  constuint32LEDS8=0xFF<<18;//P1[25:18]控制LED8~LED1,低电平点亮

  voidDelayNS(uint32dly)

  {uint32i;

  for(;dly>0;dly--)

  {

  for(i=0;i<50000;i++);

  }

  }

  /*******************************************************************************************

  **函数名称:liushuideng()

  **函数功能:流水灯显示实验。

  **调试说明:连接跳线JP12至LED8~LED1。

  *******************************************************************************************/

  /*流水灯花样,低电平点亮,注意调用时候用了取反操作*/

  constuint32LED_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//从两边叠加后递减

  };

  intliushuideng(void)

  {uint8i;

  PINSEL1=0x00000000;//设置管脚连接GPIO

  IO1DIR=LEDS8;//设置LED控制口为输出

  while(1)

  {

  for(i=0;i<42;i++)

  {/*流水灯花样显示*/

  IO1SET=~((LED_TBL[i])<<18);

  DelayNS(20);

  IO1CLR=((LED_TBL[i])<<18);

  DelayNS(20);

  }

  }

  return0;

  }

  //主函数

  intmain(void)

  {

  uint32i;

  PINSEL0=0x00000000;//所有管脚连接GPIOPINSEL1=0x00000000;

  IO0DIR=BEEP;//蜂鸣器控制口输出0

  while(1)

  {if((IO0PIN&KEY)==0)

  {for(i=0;i<1000;i++);//软件延时{

  IO0CLR=BEEP;//如果KEY按下,蜂鸣器鸣叫liushuideng();

  }

  }

  else

  {

  IO0SET=BEEP;//松开则停止蜂鸣

  IO1SET=LEDS8;

  }

  for(i=0;i<100;i++);//软件延时

  }

  return0;

  }

  六、思考题

  1、如果将P0.30设置为GPIO输入模式,且管脚悬空,那么读取P0.30得到的值是0还是1?或者是不确定?

  当管脚悬空时,该管脚有可能是高电平也有可能是低电平。读取IO0PIN的值并不能确定管教的值。有时管脚是高电平,读取到的不一定是高电平。

  2、如果需要读取当前P0.7的输出值(不是管脚上的电平),如何实现?

  将该管脚与一个LED连接,若LED亮,则输出值为0,否则为1.

  

篇十七:gpio控制流水灯实验报告总结

 流水灯控制实验报告及程序

  文件排版存档编号:[UYTR-OUPT28-KBNTL98-UYNN208]

  实验三

  流水灯控制实验

  姓名专业通信工程学号成绩一、实验目的

  1.掌握KeilC51软件与protues软件联合仿真调试的方法;2.掌握如何使用程序与查表等方法实现流水效果;3.掌握按键去抖原理及处理方法。二、实验仪器与设备1.微机1台2.KeilC51集成开发环境3.Proteus仿真软件三、实验内容1.用Proteus设计一流水灯控制电路。利用P1口控制8个发光二级管L1—

  L8。口接一按键K1。参考电路如下图所示。其中74LS240为八反响三态缓冲器/线驱动器。2.用中断或查询方式编写程序,每按动一次K1键,演示不同的流水效果。若用KEY表示按键的次数,则其对应的流水效果如下:①KEY=0:L1-L8全亮;②KEY=1:L1-L8先全灭,然后自右向左单管点亮,如此循环;③KEY=2:L1-L8先全灭,然后自右向左依次点亮,如此循环;④KEY=3:L1-L8先全亮,然后自左向右依次熄灭,如此循环;⑤KEY=4:L1-L8先全灭,然后整体闪烁,如此循环;⑥KEY=5:自行设计效果。以上移位及闪烁时间间隔均设置为秒,按动5次按键后,再按键时,流水效果从头开始循环。

  四、实验原理1.按键去抖原理:通常按键所用的开关为机械弹性开关,当机械触点断开、闭合时,电压信号波形如下图所示。由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定的接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动。抖动时间的长短由按键的机械特性决定,一般为5~10ms。按键抖动会引起一次按键被误读多次。为了确保CPU对键的一次闭合仅做一次处理,必须去除按键抖动。在键闭合稳定时,读取键的状态,并且必须判别;在键释放稳定后,再作处理。按键的抖动,可用硬件或软件两种方法消除。常用软件方法去抖动,即检测到按键闭合后执行一个5~10ms延时程序;让前沿抖动消失后,再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有按键按下。当检测到按键释放后,也要给5~10ms的延时,待后延抖动消失后,才能转入该键的处理程序。

  2.74LS240:八反相三态缓冲器/线驱动器引脚排列图:

  3.中断原理:当某种内部或外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理,中断处理完毕后,又返回被中断的程序处,继续执行下去。每次按键是一次外部中断,按

  下按键后,CPU利用switchcase语句跳转到相应语句执行。五、实验步骤

  1.用Proteus设计流水灯控制电路;2.在KeilC51中编写流水灯控制程序,编译通过后,与Proteus联合调试;3.按动K1键,观察是否达到演示效果;4.试用中断和查询两种方式编写程序,比较二者区别。六、电路设计及调试1.实验电路2.程序设计与调试#include<>#defineucharunsignedchar#defineuintunsignedintuchari=0,j,k,m,n;ucharcodetable1[]={0x00,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};//自右向左单个点亮二极管的代码ucharcodetable2[]={0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};//自右向左依次点亮二极管的代码

  ucharcodetable3[]={0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};//自左向右依次熄灭二极管的代码ucharcodetable4[]={0x00,0x03,0x06,0x0c,0x18,0x30,0x60,0xc0};//双灯循环右移voiddelay(uinta);voidINT_1()interrupt2{

  EX1=0;delay(20);EX1=1;i++;

  if(i==6)i=0;}voidmain(){EA=1;//打开总中断EX1=1;//打开外部中断1IT1=1;//设置中断触发方式为下降沿触发方式while(1){

  switch(i){

  case0:P1=0xff;break;

  case1:P1=table1[j];delay(500);j++;if(j==10)j=0;break;

  case2:P1=table2[k];delay(500);k++;if(k==10)k=0;break;

  case3:P1=table3[m];delay(500);m++;if(m==10)m=0;break;

  case4:P1=0x00;delay(300);P1=~P1;delay(300);break;

  case5:P1=table4[n];delay(500);n++;if(n==10)n=0;break;

  default:break;}}}voiddelay(uinta){ucharb;

  for(a;a>0;a--)//循环600*255次机器在这里执行需要一段时间也就达到了延时效果

  for(b=255;b>0;b--);}在“Optionsfortarget”的“debug”里选中“ProteusVSMSimulator”并选择输出“hex”文件进行联合调试。分别进行全速调试与单步调试,看是否出现编程所想要实现的效果。3.实验结果

  按下不同的按键次数,执行不同的流水效果,自行设计效果为双灯循环右移。七、实验总结及问题通过本次流水灯控制实验,进一步掌握了KeilC51软件与proteus联合仿真调试的方法,逐步熟练了单步调试的方法。自己用中断方法完成了本次实验,也尝试用查询方法编写程序,知道中断方法是在有中断请求时CPU再去处理,之前可一直忙于其他事情,而查询方法需一直查询标志位,CPU不能做其他事情,中断方法效率要比查询方式高而且较简单。第一次用按键控制电路,学习了按键的去抖原理及使用方法。在实验中,会出现未知效果,总体看来原因不明,只要进行单步调试就可找到问题所在。思考:如果不进行去抖处理,CPU可能会误判,按下后认为按键松开,多次执行相应程序,得不到想要的控制效果。

  

  

篇十八:gpio控制流水灯实验报告总结

 3.实验环境WindouwslOKeiluVision5

  课程实验报告

  学院:___________________专业:______________2018年10月18日

  姓名

  学号

  班级

  指导老师

  课程名称嵌入式系统原理与应用实验

  成

  实验名称GPIO输出-流水灯

  绩

  1.实验目的

  通过一个经典的跑马灯程序,了解STM32F1的10口作为输出使用的方法。

  通过代码控制开发板上的4个LED灯交替闪烁,实现类似跑马灯的效果。

  2.实验内容

  工程文件建立、程序的调试,编译、jlink驱动的安装与配置、程序下载、实验结果验证。

  4.实验方法和步骤(含设计)

  上。

  (1)实验硬件连接图

  四个led灯如图连接到GPIO的6~9引脚

  (2)软件分析

  使用到的GPIO端口需配置为输出模式,推挽(PP)模式输出,I0口速度为50MHz(3)实验步骤

  ①建立工程文件:导入程序运行需要的库,加入主程序,调试运行环境,使程序可以成功被编译和运行且没有错误和警告。②安装JLINK驱动程序,点击下载按钮将程序烧写进开发板中。③检查led灯是否逐一顺序点亮,能够通过调整程序使点亮顺序改变。

  (4)原函数

  1itinclude"led.h"

  2B/*

  3

  (1)紺始牝GFIOC的

  口

  4(2)定义延时蓟数

  s—

  6voidLEDInit(void)

  70(

  8

  GPIOInitTypeDefGPIOInitStructurp;

  9

  RCC_APB2PeriphC1ockCmd(RCC_APB2Periph_GPIOC,EWWLEJi使隘P匚正时禅

  IS

  GPI0_ln1tStrutturt.GFI0_Pin-GPI0_Pin_&\GPI0_Pin_7^GPI0_Pin_fl[GP10_Pin_9;"PC飞濟口配匡

  11

  GPIOIni

  稚冃辎出

  12

  GPZ0Initstrueture.GPIC^Speed-GPIO_Speed_56*Xz;//IO□谨复为50rKz

  13

  GPIOInittGPIOCj&GFIO_InitStructure),/7*訂始比GPIOC.6

  14

  5PIO_SetBits(6PIOC,6PIO_Pin_5|6PIO_Pir_7|5PIO_Pin_a[GPIO_Pin_9)J//PC,6騒岀高

  15|}

  16=

  17voidDelay(u32count)

  18El{

  19

  u32i-0;

  29^or(;i<count;!++);

  21?22|

  6.实验分析与体会

  如果4个LED灯是与A口的PA1、PA2、PA3、PA4相连,将led.c文件中的GPIOC”

  2intnain(void){LED_Init()j

  (GPIO_ReietBiti(GPIOCJGPIO_Pirt„&)>GPlOSeteitstQPtOC^GPlOPin7|GPIOFin8|GF10_Pin9)^

  GPZ0_Fle5etBit5(GPLCC,GPIO_Pin_7),

  GPIOSetBitstGPlOC^GPICPin_6|GPlGPinS|GPIOPin

  (5PIO_ResetBits(GPIOC,6PIO_Pin_a};

  GPIOSetBitsfGPIOC,GPIO_Pin_5|GPI0_Pin_7|GPI0_Pin_9),Delay(IDCtW);&PIO_Ft«etBlts(GPIOC,GPIQ_Pir_9);

  GPIO_SetBits(5PItX,GPIO_Pir_51GPXC_Pin_7|GPIOPin_8),Delay{

  改为GPIOA:并将Pin_X改为对应的1~4脚。

  5.程序及测试结果

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);GPIO」nitStructure.GPIO_Pin二GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9

  BuildOutput

  ProgramSize:Code-156^RO-date™336RW*deta-^2Zl-data-lSSSFroirELF:creating

  hexfile,,.

  "*AOBJ\LED*axfH-0Error(a)f0Warning(s).

  3uildTir,eElapsed:

  00:00:04

  J

  GPIO」nit(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」nitStructure.GPIO_Pin二GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4

  J

  GPIO_lnit(GPIOA,&GPIO_InitStructure);

  GPIO_SetBits(GPIOA,GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4);

  成绩评定

  实验日期:2018年10月18日

  教师签名:

  WelcomeToDownload!!!

  欢迎您的下载,资料仅供参考!

  

  

推荐访问:gpio控制流水灯实验报告总结 流水 实验 控制

热门文章

《********大宣讲特别节目》直播观后感

最近发表了一篇名为《2022《********大宣讲特别节目》直播观后感【精选】》的范文,感觉写的不错,希望对您有帮助,希望对网友有用。,安全,在学校里,在校外,安全这个词恐怕是再熟悉不过了吧,让将安全铭记心中,时进刻刻都做到安全,让父母不再操心,让长辈不再担心,让安全从我做起,从身边

2022不期而遇作文600字初中记叙文

《不期而遇作文600字初中记叙文》是一篇好的范文,感觉很有用处,希望对网友有用。,美词,像是袭袭的寒风慢慢轻掠大地,刺刺的,一缕****的阳光下有一小缕的橘红色静静的生长。下面是小编为大家收集整理的关于不期而遇600字初中记叙文,一起来看看吧!不期而遇作文600字篇一苏轼有语人间有味是清欢,或许正是

2022年大学生档案自我鉴定300字10篇

2022年普通大学生个人社会实践实习报告精选服务社会做好思想准备和业务准备,公司内部电脑系统都是统一英文系统,就要求自己以职场……[详细]2022年党员思想汇报例文两篇【完整版】所以在以后的学习和生活中,经历过苦难的中国,工作以及生活中,特别是通过学习党章党纪……[详细]企业员工服务意识培训心得体会

小学品德教师期末工作总结范本合集

最近发表了一篇名为《小学品德教师期末工作总结范文》的范文,感觉很有用处,重新整理了一下发到这里[http: www fwwang cn]。时光飞逝,如梭之日,回顾这段时间的工作,一定有许多的艰难困苦,是时候在工作总结中好好总结过去的成绩了。下面小编在这里为大家精心整理了几篇小学教师期

以小见大作文500字范本(范文推荐)

最近发表了一篇名为《以小见大作文500字范文【精选】》的范文,感觉写的不错,希望对您有帮助,重新编辑了一下发到。一件事情的发生,离不开时间、地点、人物、事情的起因、经过和结果这六方面,即常说的六要素,只有交待清楚这几方面,才能使读者对所叙述的事,有个清楚、全面的了解。这里小编

2022员工培训学习心得体会范本合集(范文推荐)

最近发表了一篇名为《员工培训学习心得体会范文》的范文,感觉写的不错,希望对您有帮助,为了方便大家的阅读。培训能让员工不断的提高,并清楚的意识到自己的缺点。经过员工培训,你一定有许多的收获,不妨来写一篇员工培训心得。你是否在找正准备撰写“员工培训心得体会范文”,下面小编收集了相关的素材,

追梦筑梦圆梦演讲稿

最近发表了一篇名为《追梦筑梦圆梦演讲稿》的范文,感觉很有用处,这里给大家转摘到。演讲稿特别注重结构清楚,层次简明。在日新月异的现代社会中,在很多情况下需要用到演讲稿,如何写一份恰当的演讲稿呢?下面是小编为大家整理的追梦筑梦圆梦演讲稿,希望能够帮助到大家!追梦筑梦圆梦演讲稿1尊敬的

2022年度享受读书快乐作文800字议论文优秀(完整)

本页是最新发布的《享受读书的快乐作文800字议论文优秀》的详细范文参考文章,觉得应该跟大家分享,重新编辑了一下发到。书,是无声的老师;书,是我们最真诚的玩伴;书,教会了我们做人的道理;书,让我们从无知的幼童,变成了如今的莘莘学子。下面是小编为大家收集整理的关于的800字议论文优秀

2022年度医院新冠肺炎应急预案及处置流程三篇

《2022医院新冠肺炎应急预案及处置流程精选三篇》是一篇好的范文,觉得应该跟大家分享,重新编辑了一下发到。预案指面对突发事件如自然灾害、重特大事故、环境公害及人为破坏的应急管理、指挥、救援计划等。下面小编为大家整理了2022医院新冠肺炎应急预案及流程精选三篇的相关内容,以供参考,希望给大家

2022年度中考优秀作文素材别样美三篇

最近发表了一篇名为《中考优秀作文素材别样的美精选三篇》的范文,好的范文应该跟大家分享,看完如果觉得有帮助请记得(CTRL+D)收藏本页。雨过天晴,花坛边上,几只蜗牛缓缓的爬行着,留下一道彩虹般的痕迹,那柔软的外面,是坚硬的外壳,那也是一道的美丽。下面是小编为大家收集整理的关于素材别样的美精

2022年度幼儿园清明节主题活动总结范本

《2022幼儿园清明节主题活动总结范文【精选】》是一篇好的范文,感觉很有用处,为了方便大家的阅读。,又称踏青节、行清节、三月节、祭祖节等,节期在仲春与暮春之交。清明节源自上古时代的祖先信仰与春祭礼俗,以下是小编整理的2022园清明节主题总结,希望可以提供给大家进行参考和借鉴。2022幼儿园清明节

建团百周年活动策划

《2022建团百周年活动策划【精选】》是一篇好的范文,感觉很有用处,希望大家能有所收获。党的领导是共青团顺利发展的关键所在,无论是中国早期青年团的建立,还是中国共青团的正式成立,都离不开党的领导。下面小编为大家整理了2022建团百周年策划【精选】的相关内容,以供参考,希望给大家带来帮助!20