中国石油大学华东机自测控实习程序.docx

上传人:b****4 文档编号:3537098 上传时间:2022-11-23 格式:DOCX 页数:9 大小:15.60KB
下载 相关 举报
中国石油大学华东机自测控实习程序.docx_第1页
第1页 / 共9页
中国石油大学华东机自测控实习程序.docx_第2页
第2页 / 共9页
中国石油大学华东机自测控实习程序.docx_第3页
第3页 / 共9页
中国石油大学华东机自测控实习程序.docx_第4页
第4页 / 共9页
中国石油大学华东机自测控实习程序.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

中国石油大学华东机自测控实习程序.docx

《中国石油大学华东机自测控实习程序.docx》由会员分享,可在线阅读,更多相关《中国石油大学华东机自测控实习程序.docx(9页珍藏版)》请在冰豆网上搜索。

中国石油大学华东机自测控实习程序.docx

中国石油大学华东机自测控实习程序

A/D采集

1.采集

#include

#include

#include

#include

#include

#include"huatu.c"

voidCJ_AD();

main()

{

intgdriver=DETECT,gmode,i;

initgraph(&gdriver,&gmode,"");

setfillstyle(SOLID_FILL,2);

CJ_AD();

huatu();

getch();

}

voidCJ_AD()

{

intch=0;

inti,dl,dh,base,dtime=0,k=0;

base=0x200;

dl=inportb(base+3);

outportb(base,ch);

do

{j=0;

for(i=0;i<600;i++)

{delay(dtime);

outportb(base+1,0);

do{

}while(inportb(base+2)>=0x80);

dh=inportb(base+2);

dl=inportb(base+3);

data[i]=(dh*256+dl-2047);

}

for(i=0;i<590;i++)

if(data[i]*data[i+1]<0)

j++;

/*printf("%d",j);

getch();

*/

dtime=200;

dtime=dtime*pow(2,k);

k++;

}while(j<4);

}_

2.画图

#include

#include

#include

#include

doubledata[600];

intj=0;

inthuatu()

{

charc[20];

inti;

doublek=1;

bar(0,0,640,480);

line(39,240,640,240);/*xzhou*/

line(39,30,39,450);/*yzhou*/

for(i=-5;i<=5;i++)

{line(39,240-40*i,44,240-40*i);

sprintf(c,"%d",i);

outtextxy(15,240-40*i,c);

}

moveto(39,240-data[0]*200/2047);

if(j>15)k=j/10;

for(i=0;i<600/k;i++){lineto(39+i*k,240-data[i]*200/2047);}

getch();

closegraph();

}_

 

D/A输出

1.D/A

#include

#include

#include

#include

#include"huatu.c"

#definepi3.14159265357

intSH_DA();

main()

