我是靠谱客的博主 虚心小土豆,最近开发中收集的这篇文章主要介绍毕业设计之光照感应模块ADC0832的运用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在这里插入图片描述
ADC0832的作用:
将电路中的模拟量转化为数值量
①采样 采样间隔t, 采样频率1/t 必须是最高频率的两倍
②量化 将采样的电平转化为数字量
在本设计中,给定采光电路的电压0~5V,所以被ADC所收到的数据也是0 ~ 5V之间的数值,举个例子来说,若接收到一个2.5V的电压,在量化时就可以得到数量级大概在为128,由于8位分辨率位256级,每一级对应的电压为5/256 = 19.53mv, (128/256*19.53)=2.5V,所以单片机通过接收到1000 0000就知道数量级为128,从而得到2.5V的电压。

ADC0832编程:
在这里插入图片描述
时序图
在这里插入图片描述
ADC0832芯片第一个时钟DI为高电平,第二第三个时钟选择通道,1 0选通道0,0 1选通道1,从第三个时钟开始到第11个时钟,接收8bit数据,从12到19个时钟第二次接收数据,如果两次接收的一样,就输出。
代码:
u8 ADC0832_read(u8 CHX);
//CHX是单片机发送给ADC0832的第三位,该位确定芯片选择哪个通道进行工作,函数返回ADC0832芯片DO的得到的数字量,该数字量即为模数转化芯片的通过量化取得数量级,通过该值进行一定的计算就得到了电路中电压的值。

#ifndef   _ADC0832_H_
#define   _ADC0832_H_
#include  <reg52.h>	 
#define u8   unsigned  char
/**
	下面是芯片需要与单片机连接的引脚
	除了下面的引脚之外,还需要将Vcc接5V供电与GND引脚接地
**/
sbit   ADC_CS  = P2^7;
sbit   ADC_CLK = P2^3;
sbit   ADC_DO   = P2^2;
sbit   ADC_DI   = P2^2;
/**
 void ADC0832_start();
 按照时序图所示:
 为ADC0832启动的代码,CHIP SELECT(CS)一个下降沿 
 DATA(DI)为为高电平
 CLOCK(CLK)为低电平置低
**/
void ADC0832_start()
{
	ADC_CS = 1;			//禁用ADC0832芯片
	ADC_CS = 0;			 //开始

	ADC_DI  = 1;
	ADC_CLK = 1;
	ADC_CLK = 0;		  //第一个下降沿DI为1
}
/**
 u8 ADC0832_read(u8 CHX)
	参数:CHX 表示选择芯片的通道
	返回值:获得光照强度的值,该值为0~255之间的某一个量化的数值,例如00010000 32
**/
u8 ADC0832_read(u8 CHX)		 //通道0  第二位为1,第三位为0
{							 //通道1  第二位为1,第三位为1
	u8 temp,i;
	ADC0832_start();
	if(CHX == 0)			  //选择通道0,下降沿触发
	{
		ADC_DI = 1;
		ADC_CLK = 1;
		ADC_CLK = 0;
		ADC_DI = 0;
		ADC_CLK = 1;
		ADC_CLK = 0;
	}
	else //选择通道1
	{
		ADC_DI = 1;
		ADC_CLK = 1;
		ADC_CLK = 0;
		ADC_DI = 1;
		ADC_CLK = 1;
		ADC_CLK = 0;
	}
	ADC_CLK  =  1;
	ADC_CLK  =  0;

	for(i =8 ;i>0 ;i--) //接受8位数从高位向低位
	{	
		temp <<= 1;		   //左移一位,是末尾为0,接受端口的数据
		ADC_DI=1;
		ADC_CLK = 1;
		if(ADC_DO)//输出给单片机,如果有1,则+1,否则不执行,默认为0
		{	
			temp = temp + 0x01;
		}
		ADC_CLK = 0;
	}
	return temp;//temp中放的数值就是光照强度了
}
#endif

将光照强度转化为52单片机中可以处理的数字量的过程:
①首先要准备ADC0832芯片的驱动程序的代码,将其
#include <ADC0832.h> 包含在文件头中
②单片机上电,运行时,使用、

unsigned int ga_value;//应该定义在主函数的前面的位置
void ADC_init()
 {
     gz_value = ADC0832_read(0); //将获得光照强度的数值保存在gz_value
	 gz_value = ((gz_value*5)/255);//
	 gz_value = gz_value/5*100;//可以将光照强度转化为1~99之间的数值
  }

完整的电路图
毕业设计论文
基于单片机的智能窗帘控制系统的设计与实现
单片机各模块设计脑图
时钟模块设计
时钟模块设计详细设计
光照感应模块
光照感应模块详细设计

最后

以上就是虚心小土豆为你收集整理的毕业设计之光照感应模块ADC0832的运用的全部内容,希望文章能够帮你解决毕业设计之光照感应模块ADC0832的运用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部