资源描述
唐梦雪 实验五 I2C的DA
精品文档
实验五 I2C的DA/ADC转换实验
一、实验目的
1、 掌握I2C的DA/ADC芯片与单片机接口方法;
2、 掌握I2C器件编程方法;
3、 掌握DAC和ADC的使用方法。
二、实验前准备
1、 完成作业7;
2、 根据实验内容编写好相关程序,并进行Proteus仿真。
程序和仿真图:
#include<reg52.h>
#include<intrins.h>
#include"I2C.h"
#define uchar unsigned char
#define uint unsigned int
#define _Nop( ) _nop_( )
sbit oe=P1^3;
sbit dula=P1^4;
sbit wela=P1^5;
data uchar j;
uchar code sled_bit[]={0xfe,0xfd};//,0xfb,0xf7};//,0xef,0xdf,0xbf,0x7f};
data uchar disp[2]={16,16};
uchar code table[18]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
void main()
{
data uchar a;
oe=0;
P0=0xff;
TMOD=0x01;
TH0=(65536-500)/256;
TL0=(65536-500)%256;
ET0=1;
EA=1;
TR0=1;
sen:erflags=0;
Start();
SendByte(0x90);
cAck();
if(erflags)goto sen;
SendByte(0x00);
cAck();
if(erflags)goto sen;
sen1:Start();
SendByte(0x91);
cAck();
if(erflags)goto sen1;
a=RcvByte( );
Ack( );
while(1)
{
a=RcvByte( );
Ack( );
disp[0]=a/16;
disp[1]=a%16;
}
}
void T0_int(void) interrupt 1
{
uchar k;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
oe=1;
k=disp[j];
P0=0xff;
P0 = table[k];
dula=1;
dula=0;
P0 = sled_bit[j];
wela=1;
wela=0;
oe=0;
j++;
if(j>=2)j=0;
}
三、实验内容
实验内容为3项,其中第1、2项必做。
1、D/A转换实验。
设置一个一维数组data uchar c[4]={0x00,0xa0,0xaa,0xff};按下K1、K2、K3、K4,分别将c[0]、c[1]、c[2]、c[3] 的值转换成模拟量输出,观察发光二极管D23的亮度。若是仿真,可以通过电压表观察模拟量的电压值。
2、单通道采样与动态显示。
对AIN0通道进行采样,将采样数据在1、2两位动态显示,调节电位器观察显示数据变化。
3、简易电压表实现。
对AIN0通道进行采样,将采样数据转换成4位电压值在1、2、3、4四位动态显示,注意只有1位整数3位小数。调节电位器观察显示数据变化。
1.2.
3.
四、实验原理
实验原理图
电路中,P3.6、P3.4分别连接SCL、SDA,地址引脚A2A1A0=000,PCF8591的特征编码为1001,电路中PCF8591的地址为1001000。4路模拟输入,AIN0连接一个10KΩ电位器的中心抽头,调节电位器可改变AIN0的模拟电压,AIN1连接电源,AIN2、AIN3连接地。
PCF8591的15脚AOUT是DAC输出的模拟量, AOUT引脚通过50Ω电阻、LED与电源连接,输出模拟量越小,LED越亮。注意在HNIST-2型实验装置中,将J16的1、2脚短路。
五、软件设计思想
1、 编程思路
仿照例题编写程序,采用例题的I2C的相关函数。动态显示采用实验四的方法,只将显示数据送人相应显示数组元素。
2、 简易电压表实现
注意在采样数据转换成4位电压值时,中间变量要设置长整形数据类型,并注意小数点设置。
六、实验思考题
1、 采用I2C接口的ADC有什么好处?
2、 如果通过按K1、K2、K3、K4键分别选择ADC采样0、1、2、3通道,程序如何处理?
3、 如何利用芯片的通道自动增量的功能,对AIN0、AIN1、AIN2、 AIN3通道轮流进行采样。
1.答:采用I2C接口的ADC,可直接与具有I2C总线接口的各种扩展器件连,
数据传输速率高。
2.答:PCF8591的控制寄存器中的D0,D1为通道选择位,程序中把K1、K2、K3、K4键的键值传递给D0,D1,对应相应的通道。这样就可以通过按K1、K2、K3、K4键分别选择ADC采样0、1、2、3通道。
3.答:PCF8591的控制寄存器中的D2为自动增量允许位,将D2置1 ,每对一个通道转换后自动切换到下一通道进行转换,就可以对AIN0、AIN1、AIN2、 AIN3通道轮流进行采样。
七.实验心得与体会
此次实验我自认为做的没有以前几次那么顺利,实验的仿真图比以往的仿真图都复杂些,单是在电脑上画仿真图我花了将近一个小时,这说明我对单片机的熟悉程度低,平常没有花时间在这上面。这是本学期的最后一次实验,让我又爱又恨。
不可否认的是在实验中还是学到了不少东西,和同组的同学讨论,不断修改程序,最终做出了成果,这是一个有意义的过程。现在的实验对动手能力要求不高,主要还是紧抓理论知识,充实自己,期待下一次的实验。
学号 14142200296 序号 16
单片机原理与接口技术
实验报告
实验项目序号 五
实验项目名称 I2C的DA/ADC转换实验
姓 名 唐梦雪 专 业 电子信息工程 班 级 三班
完成时间 2016.5.22
收集于网络,如有侵权请联系管理员删除
展开阅读全文