#include "led.h" #include "delay.h" #include "sys.h" #include "usart.h" #include "oled.h" #include "key.h" #include "adc.h" #include "ds18b20.h" #include "usart2.h" #include "sim800c.h" #include "timer.h" u8 GSM_receive[60]; u8 moshi=0; u16 temp_l = 35; u16 temp_h = 100; u8 bf_flag = 0; u8 bf_flag_n = 0; void Key_process() { u8 t=0; u8 t1=0; t=KEY_Scan(0); //得到键值 t1=KEY_Scan(1); //得到键值 if(t==KEY0_PRES) { OLED_Clear(); moshi++; if(moshi>=3) moshi = 0; if(moshi==0) { OLED_ShowStr(16, 8,"温度: . C ",16); OLED_ShowStr(16,24,"烟雾: PPM ",16); OLED_ShowStr(16,40,"人体: ",16); } else if(moshi==1) { OLED_ShowStr(16,24,"温度上限: ",16); } else if(moshi==2) { OLED_ShowStr(16,24,"烟雾上限: ",16); } }
时间: 2024-04-03 08:34:32 浏览: 82
这段代码包含了多个头文件和变量的声明。其中有控制 OLED 显示屏、按键扫描、ADC 模块、DS18B20 温度传感器、SIM800C 模块等的头文件。还有一些变量的声明,如温度上限、温度下限、烟雾上限等。
函数 Key_process() 实现了按键的功能。通过获取键值,控制 OLED 显示屏显示不同的信息,如温度、烟雾、人体等,以及对温度上限和烟雾上限进行设置。同时,如果按下 KEY3 按键,则会触发警报功能,即控制 LED 灯亮起,并设置报警标志位。
此外,该代码还包含了其他模块的函数调用,如定时器、串口等。
相关问题
#include "led.h" #include "delay.h" #include "led.h" #include "delay.h" #include "key.h" #include "sys.h" #include "usart.h" #include "time.h" #include "74HC595_led.h"在这些头文件的基础上,编程实现控制STM32F103XC8T6实验板上LED的开关和频闪的快慢,请给出具体代码
好的,根据您的要求,以下是控制STM32F103XC8T6实验板上LED的开关和频闪的快慢的代码:
```c
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
#include "time.h"
#include "74HC595_led.h"
int main(void)
{
u8 led_status = 0; // LED状态变量,0表示关闭,1表示开启
u8 speed = 1; // LED频闪速度,1表示最慢,10表示最快
u8 key_value = 0; // 按键状态变量,0表示未按下,1表示按下
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); // 设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
LED_Init(); // 初始化LED
KEY_Init(); // 初始化按键
TIM3_Int_Init(99, 7199); // 初始化TIM3定时器,定时周期为1ms
HC595_Init(); // 初始化74HC595芯片
while(1)
{
key_value = KEY_Scan(0); // 扫描按键状态
if(key_value == KEY1_PRES) // 如果按键1被按下
{
led_status = !led_status; // 切换LED状态
LED_Control(led_status); // 控制LED亮灭
}
else if(key_value == KEY2_PRES) // 如果按键2被按下
{
speed++; // 增加频闪速度
if(speed > 10) speed = 1; // 如果速度已经最快,则重置为最慢
}
HC595_SendByte(led_status, speed); // 向74HC595芯片发送LED状态和频闪速度的信息
delay_ms(speed * 100); // 延时一段时间,根据速度来决定延时的时间
}
}
```
其中,LED_Init()和LED_Control()是LED的初始化和控制函数,可以根据具体的硬件情况进行修改。KEY_Init()和KEY_Scan()是按键的初始化和扫描函数,可以根据具体的硬件情况进行修改。TIM3_Int_Init()是定时器的初始化函数,可以根据具体的需要进行修改。HC595_Init()和HC595_SendByte()是74HC595芯片的初始化和发送数据函数,可以根据具体的硬件情况进行修改。delay_ms()是延时函数,可以根据具体的需要进行修改。
#include "led.h" #include "delay.h" #include "sys.h" #include "usart.h" #include "math.h" #include "stdio.h" #include "stm32f10x_flash.h" #include "stdlib.h" #include "string.h" #include "wdg.h" #include "timer.h" #include "stm32f10x_tim.h" #include "bc26.h" #include "dht11.h" #include "adc.h" #include "bh1750.h"
这段代码包含了多个头文件的引用,这些头文件提供了各种各样的函数、常量和类型定义,用于支持代码的编写。以下是这些头文件的简单介绍:
- `led.h`:定义了LED控制相关的函数和常量。
- `delay.h`:定义了用于延时的函数。
- `sys.h`:定义了系统时钟、中断和时钟周期相关的函数和常量。
- `usart.h`:定义了USART串口通信相关的函数和常量。
- `math.h`:定义了数学运算相关的函数和常量。
- `stdio.h`:定义了标准输入输出相关的函数和常量。
- `stm32f10x_flash.h`:定义了STM32内部FLASH存储器相关的函数和常量。
- `stdlib.h`:定义了一些通用函数和类型,如内存分配和随机数生成。
- `string.h`:定义了字符串处理相关的函数和常量。
- `wdg.h`:定义了看门狗定时器相关的函数和常量。
- `timer.h`:定义了定时器相关的函数和常量。
- `stm32f10x_tim.h`:定义了STM32定时器相关的函数和常量。
- `bc26.h`:定义了与BC26模块通信相关的函数和常量。
- `dht11.h`:定义了与DHT11温湿度传感器通信相关的函数和常量。
- `adc.h`:定义了ADC模块相关的函数和常量。
- `bh1750.h`:定义了与BH1750光照传感器通信相关的函数和常量。
这些头文件中包含的具体内容可以根据需要进行了解和学习,以便更好地理解代码的功能和实现。
阅读全文