|
用adc0832芯片和51單片機(jī)做的電壓表,里面有仿真,C源程序,可根據(jù)不同的應(yīng)用場(chǎng)合不同,稍改程序就能改變量程,達(dá)到你的要求
0.png (24.82 KB, 下載次數(shù): 122)
下載附件
2016-9-25 17:23 上傳
0.png (51.57 KB, 下載次數(shù): 101)
下載附件
2016-9-25 17:22 上傳
adc0832數(shù)字電壓表的源程序和仿真工程文件下載:
數(shù)字電壓表的設(shè)計(jì).rar
(55.75 KB, 下載次數(shù): 177)
2016-9-25 17:25 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
源程序:
- #include<reg51.h>
- #include<intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit cs=P3^5;
- sbit clk=P3^3;
- sbit dati=P3^4;
- sbit dato=P3^4;
- sbit P20=P2^4;
- uchar dat=0x00;
- uchar count=0x00;
- uchar CH;
- uchar dis[]={0x01,0x02,0x03,0x04};
- uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
- uchar code tablewe[]={0xfd,0xfb,0xf7,0xf0,0xdf,0xfe};
- uchar adc0832(uchar CH)
- { uchar i,test,adval;
- adval=0x00;
- test=0x00;
- clk=0;
- dati=1;
- _nop_();cs=0; _nop_();clk=1;_nop_();
- if(CH==0x00)
- { clk=0;
- dati=1;
- _nop_();clk=1;_nop_();clk=0;
- dati=0;
- _nop_();clk=1;_nop_();}
- else { clk=0;dati=1;
- _nop_();
- clk=1;_nop_();clk=1;
- _nop_();clk=0;dati=1;
- _nop_();clk=1;_nop_();}
- clk=0;dati=1;
- for(i=0;i<8;i++)
- {_nop_();adval<<=1;clk=1;
- _nop_();clk=0;
- if(dato) adval|=0x01;
-
- else adval|=0x00; }
- for(i=0;i<8;i++)
- {test>>=1;
- if(dato) test|=0x80;
- else test|=0x00; _nop_();
- clk=1;
- _nop_();
- clk=0;}
- if(adval==test)
- dat=test;_nop_();
- cs=1;
- dato=1;clk=1;return dat;}
- void delay(void)//延時(shí)函數(shù)
- {uint r;
- for(r=10;r<500;r++)
- ;
- }
- void convdata(uchar i)
- { dis[0]=i/51;
- dis[1]=(i%51)*10/51;
- dis[2]=((i%51)*10%51)*10/51;
- }
- void display(void)
- {P2=0x02;
- P0=tab[dis[0]]&0x7f;
- delay();
- P2=0x04;
- P0=tab[dis[1]];
- delay();
-
- P2=0x08;
- P0=tab[dis[2]];
- delay();
-
- }
- void main(void)
- { P2=0xff;
- P0=0xff;
- delay();
- delay();
- CH=0x00;
- TMOD=0x01;
- TH0=15535/256;
- TL0=15536%256;
- IE=0x82;
- TR0=1;
- while(1)
- {dat=adc0832(CH);
- convdata(dat);
- display();
- }}
- void timero(void) interrupt 1
- { TMOD=0x01;
- TMOD=0x01;
- TH0=15535/256;
- TL0=15536%256;
- IE=0x82;
- TR0=1;
- count++;
- if(count==0x01)
- {count=0x00;dat=adc0832(CH);}}
復(fù)制代碼
|
|