嵌入式流水灯c语言代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
流水灯实验
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]链接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);
}
}
return 0;
}