文章目录

  • 前言
  • 一、原理图
  • 二、由原理图得到的信息
  • 三、光敏电阻初始化
  • 四、光敏电阻应用函数
  • 五、光敏电阻在主函数的应用方法

前言

本文是基于嵌入式开发板CT117E,stm32f103RBT6。

一、原理图

二、由原理图得到的信息

  • 一个数字信号线DO和一个模拟信号线AO。
  • DO与PA3连接,AO与PA4连接。
  • 电路方程(VDD - AO(化成以V为单位)) / 10K = (AO(化成以V为单位) - GDN) / R47。
  • VDD=3.3,GDN=0,代进方程,求解R47 = AO*10 / (3.3-AO) K。

三、光敏电阻初始化

tr_ao_do.c

void trao_do_init(void)
{ADC_InitTypeDef ADC_InitStructure;GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOA, ENABLE);/* Configure PC.01, PC.02 and PC.04 (ADC Channel11, Channel12 and Channel14)as analog input ----------------------------------------------------------*/GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;GPIO_Init(GPIOA, &GPIO_InitStructure);/* ADC1 configuration ------------------------------------------------------*/ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;ADC_InitStructure.ADC_ScanConvMode = DISABLE;ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;ADC_InitStructure.ADC_NbrOfChannel = 1;ADC_Init(ADC1, &ADC_InitStructure);/* ADC1 regular channels configuration */ ADC_RegularChannelConfig(ADC1, ADC_Channel_4, 1, ADC_SampleTime_239Cycles5); ADC_Cmd(ADC1, ENABLE);/* Enable ADC1 reset calibration register */   ADC_ResetCalibration(ADC1);/* Check the end of ADC1 reset calibration register */while(ADC_GetResetCalibrationStatus(ADC1));/* Start ADC1 calibration */ADC_StartCalibration(ADC1);/* Check the end of ADC1 calibration */while(ADC_GetCalibrationStatus(ADC1));
}

tr_ao_do.h

#ifndef TRAO_DO_H
#define TRAO_DO_H
#include "stm32f10x.h"
void trao_do_init(void);
u16 get_adcval(void);
u8 get_status(void);#endif

四、光敏电阻应用函数

u16 get_adcval(void)            //AO
{u8 i;u16 t[10];ADC_SoftwareStartConvCmd(ADC1, ENABLE); for(i=0;i<10;i++){t[i]=ADC_GetConversionValue (ADC1);}for(i=1;i<10;i++){t[0] +=t[i];}     ADC_SoftwareStartConvCmd(ADC1, DISABLE);         return t[0]/10;
}
u8 get_status(void)       //DO   1:灯关太暗  0:灯关太亮  ,这个暗和亮的程度主要靠RP7来调节
{u8 t;t=GPIO_ReadInputDataBit (GPIOA,GPIO_Pin_3);return t;
} 

五、光敏电阻在主函数的应用方法

while(1)
{tr_val=get_adcval();sprintf((char *)buff,"  V: %2.2fV    ",(float)tr_val*3.3/0xfff);          //输出光敏电阻的电压值LCD_DisplayStringLine(Line4,buff);sprintf((char *)buff,"  R: %2.2fK    ",(10*(float)tr_val/(4096-tr_val)));   //输出光敏电阻的电阻值LCD_DisplayStringLine(Line5,buff);if(get_status()==0){LCD_DisplayStringLine(Line1," The light is hight!  ");}else{LCD_DisplayStringLine(Line1," The light is low!  ");}Delay_Ms(500);
}

