資源描述:
《簡易自動電阻測試儀程序.doc》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、簡易自動電阻測試儀程序#include#include#defineucharunsignedcharuchartable[]={0x00,0x04,0x0A,0x11,0x11,0x0A,0x1B,0x3B,};uchartable1[]="THERESIS:";sbitCS=P1^5;sbitClk=P1^6;sbitDI=P1^7;sbitDO=P1^7;sbitrs=P2^0;sbiten=P2^1;sbitj1=P2^7;sbitj2=P2^6;sbitj3=P2^5;sbitbeep=P1^4;sbitled=P2^3;voiddelay(i
2、ntx){intj;for(;x>0;x--)for(j=20;j>0;j--);}ucharADC0832(ucharCH){uchari,dis0,dis1,date;Clk=0;//拉低時鐘DI=1;//初始化delay(1);CS=0;//芯片選定delay(1);Clk=1;//拉高時鐘delay(1);if(CH==0)//通道選擇{Clk=0;//第一次拉低時鐘DI=1;//通道0的第一位delay(1);Clk=1;//拉高時鐘delay(1);Clk=0;//第二次拉低時鐘,ADC0832DI接受數(shù)據(jù)DI=0;//通道0的第二位delay(1);Clk=1;delay(1);
3、}else{Clk=0;DI=1;//通道1的第一位delay(1);Clk=1;delay(1);Clk=0;DI=1;//通道1的第二位delay(1);Clk=1;delay(1);}Clk=0;//第三次拉低時鐘,此前DI兩次賦值決定通道DI=1;//DI開始失效,拉高電平,便于DO數(shù)據(jù)傳輸for(i=0;i<8;i++)//讀取前8位的值{delay(1);dis0<<=1;Clk=1;delay(1);Clk=0;if(DO)dis0
4、=0x01;elsedis0
5、=0x00;}for(i=0;i<8;i++)//讀取后8位的值{dis1>>=1;if(DO)dis1
6、=0x80;
7、elsedis1
8、=0x00;delay(1);Clk=1;delay(1);Clk=0;}if(dis0==dis1)//兩次結(jié)束數(shù)據(jù)比較,若相等date=dis0;//則賦值給datdelay(1);CS=1;//釋放ADC0832DI=1;//拉高輸出端,方便下次通道選擇DI端有效Clk=1;//拉高時鐘delay(1);returndate;}longdatch(uchara,longst)//計算電阻{longy;doublex=1.0*st*(255-a)/a;y=x;returny;}voidwritecom(ucharcom){rs=0;P3=com;delay(10);en=
9、1;delay(10);en=0;}voidwritedat(uchardate){rs=1;P3=date;delay(10);en=1;delay(10);en=0;}voidinit(){en=0;writecom(0x38);writecom(0x0c);writecom(0x06);writecom(0x01);}voiddisplay(longx){intj,wei=12;for(j=0;j<18;j++)//qinhkongxianshi{writecom(0xc0+14-j);delay(10);writedat(32);}for(j=0;x>0;j++)//qinhkongx
10、ianshi{if((j%3==0)&&(j>0)){writecom(0xc0+wei-j);writedat(44);wei--;}writecom(0xc0+wei-j);delay(10);writedat(x%10+48);x=x/10;}}longJ1(void){j1=1;j2=0;j3=0;delay(40);returndatch(ADC0832(0),200);}longJ2(void){j1=0;j2=1;j3=0;delay(40);returndatch(ADC0832(0),10000);}longJ3(void){j1=0;j2=0;j3=1;delay(40);
11、returndatch(ADC0832(0),500000);}voidmain(){intj;longx,s=1;led=1;beep=0;init();j1=1;j2=0;j3=0;for(x=0;x<11;x++){writedat(table1[x]);delay(10);}writecom(0x40);for(x=0;x<8;x++){writedat(table[x]);}delay(