圖片1.jpg (116.02 KB, 下載次數: 57)
下載附件
2018-6-10 10:46 上傳
ADC0809工作原理: ADDA/ADDB/ADDC 輸入3位地址,并使ALE=1,將地址存入地址鎖存器中 ALE:地址鎖存允許信號接入端,高電平時允許改變CBA的值,低電平時鎖死,防止在A/D轉換過程中切換通道 地址經譯碼選通8路模擬輸入IN0~IN7之一到比較器,輸入與被選通道關系
圖片2.png (4.71 KB, 下載次數: 41)
下載附件
2018-6-10 10:46 上傳
· START端上升沿將逐次逼近寄存器復位,下降沿啟動A/D轉換 · EOC輸出信號變低電平,表示正在轉換;當A/D轉換完成,EOC變為高電平,結果數據已存入鎖存器。 · · OE輸入高電平,輸出三態門打開,轉換結果的數字量輸出到數據總線上。 · · OE=1時,D0-D7引腳上為轉換后的數據,當OE=0時,D0-D7為對外呈現高阻狀態 其他引腳: file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps1AD1.tmp.jpg IN0~IN7:8路模擬量輸入引腳 CLK:時鐘信號輸入端 V_(REF(+)):參考電壓正端 V_(REF(-)):參考電壓負端
實現思路: A/D轉換 初始化時啟動A/D轉換,轉換結束后OE自動置位 檢查OE狀態,為高電平時讀取數據口數據并轉換成對應的電壓值 顯示結束后啟動下一次A/D轉換數碼管顯示讀入數據并轉換成電壓值后,通過數碼管顯示,百位數值后顯示小數點。 程序如下: - #include <reg52.h>
- typedef unsigned char uchar;
- typedef unsigned int uint;
- typedef unsigned long ulong;
- uchar code table[] =
- {
- 0xfc, 0x60, 0xda, 0xf2,
- 0x66, 0xb6, 0xbe, 0xe0,
- 0xfe, 0xf6, 0xee, 0x3e,
- 0x9c, 0x7a, 0x9e, 0x8e 8 };
- sbit start = P3 ^ 0; //控制start引腳
- sbit eoc = P3 ^ 1; //查詢eoc引腳情況
- sbit oe = P3 ^ 2; //輸出允許控制端
- sbit dot = P1 ^ 0; //數碼管小數點
- void Delay(uint m) {
- while(m--);
- }
- //主函數
- void main() {
- ulong temp, temp_data;
- // uint temp;
- start = 0;
- oe = 0; //oe為高阻狀態
- start = 1; //start下降沿開始轉換
- start = 0;
- while(1)
- {
- if (eoc == 1) //當eoc為1時轉換結束
- {
- /*讀入狀態*/
- oe = 1; //打開oe,數據讀入引腳
- temp = P0;
- /*讀入的數值轉換成模擬電壓對應的電壓值,由于ADC0809將0-5V平分為255份,每一份為5/255v,
- 電壓=1.0v時,temp=1.0*(5/255),為了方便顯示小數,則擴大一百倍,得到公式temp=temp*1.0/255*500
- 但是在此處存在個問題,temp轉換成為flout類型后運算量過大,影響后數碼管顯示速度,在一定范圍內數碼管顯示錯誤 temp = temp * 1.0 / 255 * 500; → temp = temp * 500 / 255;
- p.s. 修改后的temp要改成unsigned long, FF*500溢出int范圍
- */
- temp = temp * 500 / 255;
- oe = 0; //oe呈高阻
- /*數碼管顯示*/
- temp_data = temp % 10;
- P2 = 0xfe; //數碼管選擇最后一位
- P1 = table[temp_data];
- Delay(500);
- temp_data = temp / 10 % 10;
- P2 = 0xfd; //數碼管選擇十位
- P1 = table[temp_data];
- Delay(500);
- temp_data = temp / 100 % 10;
- P2 = 0xfb; //數碼管選擇百位
- P1 = table[temp_data];
- dot = 1; //顯示小數點
- Delay(500);
- /*啟動下一次轉換*/
- start = 1;
- start = 0;
- }
- }
- }
復制代碼
完整的Word格式文檔51黑下載地址:
51單片機AD轉換器實現數字電壓表實例.docx
(238.71 KB, 下載次數: 102)
2018-6-10 10:52 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|