配件部分
用到的配件有
1.面包板
2.stm32最小系统板
3.三线制光敏传感器
4.杜邦线若干
5.St-link下载器
6.Oled显示屏
实现功能
要实现的功能是当光敏电阻被遮挡时,光敏传感器会从DO口返回一个值(高低电平),利用stm32标准库函数中读取引脚电平函数读取光敏传感器返回值,对此值做一些运算以后,将当前是否遮挡显示在oled显示屏上
配件连接
st-link四个接口分别与最小系统板四接口连接——vcc(高电平),gnd(地线),swclk(串行时钟),swdio(串行数据)
oled四接口——gnd,vcc,scl,sda分别与最小系统板gnd,vcc,B6,B7相连接
光敏传感器三接口——gnd,vcc,do(数字信号输出)分别与最小系统板gnd,vcc,B12相连接
代码驱动
用到stm32标准库函数,以及完成封装的oled驱动函数
主要思路为:利用标准库函数GPIO_ReadInputDataBit()读取光敏传感器返回Do值,其中传感器模块在环境光线亮度达不到阈值时do口输出高电平,达到阈值时输出低电平,根据读取值判断环境光线亮度,并将此值经过运算输出在oled显示屏
光敏传感器部分代码
void lit_init(void){RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStructure);
}//光敏传感器初始化
int get_lit(void){
return GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12);
}//光敏传感器读取
oled部分采用江协科技封装驱动函数
主程序部分
#include "stm32f10x.h" // Device header
#include "OLED.h"
#include "lit_init.h"
int main(){
lit_init();
OLED_Init();
while(1){
if(get_lit()==0){
OLED_ShowString(1,1,"enoughlit");
}
if(get_lit()==1){
OLED_ShowString(1,1,"nolit");
}//进行判断,如果读取端口值为0,光敏传感器do口为低电平,说明光线充足
}}
运行效果