1、用一个2PIN数据线插入CPU部分JP53(P3口)的P3.6,P3.7另一端插入ADC0804部分的输入端J3.
2、用一根8PIN的数据排线, 一端插入ADC0804部分的数据输入端JP35,
另一端插入CPU部分JP44(P1口)
3、用一根8PIN的数据排线, 一端插入八路指示灯部分的JP32,
另一端插入CPU部分JP51(P0口)
运行照片,用一个小螺丝刀调整AD转换部分的ADJ3
可以看到P0口引出的8个LED逐次变化。
程序流程图:

汇编语言参考程序:
ad_cs equ P3.6
ad_wr equ P2.0
ad_rd equ P3.7
ad_input_port equ p1
org 0000h
ajmp main
org 0080h
main:
lcall adc_demo
ajmp main
;// 启动AD转换
Adc_Start:
clr ad_cs
nop
clr ad_wr
nop
setb ad_wr
nop
setb ad_cs
nop
ret
Adc_Read: ;// 读AD转换
mov ad_input_port,#0ffh
clr ad_cs
nop
clr ad_rd
nop
nop
mov a,AD_INPUT_PORT
nop
setb ad_rd
nop
setb ad_cs
ret
;// AD转换读取延时程序,显示读到的数值
Adc_Demo:
lcall Adc_Start
lcall delay1ms
lcall adc_read
clr p2.0
clr p2.3
mov p0,a
ret
delay1ms:
mov r7,#10
tt1:
mov r6,#50
djnz r6,$ ;2us
djnz r7,tt1
ret
end
c语言参考程序:
#include<reg51.h>
//头文件
#define uchar unsigned char //宏定义,为方便编程
#define uint unsigned int
#define ADDATA P1 //宏定义,将P1口定义为0804输出数据位
#define LED P0 //宏定义,将P0口定义为LED
sbit _WR=P2^0; //定义P2.0为数据写入位
sbit CS=P3^6; //定义P3.6为ADC0804片选位
sbit _RD=P3^7; //定义P3.7为数据读取位
void delay_run() //AD转换间隔延迟函数
{
uchar ii,jj;
for(ii=0;ii<200;ii++)
for(jj=0;jj<200;jj++);
}
void delay() //片选及读写数据位保持延迟
{
uchar i=200;
while(i--);
}
char code SST516[3] _at_ 0x003b; //仿真器保留
main() //主函数
{
uchar value=0; //定义一变量,用于存放AD转换完的数据
while(1)
{
CS=0; //拉低片选位
_WR=0; //拉低写数据位
delay(); //延迟
_WR=1; //拉高写数据位,启动AD转换
CS=1; //拉高片选位
CS=0; //拉低片选位
_RD=0; //拉低读数据位,读取AD转换数据
value=ADDATA;
delay(); //延迟
_RD=1; //拉高读数据位
CS=1; //拉高片选
LED=value; //将AD转换的数据赋给P0,驱动LED
delay_run(); //AD转换间隔延迟
}
}