51单片机(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[]={ //共阳数码管
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();//数码管显示函数
delayms(10);
}
}