当前位置:文档之家› ARM课程设计报告GPIO—流水灯

ARM课程设计报告GPIO—流水灯

一、设计目的………………………………………………3
二、设计原理
1、GPIO—流水灯……………………………………3
2、SPI…………………………………………………7
3、定时器………………………………………………10
4、实时时钟……………………………………………12
三、所用仪器…………………………………………………18
七、参考文献……………………………………………………29
一、设计目的
1、根据要求,复习巩固ARM的基础知识。
2、掌握ARM系统的设计方法,特别是熟悉模块化的设计思想。
3、熟练掌握ARM软件和2131开发板的使用。
4、提高综合运用所学的理论知识独立分析和解决问题的能力;
二、设计原理
1、GPIO—流水灯
四、EasyARM2131开发套件功能介绍………………………18
五、设计内容:万年历-定时器-流水灯-SPI
1、功能描述………………………………………………21
2、流程图…………………………………………………22
3、程序设计………………………………………………22
六、心得体会…………………………序:
/
#include "config.h"
/* LED8~LED1 8个LED分别由P1.25~P1.18控制*/
const uint32 LEDS8 = (0xFF << 18);// P1[25:18]控制LED8~LED1,低电平点亮
/*
*********************************************************************************************************
*/
/*流水灯花样,低电平点亮,注意调用时候用了取反操作*/
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,//两个靠拢后分开
0xA0, 0x50, 0x7e, 0x28, 0x14, 0x0A, 0x05, 0x82,
所有I/O口在复位后默认为输入。
应用:
通用I/O口
驱动LED或其它指示器
控制片外器件
检测数字输入
(3)GPIO引脚描述
GPIO管脚描述见表4.1。
表4.1 GPIO管脚描述
管脚连接设置
将相应管脚的PINSELn位设置为00,即选择GPIO功能;大部分管脚复位后默认为GPIO。
3、GPIO寄存器
LPC2138有2个32位的通用I/O口。PORT0使用了30个管脚,PORT1有多达16个管脚可用GPIO功能。PORT0和PORT1由2组(4个)寄存器控制,如表4.2所示。
当管脚选择GPIO功能时,有IOSET、IOCLR和IOPIN 3个寄存器用于控制GPIO的使用。IOSET用于口线置位,而IOCLR则用于口线清零,IOPIN则反映当前IO口的状态,读回IOSET则反映当前IO口设定状态。
(2)GPIO的特性和应用
特性:
单个位的方向控制;
单独控制输出的置位和清零;
IO1DIR = LEDS8;//设置LED1控制口为输出
表4.2 GPIO寄存器映射
4. GPIO输出实验——流水灯实验
EasyARM2131开发板上的8路LED(LED8~LED1)分别可选择P1[25:18]进行控制,电路如图1所示。
图1
当跳线JP12全部选择LED8~LED1后,P1.25~P1.18分别控制这8路LED,就可以进行流水灯实验。流水灯显示花样可以通过数组人为定义,亦可通过一定的算法计算,流程图如图2所示。
**函数名称:DelayNS()
**函数功能:长软件延时
**入口参数:dly延时参数,值越大,延时越久
**出口参数:无
*********************************************************************************************************
0x81, 0xC3, 0xE7, 0xFF, 0xFF, 0xE7, 0xC3, 0x81//从两边叠加后递减
};
int main (void)
{
uint8 i;
//PINSEL1 = 0x00000000;//设置管脚连接GPIO
PINSEL2 = PINSEL2 & (~0x08);// P1[25:16]连接GPIO
(1)LPC2131具有多达47个通用I/O口(GPIO,General Purpose I/O ports),分别为P0[31:0]、
P1[31:16],其中,P0.24未用,P0.31仅为输出口。由于口线与其它功能复用,因而需要进行相关的管脚连接模块(PINSEL0、PINSEL1、PINSEL2)选择连接GPIO,然后通过IODIR进行输入/输出属性设置后才能操作。
*/
void DelayNS (uint32 dly)
{
uint32 i;
for ( ; dly>0; dly--)
for (i=0; i<100000; i++);
}
/*
*********************************************************************************************************
**函数名称:main()
**函数功能:流水灯显示实验。
**调试说明:连接跳线JP12至LED8~LED1。
*********************************************************************************************************
相关主题