AT89C52單片機A/D轉換
#include
#define uchar unsigned char
#define uint unsigned int
#define PORT P3
#define dula_h P2|=0x40
#define dula_l P2&=0xbf
#define wela_h P2|=0x80
#define wela_l P2&=0x7f
sbit cs=P2^0;
sbit rd=P2^1;
sbit wr=P2^2;
uchar read;
uchar table[]={ //共陽數(shù)碼管
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};
void delayms(uint x)
{
uint y,z;
for(y=x;y>0;y--)
for(z=110;z>0;z--);
}
void show()
{
dula_l;
wela_l;
PORT=0x80;
wela_h;
wela_l;
PORT=table[read%10];
dula_h;
dula_l;
delayms(1);
PORT=0x40;
wela_h;
wela_l;
PORT=table[read%100/10];
dula_h;
dula_l;
delayms(1);
PORT=0x20;
wela_h;
wela_l;
PORT=table[read/100];
dula_h;
dula_l;
delayms(1);
PORT=0x10;
wela_h;
wela_l;
PORT=table[0];
dula_h;
dula_l;
delayms(1);
PORT=0x08;
wela_h;
wela_l;
PORT=table[0];
dula_h;
dula_l;
delayms(1);
PORT=0x04;
wela_h;
wela_l;
PORT=table[0];
dula_h;
dula_l;
delayms(1);
PORT=0x02;
wela_h;
wela_l;
PORT=table[0];
dula_h;
dula_l;
delayms(1);
PORT=0x01;
wela_h;
wela_l;
PORT=table[0];
dula_h;
dula_l;
delayms(1);
}
void main()
{
while(1)
{
cs=1;//A/D轉換時序
wr=1;
cs=0;
wr=0;
wr=1;
cs=1;
delayms(1);
cs=1;//轉換結果輸出時序
rd=1;
cs=0;
rd=0;
read=P0;
delayms(1);
rd=1;
cs=1;
show();//數(shù)碼管顯示函數(shù)
delayms(10);
}
}