m0_61960360 2023-07-03 17:32 采纳率: 92.9%
浏览 28
已结题

微机原理控制led灯

微机接口技术与传感器知识结合
在8255区域连接继电器使led亮即可
求具体接线与代码

img

img

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-07-03 20:05
    关注
    • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7646003
    • 除此之外, 这篇博客: 使用固件库点亮LED灯中的 使用固件库点亮LED灯 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • bsp_led.c文件

      #include "bsp_led.h"
      
      void LED_GPIO_Config(void)
      {
      	
      	/*定义一个GPIO_InitTypeDef结构体*/
      	GPIO_InitTypeDef GPIO_InitStructure;
      	
      	/*打开GIOB的时钟 */
      	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
      	
      	/*初始化GPIO_InitStructure*/ 
      	GPIO_InitStructure.GPIO_Mode= GPIO_Mode_Out_PP; 
      	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
      	
      	/*初始化GPIO*/
      	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;
      	GPIO_Init(GPIOB, &GPIO_InitStructure);
      	
      	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;
      	GPIO_Init(GPIOB, &GPIO_InitStructure);
      	
      	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
      	GPIO_Init(GPIOB, &GPIO_InitStructure);
      	
      	
      	/*关闭GPIO_Pin_0*/
      	GPIO_SetBits(GPIOB,GPIO_Pin_0);
      	
      	
      	/*关闭GPIO_Pin_1*/
      	GPIO_SetBits(GPIOB,GPIO_Pin_1);
      	
      	
      	/*关闭GPIO_Pin_0*/
      	GPIO_SetBits(GPIOB,GPIO_Pin_5);
      	
      }
      
      

      bsp_led.h文件

      #ifndef __BSP_LED_H
      #define __BSP_LED_H
      
      #include "stm32f10x.h"
      
      void LED_GPIO_Config(void);
      
      #define LED1_ON		GPIO_ResetBits(GPIOB,GPIO_Pin_0)
      #define LED2_ON		GPIO_ResetBits(GPIOB,GPIO_Pin_1)
      #define LED3_ON		GPIO_ResetBits(GPIOB,GPIO_Pin_5)
      
      #define LED1_OFF		GPIO_SetBits(GPIOB,GPIO_Pin_0)
      #define LED2_OFF		GPIO_SetBits(GPIOB,GPIO_Pin_1)
      #define LED3_OFF		GPIO_SetBits(GPIOB,GPIO_Pin_5)
      
      #endif
      
      
      
    • 以下回答由chatgpt基于相关博客总结生成:

      问题标题: 如何使用微机接口技术和传感器知识控制LED灯?

      问题内容: 我想通过使用8255区域连接继电器来控制LED灯,我需要具体的接线和代码示例。

      解决方案: 1. 接线: a. 将LED的正极连接到继电器的NO(常开)端,将LED的负极连接到继电器的COM(公共)端。 b. 将继电器的NC(常闭)端与GND(接地)连接。 c. 将继电器的控制端IN1、IN2和IN3分别连接到8255芯片的端口A0、A1和A2。 d. 将8255芯片的VCC(电源正极)和GND(接地)分别连接到电源的正负极。

      1. 代码示例: a. 在bsp_led.c文件中,可以使用以下代码来控制LED的亮灭:
      #include "bsp_led.h"
      
      void LED_GPIO_Config(void)
      {
          // 打开GPIOB的时钟
          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
      
          // 初始化GPIO_InitStructure
          GPIO_InitTypeDef GPIO_InitStructure;
          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 
          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
      
          // 初始化GPIO
          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
          GPIO_Init(GPIOB, &GPIO_InitStructure);
      
          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
          GPIO_Init(GPIOB, &GPIO_InitStructure);
      
          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
          GPIO_Init(GPIOB, &GPIO_InitStructure);
      
          // 关闭GPIO_Pin_0
          GPIO_SetBits(GPIOB, GPIO_Pin_0);
      
          // 关闭GPIO_Pin_1
          GPIO_SetBits(GPIOB, GPIO_Pin_1);
      
          // 关闭GPIO_Pin_5
          GPIO_SetBits(GPIOB, GPIO_Pin_5);
      }
      
      int main(void)
      {
          // 初始化LED GPIO
          LED_GPIO_Config();
      
          // 打开LED1
          LED1_ON;
      
          // 关闭LED2
          LED2_OFF;
      
          // 打开LED3
          LED3_ON;
      
          while(1)
          {
              // 此处可以根据需要编写其他逻辑代码
          }
      }
      

      在上述的代码中,通过调用LED_GPIO_Config()函数来初始化LED的GPIO,然后通过宏定义来打开或关闭LED灯。

      请注意,根据实际的硬件接线情况,可能需要修改上述代码中的引脚号和按键状态的控制部分。

      如果你有其他问题,请随时提问。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月4日
  • 赞助了问题酬金15元 7月3日
  • 创建了问题 7月3日