利用OLED打印调试信息: 控制PC13指示灯点灯的实验

news2025/4/24 21:31:41
  1. Do口暗的时候才是高电平,因为光敏电阻传感器的高电平是依靠LM393电压比较器上引脚进入高阻态再加上上拉电阻上拉产生的高电平
  2. DO口什么时候会输出高阻态?电压比较器的正极输入电压大于负极输入电压,而正极输入电压是光敏电阻分得的电压,光敏电阻的阻值越大,已分得的电压就越大,所以在光线较暗时,阻值大,分得电压大,这样的话更倾向于输出一个高阻态,也就是高电平.
  3. pb6引脚输入的如果是低电平,说明负极的电压大,负极输入的电压是电位器的下半部分分得的电压,这样就需要调节电位器,一般来说,如果顺时针调电位器,负极分得的电压更多一点,如果调到临界就是明亮的状态,因为一旦进入明亮状态正极输入的电压就减小了,更有可能输出低电平.
控制电路中光敏电阻,控制PC13指示灯点灯的实验.
#include "stm32f10x.h"
#include "OLED.h"
// 12_利用OLED打印调试信息
// 初始化光敏电阻传感器的DO口GPIO引脚 PB6
void LDRSensor_Init(void) {
    // 开启 GPIOB 时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

    // 配置 PB6 为上拉输入模式
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; // 上拉输入模式
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &GPIO_InitStructure);
}

// 初始化PC13指示灯
void LED_Init(void) {
    GPIO_InitTypeDef GPIO_InitStructure;

    // 开启 GPIOC 时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);

    // 配置 PC13 为开漏输出模式
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; // 开漏输出模式
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOC, &GPIO_InitStructure);

    // 设置PC13引脚默认输出高阻态,PC13指示灯熄灭
    GPIO_SetBits(GPIOC, GPIO_Pin_13);
}

void OLED_UpdateDisplay(uint8_t pb6_state, uint8_t pc13_state) {
    //pb6接的是光敏电阻传感器的DO口,所以这里监测的是光敏电阻传感器DO口输出的是高/低电平
    // 先清屏
    OLED_Clear();
    // 第一行:光线状态
    OLED_ShowString(1, 1, "Light:");

    //pb6_state=1时,高电平,光线暗.前提是要调到临界的状态.
    OLED_ShowString(1, 8, pb6_state ? "Dark" : "Bright");
    //Do口暗的时候才是高电平,因为光敏电阻传感器的高电平是依靠LM393电压比较器
    //上引脚进入高阻态再加上上拉电阻上拉产生的高电平

    //DO口什么时候会输出高阻态?电压比较器的正极输入电压大于负极输入电压,
    //而正极输入电压是光敏电阻分得的电压,光敏电阻的阻值越大,已分得的电压就越大
    //所以在光线较暗时,阻值大,分得电压大,这样的话更倾向于输出一个高阻态,也就是高电平.

    //pb6引脚输入的如果是低电平,说明负极的电压大,负极输入的电压是电位器的下半部分分得的电压,
    //这样就需要调节电位器,一般来说,如果顺时针调电位器,负极分得的电压更多一点
    //如果调到临界就是明亮的状态,因为一旦进入明亮状态正极输入的电压就减小了,更有可能输出低电平

    // 第二行:PB6引脚输入状态
    OLED_ShowString(2, 1, "DO Out:");
    OLED_ShowString(2, 9, pb6_state ? "High" : "Low");

    // 第三行:PC13引脚输出状态
    OLED_ShowString(3, 1, "PC13 Out:");
    OLED_ShowString(3, 11, pc13_state ? "Open" : "Low");

    // 第四行:PC13指示灯状态
    OLED_ShowString(4, 1, "PC13 LED:");
    OLED_ShowString(4, 11, pc13_state ? "Off" : "On");
}

int main(void) {
    // 初始化所有外设
    LDRSensor_Init();
    LED_Init();
    OLED_Init();

    uint8_t last_pb6_state = 0xFF; // 初始化为一个无效值

    while (1) {
        // 获取当前PB6引脚的输入电平以及PC13的输出电平
        uint8_t current_pb6_state = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_6);

        // 仅在状态变化时更新显示内容
        if (current_pb6_state != last_pb6_state) {
            // 控制LED
            if (current_pb6_state == Bit_SET) {
                GPIO_ResetBits(GPIOC, GPIO_Pin_13); // 点亮LED
            } else {
                GPIO_SetBits(GPIOC, GPIO_Pin_13);   // 熄灭LED
            }

            // 更新显示内容
            OLED_UpdateDisplay(current_pb6_state, GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_13));

            // 更新当前pb6引脚的状态
            last_pb6_state = current_pb6_state;
        }
    }
}

在这里插入图片描述
PC13 open,open是高阻态,开路.
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2341951.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Appium安装 -- app笔记

调试环境:JDK(java) SDK(android) Node.js 雷神模拟器(或 真机) Appium(Appium Server【内外件(dos内件、界面化工具)】、Appium Inspector) p…

【OpenGL】OpenGL学习笔记-1:VS2019配置OpenGL开发环境

在Visual Studio 2019中可以通过手动配置库文件或NuGet包管理器快速安装的方法配置OpenGL环境,详细步骤如下: 一、打开VS2019,创建新的控制台项目 二、方法一:手动配置GLEW/GLFW/GLAD库 GLFW是窗口管理和输入事件的基础设施&…

集结号海螺捕鱼游戏源码解析(第二篇):水浒传捕鱼模块逻辑与服务器帧同步详解

本篇将全面解构“水浒传”子游戏的服务端核心逻辑、帧同步机制、鱼群刷新规则、客户端命中表现与服务器计算之间的协同方式,聚焦于 C 与 Unity3D 跨端同步的真实实现过程。 一、水浒传捕鱼模块资源结构 该模块包含三部分核心目录: 子游戏/game_shuihuz…

