程序如下!
#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();
}
}
|