流水灯实验

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

班级学号姓名同组人

实验日期室温大气压成绩

流水灯改进

一、实验目的

1、熟悉和掌握ADS集成开发环境及EasyJTAG仿真器的使用;

2、掌握流水灯实验程序的内容;

3、掌握EasyARM72131开发板的具体结构和器件的分布;

4、掌握对原程序进行一定的修改,达到熟练掌握程序编写的目的。

二、实验原理

GPIO概述

LPC2131具有多达47个通用I/O口,分别为P0[31:0]、P1[31:16],其中,P0.24未用,P0.31仅为输出口。由于口线与其他功能复用,因而需要进行相关的管脚连接模块(PINSEL0、PINSEL1、PINSEL2)选择连接GPIO,然后通过IODIR进行输入、输出属性设置后才能操作。

当管脚选择GPIO功能时,有3个寄存器用于控制GPIO的使用,IOSET、IOCLR和IOPTN。IOSET用于口线置1,而IOCLR则用于口线清零,IOPIN则反映当前IO口的状态,读回IOSET则反映当前

IO口设定状态。

特性

●单个位的方向控制;

●单独控制输出的置位和清零;

●所有I/O口在复位后默认为输入。

EasyARM72131开发板上的8路LED(LED8~LED1)分别可选择P1[25:18]进行控制,电路如图4.12所示。

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

数组控制显示花样的实验程序,流程图如图1所示。

(图1)

三、实验器材

装有ADS的电脑一台、EasyARM2131开发板。

四、实验内容及步骤

1、连接EasyARM2131开发板与电脑之间的连接线,检查是否接好(power显示灯会亮);

2、打开电脑,运行EasyJTAG仿真器,并进行相应的调节(选择LPC2138),通过check检查是否与电脑之间可以传输数据;

3、找到实验程序所在的位置,在软件中打开所要运行的程序,并对其进行仿真操作(犹豫电脑原因运行时需要两次操作才能进行仿真);

4、观察仿真的结果,与程序设计的效果进行比较,是否满足要求,如没有错误,可以根据自己的想法和对程序了解的程度进行变动,以达到更好的效果,同时也可以提高个人的能力。

5、实验结束后停止程序运行,关闭电脑,拔掉开发板和电脑之间的连线装入盒中,整理桌面。

五、实验程序

程序清单:流水灯实验程序(下划线为修改部分)

#include "config.h"

/* LED8~LED1 8个LED分别由P1.25~P1.18控制 */

const uint32 LEDS8 = (0xFF << 18); // P1[25:18]控制LED8~LED1,低电平点亮

const uint32 KEY1 = 1 << 16; //P0.16连接KEY1

const uint32 BEEP = 1<<7; //P0.7控制蜂鸣器

/******************************************************************** ** 函数名称:DelayNS()

** 函数功能:长软件延时

** 入口参数:dly 延时参数,值越大,延时越久

** 出口参数:无

********************************************************************/ void DelayNS (uint32 dly)

{

uint32 i;

for ( ; dly>0; dly--)

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

}

/******************************************************************** ** 函数名称:main()

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

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

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

const uint32 LED_TBL[] = {

0xFF,0x00, // 全部点亮后,再全部熄灭

0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, // 依次逐个点亮

0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, // 依次逐个递减

0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, // 依次逐个叠加

0x81, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x81, // 两个靠拢后分开

0x81, 0xC3, 0xE7, 0xFF, 0xFF, 0xE7, 0xC3, 0x81 // 从两边叠加后递减};

int main (void)

{

uint8 i;

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

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

PINSEL2 = PINSEL2 & (~0x08);// P1[25:16]连接GPIO

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

IO0DIR =BEEP; //设置BEEP控制口为输出

while (1)

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

{

相关文档
最新文档