001_89C52之_Proteus_ADC0809采集電壓


一)使用ADC0809采集直流電壓

1. 第一個數碼管顯示的是采樣輸入口

2. 后面三位是采樣電壓

 

(二)使用ADC0809進行交流電的采樣

1. 先進行交流電降壓,即用變壓器降壓后使用整橋電路進行整流

2. 默認將220交流電整流成5V最高,然后接入ADC0809

3. 圖中有理論公式,大概公式可以使用,設X是讀取到的電壓:實際值=(X/5)*220   

 

 (三)單片機程序

 1 /***************   writer:shopping.w   ******************/
 2 #include <reg52.h>
 3 #define uint unsigned int
 4 #define uchar unsigned char
 5 #define DATA P1
 6 sbit OE  = P2^5;
 7 sbit EOC = P3^3;
 8 sbit ST  = P2^7;
 9 
10 sbit C1  = P3^0;
11 sbit C2  = P3^1;
12 sbit C3  = P3^2;
13 
14 uint display_data = 0;  /*顯示數據*/
15 uchar code LEDData[]=
16 {
17      0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
18 };
19 
20 
21 void DelayMS(uint ms)
22 {
23      uchar i;
24     while(ms--)
25     {
26          for(i=0;i<120;i++);
27     }
28 }
29 
30 void Display_Result(uint d)
31 {
32     
33      P2 = 0xf7;
34     P0 = LEDData[d%10];
35     DelayMS(5);
36     P2 = 0xfb;
37     P0 = LEDData[d%100/10];
38     DelayMS(5);
39     P2 = 0xfd;
40     P0 = (LEDData[d/100]| 0x80);
41     DelayMS(5);
42     
43     P2 = 0xfe;
44     P0 = LEDData[3];
45     DelayMS(5);
46     
47 }
48 
49 void main()
50 {
51 
52 
53     C1  = 1;
54     C2  = 1;
55     C3  = 0;
56     
57     while(1)
58     {
59          ST = 0;
60         ST = 1;
61         ST = 0;
62         while(EOC == 0);
63         OE = 1;
64         display_data = ((5.0/255) * DATA) * 100;
65         Display_Result(display_data);
66         OE = 0;
67     }
68 }
View Code

 (四)工程源碼下載地址:

https://download.csdn.net/download/xiaoguoge11/10742910

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM