当前位置:   article > 正文

MCP3008模数转换spi通讯,LM335温度采集之51单片机(免费送含proteus仿真和c代码和m文件的资料包)

mcp3008

MCP3008芯片介绍

  1. datasheet的链接如下(只有英文版):MCP3008

  2. 主要特性:8通道模拟输入,SPI通讯协议,输出电压数据格式为10bit。

  3. 引脚封装
    引脚封装图

  4. 引脚功能

引脚功能
CH0~CH7模拟信号输入通道
NC空引脚
VDD电源(接5v即可)
VREF参考电压(重点讲解)
AGND模拟信号地
DGND数字信号地
CLK时钟信号
DOUT信号输出(MISO)
DIN信号输入(MOSI)
CS片选信号(低电平有效)即低电平芯片工作
  1. 使用方法(重点!!)
  • 单通道工作方式(通过SPI协议设置)

MCP3008芯片会将VREF引脚的输入电压分成1024(2的10次方等于1024)份,每一份代表一个电压分辨率,则芯片输出的数值与分辨率相乘即为所测电压。本例这个我将VREF接4.096v上,则每一份的电压值为4.096/1024 = 0.0040039,取小数点后三位则为 0.004,则实际测得电压值为通过SPI协议读取得数据与这个分辨率相乘。(注:取4.096电压值主要是使得分辨率数值简单为0.004,其他电压自行计算)。

  • 双通道模式(通过SPI协议设置)

双通道模式也叫差分输入,输入电压取两个引脚的电压差,分辨率同理都是在芯片内部完成转换的。

  1. 电路接线图
    在这里插入图片描述

AT89C51单片机通讯 部分源码如下(温度数据存在数组data_temp中):

#include <reg51.h>    //包含单片机寄存器的头文件
#include <intrins.h>  //包含_nop_()函数定义的头文件
#include <stdio.h>
#define  uint8_t   unsigned char
#define  uint16_t  unsigned short int
	

sbit SCK=P2^3;       //SCK位
sbit SI=P2^1;        //SI位
sbit SO=P2^2;        //SO位
sbit CS=P2^0;        //CS


/****************MCP3008**************************/
 
unsigned char SPI_WriteReadByte(unsigned char  dat)
{
unsigned char i = 0;
unsigned char temp = 0;
unsigned char read_data = 0x00;
//	SCK=0;
for(i=0;i<8;i++) 
	{
	SCK=0;
  temp=((dat&0x80)==0x80)?1:0;
  dat= dat<<1;	
	SI=temp;
	SCK=1;
	_nop_();
	_nop_();
  read_data <<=1;
  read_data|=(unsigned char)SO; 
 
 }
//	SCK=1;	
return read_data;
}

uint16_t read_temp() //读取ad转换值
{
 uint16_t temperature = 0 ;

 SCK=0;                 //将SCK置于已知状态
 CS=0;                  //拉低CS,选中X5045
 data_temp[0] =SPI_WriteReadByte(0x01);    //读出数据
 data_temp[1] =SPI_WriteReadByte(0x80);    //读出数据
 data_temp[2] =SPI_WriteReadByte(0);    //读出数据
 CS=1;                 //拉高CS
 SCK=0;                //将SCK置于已知状态
	
	
 data_temp[1] &= 0x03;
 temperature |=  data_temp[1];
 temperature = (temperature<<8)| data_temp[2];
	
 return temperature;           //返回读出的数据
 }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57

Proteus演示效果

在这里插入图片描述

Matlab演示效果

matlab演示效果

总结

LM335(关于LM335可以看我另一篇文章LM335)采集温度并改变输入电压,MCP3008模数转换器将电压转换成10bit数据,并通过SPI通讯协议发送至单片机,单片机通过串口输出温度值。

以上就是我个人的实战经验,如有不对请多多指教,感谢!

资料包在此

MCP3008之51单片机lm335采集温度matlab显示

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/230578
推荐阅读
相关标签
  

闽ICP备14008679号