蓝桥杯嵌入式国赛 ---- TRDO TRAO 光敏电阻相关推荐

  1. 蓝桥杯嵌入式——第十二届蓝桥杯嵌入式国赛

    蓝桥杯嵌入式--第十二届蓝桥杯嵌入式国赛 之前准备省赛的时候用的是旧版的STM32F103,从准备国赛开始就用新版STM32G431平台了,主要是想经过新版的准备学习一下HAL库以及CubeMX的使用 ...

  2. 蓝桥杯嵌入式国赛模块训练之数码管

    文章目录 前言 一.电路原理图 1.共阴极数码管 2.SN74LS595N 3. 扩展板跳线帽连接 二.驱动代码 1.seg.h 2.seg.c 总结 前言 数码管是蓝桥杯嵌入式国赛需准备的第一个模块 ...

  3. 蓝桥杯嵌入式——第十一届蓝桥杯嵌入式国赛

    蓝桥杯嵌入式--第十一届蓝桥杯嵌入式国赛 之前准备省赛的时候用的是旧版的STM32F103,从准备国赛开始就用新版STM32G431平台了,主要是想经过新版的准备学习一下HAL库以及CubeMX的使用 ...

  4. 【蓝桥杯嵌入式】第十三届蓝桥杯嵌入式国赛程序设计试题以及详细题解

    文章目录 原题展示 原题分析 详细题解 LED模块 按键模块 串口 LCD模块 模拟电压读取(ADC) 脉冲输入输出 文章福利 原题展示 原题分析   本届国赛试题主要包含LCD.LED.按键.EEP ...

  5. 【蓝桥杯嵌入式】第十三届蓝桥杯嵌入式国赛客观题以及详细题解

    题1 概念题. USRAT:异步串口通信,常用于数据传输: SW-DP:SWD 的全称应该是 The Serial Wire Debug Port (SW-DP),也就是串行调试端口,是 ARM 目前 ...

  6. 捉迷藏之二-第10届蓝桥杯Scratch国赛真题第6题程序2

    本文同步发表于"超平的编程课"公众号,更多教程,可移步至公众号. [导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第15 ...

  7. 跑酷游戏-第13届蓝桥杯Scratch国赛真题第3题

    [导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第27讲. 第13届蓝桥杯青少年组国赛于2022年5月29日举行,形式为在线考试.Scrat ...

  8. 蓝桥杯 2015国赛 穿越雷区

    蓝桥杯 2015国赛 穿越雷区 题目链接 X星的坦克战车很奇怪,它必须交替地穿越正能量辐射区和负能量辐射区才能保持正常运转,否则将报废. 某坦克需要从A区到B区去(A,B区本身是安全区,没有正能量或负 ...

  9. 魔法师盖城墙-第11届蓝桥杯Scratch国赛真题第4题

    本文同步发表于"超平的编程课"公众号,更多教程,可移步至公众号. [导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第10 ...

最新文章

  1. 菜菜sklearn——XGBoost(1)
  2. pycharm更改模板_pycharm怎样给文件编辑统一的模板?
  3. 深入了解java虚拟机(JVM) 第六章 垃圾回收算法
  4. SpringBoot 中 @RequestBody的正确使用方法
  5. Cloudera maneger登录页面后的操作是什么?
  6. 最大尺寸分辨率_未来就在眼前——视涯科技推出最高分辨率硅基OLED显示屏幕...
  7. 什么是无监督学习(监督学习,半监督学习,无监督聚类)?
  8. 判断字符串是否为正整数 浮点小数
  9. C语言 const 和 define 区别 - C语言零基础入门教程
  10. MediaRecorder录像怎么旋转呀?
  11. 不同公式等号对齐_数学公式编辑器“制作amp;套用公式模板”和“文本对齐问题”的完美解决方案...
  12. Android图像办理组件
  13. 5个提高效率的编程工作环境
  14. Atitit tomcat在linux服务器的启动与其他
  15. Python——Pycharm基本设置
  16. 直播盒子源码与直播盒子APP如何对接自动发卡平台
  17. 武汉公积金新政10日起实行 四种算法取最低值(zz)
  18. 轻量级openpose解析
  19. 从写作到演讲,虾米君不断尝试的 2021|年终回顾
  20. java pppoe_PPPoE拨号流程

热门文章

  1. 基于模糊控制的Simulink仿真详解
  2. Java 多线程学习笔记(狂神)
  3. [编译原理]FIRST集合FOLLOW集的介绍和求解
  4. Angular5.x多环境配置(开发环境、生产环境、测试环境)
  5. 基于视觉的扫地机器人导航系统(模块设计)
  6. YOLO v3 详解
  7. npm包本地离线安装
  8. 【工作笔记】Springboot一个比较通用的数据脱敏处理办法
  9. 模式识别实验matlab报告,西安交大模式识别实验报告.doc
  10. 第7.2节 关于面向对象设计的一些思考