STM32光敏传感器实验
![](/assets/blank.gif)
本章所要实现的功能是:通过 ADC3 通道 6 采集光敏传感器的 AD 值,并将该 值转换为光照强度值 0-100,0 对应最暗,100 对应最亮,并通过串口 1 输出光 照强度值,DS0 指示灯闪烁提示系统正常运行。程序框架如下: (1)初始化光敏传感器(初始化 ADC3_IN16) (2)编写光线强度读取函数 (3)编写主函数
lsens.h+lsens.c
#ifndef _lsens_H
#define _lsens_H#include "system.h"
void Lsens_Init();
u16 Get_ADC_lsens_Value(u8 ch);
u8 Get_Light_Strenth();
#endif
#include "lsens.h"
#include "SysTick.h"void Lsens_Init()
{GPIO_InitTypeDef GPIO_InitStructure;ADC_InitTypeDef ADC_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC3 , ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF , ENABLE);GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;GPIO_Init(GPIOF,&GPIO_InitStructure);ADC_InitStructure.ADC_ContinuousConvMode=DISABLE;// ADC 单次转换disable或者连续转换选择enableADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;// ADC 数据寄存器对齐格式ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;// ADC 转换触发信号选择,未使用外部触发ADC_InitStructure.ADC_Mode=ADC_Mode_Independent ;// ADC 工作模式选择ADC_InitStructure.ADC_NbrOfChannel=1;// ADC 采集通道0x1-0x10ADC_InitStructure.ADC_ScanConvMode=DISABLE;; /* ADC 扫描enable(多通道)或者单次disable(单通道)模
式选择 */ADC_Init( ADC3, &ADC_InitStructure);ADC_Cmd( ADC3, ENABLE);ADC_ResetCalibration(ADC3);//复位校准while(ADC_GetResetCalibrationStatus(ADC3));//检测到复位校准状态完成之后退出循环ADC_StartCalibration(ADC3);//开始指定adc1的校准状态while(ADC_GetCalibrationStatus( ADC3));//原理同上ADC_SoftwareStartConvCmd(ADC3, ENABLE);//开启ad转换,软件触发模式}
u16 Get_ADC_lsens_Value(u8 ch)//得到ADC的值,ch通道值,times循环多次取平均值得次数
{ADC_RegularChannelConfig( ADC3, ch,1, ADC_SampleTime_239Cycles5 );//设置规则序列通道以及采样周期ADC_SoftwareStartConvCmd(ADC3, ENABLE);//因为选择的是单次转换//每采集一次就结束,采集关闭,所以要开启转换,从而多次开启取平均值while(ADC_GetFlagStatus(ADC3,ADC_FLAG_EOC)==0);//转换完成返回1return ADC_GetConversionValue(ADC3);;}
#define LSENS_READ_TIMES 10
u8 Get_Light_Strenth()//得到光照强度0-100;
{u8 t=0;u32 lsens_val=0;for(t=0;t<LSENS_READ_TIMES;t++){lsens_val+=Get_ADC_lsens_Value(ADC_Channel_6);delay_ms(5);}lsens_val/=LSENS_READ_TIMES;if(lsens_val>4000)lsens_val=4000;//限制ad值取整数然后容易得到光强return (u8)(100-(lsens_val/40));//0-100 从最暗到最亮,这里0-100并不是标准值,只不过是//设定了一个值而已}
mian.c
#include "stm32f10x.h"
#include "led.h"
#include "system.h"
#include "SysTick.h"
#include "beep.h"
#include "key.h"
#include "exti.h"
#include "time.h"
#include "pwm.h"
#include "usart.h"
#include "stdio.h"
#include "iwdg.h"
#include "wwdg.h"
#include "input.h"
#include "touch_key.h"
#include "wkup.h"
#include "adc.h"
#include "adc_temp.h"
#include "lsens.h"
int main()
{u8 i=0;u8 lsens_val=0;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置优先级分组SysTick_Init(72);LED_Init();USART1_Init(115200);//波特率115200Lsens_Init();while(1){i++;if(i%20==0)LED1=!LED1;delay_ms(10);if(i%100==0){lsens_val=Get_Light_Strenth();printf("光照强度: %d\r\n",lsens_val);}}}
STM32光敏传感器实验相关推荐
- STM32——光敏传感器实验-M4
一.光敏传感器原理 1.光敏传感器简介 光敏传感器是最常见的传感器之一,它的种类繁多,主要有:光电管.光电倍增管.光敏电阻.光敏三极管.太阳能电池.红外线传感器.紫外线传感器.光纤式光电传感器.色彩传 ...
- (27)STM32——光敏传感器实验笔记
目录 学习目标 运行结果 内容 介绍 配置 代码 总结 学习目标 我们这篇文章介绍的是有关光敏传感器的知识点,本节内容比较简单,主要的知识还是我们的ADC,而且我们在51单片机也介绍过相应的知识,感兴 ...
- stm32 adc输入电压范围_正点原子【STM32-F407探索者】第二十五章 光敏传感器实验...
1)资料下载:点击资料即可下载 2)对正点原子Linux感兴趣的同学可以加群讨论:935446741 3)关注正点原子公众号,获取最新资料更新 本章我们将向大家介绍探索者 STM32F4 开发板自带的 ...
- 光敏传感器实验报告_光敏传感器实验论文-大物实验
光敏传感器实验及探究 摘要: 光敏传感器是以光电器件作为转换元件的传感器.它可用于检测光量变化或直 接引起光量变化的非电量, 也可用于检测能转换成光量变化的其他非电量. 它首先把被测量 的变化转换成光 ...
- 内部温度传感器和光敏传感器实验
内部温度传感器 STM32F407 有一个内部的温度传感器,可以用来测量 CPU 及周围的温度(TA).该温度传感器在内部和 ADC1_IN16输入通道相连接,此通道把传感器输出的电压转换成数字值. ...
- STM32学习笔记(六 定时器及应用 4 光敏传感器实验 )
一.光敏传感器简介 光敏传感器是最常见的传感器之一,它的种类繁多,主要有:光电管.光电倍增管.光敏电阻.光敏三极管.太阳能电池.红外线传感器.紫外线传感器.光纤式光电传感器.色彩传感器.CCD 和 C ...
- 光敏传感器实验报告_光敏传感器光电特性测量实验分析报告.ppt
思考题 1.光电效应有哪些分类? 光电效应可以分为外光电效应和内光电效应. 2.光敏电阻的物理基础是什么? 内光电效应. * * 光敏传感器的光电特性测量实验 实验简介 光敏传感器是将光信号转换为电信 ...
- STM32光敏传感器原理
发现很多人都使用光敏电阻,但只是用了AD读取了电压值,或者算出了电阻值,就发送给上位机或者服务器,美其名曰获取了光照度,但其原理并...... 图中的 LS1 就是光敏传感器,其实就是一个光敏二极管, ...
- Arduin光敏传感器实验
相关资料链接 链接:https://pan.baidu.com/s/1eE0rkaSJsKJMU_RUorS5OA 提取码:3ujh 1.1 项目介绍: 光敏传感器它对环境光线最敏感,S输出一个模拟信 ...
最新文章
- 提前“剧透”能提高自监督学习性能吗?华为诺亚实验室说:不一定!
- jni jvm 内存泄漏_内存泄漏
- 学而思的python课怎么样_有在用学而思网校的同学觉得孙墨漪老师怎么样?报她的课值得吗?...
- C#软件设计——小话设计模式原则之:接口隔离原则ISP
- 华为将推出智能显示屏产品:不同于传统电视机
- 计算机机房用发电机组,应急康明斯计算机机房用发电机组怎么选有窍门
- SpringBoot之idea调出Maven Project
- Javascript定时器的使用
- PDF背景怎么添加,如何修改PDF背景
- linux文件系统之mount流程分析
- android ios9 rom,安卓党也能用上IOS9了 奇兔刷机首发24款机型仿IOS9 ROM
- php支付宝接口开发流程,对接支付宝支付接口开发详细步骤(证书签名方式)
- 一个不错的控件网站-慧都控件网
- 【专精特新周报】大禹生物正式登陆北交所;奥迪威、泰德股份获北交所IPO批文;十一部门开展“携手行动” 促进大中小企业融通创新...
- 国内移动广告平台的现状对比(2010年8月-10月)
- 九宫格切图器(每天一个python小项目)
- iOS 蓝牙扫描枪扫描内容不正确
- PowerManagerService类大致解读
- 01- NumPy 数据库 (数据库)
- [数据库03]-约束(唯一性-主键-外键/存储引擎/事务/索引/视图/DBA命令/数据库设计三范式
热门文章
- 淘宝模板开发系列之开放接口详解
- 松下电器IT经理谈项目管理六点心得
- SAP UI5 应用开发教程之一百零三 - 如何在 SAP UI5 应用中消费第三方库试读版
- [C++]jsoncpp中将整个Json::Value转成std::string或者把里面值转成string类型
- 园林php源码,园艺和园林绿化HTML5模板
- emlog评论ajax,emlog评论:获取评论用户操作系统与浏览器信息
- ora-01722 无效数字_ORA-01722无效数字错误解决记录
- 简单实现获取短信验证码倒计时效果
- 使用html5-qrcode 扫描二维码(vue3)
- 中国刑事警察学院计算机中心,中国刑事警察学院计算机犯罪侦查系介绍