AD转换器及1602显示
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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转换器接口的编程方法,对已学的知识做了回顾。