当前位置:首页 > DSP综合实验4
case 'x': Result*=Input_number;break; case '/': Result/=Input_number;break; }
Now_in=0; Last_Cal='/'; return(0); } cal_run:
if(keycode == '=') {
In_number[Now_in]='\\0';
Input_number=atof(In_number); switch(Last_Cal) {
case '+': Result+=Input_number;break; case '-': Result-=Input_number;break; case 'x': Result*=Input_number;break; case '/': Result/=Input_number;break; }
temp=fabs(Result);
if((temp >= 10000.))
sprintf(result,\结果%6.5E\ else
if(temp >= 0.0001)
sprintf(result,\结果.8f\ else
sprintf(result,\结果%6.5E\
size=strlen(result); if(size % 2 != 0) { result[size++]=' '; result[size]='\\0'; } mydelay();
lcd_printf(4,0,result,0); Now_in=0; Last_Cal='='; return(0); }
return(0); }
void lcd_clr(int iswait)
{ volatile int *addr_counter;
addr_counter = (int *)UART_COUNTER;
LCD_Buffer[2]=0xff; LCD_Buffer[3]=0xff; LCD_Buffer[4]=0xff;
LCD_Buffer[21]=0x88; LCD_Buffer[22]=0x99;
u_printf(&LCD_Buffer[0],23);
if(iswait == 1) /* if iswait==1, then must wait for send end, else return direct ! */ while( *addr_counter); }
int test_mem(int allmem) { int memok,test_ret;
pllx100();
/* change clk=100MHz */
switch(allmem) {
case 0: /* check all mem ! */
case 1: /* only check PROGRAM 18000h */ memok=chk_prog18000();
if(memok == 1)
test_ret=1; /* prog 18000h is ok ! */ else
test_ret=-1; /* prog 18000h maybe error */ break;
case 2: /* only check PROGRAM 28000h */ memok=chk_prog28000();
if(memok == 1)
test_ret=1; /* prog 28000h is ok ! */ else
test_ret=-2; /* prog 28000h maybe error */ break;
case 3: /* only check DATA SRAM 8000h */ memok=chk_data8000(); if(memok == 1)
test_ret=1; /* data 8000h is ok ! */ else
test_ret=-3; /* data 8000h maybe error */
break;
default:
test_ret=0; /* return 0, not check the mem ! }
pllx10();
return(test_ret); }
void test_DCmotor() { int i,j,k;
CtrlWord |= 0x1; /* make D0=1 */
port8000=CtrlWord; /* start DC MOTOR power */
i=lcd_printf(3,0,\摆动\ /* wait for send end ! */ for(i=0;i<20;i++) /* right and left */ {
porte000=0; mydelay(); porte000=1; mydelay(); }
i=lcd_printf(3,2,\正转\
porte000=1; /* rotate + for 5s */ for(i=0;i<25;i++) /* delay about 5s */ mydelay();
i=lcd_printf(3,4,\反转\ porte000=0;
for(i=0;i<25;i++) /* rotate - for 5s */ mydelay();
*/ for(i=0;i<4;i++) {
porte000=0; mydelay(); porte000=1; mydelay(); }
i=lcd_printf(3,6,\慢转\
for(k=0;k<4;k++) /* rotate slowly */ for(i=0;i<1000;i++)
{ porte000=1; for(j=0;j<6500;j++); porte000=0; for(j=0;j<1000;j++);
}
CtrlWord &= 0xfffe; /* make D0=0; */ port8000=CtrlWord; }
void test_stepmotor() { int motor=0xf,i,j,k;
i=lcd_printf(3,1,\反转. \
// portf000=1; motor=1;
for(i=0;i<5;i++) {
for(j=0;j<4;j++)
{
portf000=motor; /* send drive pluse to motor */ motor=motor<<1;
for(k=0;k<4;k++) /* delay */ mydelay(); if(motor == 0x10) motor=1; } }
i=lcd_printf(3,5,\正转. \
共分享92篇相关文档