单片机ADC实验报告 下载本文

内容发布更新时间 : 2024/12/27 21:51:45星期一 下面是文章的全部内容请认真阅读。

ADC实验报告

1. 实验任务

利用单片机STC89C52与ADC0809设计一个数字电压表,能够测量0-5V之间的直流电压值,四位数码显示。

2. 现有元件

模数转换器ADC0804,STC89C52单片机,两个共阳极数码管。

3. 硬件设计

3.1 模数转换器ADC0809与单片机STC89C52的连接 (1) ADC0809规格及引脚分配图如下图3-1所示: (2) STC89C52各个引脚分布如下图3-2所示:

图3-1 ADC0809引脚图 图3-2 STC89C52引脚图

(3) 硬件连线

(a) 把“单片机系统”区域中的P3.0与”模数转换模块ADC0809“区域中的ST端子用导线相连接。

(b) 把“单片机系统”区域中的P3.1与”模数转换模块ADC0809“区域中的ALE端子用导线相连接。

(c) 把“单片机系统”区域中的P3.2与”模数转换模块ADC0809“区域中的OE端子用导线相连接。

(d) 把“单片机系统”区域中的P3.6与”模数转换模块ADC0809“区域中的EOC端子用导线相连接。

(e) 把“单片机系统”区域中的P3.7与”模数转换模块ADC0809“区域中的CLK端子用导线相连接。

(f) 把“模数转换模块ADC0809”区域中的ADDA、ADDB、ADDC端子用导线连接到单片机的VCC端子上。把“模数转换模块ADC0809”区域中IN7与外接输入电压相连。

(g) 把“单片机系统”区域中的P2.0-P2.7连接到“模数转换模块ADC0809”区域中D0D1D2D3D4D5D6D7端子上。 (h) 把“单片机系统”区域中的P1.0-P1.7连接到“数码管”区域中ABCDEFG端子上。把“单片机系统”区域中的P0.0-P0.1连接到“数码管”区域中12端口。

N INTO=1? 开始转换 4. 电路原理图

5、程序设计流程图

取转换后的数值 启动前准备初始化 将数值送显示 结束 开始 延时 Y 图4 电路原理图

6. C语言源程序

#include sbit ALE = P3^1; sbit ST = P3^0; sbit EOC = P3^2; sbit OE = P3^6; sbit CLK = P3^7;

sbit wexuan1=P0^0; sbit wexuan2=P0^1;

//sbit IN1 = P0^5; //sbit IN2 = P0^6; //sbit IN3 = P0^7;

unsigned int code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f}; //段码表

unsigned int n=0,flag1=1;flag=1,ad_data,num1=0,num2=0;

void delay(xms) { unsigned int x,y; for(x=xms;x>0;x--) for(y=110;y>0;y--); }

void display()//2位数码管显示 { float a; a=(float)ad_data/256*5*1000; num1=(int)a/1000; num2=(int)a/100-num1*10; P1=table[num1]; wexuan1=0; delay(1); wexuan1=1; P1=0x00; P1=0x80; //小数点