【音视频】FFmpeg内存模型

FFmpeg内存模型 从现有的Packet拷贝一个新Packet的时候,有两种情况: 两个Packet的buf引用的是同一数据缓存空间,这时候要注意数据缓存空间的释放问题;两个Packet的buf引用不同的数据缓存空间,每个Packet都有数据缓存…

小白自学python第一天

学习python的第一天 一、常用的值类型(先来粗略认识一下~) 类型说明数字(number)包含整型(int)、浮点型(float)、复数(complex)、布尔(boolean&…

手动实现LinkedList

前言 大家好,我是Maybe。最近在学习数据结构中的链表,自己手动实现了一个LinkedList。我想与大家分享一下。 思维导图 代码部分 package Constant;public class constant {public static final String INDEX_IS_WRONG"输入的下标不合法"; }p…

maven的安装与配置、IDEA集成maven

一、maven的安装与配置环境变量 maven的下载与安装,配置环境变量与验证【附安装包3.6.1,3.8.8,3.9.9】-CSDN博客 参考资料:黑马程序员 二、IDEA集成 2.1 当前工程设置 1. 打开 Maven 设置路径:在 IDEA 中&#xf…

Axure中继器表格:实现复杂交互设计的利器

在产品原型设计领域,Axure凭借其强大的元件库和交互功能,成为设计师们手中的得力工具。其中,中继器元件在表格设计方面展现出了独特的优势,结合动态面板等元件,能够打造出功能丰富、交互体验良好的表格原型。本文将深入…

前端 JavaScript 处理流式响应的坑

给使用 JavaScript 的同学提个醒! 浏览器端处理流式响应,想要完美体验 请使用 Fetch API。 Axios 无法使用stream来直接处理真正的流式响应(但 Node.js 中可以使用 stream),这与浏览器底层 HTTP 请求实现的限制有关。 …

AI Agent认知框架(ReAct、函数调用、计划与执行、自问自答、批判修正、思维链、思维树详解和对比,最后表格整理总结

以下是主流AI Agent认知框架的详细说明、对比及表格总结: 1. 各认知框架详解 (1) ReAct (Reasoning Action) 定义:结合推理(Reasoning)和行动(Action)的循环过程。核心机制: 模型先推理&…

搭建TypeScript单元测试环境

我们在学习TypeScript的时候如果能够搭建一个单元测试的环境,那写些demo会很简单,下面我们使用jest来搭建一个单元测试环境 Jest 是一个由 Facebook 开发并开源的 JavaScript 测试框架,被广泛应用于前端和 Node.js 项目的单元测试。以下是关…

第十一届机械工程、材料和自动化技术国际会议(MMEAT 2025)

重要信息 官网:www.mmeat.net 时间:2025年06月23-25日 地点:中国-深圳 部分展示 征稿主题 智能制造和工业自动化 复合材料与高性能材料先进制造技术 自动化机器人系统 云制造与物联网集成 精密制造技术 智能生产线优化 实时数据分析与过…

leetcode 1143. Longest Common Subsequence

目录 题目描述 第一步,明确并理解dp数组及下标的含义 第二步,分析明确并理解递推公式 第三步,理解dp数组如何初始化 第四步,理解遍历顺序 代码 题目描述 这道题和第718题的区别就是,本题求的是最长公共子序列的长…

stack和queue的学习

stack的介绍 stack的文档介绍 stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,…

微服务Nacos组件的介绍、安装、使用

微服务Nacos组件的介绍、安装、使用 在微服务架构日渐普及的今天,服务注册与配置管理成了系统架构中的关键环节。阿里巴巴开源的 Nacos(Naming and Configuration Service)正是解决这一问题的利器。本文将为你全面介绍 Nacos 的概念、安装方…

SpringBoot_为何需要SpringBoot?

Spring Boot 出现前的开发困境 配置繁琐 大量的 XML 配置文件 Spring 是一个非常优秀的轻量级框架,但其配置却是重量级的需要编写大量的 XML 配置文件或注解配置,使项目配置复杂且难以维护配置文件中容易出现错误,且排查问题困难开发过程中…

格式工厂 v5.18最新免安装绿色便携版

前言 用它来转视频的时候,还能顺便给那些有点小瑕疵的视频修修补补,保证转出来的视频质量杠杠的。更厉害的是,它不只是转换那么简单,还能帮你把PDF合并成一本小册子,视频也能合并成大片,还能随心所欲地裁剪…

MQTTX + MCP:MQTT 客户端秒变物联网 Agent

引言:MQTTX 与 MCP 的融合 作为最受欢迎的 MQTT 客户端工具,MQTTX 在 1.12.0 beta 版本中集成了模型上下文协议(MCP)到 Copilot AI 功能中,显著提升了服务能力。这一融合让 MQTTX 转变为 MCP Host(也就是发…

快手砍掉本地生活的门槛

一场本地商家的效率革命。 作者|景行 编辑|杨舟 “两斤鸡翅根七块九,两盒蓝莓九块钱,两公斤卫生纸十四块九一提。” 这是朝阳佳惠超市,在快手一则普通的短视频内容。 佳惠超市在辽宁省朝阳市有22家分店,打开佳惠超市的相关快手…

Python基础语法3

目录 1、函数 1.1、语法格式 1.2、函数返回值 1.3、变量作用域 1.4、执行过程 1.5、链式调用 1.6、嵌套调用 1.7、函数递归 1.8、参数默认值 1.9、关键字参数 2、列表 2.1、创建列表 2.2、下标访问 2.3、切片操作 2.4、遍历列表元素 2.5、新增元素 2.6、查找元…