程序如下!
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit w1=P2^0;
sbit w2=P2^1;
sbit w3=P2^2;
sbit _CS=P2^4; //ADC0804片选位定义
sbit _RD=P2^5; //ADC0804读信号输入位定义
sbit _WR=P2^6; //ADC0804写信号输入位定义
uchar code dula1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //数码管显示0~9数组(不带小数点)
uchar code dula2[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xed,0x87,0xff,0xef}; //数码管显示0~9数组(带小数点)
uchar a,A1,A2,A3,num;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void display() //数码管显示子函数,将ADC0804得到的电压显示在数码管上面
{
w1=0;
w2=1;
w3=1;
P0=dula2[A1];
delay(10);
w1=1;
w2=0;
w3=1;
P0=dula1[A2];
delay(10);
w1=1;
w2=1;
w3=0;
P0=dula1[A3];
delay(10);
}
void Adc_0804()
{
_WR=0; //启动ADC0804进行ADC采集
_nop_(); //延时片刻
_WR=1;
delay(10);
P1=0xff;
_RD=1;
_nop_();
_RD=0;
_nop_();
num=P1;
_RD=1;
A1=num/100;
A2=num%100/10;
A3=num%10;
display();
}
main()
{
_CS=0; //ADC0804置零,以后就不用再管ADC0804选择位了
while(1)
{
Adc_0804();
}
}
|