|
內(nèi)部有程序和仿真圖,適合新手學(xué)習(xí)
ADC0808采集電壓仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (21.88 KB, 下載次數(shù): 47)
下載附件
2018-1-21 16:43 上傳
0.png (49.17 KB, 下載次數(shù): 63)
下載附件
2018-1-21 16:43 上傳
單片機源程序如下:
- #include<reg51.h>
- #include<intrins.h>
- #include<stdio.h>
- #define uint unsigned int
- #define uchar unsigned char
- sbit CLK=P2^0;
- sbit ST=P2^1;
- sbit EOC=P2^2;
- sbit OE=P2^3;
- sbit ADDA=P2^5;
- sbit ADDB=P2^6;
- sbit ADDC=P2^7;
- sbit X1=P3^4;
- sbit X2=P3^5;
- sbit X3=P3^6;
- sbit P07=P0^7;
- sbit LED=P3^7;
- uint temp;
- uchar getdata;
- uchar b;
- uchar s;
- uchar g;
- uchar code table[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
- void delayus(uchar us){
- uchar i;
- while(us--)
- for(i=0;i<120;i++)
- ;
- }
- void init(){
- TMOD=0x21;
- TH0=(65536-200)/256;
- TL0=(65536-200)%256;
- TH1=0XFD;
- TL1=0XFD;
- PCON=0X00;
- SCON=0X50;
- ES=1;
- ET0=1;
- EA=1;
- TR1=1;
- TR0=1;
- }
- void timer0()interrupt 1
- { TH0=(65535-200)/256;
- TL0=(65535-200)%256;
- CLK=~CLK;
- }
- void disp(){
- X1=1;
- X2=0;
- X3=0;
- P0=table[b];
- P07=0;
- X1=1;
- X2=0;
- X3=0;
- delayus(5);
- P0=0XFF;
-
- P0=table[s];
- X1=0;
- X2=1;
- X3=0;
- delayus(5);
- P0=0XFF;
- P0=table[g];
- X1=0;
- X2=0;
- X3=1;
- delayus(5);
- P0=0XFF;
- }
- void adda(uchar z,uchar x,uchar c){
- ADDA=z;
- ADDB=x;
- ADDC=c;
- }
- void send(uchar x){
- EA=0;
- SBUF=x;
- while(TI==0);
- TI=0;
- EA=1;
- }
- void main(){
- P1=0XFF;
- init();
- LED=0;
- P2=0XFF;
- adda(0,0,1);
- while(1){
- ST=0;
- OE=0;
- ST=1;
- ST=0;
- while(EOC==0);
- OE=1;
- getdata=P1;
- send(getdata);
- OE=0;
- temp=getdata*1.0/255*500;
- b=temp/100;
- s=temp/10%10;
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
ADC0808電壓采集.zip
(39.12 KB, 下載次數(shù): 101)
2018-1-21 09:25 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|