ad转换c.c

来自「这是本人在学习51单片机时练习的C程序 lgl_5923@163.com」· C语言 代码 · 共 117 行

C
117
字号
(1).    进行A/D转换时,采用查询EOC的标志信号来检测A/D转换是否完毕,若完毕则把数据通过P0端口读入,经过数据处理之后在数码管上显示。

(2).    进行A/D转换之前,要启动转换的方法:

ABC=110选择第三通道

ST=0,ST=1,ST=0产生启动转换的正脉冲信号

C语言源程序 

#include <AT89X52.H> 

unsigned char code dispbitcode[]={0xfe,0xfd,0xfb,0xf7, 

                            0xef,0xdf,0xbf,0x7f}; 

unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66, 

                           0x6d,0x7d,0x07,0x7f,0x6f,0x00}; 

unsigned char dispbuf[8]={10,10,10,10,10,0,0,0}; 

unsigned char dispcount; 

  

sbit ST=P3^0; 

sbit OE=P3^1; 

sbit EOC=P3^2; 

unsigned char channel=0xbc;//IN3 

unsigned char getdata; 

  

void main(void) 

{ 

  TMOD=0x01; 

  TH0=(65536-4000)/256; 

  TL0=(65536-4000)%256; 

  TR0=1; 

  ET0=1; 

  EA=1; 

  

  P3=channel; 

  

  while(1) 

    { 

      ST=0; 

      ST=1; 

      ST=0; 

      while(EOC==0); 

      OE=1; 

      getdata=P0; 

      OE=0; 

      dispbuf[2]=getdata/100; 

      getdata=getdata%10; 

      dispbuf[1]=getdata/10; 

      dispbuf[0]=getdata%10; 

    } 

} 

  

void t0(void) interrupt 1 using 0 

{ 

  TH0=(65536-4000)/256; 

  TL0=(65536-4000)%256; 

  P1=dispcode[dispbuf[dispcount]]; 

  P2=dispbitcode[dispcount]; 

  dispcount++; 

  if(dispcount==8) 

    { 

      dispcount=0; 

    } 

} 
   
 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?