【国信长天蓝桥杯】扩展板⑦ 光敏电阻的使用
摘要
本文章主要基于国信长天蓝桥杯嵌入式开发板及其扩展板,介绍了扩展板上光敏电阻的使用方法。
硬件原理图
光敏电阻的阻值会随着光照强度的变化而变化,光照越强阻值越小,光线越暗阻值越大。
从上图可以看出,定值电阻R46与光敏电阻R47组成了一个欧姆分压电路,当光线增强时,光敏电阻R47的阻值减小,Tr_AO的电压降低;当光线减弱时,光敏电阻R47的阻值增大,Tr_AO的电压增大。
另外,Tr_AO连接到运算放大器LM393的正向输入端(3号脚),LM393的反向输入端(2号脚)连接在可调电阻RP7上,当3号脚的电压高于2号脚的电压时,Tr_DO输出高电平,当3号脚的电压低于2号脚的电压时,Tr_Do输出低电平。
调节可调电阻RP7可设定2号脚的电压,相当于是调节光敏电阻的阈值
。
扩展板与主板连接后,调节跳线帽,可是Tr_AO
连接到PA4
,Tr_DO
连接到PA3
。
光敏电阻使用步骤
下面将基于硬件原厂提供的显示屏示例代码:HAL_06_LCD
介绍ADC的使用步骤:
① 添加 stm32g4xx_hal_adc.c,stm32g4xx_hal_adc_ex.c
双击Drivers/STM32G4xx_HAL_Driver,打开添加文件对话框,在向上一级
-> Drivers
-> STM32G4xx_HAL_Driver
-> Src
中,找到stm32g4xx_hal_adc.c
和 stm32g4xx_hal_adc_ex.c
并添加。添加后如下图所示:
② 修改 stm32g4xx_hal_conf.h
文件
在如下位置找到该文件,并打开:
取消注释 #define HAL_ADC_MODULE_ENABLED
这一行,取下注释后如下图所示:
③ main.c
添加 #include "stm32g4xx_hal_adc.h"
在 main.c
适当位置添加 #include "stm32g4xx_hal_adc.h"
,添加后如下图所示:
④ 复制如下 ADC 按键初始化及获取ADC按键值的代码
复制下面的代码,粘贴到main.c
文件 main()
函数上面空白处
ADC_HandleTypeDef hadc2;uint16_t Get_ADC2_Value(void)
{uint16_t adc_value = 0;HAL_ADC_Start(&hadc2);adc_value = HAL_ADC_GetValue(&hadc2);return adc_value;
}static void ADC2_Init(void)
{ADC_ChannelConfTypeDef sConfig = {0};RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};GPIO_InitTypeDef GPIO_InitStruct = {0};PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC12;PeriphClkInit.Adc12ClockSelection = RCC_ADC12CLKSOURCE_SYSCLK;HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit);__HAL_RCC_ADC12_CLK_ENABLE();//打开ADC时钟__HAL_RCC_GPIOA_CLK_ENABLE();//打开GPIO A时钟hadc2.Instance = ADC2;hadc2.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1;hadc2.Init.Resolution = ADC_RESOLUTION_12B;hadc2.Init.DataAlign = ADC_DATAALIGN_RIGHT;hadc2.Init.GainCompensation = 0;hadc2.Init.ScanConvMode = ADC_SCAN_DISABLE;hadc2.Init.EOCSelection = ADC_EOC_SINGLE_CONV;hadc2.Init.LowPowerAutoWait = DISABLE;hadc2.Init.ContinuousConvMode = DISABLE;hadc2.Init.NbrOfConversion = 1;hadc2.Init.DiscontinuousConvMode = DISABLE;hadc2.Init.ExternalTrigConv = ADC_SOFTWARE_START;hadc2.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;hadc2.Init.DMAContinuousRequests = DISABLE;hadc2.Init.Overrun = ADC_OVR_DATA_PRESERVED;hadc2.Init.OversamplingMode = DISABLE;HAL_ADC_Init(&hadc2);sConfig.Channel = ADC_CHANNEL_17; //设置采样通道为17(PA4引脚)sConfig.Rank = ADC_REGULAR_RANK_1;sConfig.SamplingTime = ADC_SAMPLETIME_640CYCLES_5;sConfig.SingleDiff = ADC_SINGLE_ENDED;sConfig.OffsetNumber = ADC_OFFSET_NONE;sConfig.Offset = 0;HAL_ADC_ConfigChannel(&hadc2, &sConfig);GPIO_InitStruct.Pin = GPIO_PIN_4;GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;GPIO_InitStruct.Pull = GPIO_NOPULL;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); // 初始化PA4脚为模拟模式HAL_ADC_Start(&hadc2);
}static void Photo_Status_Init(void) //读取Tr_DO电平高低
{GPIO_InitTypeDef GPIO_InitStruct = {0};GPIO_InitStruct.Pin = GPIO_PIN_3;GPIO_InitStruct.Mode = GPIO_MODE_INPUT;GPIO_InitStruct.Pull = GPIO_NOPULL;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); // 初始化PA3脚为输入模式
}
上述代码中包含了Tr_AO与Tr_DO数据的读取,考生根据题目要求,按需复制。
⑤ 在main()
中调用 ADC2_Init();
及Photo_Status_Init()
如下图所示,在main()
函数中LCD_Init();下面调用 ADC2_Init();
及Photo_Status_Init()
⑥ 获取光敏电阻值及其状态
在main()
的while()
中插入如下代码:
char buf[64] = { 0 };int adc_value = Get_ADC2_Value();int p_status = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_3);sprintf(buf, "Photo Value is %d ", adc_value);LCD_DisplayStringLine(Line3, (u8*)buf);sprintf(buf, "Photo Status is %d ", p_status);LCD_DisplayStringLine(Line5, (u8*)buf);
⑦ 运行效果
用手遮住光敏电阻或者使用灯光照射光敏电阻,可以看到屏幕上数字的变化。
如果此文章对你有帮助,欢迎点赞
关注
收藏
转发
.
作者:我是鹏老师
【国信长天蓝桥杯】扩展板⑦ 光敏电阻的使用相关推荐
- 【国信长天蓝桥杯】扩展板② ADC按键的使用
摘要 本篇文章主要介绍了蓝桥杯嵌入式比赛扩展板上面ADC按键的工作原理与使用方法. 跳线帽与原理图 要想使用ADC按键需要将扩展板连接到主板上,如下图所示,并且还要短路扩展板上AKEY跳线帽. 连接成 ...
- 国信长天蓝桥杯嵌入式类——stm32——使用keil4建立工程文件过程
蓝桥杯嵌入式----使用keil4建立工程文件过程 目录 蓝桥杯嵌入式----使用keil4建立工程文件过程 一.完成文件建立 (一).先建立名为test工程文件夹,如图.并建立如下几个文件夹 (二) ...
- 【国信长天蓝桥杯】CT117E-M4 嵌入式开发板 显示屏播放Bad Apple,采用OLED_ToolBox
摘要 最近在指导学生参见 蓝桥杯 嵌入式比赛,比赛完成后开发板就闲置了,于是准备拿过来做一个好玩的东东. 总体思路是这样的,计算机端通过上位机获取视频信息,并将视频信息转换成显示屏可现实的数据,然后通 ...
- 蓝桥杯 模板Template Part9:PCF8591 ADC/DAC
九层妖塔 起于垒土 蓝桥杯 模板Template Part9:PCF8591 ADC/DAC 一.原理图 二.通过IIC对PCF8591的写操作与读操作 写操作 读操作 三.基本模板 1.`头文件` ...
- 蓝桥杯单片机第七届省赛-模拟风扇控制系统
九层妖塔 起于垒土 ● 改编自国信长天蓝桥杯官方蓝皮书例程,按照自己的习惯进行了补充和修改 蓝桥杯单片机第七届省赛-模拟风扇控制系统 Notes1:按键按下后在某些情况下给一定的缓冲时间 Notes2 ...
- 蓝桥杯 模板Template Part10:AT24C02存储器
九层妖塔 起于垒土 蓝桥杯 模板Template Part10:AT24C02存储器 一.原理图 二.AT24C02存储器内部存储结构的形象解释 1.存储结构 2.存储结构的地址编码 3.第一页的形象 ...
- 蓝桥杯模板TemplatePart12:NE555定时器频率测量
九层妖塔 起于垒土 蓝桥杯模板TemplatePart12:NE555定时器&频率测量 一.555定时器 1.内部框图: 2.基础知识: 二.Template: 1.定时器0初始化为计数器 2 ...
- 蓝桥杯单片机第十一届第一场省赛-多功能电压测量装置
九层妖塔 起于垒土 ● 改编自国信长天蓝桥杯官方蓝皮书例程,按照自己的习惯进行了补充和修改 蓝桥杯单片机第十一届第一场省赛-多功能电压测量装置 Notes1:矩阵按键的灵活使用 Notes2:AT24 ...
- stm32入门学什么板子_“蓝桥杯”嵌入式stm32开发入门(1)概述
声明:笔者绝不是给"蓝桥杯"打广告,而是笔者曾经参加过蓝桥杯嵌入式设计与开发比赛,想借此机会总结并分享自己的学习中的点点滴滴. 此系列教程将以蓝桥杯官方指定的开发板和接口板来深入浅 ...
最新文章
- DC-DC电源输出纹波测量的方法
- 一口气说出 4种 “附近的人” 实现方式,面试官笑了
- java dictionary遍历_遍历 Dictionary,你会几种方式?
- [wbia 2.2] 对检索结果进行评估
- 计算机科学导论考试A卷试题,09级计算机科学导论A卷答案
- Echarts自定义折线图例,增加选中功能
- 容器编排技术 -- Kubernetes Replication Controller
- 韩国央行行长李柱烈:加密货币的波动给金融稳定带来风险
- Java好还是网优好,java和seo哪个好
- 呼叫中心点击拨打接口升级代码
- 计算机屏幕显示不全怎么办,电脑打开软件后屏幕显示不全怎么办
- 论文笔记1:Fast and Robust Multi-Person 3D Pose Estimation from Multiple Views
- Java实现仿QQ聊天工具的项目总结
- 十六进制解码_快速十六进制编码和解码
- OSG 中 常用的 Uniforms
- RecycleBin
- synergy /Applications/Synergy.app/contents/MacOS/synergy 没有权限问题
- 2020牛客暑期多校训练营(第八场)E.Enigmatic Partition(差分+隔项差分/dp+暴力)
- 洛谷 P2862 [USACO06JAN]把牛Corral the Cows 解题报告
- Google gflags使用说明