本實驗采用AT89S51單片機芯片配合ADC0809模/數轉換芯片構成一個簡易的數字多用表,
proteus仿真圖:
1)ADC0809內部邏輯結構:

2)圖中多路模擬開關可選通8路模擬通道,允許8路模擬量分時輸入,并共用一個A/D轉換器進行轉換,地址鎖存與譯碼電路完成對A、B、C三個地址位進行鎖存與譯碼,如表所示,
|
C(ADDC) |
B(ADDB) |
A(ADDA) |
選擇的通道 |
|
0 |
0 |
0 |
IN0 |
|
0 |
0 |
1 |
IN1 |
|
0 |
1 |
0 |
IN2 |
|
0 |
1 |
1 |
IN3 |
|
1 |
0 |
0 |
IN4 |
|
1 |
0 |
1 |
IN5 |
|
1 |
1 |
0 |
IN6 |
|
1 |
1 |
1 |
IN7 |
3)上仿真結果圖
一、電壓的測量

電壓轉化顯示主要代碼(注釋項為不同數碼管位數對于的ADC轉換公式,按需刪減):
void Display_Result(uchar d_1)
{
//int d=d_1*500.0/255.0;
//d= ((5.0/255) * d_1) * 100;
//d=d_1;
P2=0xf7; //1111 0111
P0=0x3e; //0101 1011
DelayMS(5);
P2=0xfb; //1111 1011
P0=DSY_CODE[d%10];
DelayMS(5);
P2=0xfd; //1111 1101
P0=DSY_CODE[d%100/10];
DelayMS(5);
P2=0xfe; //1111 1110
P0=DSY_CODE[d/100]|0x80;
DelayMS(5);
}
二、電流的測量

電流轉化顯示主要代碼(注釋項為不同數碼管位數對于的ADC轉換公式,按需刪減):
void Display_Result_2(uchar e_1)
{
//int e=e_1*1.0/255*200;
//int e=(e_1*100.0/255.0)*5/p/0.1;
P2=0xf7; //1111 0111
P0=0x77; //0101 1011
DelayMS(5);
P2=0xfb; //1111 1011
P0=DSY_CODE[e%10];
DelayMS(5);
P2=0xfd; //1111 1101
P0=DSY_CODE[e%100/10]|0x80;
DelayMS(5);
P2=0xfe; //1111 1110
P0=0x3f|0x80; //0101 1011
P0=DSY_CODE[e/100];
DelayMS(5);
}
三、電阻的測量

電阻轉化顯示主要代碼(注釋項為不同數碼管位數對于的ADC轉換公式,按需刪減):
void Display_Result_3(uchar f_1)
{
//int f_2=f_1 *1.0/255*500;
//int f_3=(150*f_2)/(500-f_2);
//int f=f_3*100/3;
//int f=f_1*1.0/255*100;
P2=0xf7; //1111 0111
P0=0x75; //0101 1011
DelayMS(5);
P2=0xfb; //1111 1011
P0=DSY_CODE[f%10];
DelayMS(5);
P2=0xfd; //1111 1101
P0=DSY_CODE[f%100/10];
DelayMS(5);
P2=0xfe; //1111 1110
P0=DSY_CODE[f/100]|0x80;
DelayMS(5);
}
注:本文章只提供ADC轉換公式及整體思路,完整工程已打包,如需直接使用可查閱:
proteus仿真80C52+ADC0809(測電壓電流電阻)工程仿真+C代碼.rar-嵌入式檔案類資源-CSDN下載
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/375014.html
標籤:其他
上一篇:【機器視覺】Python+OpenCV+MediaPipe手勢識別系統
下一篇:ESP32-S基于藍牙配網方案
