基于单片机的温度数据采集系统实验报告(3)

2019-02-15 12:22

来结束读周期。

等待模式:24C01/02/04/08/16特有一个低功耗的等待模式。可以通过以下方法进入该模式:(a)上电 ()收到停止位并且结束所有的内部操作后。

器件复位:在协议中断、下电或系统复位后,器件可通过以下步骤复位:(1)连续输入 9 个时钟;(2)在每个时钟周期中确保当SCL 为高时SDA 也为高;(3)建立一个起始条件。

总线时序

程序设计如下: void start()//开始信号 {

sda=1; delay(); sck=1; delay();

sda=0;delay(); }

void stop()//结束信号 {

sda=0; delay(); sck=1; delay(); sda=1; delay(); }

void respons()//应答 {

uchar i;sck=1;delay(); while((sda==1)&&i<250)

i++; sck=0; delay(); }

void init()//初始化 { sda=1; delay(); sck=1; delay(); }

void write_byte(uchar date)//写字节 {

uchar i,temp; temp=date; for(i=0;i<8;i++) { temp=temp<<1; sck=0; delay(); sda=CY; delay();

sck=1;delay(); }

sck=0; delay(); sda=1; delay(); }

uchar read_byte()//读字节 {

uchar i,k; sck=0; delay(); sda=1; delay();

for(i=0;i<8;i++) { sck=1; delay();

k=(k<<1)|sda; sck=0; delay(); }

return k; }

void write_add(uchar address,uchar date)//写入外存储器中

{

start();

write_byte(0xa0); respons();

write_byte(address); respons();

write_byte(date); respons(); stop(); }

uchar read_add(uchar address)//从外存储器中读出数据 {

uchar date; start();

write_byte(0xa0); respons();

write_byte(address); respons(); start();

write_byte(0xa1); respons();

date=read_byte(); stop(); return date; }

3.A/D转换器设计

ADC0832是美国国家半导体公司生产的一种8位分辨率、双通道A/D转换芯片。由于它体积小,兼容性强,性价比高而深受单片机爱好者及企业欢迎,其目前已经有很高的普及率。学习并使用ADC0832可是使我们了解A/D转换器的原理,有助

于我们单片机技术水平的提高。 ADC0832具有以下特点: ● 8位分辨率;

● 双通道A/D转换;

● 输入输出电平与TTL/CMOS相兼容; ● 5V电源供电时输入电压在0~5V之间; ● 工作频率为250KHZ,转换时间为32μS; ● 一般功耗仅为15mW; ● 8P、14P—DIP(双列直插)、PICC多种封装; ● 商用级芯片温宽为0°C to +70°C,工业级芯片温宽为40℃ to +85℃。 引脚图

引脚功能如下:

ADC0832为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间。芯片转换时间仅为32μS,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。通过DI数据输入端,可以轻易的实现通道功能的选择。

功能时序图

当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK和DO/DI的电平可任意。当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平

直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。在第1个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号。在第2、3个脉冲下沉之前DI端应输入2位数据(SGL、Odd)用于选择通道功能,当此2位数据为“1”、“0”时,只对CH0进行单通道转换。当2位数据为“1”、“1”时,只对CH1进行单通道转换。当2位数据为“0”、“0”时,将CH0作为正输入端IN+,CH1作为负输入端IN-进行输入。当2位数据为“0”、“1”时,将CH0作为负输入端IN-,CH1作为正输入端IN+进行输入。 在完成输入启动位、通道选择之后,就可以开始读出数据,转换得到的数据会被送出二次,一次高位在前传送,一次低位在前传送,连续送出。在程序读取二个数据后,我们可以加上检验来看看数据是否被正确读取。 下面

程序如下:

unsigned char GetValue0832(bit Channel)//AD转换后的数据 {

unsigned char i,data1=0,data2=0; clk=0; d0=1; di=1;

cs=0;//cs=0时ADC0832有效 clk=1; //delay();

clk=0;//第一个脉冲,开始位 d0=1; di=1; clk=1; //delay();

clk=0;//第二个脉冲,模式选择 di=Channel;

d0=channel;//通道选择 clk=1; //delay();

clk=0; //第三个脉冲,通道选择 d0=1; di=1;

for(i=0;i<8;i++) //第一次读数从高到低 ,时钟下降沿有效 { clk=1; clk=0; if(d0==1&&di==1) data1|=0x80>>i; }


基于单片机的温度数据采集系统实验报告(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:俞敏洪演讲录:生活在自在与豁达的心境中

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: