磁悬浮实验报告(3)

2020-02-21 02:06

disp1(show0); Delayms();

b=ADC_TURNON(3,4);

show0[0]=(unsigned char)(b/1000);

show0[1]=(unsigned char)((b00)/100);

show0[2]=(unsigned char)(((b00)0)/10); show0[3]=(unsigned char)(((b00)0)); disp2(show0); Delayms();

kp=ADC_TURNON(3,3); ki=ADC_TURNON(3,2); kd=ADC_TURNON(3,1); spec=ADC_TURNON(3,0); yk=ADC_TURNON(3,4);

da=pid(kp/100,ki/10,kd/10,spec/10,yk/10); dac(da);

if(p02==0&&flag==1) { flag++; disp_kp(); delay(20); }

if(p02==0&&flag==2) { flag++; disp_ki(); delay(20); }

if(p02==0&&flag==3) {flag=1; disp_kd(); delay(20); }

}//while的终止 }//main的终止

void delay(unsigned int x)

{unsigned int m,k ; for (m=0;m

{for (k=0;k<0xffff;k++); } }

n=(unsigned char)((b00)/100); }

//disp.c用来led显示结果

#include #include

sbit P15 =P1^5; sbit P16 = P1^6; sbit P17 = P1^7;

#define din P17 #define load P16 #define clk P15

#define NoOp 0x00 #define Digit0 0x01 #define Digit1 0x02 #define Digit2 0x03 #define Digit3 0x04 #define Digit4 0x05 #define Digit5 0x06 #define Digit6 0x07 #define Digit7 0x08 #define DecodeMode 0x09 #define Intensity 0x0a #define ScanLimit 0x0b #define ShutDown 0x0c #define DisplayTest 0x0f

unsigned char code dispcode_char[]={0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b, 0x0, 0x1};

extern unsigned int ADC_TURNON(unsigned char speed,chanl); void MAX7219_Write(unsigned char com, unsigned char dat);

void Delayms(void) {

unsigned int a,b;

for(a=0;a<20;a++) for(b=0;b<100;b++); }

void MAX7219_Write(unsigned char com, unsigned char dat) { unsigned char temp,i,j; load=0; clk=0; for(i=0;i<8;i++) { temp=com; if((temp&(0x80>>i))!=0) din=1; else din=0; clk=1; for(j=0;j<5;j++); clk=0; }

for(i=0;i<8;i++) { temp=dat; if((temp&(0x80>>i))!=0) din=1; else din=0; clk=1; for(j=0;j<5;j++); clk=0; } load=1; }

void MAX7219_Init()

{ MAX7219_Write(ShutDown ,0x00); Delayms();

MAX7219_Write(ShutDown ,0x01);

MAX7219_Write(DecodeMode,0xff); MAX7219_Write(Intensity ,0x0a); // Intensity Register Format MAX7219_Write(ScanLimit,0x07); }

void MAX7219_Init1()

{ MAX7219_Write(ShutDown ,0x00); Delayms();

MAX7219_Write(ShutDown ,0x01);

MAX7219_Write(DecodeMode,0x00); MAX7219_Write(Intensity ,0x0a); // Intensity Register Format MAX7219_Write(ScanLimit,0x07); } void disp1(unsigned char dat[4]) { load=1; clk=1; din=1;

MAX7219_Init();

//设P1.0/P1.1/P1.2/P1.3/P1.4为高阻输入,其他为IO P1M0=0x1F; P1M1=0x00; MAX7219_Write(Digit0,dat[0]); MAX7219_Write(Digit1,dat[1]); MAX7219_Write(Digit2,dat[2]); MAX7219_Write(Digit3,dat[3]); } void disp2(unsigned char dat[4]) { load=1; clk=1; din=1; MAX7219_Init(); P1M0=0x1F;

P1M1=0x00; MAX7219_Write(Digit4,dat[0]); MAX7219_Write(Digit5,dat[1]); MAX7219_Write(Digit6,dat[2]); MAX7219_Write(Digit7,dat[3]); }

void disp_kp() //用于显示kp,ki,kd的值 {

unsigned int b;

unsigned char m,n,x,y; load=1; clk=1; din=1; MAX7219_Init1(); P1M0=0x1F;

P1M1=0x00; MAX7219_Write(Digit0,0); MAX7219_Write(Digit1,0x0F); MAX7219_Write(Digit2,0x67); MAX7219_Write(Digit3,0); b=ADC_TURNON(3,3);

m=(unsigned char)(b/1000);

n=(unsigned char)((b00)/100);

x=(unsigned char)(((b00)0)/10); y=(unsigned char)(((b00)0)); MAX7219_Write(Digit4,dispcode_char[m]); MAX7219_Write(Digit5,dispcode_char[n]); MAX7219_Write(Digit6,dispcode_char[x]); MAX7219_Write(Digit7,dispcode_char[y]); } void disp_ki() //用于显示kp,ki,kd的值 {

unsigned int b;

unsigned char m,n,x,y; load=1; clk=1; din=1; MAX7219_Init1(); P1M0=0x1F;

P1M1=0x00; MAX7219_Write(Digit0,0); MAX7219_Write(Digit1,0x0F); MAX7219_Write(Digit2,0x30); MAX7219_Write(Digit3,0); b=ADC_TURNON(3,2);


磁悬浮实验报告(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:课题科研年度工作总结范文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: