AD转换器及1602显示

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机实验报告

一、实验目的

1、理解A/D转换得工作原理;

2、理解掌握ADC0809的A/D转换原理和并行A/D转换器接口的编程方法

3、学习使用并行模/数转换芯片ADC0809进行电压信号的采集和数据处理。

二、实验原理

单片机给ADC提供一个启动转换信号后,ADC转换开始;当A/D转换结束时,ADC输出一个转换结束标志信号,通知单片机读取转换结果。单片机检查判断A/D转换结束的方法一般有中断和查询两种。整个A/D转换都是在一定的时钟作用下完成,其频率是决定芯片转换速度的基准。

ADC0809芯片部分电路原理图

系统板硬件连线

(1)将ADC0809 PACK模块(选配件)插入PARK2区;

(2)将D2区1 kΩ电位器和10kΩ电位器的左端金属孔通过导线连接到该区GND 金属孔,而右端金属孔通过导线连接到该区的VCC金属孔;

(3)将D2区的1 kΩ电位器的中间金属孔连接到A7区的P2_IO2金属孔,而D2区10kΩ电位器的中间金属孔连接到A7区的P2_IO1金属孔;

(4)将A7区的P2_IO3~ P2_IO5分别连接到A2区的A2~A0;

(5)将A7区的P2_CS连接到A2区的A15;

(6)运行编写好的软件程序,每次跑到断点就会停止,此时观察转换得结果与数字万用表测量的结果相比较是否正确(所需观察的存储单元或者变量在程序中依照注释执行)

(7)改变1 kΩ电位器和/或10kΩ电位器的旋转位置,用数字万用表测量中间金属孔的电压,再次运行程序至断点处,观察转换的结果是否正确。

程序流程图

三、实验内容

仿真电路图

程序设计

#include<reg51.h>

#include<intrins.h>

#include<absacc.h>

#define PIN0 XBYTE[0x7FF8]

unsignedchar

sm[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

unsigned char f=1;

void delay1()

{

unsigned char i;

for(i=0;i<200;i++);

}

void display(float a)

{char b,c;

while(1)

{c=(a*100-b*100)/10;

b=a*100/100;

P2=0xf7;

P1=sm[(int)b];

delay1();

P2=0xfb;

P1=0x80;

delay1();

P2=0xfd;

P1=sm[(int) c];

delay1();

P2=0xfe;

P1=sm[(int) ((a*100-b*100)-c*10)];

delay1();

}

}

void main()

{float result0=0;

float result_reg0;

float a=0,b=0,c=0;

EA=1;

EX0=1;

while(1)

{ if(f==1)

{f=0;

PIN0=0;

delay1();

result_reg0=PIN0;

result0=result_reg0*5/255;

a=result0;

display(a);

delay1();

delay1();

}}

}void out0() interrupt 0

{

f=1;}

四、小结与体会

本次实验是A/D转换,通过实验理解了A/D转换得工作原理,理解掌握ADC0809的A/D转换原理和并行A/D转换器接口的编程方法,对已学的知识做了回顾。

相关文档
最新文档