AD转换程序设计实验报告|ad转换实验报告

 实验六 AD转换程序设计

 一、实验目的:

 1.掌握转换器ADC0809的使用。

 2.用PROTEUS 设计,仿真基于AT89C51单片机的A/D转换实验。

 3.通过改变电位器的值改变模拟量的输入,经转换为数字量在LED上显示,比对模拟量和数字量的关系。

 二、PROTEUS电路设计:

 三、实验仪器和设备

 PC机、PROTEUS软件或W-A-51综合开发学习

 源程序设计:

 程序

  #include<reg51.h>

  sbit STA=P2^5;

  sbit EOC=P2^6;

  sbit OE=P2^7;

  sbit CLK=P2^4;

  sbit led4=P2^3;

  sbit led3=P2^2;

  sbit led2=P2^1;

  sbit led1=P2^0;

  sbit point=P0^7;

  int ad_result;

  float result;

  unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

  void delay(unsigned int time)

 {

  unsigned int j=0;

 for(;time>0;time--)

  for(j=0;j<125;j++);

 }

  void ad_init()

  {

  OE=1;

  STA=0;

  CLK=0;

  }

  void time_init()

  {

  TMOD=0X02;

  TH0=0X94;

  TL0=0;

  EA=1;

  ET0=1;

  TR0=1;

  }

 void T0_time()interrupt 1

 {

  CLK=!CLK;

 }

  void ad_start()

  {

  ad_init();

  delay(10);

  STA=1;

  delay(10);

  STA=0;

  }

 void disp( int a)

 {

 led1=0;

 P0=table[a/1000];

 point=1;

 delay(2);

 led1=1;

 led2=0;

 P0=table[a%1000/100];

 delay(2);

 led2=1;

 led3=0;

 P0=table[(a%100)/10];

 delay(2);

 led3=1;

 led4=0;

 P0=table[a%10];

 delay(2);

 led4=1;

 }

 void main(void)

 {

  ad_init();

  time_init();

  while(1)

  {

  ad_start();

  while(EOC==0);

  result=(P1*(5.0/255.0))*1000;

  ad_result=(int)(result+0.5);

  disp(ad_result);

  }

 }

推荐访问:程序设计 转换 实验 报告 AD