adc0809.c

来自「一个用 proteus + keil 实现的仿真 A、D 数模转换的实例」· C语言 代码 · 共 64 行

C
64
字号
#include<reg51.h>

sbit OE=P2^4;
sbit ST=P2^5;
sbit EOC=P2^6;

volatile unsigned char result;

/* 共阴段代码 */
unsigned char nCode[]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0xFF}; /* 0~9, OFF */

void delay(unsigned char ms)
{
  unsigned char i;

  while(ms-->0)
  {
    for(i=0;i<122;++i);
  }
}

void Disp(unsigned char m_data)
{
  unsigned char i;
  unsigned char k=0x08;

  for(i=0;i<4;i++)
  {
    P3=k;
	P1=nCode[m_data%10];
	m_data/=10;
	delay(4);
	k>>=1;
  }
}

void InitDevice(void)
{
  ST=0;
  OE=0;
}

unsigned char ADC(void)
{
  unsigned char datain;
  ST=0;
  ST=1;
  ST=0;
  while(!EOC);
  OE=1;
  datain=P0;
  OE=0;
  return datain;
}

void main(void)
{
  InitDevice();

  while(1)
  {
    Disp(ADC());
  }
}

⌨️ 快捷键说明

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