{

doublea=5,fre=1;

intcontrol,flag=0,zf=1;

inti,dh,dl;

intgdriver=DETECT,gmode;

printf("\nPleaseinputa:

");

scanf("%lf",&a);

printf("\nYourais%lf",a);

printf("\nPleaseinputfrequency:

");

scanf("%lf",&fre);

printf("\nYourfrequencyis%lf",fre);

printf("\nPleasechoosethewavetype,1issine,2istriangle,3isquarter:

");

scanf("%d",&control);

printf("\nYourchooseis%d",control);

getch();

initgraph(&gdriver,&gmode,"");

setfillstyle(SOLID_FILL,2);

for(i=0;i<=600;i++)

{if(control==1)data[i]=a*sin(2*pi*i*fre/600);

if(control==2){data[i]=flag/fre;flag=flag+zf;if(fabs(flag/fre)>=a)zf*=-1;}

if(control==3){data[i]=a;flag++;if(flag>=300/fre){flag=0;a*=-1;}}

data2[i]=(data[i]+5)*409.5;

}

huatu();

SH_DA();

getch();

}

intSH_DA()

{intdh,dl,i,base;

base=0x200;

for(;;)

{for(i=0;i<=600;i++)

{dh=((int)data2[i])/16;

dl=((int)data2[i]%16)*16;

outportb(base+4,dh);

outportb(base+5,dl);

inportb(base+0x0);

}

}

}

2.画图

#include

#include

#include

#include

doubledata[601];

doubledata2[601];

inthuatu()

{

charc[20];

inti;

bar(0,0,640,480);

line(39,240,640,240);/*xzhou*/

line(39,30,39,450);/*yzhou*/

for(i=-5;i<=5;i++)

{line(39,240-40*i,44,240-40*i);

sprintf(c,"%d",i);

outtextxy(15,240-40*i,c);

}

moveto(39,240-data[0]*40);

for(i=0;i<600;i++){lineto(39+i,240-data[i]*40);}

/*getch();

closegraph();

*/

}

3.测试

#include

main()

{

doublea=6;

scanf("%lf",&a);

printf("%lf",a);

getch();

}_

 

步进电机驱动

1.电机驱动

#include

#include

#include

#include

#include

intright();

intleft();

main()

{

intd[5];

inti,control,base,dtime=0,direct=1,stop=0xff;

printf("\nPleaseinputdelay,thelarger,theslower:

");

scanf("%d",&dtime);

printf("\nYourdelaytimeis%d",dtime);

printf("\nPleaseinputdirection,1and2areopposite:

");

scanf("%d",&direct);

printf("\nYourdirectionis%d",direct);

printf("\nHitSpacetostopthemotor,hitrightarrowtospinoneside,leftarrowtheoppositeside.");

base=0x200;

d[1]=0x1;d[2]=0x2;d[3]=0x8;d[4]=0x10;

control=0x80;

outportb(base+0xf,control);

for(;;){

if(direct==1)

for(i=1;i<=4;i++){

printf("%d",d[i]);

outportb(base+0xc,d[i]);

delay(dtime);

}

if(direct==2)

for(i=4;i>=1;i--){

printf("%d",d[i]);

outportb(base+0xc,d[i]);

delay(dtime);

}

}

/*

if(bioskey

(1)!

=0){

if(bioskey(0)==0x3920)outportb(base+0xc,stop);

if(bioskey(0)==0x4d00)right();

if(bioskey(0)==0x4b00)left();

if(bioskey(0)==0x4800)dtime=dtime-10;

if(bioskey(0)==0x5000)dtime=dtime+10;

}

*/

}_

2.键控

#include

#include

#include

#include

#include

#definestop0x00

intbase=0x200;

intd[5];

intright();

intleft();

intcontro();

intdtime=0;

intdirect=1;

intkey=0;

main()

{

inti,control;

printf("\nPleaseinputdelay,thelarger,theslower:

");

scanf("%d",&dtime);

printf("\nYourdelaytimeis%d",dtime);

printf("\nPleaseinputdirection,1and2areopposite:

");

scanf("%d",&direct);

printf("\nYourdirectionis%d",direct);

printf("\nHitSpacetostopthemotor,hitrightarrowtospinoneside,leftarrowtheoppositeside.");

d[1]=0x1;d[2]=0x2;d[3]=0x8;d[4]=0x10;

control=0x80;

outportb(base+0xf,control);

for(;;){

if(direct==1)

right();

if(direct==2)

left();

if(bioskey

(1)!

=0)key=bioskey(0);

if(key!

=0)contro();

}

}

intright(){

inti;

for(i=1;i<=4;i++){

printf("%d",d[i]);

outportb(base+0xc,d[i]);

delay(dtime);

if(bioskey

(1)!

=0)key=bioskey(0);

if(key!

=0)contro();

}

}

intleft(){

inti;

for(i=4;i>=1;i--){

outportb(base+0xc,d[i]);

delay(dtime);

if(bioskey

(1)!

=0)key=bioskey(0);

if(key!

=0)contro();

}

}

intcontro(){

if(key==0x3920){outportb(base+0xc,stop);direct=0;}

if(key==0x4d00)direct=1;

if(key==0x4b00)direct=2;

if(key==0x4800)dtime=dtime-100;

if(key==0x5000)dtime=dtime+100;

key=0;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1