03 基于 STM32 的温度控制系统

前言

Protues、KeilC

设计内容:使用STM32设计一个空调温度的显示控制系统

设计要求:

1.温度显示范围为16-30摄氏度

2.按键K1实现显示温度加1,按键K2实现显示温度减1,低于16°或高于30°,显示数值不变

3.正常按键蜂鸣器响一次,超出阈值蜂鸣器报警两下

示例代码

复制代码
#include "utils.h"

u8 emptyLedCols[8] = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0};

/**
 * main related
 */
long counter = 1;
long number = 17;
int isOutOfRangeBeepTouched = 0;
int outOfRangeCounter = 0;

/**
 * reset all
 */
void resetAll();


void main() {

    u8 keyPressed;

    resetAll();

    while (1) {

        lightTubeByInt(number);

        keyPressed = independentKeyboardScan(0);
        if(keyPressed == KEY1_PRESS) {
			number ++;
			BEEP = !BEEP;
			isOutOfRangeBeepTouched = 0;
			outOfRangeCounter = counter;
        } else if(keyPressed == KEY2_PRESS) {
            number --;
			BEEP = !BEEP;
			isOutOfRangeBeepTouched = 0;
			outOfRangeCounter = counter;
        }

		if(number < 16 || number > 30) {
			if(!isOutOfRangeBeepTouched) {
				if(counter - outOfRangeCounter > 50) {
					BEEP = !BEEP;
					isOutOfRangeBeepTouched = 1;
				}
			}
		}

		delay_ms(5);
        counter++;

    }
}

void resetAll() {
    u8 i;
    printLedWord(8, emptyLedCols);
    for(i=0; i<8; i++) {
        ledCtl(i, 0);
    }
}

实际效果

初始化状态

按一下 KEY_1, 带蜂鸣效果

按两下 KEY_2, 带蜂鸣效果

完

相关推荐
LCG米5 小时前
STM32硬件CRC外设实测:多项式固定陷阱、CRC-32校验不匹配根因与软件查表法耗时对比落地
stm32·单片机·嵌入式硬件
La Pulga8 小时前
【FreeRTOS源码学习笔记】任务切换
单片机·mcu·学习·嵌入式·freertos·实时操作系统
女神下凡12 小时前
芯参谋(85):Linux_PPI_NAND_驱动开发指南
linux·运维·arm开发·驱动开发·单片机·嵌入式硬件·设计规范
Zw-awa13 小时前
从 CH340 到 HC-05 和 HC-06:让小车脱离电脑
stm32
硅基手札14 小时前
【Linux 内核专栏 19】20 · 嵌入式子系统 — GPIO·pinctrl·clock·regulator
linux·运维·单片机·linux内核·嵌入式开发·调试定位
何粥学16 小时前
Vivado 2024.2 开发记录(AC820 Zynq-7020)——软件使用,点亮led灯
单片机·嵌入式硬件·zynq
Sakura_j_h_16 小时前
51 单片机驱动四位数码管:动态扫描、限流电阻与消影的取舍
单片机·嵌入式硬件·51单片机·嵌入式·数码管·动态扫描·限流电阻
HANDY0920018 小时前
从“不照人”到“剂量达标”:扇叶遮挡式UV-C空气消毒的工程边界与可验证评估框架
开发语言·人工智能·嵌入式硬件·智能家居
飞凌嵌入式20 小时前
千次静电放电试炼,守住飞凌嵌入式硬件可靠底线
嵌入式硬件
蹊黎1 天前
Linux 下用 C 语言实现进度条
linux·c语言·单片机