P1口做数据口
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define disdata P0 //显示数据码输出口
unsigned char code tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
sbit ST=P3^0;
sbit EOC=P3^1;
sbit OE=P3^2;
sbit CLK=P3^3;
/**********延时函数************/
void delaynms(uchar i)
{
uchar j;
while(i--)
{
for(j=125;j>0;j--)
;
}
}
/*********系统初始化***********/
void Init_Time()
{
EA = 1; //开总中断
TMOD = 0x02; //设定定时器T0工作方式2
TH0=0xff; //利用T0中断产生CLK信号
TL0=0xff;
TR0=1;//启动定时器T0
ET0=1;
}
/***********T0中断服务程序************/
void t0(void) interrupt 1 using 0
{
CLK=~CLK;
}
/***********AD转换函数**********/
void Init_AD()
{
OE=0;
ST=0;
ST=1; //启动AD转换
ST=0;
delaynms(2);
}
/*******数码管显示******/
void display(uint ad_data)
{
P0=tab[ad_data/100];
P2=0xfe;
delaynms(1);
P0=tab[ad_data%100/10];
P2=0xfd;
delaynms(1);
P0=tab[ad_data%10];
P2=0xfb;
delaynms(1);
P2=0xff;
}
/**********主函数*******/
void main()
{
uint ad_data=0;
Init_Time();
Init_AD();
P1=0x00;
while(1)
{
while(EOC==0);
OE=1;
ad_data=P1;
OE=0;
display(ad_data);
}
}