标题: 基于单片机+ADC0809的数字电压表仿真程序设计 [打印本页]

作者: 会飞的C51    时间: 2021-7-18 09:56
标题: 基于单片机+ADC0809的数字电压表仿真程序设计
ADC08098位逐次逼近式A/D模数转换器。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换相对于TLC549的精度要高些。本设计采用单路信号输入,将所测的电压值通过4联数码管显示出来。此设计电路涉及单片机最小系统,ADC0809,4联数码管,反相器,仿真电路图奉上:



当调节输入电压时,会相应动作



单片机程序如下:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={ 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F, };
uchar Tcount;
uint wei3,wei2,wei1,wei0,num;
bit timerflag,ADflag;
sbit AD_end        =P3^2;
sbit OE=P1^5;
sbit ST=P1^6;
sbit mc=P3^0;
void AD_INT() interrupt 0
{
  ADflag=1;
//AD_end=1;
  OE=1;
  num=P2*19.61;     
  OE=0;
}
void T0_int()interrupt 1
{
  TL0=0xb0;
  TH0=0x3c;        
  if(--Tcount==0)
  {
    Tcount=20;
    timerflag=1;
  }              
}
void delay(uint z)
{
  uint x,y;
  for(x=z;x>0;x--)
  for(y=110;y>0;y--);
}
void main()
{
        Tcount=20;
        TMOD=0x01;
        TL0=0xb0;
        TH0=0x3c;
        IT0=1;//
        TR0=1;//start t0
        ET0=1;//t0 enable
        EX0=1;//int0 enable
        EA=1;
        while(1)
        {
        P1=P1&0xf0|0x07;
        P0=table[wei0];
        delay(1);
        P1=P1&0xf0|0x0b;
        P0=table[wei1];
        delay(1);
        P1=P1&0xf0|0x0d;
        P0=table[wei2];
        delay(1);
        P1=P1&0xf0|0x0e;
        P0=table[wei3]|0x80;
        delay(1);
        if(timerflag==1)
         {
                timerflag=0;
                ADflag=0;
                ST=1;
                ST=0;   
          }
        mc=1;
        mc=0;
        if(ADflag == 1)
        {                        
        wei3=num/1000;
        wei2=num%1000/100;
        wei1=num%100/10;
        wei0=num%10;
        ADflag=0;
        }               
  }
}


全部资料51hei下载地址:
ADC0809-volt.zip (150.97 KB, 下载次数: 67)





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1