ADC0832例程
时间: 2023-08-04 13:08:15 浏览: 92
以下是ADC0832的基本例程,供参考:
```c
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit INTR=P3^2; // 定义 ADC0832 的 INTR 引脚连接的单片机端口
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; // 数码管显示表
void delay(uint z) // 延时函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
uchar read_AD(uchar cmd) // 读取 ADC0832 的函数
{
uchar i,dat=0;
INTR=1; // 先将 INTR 置为高电平
P1=cmd; // 写入指令
INTR=0; // 将 INTR 置为低电平,开始转换
_nop_(); // 保持 0.6us
_nop_(); // 保持 0.6us
_nop_(); // 保持 0.6us
_nop_(); // 保持 0.6us
_nop_(); // 保持 0.6us
_nop_(); // 保持 0.6us
_nop_(); // 保持 0.6us
_nop_(); // 保持 0.6us
while(!INTR);
INTR=1; // 将 INTR 置为高电平,结束转换
dat=P1; // 读取转换结果
return dat;
}
void main()
{
uchar i,num;
while(1)
{
num=read_AD(0x81); // 读取通道 1 的模拟量输入
P0=table[num/100]; // 显示百位数码
P2=0xfe; // 打开第一个数码管
delay(5); // 延时
P2=0xff; // 关闭所有数码管
P0=table[num%100/10]; // 显示十位数码
P2=0xfd; // 打开第二个数码管
delay(5); // 延时
P2=0xff; // 关闭所有数码管
P0=table[num%10]; // 显示个位数码
P2=0xfb; // 打开第三个数码管
delay(5); // 延时
P2=0xff; // 关闭所有数码管
}
}
```
注:此例程使用了单片机的 P0、P1、P2、P3 端口分别连接数码管和 ADC0832。ADC0832 的 CS、RD、WR 引脚分别接地,VCC 引脚接正电源,GND 引脚接地。
阅读全文