基于LPC2131的步进电机细分的课程设计实验报告概要

第8页

PINSEL1=0X00000000;

PINSEL2&=~(0x00000006); //设置所有I/O口为普通GPIO口 IO0DIR =MOTOCON; // 配置LED控制I/O方向 LCD12864_init();

//液晶端口初始化

while((IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key4)&&(IO0PIN&key5)!=0) {

initinal();

lcd_mesg(IC_DAT6); //显示界面 }

while(1) {

if ((IO0PIN&key1)==0) MOTO_Mode1(10);

else if((IO0PIN&key4)==0) MOTO_Mode10(10);

// A-B-C-D else if ((IO0PIN&key2)==0) MOTO_Mode2(10);

else if((IO0PIN&key4)==0) MOTO_Mode20(10);

// AB-BC-CD-DA-AB else if ((IO0PIN&key3)==0) MOTO_Mode3(10);

else if((IO0PIN&key4)==0)

MOTO_Mode30(10); // A-AB-B-BC-C-CD-D-DA-A

else if((IO0PIN&key5)==0) // 停止 initinal();

lcd_mesg(IC_DAT5); IO0CLR=MOTOCON; }

return(0); }

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

第9页

* 功 能:长软件延时 * 入口参数:dly 延时参数,值越大,延时越久 * 出口参数:无

****************************************************************************/ void DelayNS(uint32 dly) { uint32 i;

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

for(i=0; i<5000; i++); } }

/**************************************************************************** * 名 称:MOTO_Mode1() * 功 能:单四拍程序 * 入口参数:uint8 i 延时参数,值越大,延时越久 * 出口参数:无

****************************************************************************/ void MOTO_Mode1(uint8 i) // A-B-C-D {

while((IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key4)&&(IO0PIN&key5)!=0) {

initinal();

lcd_mesg(IC_DAT1); //显示汉字界面1 /* A */

GPIOSET(MOTOA); DelayNS(i);

GPIOCLR(MOTOA); /* B */

GPIOSET(MOTOB); DelayNS(i);

GPIOCLR(MOTOB); /* C */

GPIOSET(MOTOC); DelayNS(i);

GPIOCLR(MOTOC);

/* D */

GPIOSET(MOTOD); DelayNS(i);

GPIOCLR(MOTOD); }

第10页

}

void MOTO_Mode10(uint8 i) // D - C -B- A {

while((IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key5)!=0) {

initinal();

lcd_mesg(IC_DAT4); /* D */

GPIOSET(MOTOD); DelayNS(i);

GPIOCLR(MOTOD); /* C */

GPIOSET(MOTOC); DelayNS(i);

GPIOCLR(MOTOC); /* B */

GPIOSET(MOTOB); DelayNS(i);

GPIOCLR(MOTOB);

/* A */

GPIOSET(MOTOA); DelayNS(i);

GPIOCLR(MOTOA); } }

/**************************************************************************** * 名 称:MOTO_Mode2() * 功 能:双四拍程序 * 入口参数:uint8 i 延时参数,值越大,延时越久 * 出口参数:无

****************************************************************************/ void MOTO_Mode2(uint8 i) // AB-BC-CD-DA-AB {

while((IO0PIN&key1)&&(IO0PIN&key3)&&(IO0PIN&key4)&&(IO0PIN&key5)!=0) {

initinal();

lcd_mesg(IC_DAT2); //显示汉字界面2 GPIOSET(MOTOA); GPIOSET(MOTOB); DelayNS(i);

第11页

GPIOCLR(MOTOA); GPIOCLR(MOTOB); /* BC */

GPIOSET(MOTOB); GPIOSET(MOTOC); DelayNS(i);

GPIOCLR(MOTOB); GPIOCLR(MOTOC);

/* CD */

GPIOSET(MOTOC); GPIOSET(MOTOD); DelayNS(i);

GPIOCLR(MOTOC); GPIOCLR(MOTOD); /* DA */

GPIOSET(MOTOD); GPIOSET(MOTOA); DelayNS(i);

GPIOCLR(MOTOD); GPIOCLR(MOTOA); } }

void MOTO_Mode20(uint8 i) // AD-DC- CB-BA- AD {

while((IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key5)!=0) {

initinal();

lcd_mesg(IC_DAT4); GPIOSET(MOTOA); GPIOSET(MOTOD); DelayNS(i);

GPIOCLR(MOTOA); GPIOCLR(MOTOD); /* DC */

GPIOSET(MOTOD); GPIOSET(MOTOC); DelayNS(i);

GPIOCLR(MOTOD); GPIOCLR(MOTOC);

/* CB */

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4