|
實驗內容及過程記錄 利用電位器提供模擬量輸入,送往 ADC0808/ADC0809 的 IN3 輸入 端,編制程序,將模擬量轉換成數字量,并在數碼管上顯示出來。 1.ADC0809由一個8路模擬開關、一個地址鎖存與譯碼器、一個A/D轉換器和一個三態輸出鎖存器組成。多路開關可宣統8個模擬通道,允許8路模擬量分時輸入,共用A/D轉換器進行轉換。三態輸出鎖存器用于鎖存A/D轉換完的數字量,當OE端為高電平時,才可以從三態輸出鎖存器取走轉換完的數據。 2.ADC0809引腳結構: D7~D0:8位數字量輸出引腳。 IN0~IN7:8位模擬量輸入引腳。 VCC:+5V工作電壓。 GND:地 REF(+):參考電壓正端。 REF(-):參考電壓負端。 START:A/D轉換啟動信號輸入端。 ALE:地址鎖存允許信號輸入端。 EOC:轉換結束信號輸出引腳,開始轉換時為低電平,當轉換結束時為高電平。 OE:輸出允許控制端,用以打開三態數據輸出鎖存器。 CLK:時鐘信號輸入端。 A、B、C:地址輸入線。 1.在 Proteus 中畫出 ADC0809 與單片機 AT89C52 的連線接口電路原 理圖,選擇數碼管用于輸出數字量的顯示 2.進入 Keil C51 軟件的操作環境,根據步驟 1 的接線電路編制 A/D 轉換程序,編輯源程序并進行編譯,生成 .hex 文件 3.設置 Protes 與 Keil C51 之間的連接 4.改變輸入電壓值并記錄,電壓范圍為 0~5V,記錄對應的數字量輸出 四、實驗結果及分析 1.A/D轉換程序如下圖4-1和4-2所示: 圖4-1 圖4-2 2.五組數字量輸出數據如下圖所示: (1)當滑動變阻器滑到11%時,為第一組模擬量輸入,經過AD轉換器送入AT89C51中,在數碼管中輸出0.5 圖4-3 (2)當滑動變阻器滑到21%時,為第一組模擬量輸入,經過AD轉換器送入AT89C51中,在數碼管中輸出1.0 圖4-4 (3) 當滑動變阻器滑到31%時,為第一組模擬量輸入,經過AD轉換器送入AT89C51中,在數碼管中輸出1.5 圖4-5 (4) 當滑動變阻器滑到41%時,為第一組模擬量輸入,經過AD轉換器送入AT89C51中,在數碼管中輸出2.0 圖4-6 (5) 當滑動變阻器滑到51%時,為第一組模擬量輸入,經過AD轉換器送入AT89C51中,在數碼管中輸出1.5 圖4-7 程序如下: - #include <reg51.h> //頭文件
- #define uchar unsigned char //定義無符號字符
- #define uint unsigned int //定義無符號整型
- uchar DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,ox6f}; //數碼管的數字段碼(共陰極數碼管)
- sbit CLK=P1^3; //定義CLK為P1口的第四位
- sbit ST=P1^2; //定義ST為P1口的第三位
- sbit EOC=P1^1; //定義EOC為P1口的第二位
- sbit OE=P1^0; //定義OE為P1口的第一位
- void DelayMS(uint ms) //延時程序
- {
- uchar i;
- while(ms--)
- for(i=0;i<120;i++);
- }
- void Display_Result(uchar d) //數碼管顯示程序
- {
- int i,j;
- P2=0xfb; //第三位數碼管顯示
- i=d*5/256;
- P0=DSY_CODE[i]; //數碼管顯示
- DelayMS(5); //延時
- P0=0x80 ;//數碼管顯示“.”
- DelayMS(5);
- P2=0xf7; //第四位數碼管顯示
- j=(d-i*51)*10/51;
- P0=DSY_CODE[j];
- DelayMS(5);
- }
- void main() //主程序
- {
- TMOD=0x02; //選擇T0定時計數器工作在方式2
- TH0=0x14; //設置加1計數器TL0的初值為0x14
- TL0=0x00;
- IE=0x82; //設定中斷允許控制寄存器IE:開放所有中斷,開放T0的溢出中斷
- TR0=1; //啟動T0工作
- P1=0x3f; //選通IN3通道
- while(1)
- {
- ST=0;
- ST=1;
- ST=0;
- while(EOC==0);
- OE=1;
- Display_Result(P3);
- OE=0;
- }
- }
- void Timer0_INT()interrupt 1
- {
- CLK=~CLK;
- }
復制代碼
3.實驗結果及分析 由實驗結果可得,將滑動變阻器的阻值變化設定為模擬量輸入,經過AD轉換器的IN3口輸入,并進行轉換,送入51單片機中。單片機P0口連接著共陰極數碼管,將模擬量變化進行輸出。當滑動變阻器滑動時,數碼管顯示也隨之變化,若輸入成一定線性關系,輸出也呈一定的線性關系。由此實現了數字量到模擬量的轉換。
實驗總結與體會
通過本次實驗,我學習了如何將模擬量轉換為數字量的操作。掌握了ADC0809的接口以及運用,以及與單片機的連接和數碼管的輸出。在實驗過程中,雖然使用了仿真器件,但是在操作滑動變阻器可能依然存在誤差。因此還需要不斷優化。由于在計算機控制過程中,將外界模擬量轉換為數字量輸入到計算機是非常重要的一步。因此我們要牢牢掌握AD轉換的原理。
word格式的文檔下載:http://m.raoushi.com/bbs/dpj-198095-1.html
|