51单片机项目(12)——基于51单片机的智能台灯设计_基于51单片机的自动调节台灯系统的设计与实现(1)

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

实现过程:

PCF8591是一款常用的多功能模拟数字转换器(ADC)和数字模拟转换器(DAC)集成电路。它具有4个单端模拟输入通道和一个单端模拟输出通道,能够将模拟信号转换为数字信号,并反之亦然。

PCF8591广泛应用于各种电子设备中,包括传感器接口、数据采集、电压测量和控制等领域。它的工作电压范围广泛,具有低功耗和高精度的特点,能够满足许多应用的需求。

PCF8591通过I2C总线进行通信,可以通过编程来控制和读取数据。使用适当的软件库和编程语言,您可以轻松地与PCF8591进行交互并集成到您的项目中。

总之,PCF8591是一款常用的模拟数字转换器集成电路,适用于许多应用场景,具有高精度和低功耗的特点。

使用PCF8591的过程可以分为以下几个步骤:

  1. 连接硬件:将PCF8591与单片机或其他主控设备进行连接。通常使用I2C总线连接,将PCF8591的SDA引脚连接到主控设备的SDA引脚,SCL引脚连接到主控设备的SCL引脚,同时接地引脚和电源引脚。

  2. 初始化设置:在程序中对PCF8591进行初始化设置。这通常包括选择输入模式(单端或差分模式)、设置模拟输入通道的增益和参考电压等参数。具体的设置取决于您的应用需求。

  3. 读取模拟输入:使用相应的命令或函数从PCF8591读取模拟输入通道的数据。根据PCF8591的配置,您可以选择读取单个通道的数据或同时读取多个通道的数据。读取的数据是模拟信号经过ADC转换后的数字值。

  4. 控制模拟输出:如果需要,您可以使用PCF8591的数字模拟转换功能,将数字信号转换为模拟信号输出。通过写入适当的数值,可以控制模拟输出通道的电压值。

  5. 处理数据:根据您的应用需求,对从PCF8591读取的数据进行适当的处理和解析。例如,可以进行单位转换、数据滤波、校准等操作,以获得您所需的结果。

需要注意的是,具体的使用过程可能因不同的开发平台、编程语言或软件库而有所差异。因此,建议参考PCF8591的相关文档和示例代码,以了解如何在您的特定环境中正确使用PCF8591。

超声波模块:

HC-SR04是一种常用的超声波模块,用于测量距离。它包含一个超声波发射器和一个超声波接收器,可以通过发射超声波信号并接收其回波来计算距离。

使用HC-SR04的过程如下:

  1. 连接硬件:将HC-SR04模块与您的控制器(如Arduino)进行连接。HC-SR04模块通常具有4个引脚,包括电源引脚(VCC和GND)、触发引脚(Trig)和接收引脚(Echo)。将VCC引脚连接到5V电源,GND引脚连接到地,Trig引脚连接到您控制器上的数字输出引脚,Echo引脚连接到您控制器上的数字输入引脚。

  2. 发送超声波信号:将Trig引脚设置为高电平(通常是10微秒),然后将其恢复为低电平。这将触发HC-SR04模块发送一个短时脉冲的超声波信号。

  3. 接收超声波回波:HC-SR04模块会自动接收超声波信号的回波,并将其转换为Echo引脚上的电平信号。您可以通过读取Echo引脚上的电平,来确定超声波信号的传播时间。

  4. 计算距离:通过测量超声波信号从发射到接收的时间差(通常以微秒为单位),可以计算出距离。公式如下:距离 = (时间差 * 声速)/ 2,其中声速通常为340米/秒。

需要注意的是,HC-SR04模块的使用可能会受到一些因素的影响,例如噪声、超声波传播速度的变化等。在编程时,您还需要根据具体的控制器和开发平台,选择适当的代码和库函数来进行触发和读取操作。

综上所述,使用HC-SR04模块可以通过发送超声波信号,并测量其回波的时间来计算距离。这在许多项目中用于避障、测量距离等应用。

模块与单片机连接方式:

/*

接线方式:
超声波 Trig–>P2.4  Echo—>P2.3
PCF8591   SCL–>P2.0  SDA–>P2.1
注明:所有模块的VCC  和  GND都需要连接

*/

主函数代码如下:

#include "reg52.h"
#include "LCD1602.h"
#include "delay.h"
#include <string.h>
#include <stdio.h>
#include <I2C.H>
#include "usart.h"
#include <intrins.h>

/*

接线方式:
超声波 Trig-->P2.4  Echo--->P2.3
PCF8591   SCL-->P2.0  SDA-->P2.1
注明:所有模块的VCC  和  GND都需要连接

*/

#define  PCF8591 0x90    //PCF8591 地址

int light=0;   //定义光照强度
int t=0;

sbit beep=P2^5;
sbit RX=P2^3;
sbit TX=P2^4;     //超声波模块端口定义
bit      flag =0;

char i=0;
char inf[]="light:000  distance:0000  t:000\r\n";

unsigned int  time=0;
unsigned long S=0;
unsigned int  distance=0;
unsigned int  timer=0;


//蜂鸣器报警的函数
void beep_my()
{
  int i=1000;
   while(i)
   {
     beep=~beep;
      i--;
      delay(100);
   }
}

 void  StartModule() 		         //启动模块
 {
	  TX=0;			                     //启动一次模块
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_();
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_();
	  TX=1;
     _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_();
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_();
     TX=0;
 }

void Int0Init()             //定时器初始化 
{  
   TMOD|=0x01;		   //设T0为方式1,GATE=1;
	TH0=0;
	TL0=0;          	
	ET0=1;             //允许T0中断	
	EA=1;			   //开启总中断
   
}

int Conut(void)         //计算距离
{  
	 time=TH0*256+TL0;
	 TH0=0;


![img](https://img-blog.csdnimg.cn/img_convert/ff1316acf582772b6421de55c1421d8e.png)
![img](https://img-blog.csdnimg.cn/img_convert/d26f54aa248c8352d58207f32f3a79b1.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新**

**需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**

经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新**

**需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值