嵌入式实验报告ARM实验报告姓名:学号:专业:学院:指导老师:GPIO输出与按键控制实验——按键控制流水灯实验实验原内容:通过数组认为定义流水灯花样;一个按键控制一种流水灯花色;实验电路图:源程序:#include""#include""/*名称:DelayNS()功能:长软件延时入口参数:dly 延时参数,值越大,延时越久**/voidDelayNS(uint32dly){uint32i;for(;dly>0;dly--)for(i=0;i<50000;i++);}/**函数名称:main()函数功能:GPIO输出测试,花样流水灯。*/constuint32LED_TBL[8][10]={ 花样流水灯,注意调用时候用了取反操作 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF}, //全部点亮 {0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0xFF},//依次逐个点亮 {0x00,0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF,0xFF},//依次逐个叠加 {0xFF,0x7F,0x3F,0x1F,0x0F,0x07,0x03,0x01,0x00,0xFF},//依次逐个递减 {0x00,0x81,0x42,0x24,0x18,0x18,0x24,0x42,0x81,0xFF},//两个靠拢后分开 {0x00,0x81,0xC3,0xE7,0xFF,0xFF,0xE7,0xC3,0x81,0xFF}, //从两边叠加后递减 {0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xFF,0xFF}, {0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF}};/**函数名称:keyscan()函数功能:按键扫描,每按一次键对相应的LED进行取反*/voidkeyscan(void){uint32i,j,k,m;PINSEL0=0x00000000; //设置管脚连接GPIOIO0DIR=0x000000ff;k=IO0PIN;if((k&keycon)!=keycon){ for(j=0;j<50000;j++);//延时去抖k=IO0PIN; if((k&keycon)!=keycon) {i=(k&keycon)|(~keycon);i=~i; switch(i) {caseKEY1:for(m=0;m<10;m++){IO0SET=~((LED_TBL[0][m]));DelayNS(3);IO0CLR=((LED_TBL[0][m]));DelayNS(3);}break; caseKEY2:for(m=0;m<10;m++){IO0SET=~((LED_TBL[1][m]));DelayNS(3);IO0CLR=((LED_TBL[1][m]));DelayNS(3);}break; caseKEY3:for(m=0;m<10;m++){IO0SET=~((LED_TBL[2][m]));DelayNS(3);IO0CLR=((LED_TBL[2][m]));DelayNS(3);}break; caseKEY4:for(m=0;m<10;m++){IO0SET=~((LED_TBL[3][m]));DelayNS(3);IO0CLR=((LED_TBL[3][m]));DelayNS(3);}break; caseKEY5:for(m=0;m<10;m++){IO0SET=~((LED_TBL[4][m]));DelayNS(3);IO0CLR=((LED_TBL[4][m]));DelayNS(3);}break; caseKEY6:for(m=0;m<10;m++){IO0SET=~((LED_TBL[5][m]));DelayNS(3);IO0CLR=((LED_TBL[5][m]));DelayNS(3);}beak; caseKEY7:for(m=0;m<10;m++){IO0SET=~((LED_TBL[6][m]));DelayNS(3);IO0CLR=((LED_TBL[6][m]));DelayNS(3);}break; caseKEY8:for(m=0;m<10;m++){IO0SET=~((LED_TBL[7][m]));DelayNS(3);IO0CLR=((LED_TBL[7][m]));DelayNS(3);}break; } } while((k&keycon)!=keycon)k=IO0PIN;}}/*函数名称:main()*函数功能:每按一次键,对相应LED的状态取反*/intm
嵌入式实验报告模板 来自淘豆网m.daumloan.com转载请标明出处.