1113|4

1754

帖子

0

资源

纯净的硅(高级)

STM32+光敏传感器+串口接收光照强度源程序 制作成功 [复制链接]

image.png  

用的是四针脚光敏传感器
不同型号的STM32 ADC通道的选择也不一样
我使用的是STM32F103RCT6单片机 选择了ADC2 通道6 对应的是PA6引脚。
希望对大家有帮助

 

image.png  

image.png  

image.png  

下面是部分STM32单片机代码
主函数

#include "stm32f10x.h"  
#include "beep.h"
#include "delay.h"
#include "lcd.h"
#include "usart.h"
#include "adc.h"
#include "lsens.h"
#include "stdio.h"

int main(void)
{        
  u8 ADCX;
  u8 t=0,i;
        char LSEN[20];
  USART1_init();
        BEEP_Init();
        LCD_Init();
        Lsens_Init();
        LCD_BLK = 0;
        for(i=3;i>0;i--)
        {
          LCD_DrawFont_Num32(50,80,RED,YELLOW,i);
                delay_ms(1000);
        }
        LCD_Clear(GREEN);
        LCD_DrawFont_GBK16(25,0,BLUE,GREEN, "运行中...");
        LCD_DrawFont_GBK16(5,60,BLACK,GREEN, "光照:");
        LCD_DrawFont_GBK16(70,60,BLACK,GREEN, "CD");
        while(1)
        {
   if(t%10==0)
         {
                ADCX=Lsens_Get_Val();
                sprintf(LSEN,"%d",ADCX);        //将光敏电阻值转换为字符格式        
                printf("光强: %d CD\r\n ",ADCX);        
         }
         if(ADCX<40)             //报警阈值
         {
                 if(ADCX<40)
                 {
                   LCD_DrawFont_GBK16(50,60,RED,GREEN,LSEN);
                 }
           GPIO_SetBits(BEEP_PORT,BEEP_PIN);
                 delay_ms(10);
                 GPIO_ResetBits(BEEP_PORT,BEEP_PIN);
         }
         else
         {
                 LCD_DrawFont_GBK16(50,60,BLACK,GREEN,LSEN);
         }
   delay_ms(100);
         t++;
        }
}

串口
<blockquote>void USART1_init(void)

光敏传感器:

 

//初始化光敏传感器函数,即对GPIO,PA6初始化参数配置//
void Lsens_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF,ENABLE);    //使能GPIOA时钟
//配置GPIOA参数,引脚6,模拟输入//
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;     
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;  
GPIO_Init(GPIOF, &GPIO_InitStructure);
Adc2_Init();
}
//读取Light Sens的值,范围0-100,0最暗;100最亮//
u8 Lsens_Get_Val(void)
{
u32 temp_val=0;
u8 t;
for(t=0;t<LSENS_READ_TIMES;t++)       //LSENS_READ_TIMES在lsens.h文件中设好,默认10//
{
  temp_val+=Get_Adc2(LSENS_ADC_CHX);   //读取ADC值,LSENS_ADC_CHX在lsens.h文件中设好,默认ADC_Channel_6,即0x06//
  delay_ms(5);
}
temp_val/=LSENS_READ_TIMES;           //计算平均值//
if(temp_val>4000)temp_val=4000;       //当计算后的值大于4000时,强制转换为4000//
return (u8)(100-(temp_val/40));       //将temp_val值归一化到0-100之间//
}

 

全部资料下载地址:

 

STM32 光敏传感器.7z (186.17 KB, 下载次数: 19)


回复

95

帖子

0

资源

一粒金砂(中级)

光敏传感器上的芯片是什么

点评

比较器  详情 回复 发表于 2021-11-26 12:37

回复

123

帖子

0

资源

一粒金砂(中级)

well_kim 发表于 2021-11-26 08:38 光敏传感器上的芯片是什么

比较器


回复

31

帖子

0

资源

一粒金砂(中级)

讲解太全  给你点赞


回复

8

帖子

0

资源

一粒金砂(中级)

我最近在学单片机,买了个蓝牙模块折腾半天不会编程,还得学C语言,好难啊,通信说明的

 


回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

最新文章 更多>>
    关闭
    站长推荐上一条 1/10 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表