欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 計算機控制技術ADC0808/ADC0809轉換接口實驗 [打印本頁]

作者: happy33    時間: 2020-11-16 17:54
標題: 計算機控制技術ADC0808/ADC0809轉換接口實驗
實驗內容及過程記錄
利用電位器提供模擬量輸入,送往 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
程序如下:
  1. #include <reg51.h>                      //頭文件
  2. #define uchar unsigned char      //定義無符號字符
  3. #define uint unsigned int           //定義無符號整型
  4. uchar DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,ox6f}; //數碼管的數字段碼(共陰極數碼管)
  5. sbit CLK=P1^3;  //定義CLK為P1口的第四位
  6. sbit ST=P1^2;    //定義ST為P1口的第三位
  7. sbit EOC=P1^1; //定義EOC為P1口的第二位
  8. sbit OE=P1^0;   //定義OE為P1口的第一位
  9. void DelayMS(uint ms)   //延時程序
  10. {
  11. uchar i;
  12. while(ms--)
  13.     for(i=0;i<120;i++);
  14. }
  15. void Display_Result(uchar d)  //數碼管顯示程序
  16. {
  17. int i,j;
  18. P2=0xfb;  //第三位數碼管顯示
  19. i=d*5/256;
  20. P0=DSY_CODE[i];  //數碼管顯示
  21. DelayMS(5);   //延時
  22. P0=0x80 ;//數碼管顯示“.”
  23. DelayMS(5);
  24. P2=0xf7; //第四位數碼管顯示
  25. j=(d-i*51)*10/51;
  26. P0=DSY_CODE[j];
  27. DelayMS(5);
  28. }
  29. void main()  //主程序
  30. {
  31. TMOD=0x02;  //選擇T0定時計數器工作在方式2
  32. TH0=0x14;        //設置加1計數器TL0的初值為0x14
  33. TL0=0x00;
  34. IE=0x82;   //設定中斷允許控制寄存器IE:開放所有中斷,開放T0的溢出中斷
  35. TR0=1;   //啟動T0工作
  36. P1=0x3f;  //選通IN3通道
  37. while(1)
  38. {
  39. ST=0;
  40. ST=1;
  41. ST=0;
  42. while(EOC==0);
  43. OE=1;
  44. Display_Result(P3);
  45. OE=0;
  46. }
  47. }
  48. void Timer0_INT()interrupt 1
  49. {
  50. CLK=~CLK;
  51. }
復制代碼

3.實驗結果及分析
  由實驗結果可得,將滑動變阻器的阻值變化設定為模擬量輸入,經過AD轉換器的IN3口輸入,并進行轉換,送入51單片機中。單片機P0口連接著共陰極數碼管,將模擬量變化進行輸出。當滑動變阻器滑動時,數碼管顯示也隨之變化,若輸入成一定線性關系,輸出也呈一定的線性關系。由此實現了數字量到模擬量的轉換。

實驗總結與體會

通過本次實驗,我學習了如何將模擬量轉換為數字量的操作。掌握了ADC0809的接口以及運用,以及與單片機的連接和數碼管的輸出。在實驗過程中,雖然使用了仿真器件,但是在操作滑動變阻器可能依然存在誤差。因此還需要不斷優化。由于在計算機控制過程中,將外界模擬量轉換為數字量輸入到計算機是非常重要的一步。因此我們要牢牢掌握AD轉換的原理。

word格式的文檔下載:http://m.raoushi.com/bbs/dpj-198095-1.html





歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1