51单片机_AT89C52A/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;
【51单片机_AT89C52A/D转换】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);
}
}
推荐阅读
- 51单片机_AT89C52D/A转换
- 单片机的分类有哪些?pic单片机和51单片机的区别
- 单片机定时器、中断试验
- 单片机的中断系统
- 单片机定时器/计数器的方式控制字
- 单片机定时器与计数器
- XPG CORE REACTOR 750 GOLD电源转换效率测评
- 单片机位操作指令
- 单片机条件转移指令
- 单片机逻辑与或异或指令祥解