【HAL库】【CubeMX】stm32项目实例:用五向按键首先智能充电桩的五个模式

一,软硬件准备

1.需要的软件:CubeMX,SSCOM串口调试助手,(如需使用LED屏幕显示文字,需要下载pctolLCD2002 字模转换器)

2.硬件:温度传感器dht11,烟雾报警器mq2,stm32板。

二、项目要求

项目名称:基于 NB-IOT 的智能充电桩
项目开发环境: STM32CubeMX keil_arm
开发语言: C 语言 使用 HAL
硬件描述: STM32F051K8 芯片 Cortex-m0 处理器 1.4 寸液晶屏
组合:温湿度 DHT11 、可燃气体 MQ2 传感器、继电器、 led 灯、风扇(蜂鸣器)、人体红外等模块
功能描述:
1 、按下左键自动模拟充电状态(定时器),充电完成自动停止,并且显示状态(灯光)、lcd 显示;
2 、按下右键显示温湿度的值,温度值超过 28 度自动报警(温度显示变红),并打开风扇降温(lcd 显示);
3 、按下中间按键显示可燃气体的值,超过设定的阈值(自己设)自动报警(可加灯光预警),并且打开风扇;
4 、按下上键盘显示项目信息 : 项目完成日期等
5 、按下下键:关闭所有灯光和充电状态,所有传感器的采集,执行器的工作,进入休眠模式。

三、cubemx设置

选择自己的芯片后,打开所需的串口,可以参考以下接口,在模仿时所需要看手册。

需要注意的几个设置:

1.如果使用烟雾传感器就打开两个通道:

2.采用led采用推挽输出

3.定时器的设置,14用于温度传感器

4.用于模拟充电状态的定时器选用htim3

5.ADC选用DMA方式

四、主要代码部分

/* USER CODE BEGIN Header */
/**
  ******************************************************************************
  * @file           : main.c
  * @brief          : Main program body
  ******************************************************************************
  * @attention
  *
  * <h2><center>&copy; Copyright (c) 2024 STMicroelectronics.
  * All rights reserved.</center></h2>
  *
  * This software component is licensed by ST under BSD 3-Clause license,
  * the "License"; You may not use this file except in compliance with the
  * License. You may obtain a copy of the License at:
  *                        opensource.org/licenses/BSD-3-Clause
  *
  ******************************************************************************
  */
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "adc.h"
#include "dma.h"
#include "rtc.h"
#include "spi.h"
#include "tim.h"
#include "usart.h"
#include "gpio.h"

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "lcd.h"
#include "stdio.h"
#include "dma.h"
#include "string.h"

/* USER CODE END Includes */

/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */

/* USER CODE END PTD */

/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
/* USER CODE END PD */

/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */


/* USER CODE END PM */

/* Private variables ---------------------------------------------------------*/

/* USER CODE BEGIN PV */

/* USER CODE END PV */

/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
/* USER CODE BEGIN PFP */

//qingping
/* USER CODE END PFP */

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
// 路(0) 子(1) 超(2)

//数组定义区:充电状态显示
//状态一:
uint8_t charge1[][32]={
{0x80,0x00,0x80,0x00,0x80,0x00,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x50,0x80,0x40,0x80,0x40,0x00,0x7F},/*"电",0*/
{0x00,0x00,0xF8,0x0F,0x08,0x08,0xF8,0x0F,0x08,0x08,0xFF,0x7F,0x00,0x00,0xF8,0x0F,0x88,0x08,0xF8,0x0F,0x88,0x08,0xF8,0x0F,0x80,0x00,0xF8,0x0F,0x80,0x00,0xFE,0x3F},/*"量",1*/
{0x00,0x00,0xFE,0x3F,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0xFE,0x3F,0x00,0x00,0x00,0x00},/*"□",3*/
{0x00,0x00,0xFE,0x3F,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0xFE,0x3F,0x00,0x00,0x00,0x00},/*"□",3*/
{0x00,0x00,0xFE,0x3F,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0xFE,0x3F,0x00,0x00,0x00,0x00},/*"□",3*/
{0x00,0x00,0xFE,0x3F,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0xFE,0x3F,0x00,0x00,0x00,0x00}/*"□",5*/

};

//状态二:
uint8_t charge2[][32]={
{0x80,0x00,0x80,0x00,0x80,0x00,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x50,0x80,0x40,0x80,0x40,0x00,0x7F},/*"电",0*/
{0x00,0x00,0xF8,0x0F,0x08,0x08,0xF8,0x0F,0x08,0x08,0xFF,0x7F,0x00,0x00,0xF8,0x0F,0x88,0x08,0xF8,0x0F,0x88,0x08,0xF8,0x0F,0x80,0x00,0xF8,0x0F,0x80,0x00,0xFE,0x3F},/*"量",1*/
{0x00,0x00,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0x00,0x00,0x00,0x00},/*"■",2*/
{0x00,0x00,0xFE,0x3F,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0xFE,0x3F,0x00,0x00,0x00,0x00},/*"□",3*/
{0x00,0x00,0xFE,0x3F,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0xFE,0x3F,0x00,0x00,0x00,0x00},/*"□",3*/
{0x00,0x00,0xFE,0x3F,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0xFE,0x3F,0x00,0x00,0x00,0x00}/*"□",5*/

};
//状态三:
uint8_t charge3[][32]={
{0x80,0x00,0x80,0x00,0x80,0x00,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x50,0x80,0x40,0x80,0x40,0x00,0x7F},/*"电",0*/
{0x00,0x00,0xF8,0x0F,0x08,0x08,0xF8,0x0F,0x08,0x08,0xFF,0x7F,0x00,0x00,0xF8,0x0F,0x88,0x08,0xF8,0x0F,0x88,0x08,0xF8,0x0F,0x80,0x00,0xF8,0x0F,0x80,0x00,0xFE,0x3F},/*"量",1*/
{0x00,0x00,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0x00,0x00,0x00,0x00},/*"■",2*/
{0x00,0x00,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0x00,0x00,0x00,0x00},/*"■",3*/
{0x00,0x00,0xFE,0x3F,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0xFE,0x3F,0x00,0x00,0x00,0x00},/*"□",3*/
{0x00,0x00,0xFE,0x3F,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0xFE,0x3F,0x00,0x00,0x00,0x00}/*"□",5*/

};
//状态四:
uint8_t charge4[][32]={
{0x80,0x00,0x80,0x00,0x80,0x00,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x50,0x80,0x40,0x80,0x40,0x00,0x7F},/*"电",0*/
{0x00,0x00,0xF8,0x0F,0x08,0x08,0xF8,0x0F,0x08,0x08,0xFF,0x7F,0x00,0x00,0xF8,0x0F,0x88,0x08,0xF8,0x0F,0x88,0x08,0xF8,0x0F,0x80,0x00,0xF8,0x0F,0x80,0x00,0xFE,0x3F},/*"量",1*/
{0x00,0x00,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0x00,0x00,0x00,0x00},/*"■",2*/
{0x00,0x00,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0x00,0x00,0x00,0x00},/*"■",3*/
{0x00,0x00,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0x00,0x00,0x00,0x00},/*"■",4*/
{0x00,0x00,0xFE,0x3F,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0xFE,0x3F,0x00,0x00,0x00,0x00}/*"□",5*/

};
//状态五:
uint8_t charge5[][32]={

{0x80,0x00,0x80,0x00,0x80,0x00,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x50,0x80,0x40,0x80,0x40,0x00,0x7F},/*"电",0*/
{0x00,0x00,0xF8,0x0F,0x08,0x08,0xF8,0x0F,0x08,0x08,0xFF,0x7F,0x00,0x00,0xF8,0x0F,0x88,0x08,0xF8,0x0F,0x88,0x08,0xF8,0x0F,0x80,0x00,0xF8,0x0F,0x80,0x00,0xFE,0x3F},/*"量",1*/
{0x00,0x00,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0x00,0x00,0x00,0x00},/*"■",2*/
{0x00,0x00,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0x00,0x00,0x00,0x00},/*"■",3*/
{0x00,0x00,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0x00,0x00,0x00,0x00},/*"■",4*/
{0x00,0x00,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0x00,0x00,0x00,0x00}/*"■",5*/
};

uint8_t humm[][32]={
{0x01,0x00,0xFA,0x03,0x08,0x02,0xF8,0x03,0x09,0x02,0xFA,0x03,0xA0,0x00,0xA4,0x04,0xA8,0x02,0xA2,0x00,0xA1,0x00,0xFC,0x07},/*"湿",0*/
{0x40,0x00,0xFE,0x07,0x12,0x01,0xFE,0x07,0x12,0x01,0xF2,0x01,0x02,0x00,0xFA,0x03,0x12,0x02,0x22,0x01,0xC2,0x00,0x39,0x07},/*"度",1*/
{0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x04,0x00,0x00}/*":",2*/



};
uint8_t temm[][32]={
{0xF0,0x01,0x11,0x01,0xF2,0x01,0x10,0x01,0xF0,0x01,0x01,0x00,0xFA,0x03,0xA8,0x02,0xAC,0x02,0xAA,0x02,0xA9,0x02,0xFC,0x07},/*"温",0*/
{0x40,0x00,0xFE,0x07,0x12,0x01,0xFE,0x07,0x12,0x01,0xF2,0x01,0x02,0x00,0xFA,0x03,0x12,0x02,0x22,0x01,0xC2,0x00,0x39,0x07},/*"度",1*/
{0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x04,0x00,0x00}/*":",2*/

};

uint8_t gas666[][32]={


{0x00,0x00,0xFC,0x0F,0x00,0x08,0x00,0x08,0xF8,0x09,0x08,0x09,0x08,0x09,0x08,0x09,0xF8,0x09,0x08,0x08,0x00,0x08,0x00,0x0E},/*"可",0*/
{0x24,0x01,0x24,0x05,0x6C,0x01,0xD5,0x07,0x75,0x01,0x4D,0x01,0xB5,0x02,0xA4,0x02,0x54,0x04,0x0A,0x00,0x5A,0x05,0x51,0x05},/*"燃",1*/
{0x04,0x00,0xFC,0x07,0x02,0x00,0xFD,0x03,0x00,0x00,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x05,0x00,0x06,0x00,0x04},/*"气",2*/
{0x44,0x00,0x44,0x00,0x42,0x00,0xFA,0x03,0x43,0x00,0xE2,0x00,0x52,0x01,0x4A,0x02,0x46,0x04,0xF2,0x01,0x42,0x00,0x42,0x00},/*"体",3*/
{0x44,0x00,0xF4,0x07,0x42,0x00,0xF2,0x03,0x13,0x02,0xF2,0x03,0x12,0x02,0xF2,0x03,0x12,0x02,0xF2,0x03,0x12,0x02,0xFA,0x07}/*"值",4*/



};
uint8_t fan3[][32]={

{0x00,0x00,0xFE,0x01,0x02,0x01,0x42,0x01,0x46,0x01,0x2A,0x01,0x12,0x01,0x12,0x01,0x2A,0x05,0x46,0x05,0x02,0x06,0x01,0x04},/*"风",0*/
{0x40,0x00,0xFE,0x07,0x02,0x04,0xFE,0x07,0x02,0x00,0xBE,0x07,0x22,0x04,0x2A,0x05,0x32,0x06,0x2A,0x05,0xA6,0x04,0x31,0x06},/*"扇",1*/
{0x00,0x00,0xFE,0x03,0x00,0x02,0x00,0x02,0x02,0x02,0x02,0x02,0xFE,0x03,0x02,0x00,0x02,0x00,0x02,0x04,0x02,0x04,0xFC,0x07},/*"已",2*/
{0x04,0x00,0xE4,0x07,0x04,0x01,0x1F,0x01,0x04,0x01,0x04,0x01,0x1C,0x01,0x07,0x01,0x04,0x01,0x04,0x01,0x04,0x01,0xC6,0x01},/*"打",3*/
{0x00,0x00,0xFE,0x03,0x88,0x00,0x88,0x00,0x88,0x00,0x88,0x00,0xFF,0x07,0x88,0x00,0x88,0x00,0x84,0x00,0x84,0x00,0x82,0x00}/*"开",4*/
};
uint8_t group3[][32]={


{0x08,0x01,0x78,0x0F,0xA4,0x04,0x00,0x00,0xF8,0x0F,0x80,0x08,0xF8,0x0F,0x88,0x00,0xF8,0x0F,0xA0,0x00,0x90,0x00,0x8C,0x0C},/*"第",0*/
{0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0xF0,0x07,0x1F,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x04,0x10,0x04,0xE0,0x07},/*"七",1*/
{0x04,0x00,0xE4,0x03,0x22,0x02,0x29,0x02,0xE7,0x03,0x24,0x02,0x22,0x02,0xEF,0x03,0x20,0x02,0x2C,0x02,0x23,0x02,0xF0,0x07}/*"组",2*/
};
uint8_t date3[][32]={

{0x00,0x00,0x00,0x00,0xF8,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x0F,0x00,0x00},/*"二",0*/
{0x00,0x00,0x70,0x00,0x8C,0x01,0x02,0x02,0x02,0x02,0x01,0x04,0x01,0x04,0x01,0x04,0x02,0x02,0x02,0x02,0x8C,0x01,0x70,0x00},/*"〇",1*/
{0x00,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x00,0x00},/*"二",2*/
{0x00,0x00,0xFE,0x07,0x92,0x04,0x92,0x04,0x92,0x04,0x92,0x04,0x92,0x04,0x0A,0x07,0x06,0x04,0x02,0x04,0xFE,0x07,0x02,0x04},/*"四",3*/
{0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0xF0,0x07,0x1F,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x04,0x10,0x04,0xE0,0x07},/*"七",4*/
{0x00,0x00,0xFC,0x03,0x04,0x02,0x04,0x02,0xFC,0x03,0x04,0x02,0x04,0x02,0xFC,0x03,0x04,0x02,0x02,0x02,0x02,0x02,0x81,0x03},/*"月",5*/
{0x00,0x00,0xFF,0x03,0x10,0x00,0x10,0x00,0x10,0x00,0xFE,0x01,0x08,0x01,0x08,0x01,0x08,0x01,0x04,0x01,0x04,0x01,0xFF,0x07},/*"五",6*/
{0x00,0x00,0xFE,0x03,0x02,0x02,0x02,0x02,0x02,0x02,0xFE,0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0xFE,0x03,0x02,0x02}/*"日",7*/

};
uint8_t stop1[][32]={

{0x08,0x01,0x08,0x02,0xE8,0x3F,0x04,0x00,0xC4,0x1F,0x46,0x10,0xC6,0x1F,0x05,0x00,0xF4,0x7F,0x14,0x40,0xC4,0x1F,0x04,0x02,0x04,0x02,0x04,0x02,0x84,0x02,0x04,0x01},/*"停",0*/
{0x08,0x00,0x88,0x0F,0x88,0x08,0x88,0x08,0xBF,0x08,0x88,0x08,0x8C,0x08,0x9C,0x08,0xAA,0x08,0xAA,0x08,0x89,0x08,0x88,0x48,0x88,0x48,0x48,0x48,0x48,0x70,0x28,0x00},/*"机",1*/
{0x10,0x02,0x10,0x12,0x10,0x22,0x12,0x22,0x14,0x02,0xF4,0x7F,0x10,0x02,0x10,0x02,0x18,0x02,0x14,0x05,0x13,0x05,0x10,0x09,0x90,0x08,0x90,0x10,0x50,0x20,0x30,0x40},/*"状",2*/
{0x80,0x00,0x80,0x00,0xFE,0x3F,0x80,0x00,0x40,0x01,0x20,0x02,0x50,0x04,0x8C,0x18,0x03,0x60,0x80,0x00,0x10,0x11,0x12,0x21,0x12,0x48,0x12,0x48,0xE1,0x0F,0x00,0x00}/*"态",3*/
};
uint8_t topic1[][32]={

{0x10,0x04,0x10,0x04,0xFE,0x3F,0x10,0x04,0xF0,0x07,0x10,0x04,0xF0,0x07,0x10,0x04,0xFF,0x7F,0x10,0x04,0x88,0x08,0x84,0x10,0xF3,0x67,0x80,0x00,0x80,0x00,0xFC,0x1F},/*"基",0*/
{0x00,0x00,0xFC,0x1F,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xFF,0x7F,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xA0,0x00,0x40,0x00},/*"于",1*/
{0x08,0x01,0x08,0x01,0x0A,0x01,0x0A,0x3F,0xBE,0x2A,0x4A,0x2A,0x09,0x2A,0x08,0x29,0x38,0x29,0x8F,0x24,0x4A,0x24,0x08,0x22,0x08,0x22,0x08,0x21,0x88,0x14,0x08,0x08},/*"物",2*/
{0x00,0x11,0x3F,0x12,0x12,0x0A,0x12,0x00,0x9E,0x3F,0x12,0x04,0x12,0x04,0x1E,0x04,0xD2,0x7F,0x12,0x04,0x32,0x0A,0x1E,0x0A,0x13,0x11,0x10,0x11,0x90,0x20,0x50,0x40},/*"联",3*/
{0x00,0x00,0xFE,0x3F,0x02,0x20,0x02,0x20,0x42,0x28,0x4A,0x29,0x52,0x2A,0x22,0x24,0x22,0x24,0x52,0x2A,0x52,0x2A,0x4A,0x29,0x86,0x20,0x02,0x20,0x02,0x28,0x02,0x10},/*"网",4*/
{0x04,0x00,0x7C,0x3E,0x12,0x22,0x10,0x22,0xFF,0x22,0x28,0x22,0x44,0x3E,0x02,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0xF8,0x0F,0x08,0x08,0x08,0x08,0xF8,0x0F,0x08,0x08},/*"智",0*/
{0x08,0x02,0x24,0x22,0x42,0x12,0xFF,0x0E,0x80,0x02,0x00,0x42,0x7E,0x42,0x42,0x7C,0x42,0x00,0x7E,0x22,0x42,0x12,0x42,0x0E,0x7E,0x02,0x42,0x42,0x52,0x42,0x22,0x7C},/*"能",1*/
{0x40,0x00,0x80,0x00,0xFF,0x7F,0x20,0x00,0x20,0x00,0x10,0x04,0x08,0x08,0xFC,0x1F,0x20,0x12,0x20,0x02,0x20,0x02,0x20,0x02,0x10,0x22,0x10,0x22,0x08,0x22,0x06,0x3C},/*"充",2*/
{0x80,0x00,0x80,0x00,0x80,0x00,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x50,0x80,0x40,0x80,0x40,0x00,0x7F},/*"电",3*/
{0x08,0x04,0x08,0x08,0x08,0x08,0x88,0x7F,0xBF,0x00,0x88,0x08,0x8C,0x08,0x9C,0x08,0xAA,0x3E,0xAA,0x08,0x89,0x08,0x88,0x08,0x88,0x08,0x48,0x08,0x48,0x7F,0x28,0x00}/*"桩",4*/



};
uint8_t upup[][32]={

{0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0xC0,0x1F,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0xFF,0x7F,0x00,0x00},/*"上",0*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00},/*":",1*/
{0x08,0x00,0x88,0x1F,0x84,0x10,0x84,0x10,0x92,0x10,0x9F,0x1F,0x88,0x10,0x84,0x10,0x82,0x10,0x9F,0x1F,0x82,0x10,0x80,0x10,0x98,0x10,0x87,0x10,0xE2,0x7F,0x00,0x00},/*"组",2*/
{0x00,0x20,0xFE,0x20,0x82,0x20,0x82,0x24,0x82,0x24,0xFE,0x24,0x08,0x24,0x08,0x24,0xFF,0x24,0x88,0x24,0x88,0x24,0x88,0x24,0x84,0x20,0x84,0x20,0x52,0x28,0x21,0x10},/*"别",3*/
{0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F,0x08,0x08},/*"日",4*/
{0x44,0x00,0x44,0x3E,0xFE,0x22,0x44,0x22,0x44,0x22,0x7C,0x3E,0x44,0x22,0x44,0x22,0x7C,0x22,0x44,0x3E,0x44,0x22,0xFF,0x22,0x20,0x21,0x44,0x21,0x82,0x28,0x41,0x10}/*"期",5*/

};
uint8_t left1[][32]={

{0x40,0x00,0x40,0x00,0x40,0x00,0xFF,0x7F,0x20,0x00,0x20,0x00,0x20,0x00,0x10,0x00,0xF0,0x1F,0x08,0x01,0x08,0x01,0x04,0x01,0x02,0x01,0x01,0x01,0xFC,0x7F,0x00,0x00},/*"左",0*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00},/*":",1*/
{0x40,0x00,0x80,0x00,0xFF,0x7F,0x20,0x00,0x20,0x00,0x10,0x04,0x08,0x08,0xFC,0x1F,0x20,0x12,0x20,0x02,0x20,0x02,0x20,0x02,0x10,0x22,0x10,0x22,0x08,0x22,0x06,0x3C},/*"充",2*/
{0x80,0x00,0x80,0x00,0x80,0x00,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x50,0x80,0x40,0x80,0x40,0x00,0x7F},/*"电",3*/
{0x88,0x08,0x88,0x08,0xE8,0x3F,0x88,0x08,0x3F,0x00,0xC8,0x1F,0x4C,0x10,0xDC,0x1F,0x6A,0x10,0xCA,0x1F,0x09,0x02,0xE8,0x3F,0x08,0x05,0x88,0x08,0x48,0x10,0x28,0x60},/*"模",4*/
{0x00,0x12,0x00,0x22,0x00,0x22,0x00,0x02,0xFF,0x7F,0x00,0x02,0x00,0x02,0x7C,0x02,0x10,0x02,0x10,0x02,0x10,0x04,0x10,0x44,0xF0,0x48,0x1E,0x50,0x04,0x60,0x00,0x40}/*"式",5*/


};
uint8_t right1[][32]={

{0x40,0x00,0x40,0x00,0x40,0x00,0xFF,0x7F,0x20,0x00,0x20,0x00,0x10,0x00,0x10,0x00,0xF8,0x1F,0x14,0x10,0x12,0x10,0x11,0x10,0x10,0x10,0x10,0x10,0xF0,0x1F,0x10,0x10},/*"右",0*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00},/*":",1*/
{0x00,0x20,0xE4,0x23,0x28,0x22,0x28,0x2A,0xA1,0x2A,0xA2,0x2A,0xA2,0x2A,0xA8,0x2A,0xA8,0x2A,0xA4,0x2A,0xA7,0x2A,0x84,0x20,0x44,0x21,0x44,0x22,0x24,0x28,0x10,0x10},/*"测",2*/
{0x00,0x14,0x04,0x24,0x08,0x24,0x08,0x04,0xE0,0x7F,0x00,0x04,0x0F,0x04,0xE8,0x07,0x88,0x04,0x88,0x08,0x88,0x08,0xA8,0x08,0x98,0x53,0xE8,0x50,0x40,0x60,0x00,0x40},/*"试",3*/
{0x00,0x00,0xC4,0x1F,0x48,0x10,0x48,0x10,0xC1,0x1F,0x42,0x10,0x42,0x10,0xC8,0x1F,0x08,0x00,0xE4,0x3F,0x27,0x25,0x24,0x25,0x24,0x25,0x24,0x25,0xF4,0x7F,0x00,0x00},/*"温",4*/
{0x80,0x00,0x00,0x01,0xFC,0x7F,0x44,0x04,0x44,0x04,0xFC,0x3F,0x44,0x04,0x44,0x04,0xC4,0x07,0x04,0x00,0xF4,0x0F,0x24,0x08,0x42,0x04,0x82,0x03,0x61,0x0C,0x1C,0x70}/*"度",5*/

};
uint8_t down1[][32]={

{0x00,0x00,0xFF,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x02,0x40,0x04,0x40,0x08,0x40,0x10,0x40,0x10,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00},/*"下",0*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00},/*":",1*/
{0x08,0x01,0x08,0x02,0xE8,0x3F,0x04,0x00,0xC4,0x1F,0x46,0x10,0xC6,0x1F,0x05,0x00,0xF4,0x7F,0x14,0x40,0xC4,0x1F,0x04,0x02,0x04,0x02,0x04,0x02,0x84,0x02,0x04,0x01},/*"停",2*/
{0x08,0x00,0x88,0x0F,0x88,0x08,0x88,0x08,0xBF,0x08,0x88,0x08,0x8C,0x08,0x9C,0x08,0xAA,0x08,0xAA,0x08,0x89,0x08,0x88,0x48,0x88,0x48,0x48,0x48,0x48,0x70,0x28,0x00},/*"机",3*/
{0x88,0x08,0x88,0x08,0xE8,0x3F,0x88,0x08,0x3F,0x00,0xC8,0x1F,0x4C,0x10,0xDC,0x1F,0x6A,0x10,0xCA,0x1F,0x09,0x02,0xE8,0x3F,0x08,0x05,0x88,0x08,0x48,0x10,0x28,0x60},/*"模",4*/
{0x00,0x12,0x00,0x22,0x00,0x22,0x00,0x02,0xFF,0x7F,0x00,0x02,0x00,0x02,0x7C,0x02,0x10,0x02,0x10,0x02,0x10,0x04,0x10,0x44,0xF0,0x48,0x1E,0x50,0x04,0x60,0x00,0x40}/*"式",5*/

};
uint8_t middle[][32]={


{0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x10,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00},/*"中",0*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00},/*":",1*/
{0x08,0x02,0x08,0x02,0x08,0x05,0x08,0x05,0xBF,0x08,0x48,0x10,0xAC,0x6F,0x1C,0x00,0x2A,0x11,0x0A,0x12,0x49,0x12,0x88,0x0A,0x88,0x08,0x08,0x04,0xE8,0x7F,0x08,0x00},/*"检",2*/
{0x00,0x20,0xE4,0x23,0x28,0x22,0x28,0x2A,0xA1,0x2A,0xA2,0x2A,0xA2,0x2A,0xA8,0x2A,0xA8,0x2A,0xA4,0x2A,0xA7,0x2A,0x84,0x20,0x44,0x21,0x44,0x22,0x24,0x28,0x10,0x10},/*"测",3*/
{0x08,0x00,0xC8,0x7F,0x48,0x40,0x68,0x44,0x5A,0x44,0x4A,0x44,0xCA,0x7F,0x49,0x44,0x48,0x44,0x48,0x4A,0x48,0x52,0x54,0x51,0xE4,0x40,0x42,0x40,0xC2,0x7F,0x41,0x40},/*"烟",4*/
{0xFC,0x1F,0x80,0x00,0xFE,0x7F,0x82,0x40,0xB9,0x2E,0x80,0x00,0xB8,0x0E,0x20,0x00,0xF0,0x07,0x28,0x02,0xC0,0x01,0x38,0x0E,0x47,0x70,0xF0,0x07,0x20,0x04,0x18,0x06}/*"雾",5*/

};
uint8_t quick1[][32]={

{0x08,0x02,0x08,0x02,0x08,0x02,0xC8,0x1F,0x18,0x12,0x2A,0x12,0x0A,0x12,0x0A,0x12,0xE9,0x7F,0x08,0x02,0x08,0x05,0x08,0x05,0x88,0x08,0x88,0x08,0x48,0x10,0x28,0x60},/*"快",0*/
{0x40,0x00,0x80,0x00,0xFF,0x7F,0x20,0x00,0x20,0x00,0x10,0x04,0x08,0x08,0xFC,0x1F,0x20,0x12,0x20,0x02,0x20,0x02,0x20,0x02,0x10,0x22,0x10,0x22,0x08,0x22,0x06,0x3C},/*"充",1*/
{0x88,0x08,0x88,0x08,0xE8,0x3F,0x88,0x08,0x3F,0x00,0xC8,0x1F,0x4C,0x10,0xDC,0x1F,0x6A,0x10,0xCA,0x1F,0x09,0x02,0xE8,0x3F,0x08,0x05,0x88,0x08,0x48,0x10,0x28,0x60},/*"模",2*/
{0x00,0x12,0x00,0x22,0x00,0x22,0x00,0x02,0xFF,0x7F,0x00,0x02,0x00,0x02,0x7C,0x02,0x10,0x02,0x10,0x02,0x10,0x04,0x10,0x44,0xF0,0x48,0x1E,0x50,0x04,0x60,0x00,0x40}/*"式",3*/


};
uint8_t slow1[][32]={


{0xC4,0x1F,0x44,0x10,0xC4,0x1F,0x4C,0x10,0xD5,0x1F,0x05,0x00,0xE5,0x3F,0x25,0x25,0x24,0x25,0xE4,0x3F,0x04,0x00,0xC4,0x1F,0x84,0x08,0x04,0x07,0xC4,0x18,0x34,0x60},/*"慢",0*/
{0x40,0x00,0x80,0x00,0xFF,0x7F,0x20,0x00,0x20,0x00,0x10,0x04,0x08,0x08,0xFC,0x1F,0x20,0x12,0x20,0x02,0x20,0x02,0x20,0x02,0x10,0x22,0x10,0x22,0x08,0x22,0x06,0x3C},/*"充",1*/
{0x88,0x08,0x88,0x08,0xE8,0x3F,0x88,0x08,0x3F,0x00,0xC8,0x1F,0x4C,0x10,0xDC,0x1F,0x6A,0x10,0xCA,0x1F,0x09,0x02,0xE8,0x3F,0x08,0x05,0x88,0x08,0x48,0x10,0x28,0x60},/*"模",2*/
{0x00,0x12,0x00,0x22,0x00,0x22,0x00,0x02,0xFF,0x7F,0x00,0x02,0x00,0x02,0x7C,0x02,0x10,0x02,0x10,0x02,0x10,0x04,0x10,0x44,0xF0,0x48,0x1E,0x50,0x04,0x60,0x00,0x40}/*"式",3*/


};
uint8_t over1[][32]={


{0x80,0x00,0x80,0x00,0x80,0x00,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x50,0x80,0x40,0x80,0x40,0x00,0x7F},/*"电",0*/
{0x00,0x00,0xFC,0x0F,0x00,0x08,0x00,0x08,0x00,0x08,0x04,0x08,0x04,0x08,0xFC,0x0F,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x20,0x04,0x20,0x04,0x20,0xF8,0x3F,0x00,0x00},/*"已",1*/
{0x40,0x00,0x80,0x00,0xFF,0x7F,0x20,0x00,0x20,0x00,0x10,0x04,0x08,0x08,0xFC,0x1F,0x20,0x12,0x20,0x02,0x20,0x02,0x20,0x02,0x10,0x22,0x10,0x22,0x08,0x22,0x06,0x3C},/*"充",2*/
{0x80,0x10,0x84,0x10,0xE8,0x7F,0x88,0x10,0x01,0x00,0xE2,0x7F,0x02,0x09,0x08,0x09,0xE8,0x7F,0x24,0x49,0x27,0x49,0xA4,0x56,0x64,0x62,0x24,0x40,0x24,0x50,0x20,0x20}/*"满",3*/


};
void dht_read(void);

int fputc(int c, FILE *steam)
{
      HAL_UART_Transmit(&huart1, (uint8_t *)&c, 1, HAL_MAX_DELAY);
      return c;
}

uint8_t key_flag = 0;

void HAL_GPIO_EXTI_Rising_Callback(uint16_t GPIO_Pin)
{
    if (GPIO_Pin == GPIO_PIN_8)
		{
		  key_flag = 1;
		}
}

//数值存放
uint8_t tim3_flag = 0;//定时器数值
uint32_t pdata[2] = {0};//按键数值
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    
    tim3_flag=tim3_flag+1;   
}

/* USER CODE END 0 */

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_DMA_Init();
  MX_SPI1_Init();
  MX_TIM14_Init();
  MX_USART1_UART_Init();
  MX_TIM3_Init();
  MX_ADC1_Init();
  MX_RTC_Init();
  /* USER CODE BEGIN 2 */
    printf("key");
    lcd_init();
    lcd_region(0,127,0,127);
    lcd_clear(0xFFDF);
//主界面
    for(int i=5,x=10;i<10;i++)
    {
    lcd_drawtext16x16 (x,10,0xD8A7,0xFFDF,topic1 [i]);
    x+=15;}
    for(int i=0,x=10;i<6;i++)
    {
    lcd_drawtext16x16 (x,30,0xBAB3,0xFFDF,upup[i]);
    x+=15;}
    for(int i=0,x=10;i<6;i++)
    {
    lcd_drawtext16x16 (x,50,0xBAB3,0xFFDF,down1 [i]);
    x+=15;}
    for(int i=0,x=10;i<6;i++)
    {
    lcd_drawtext16x16 (x,70,0xBAB3,0xFFDF,middle [i]);
    x+=15;}
    for(int i=0,x=10;i<6;i++)
    {
    lcd_drawtext16x16 (x,90,0xBAB3,0xFFDF,left1 [i]);
    x+=15;}
    for(int i=0,x=10;i<6;i++)
    {
    lcd_drawtext16x16 (x,110,0xBAB3,0xFFDF,right1 [i]);
    x+=15;}
    



      
        
//dht_read();




  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
      if(key_flag ==1){
                    HAL_ADC_Start_DMA(&hadc1,pdata,2);
                    HAL_Delay(1000);
                    printf("key_value:%d\n",pdata[0]);
                    printf("gas_value:%d\n",pdata[1]);
                    HAL_Delay(1000);
switch(pdata[0]/100)
                    {
case 22:
                                HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET);
                             HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);
    lcd_clear(0xFFDF);
                    for(int i=0,x=10;i<6;i++)
                    {
                    lcd_drawtext16x16 (x,30,0xD8A7,0xFFDF,upup[i]);
                    x+=15;}
                    HAL_Delay(500);
                    printf("up pressed\n");
                    lcd_clear(0xFFDF);
                    for(int i=0,x=10;i<4;i++)
                    {
                    lcd_drawtext16x16 (x,30,0xD8A7,0xFFDF,date3[i]);
                    x+=15;
                    }
                    for(int i=4,x=10;i<8;i++)
                    {
                    lcd_drawtext16x16 (x,50,0xD8A7,0xFFDF,date3[i]);
                    x+=15;
                    }
                    for(int i=0,x=10;i<3;i++)
                    {
                    lcd_drawtext16x16 (x,70,0xD8A7,0xFFDF,group3[i]);
                    x+=15;
                    }
                
              
					break;
				
case 6://下键,休眠
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET);
                             HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);
lcd_clear(0xFFDF);
					printf("down pressed\n");
                    
                //执行任务,第一个灯亮,两秒后灯灭
                HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);
                HAL_Delay(2000);
                HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);
                
                //第二个灯亮,进入睡眠状态
                HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET);
                HAL_Delay(2000);
                HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET);
                HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);
                for(int i=0,x=10;i<6;i++)
                    {
                    lcd_drawtext16x16 (x,30,0xD8A7,0xFFDF,down1 [i]);
                    x+=15;}
                    HAL_Delay(500);
                lcd_clear(0x07E0);
                for(int i=0,x=10;i<4;i++)
                    {
                    lcd_drawtext16x16 (x,70,0xD8A7,0x07E0,stop1[i]);
                    x+=25;
                    }
                SysTick->CTRL &=~SysTick_CTRL_TICKINT_Msk|SysTick_CTRL_ENABLE_Msk;

                HAL_PWR_EnterSTOPMode(0,PWR_SLEEPENTRY_WFI);
					break;
case 16:
                    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET);
                             HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);
                  lcd_clear(0xFFDF);
                for(int i=0,x=10;i<6;i++)
                    {
                    lcd_drawtext16x16 (x,30,0xD8A7,0xFFDF,left1  [i]);
                    x+=15;}
                    HAL_Delay(500);
               
                lcd_clear(0xFFDF);
                HAL_TIM_Base_Start_IT(&htim3);
                tim3_flag = 0;
                for(int i=0;tim3_flag<5;i++){
                printf ("%d",tim3_flag);
                if(tim3_flag==0){
                for(int i=0,x=10;i<6;i++)
                {
                lcd_drawtext16x16 (x,30,0xD8A7,0xFFDF,charge1[i]);
                x+=15;
                }
                for(int i=0,x=10;i<4;i++)
                {
                lcd_drawtext16x16 (x,70,0xBAB3,0xFFDF,quick1  [i]);
                x+=15;}
                }
                 if(tim3_flag==1){
                for(int i=0,x=10;i<6;i++)
                {
                lcd_drawtext16x16 (x,30,0xD8A7,0xFFDF,charge2[i]);
                x+=15;
                }
                 for(int i=0,x=10;i<4;i++)
                {
                lcd_drawtext16x16 (x,70,0xBAB3,0xFFDF,quick1  [i]);
                x+=15;}
                 }
                if(tim3_flag==2){
                for(int i=0,x=10;i<6;i++)
                {
                lcd_drawtext16x16 (x,30,0xF420,0xFFDF,charge3[i]);
                x+=15;
                }
                for(int i=0,x=10;i<4;i++)
                {
                lcd_drawtext16x16 (x,70,0xBAB3,0xFFDF,quick1  [i]);
                x+=15;}
                }
                 if(tim3_flag==3){
                for(int i=0,x=10;i<6;i++)
                {
                lcd_drawtext16x16 (x,30,0x07E0,0xFFDF,charge4[i]);
                x+=15;
                }
                 for(int i=0,x=10;i<4;i++)
                {
                
                lcd_drawtext16x16 (x,70,0xBAB3,0xFFDF,slow1 [i]);
                x+=15;}
                 }
                if(tim3_flag==4){
                for(int i=0,x=10;i<6;i++)
                {
                lcd_drawtext16x16 (x,30,0x07E0,0xFFDF,charge5[i]);
                x+=15;
                }
                for(int i=0,x=10;i<4;i++)
                {
                HAL_Delay(1000);
                lcd_drawtext16x16 (x,70,0x07E0,0xFFDF,over1  [i]);
                x+=15;}
                HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);
                
                }
            }
                
                
                    break;
case 30:
                             HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET);
                             HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);
                    lcd_clear(0xFFDF);
                for(int i=0,x=10;i<6;i++)
                    {
                    lcd_drawtext16x16 (x,30,0xD8A7,0xFFDF,right1  [i]);
                    x+=15;}
                    HAL_Delay(500);
                    lcd_clear(0xFFDF);
                    lcd_drawtext16x16 (10,55,0x4416,0xFFDF,humm[0]);
                    lcd_drawtext16x16 (25,55,0x4416,0xFFDF,humm[1]);
                    //lcd_drawtext16x16 (30,50,0x4416,0xFFDF,humm[2]);
                    lcd_drawtext16x16 (10,85,0x4416,0xFFDF,temm[0]);
                    lcd_drawtext16x16 (25,85,0x4416,0xFFDF,temm[1]);
                    //lcd_drawtext16x16 (30,80,0x4416,0xFFDF,temm[2]);
                    HAL_TIM_Base_Start_IT(&htim14);
                    for(int i=0;i<6;i++)
                    {
                    dht_read();
                    HAL_Delay(2000);
                    }
					break;	
				
				//按下左键,显示左键被按下,按下左键自动模拟充电状态(定时器),充电完成自动停止,并且显示状态(灯光)、lcd显示
				
case 26://中间
                    lcd_clear(0xFFDF);
                    for(int i=0,x=10;i<6;i++)
                    {
                    lcd_drawtext16x16 (x,30,0xD8A7,0xFFDF,middle   [i]);
                    x+=15;}
                    HAL_Delay(500);
                    for(int i=0;i<10;i++){
                    lcd_clear(0xFFDF);
					printf("gas_value:%d\n",pdata[1]);
                    int a4=pdata[1]/1000;
                    int b4=(pdata[1]%1000)/100;
                    int c4=(pdata[1]%100)/10;
                    int d4=pdata[1]%10;
                          
                            for(int i=0,x=10;i<2;i++)
                            {
                            lcd_drawtext16x16 (x,10,0x019F,0xFFDF,gas666[i]);
                            x+=15;
                            }
                            if((b4>=4)|(a4>0)){
                            for(int i=0,x=10;i<5;i++)
                            {
                             lcd_drawnum(50,50,0xD8A7,0xFFDF,a4);
                            lcd_drawnum(70,50,0xD8A7,0xFFDF,b4);
                            lcd_drawnum(90,50,0xD8A7,0xFFDF,c4);
                            lcd_drawnum(110,50,0xD8A7,0xFFDF,d4);
                            lcd_drawtext16x16 (x,30,0xD8A7,0xFFDF,fan3[i]);
                                HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET);
                             
                             HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);
                            x+=15;
                            }
                             
                             
                            }
                            else{
                            lcd_drawnum(50,50,0x019F,0xFFDF,a4);
                            lcd_drawnum(70,50,0x019F,0xFFDF,b4);
                            lcd_drawnum(90,50,0x019F,0xFFDF,c4);
                            lcd_drawnum(110,50,0x019F,0xFFDF,d4);
                            
                            }
                    HAL_Delay(1500);
                    }
                    break;
                    }
                    }
                    key_flag =0;
                }
  /* USER CODE END 3 */
}

/**
  * @brief System Clock Configuration
  * @retval None
  */
void SystemClock_Config(void)
{
  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
  RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};

  /** Configure the main internal regulator output voltage
  */
  HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1);
  /** Initializes the RCC Oscillators according to the specified parameters
  * in the RCC_OscInitTypeDef structure.
  */
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_LSI;
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  RCC_OscInitStruct.HSIDiv = RCC_HSI_DIV1;
  RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
  RCC_OscInitStruct.LSIState = RCC_LSI_ON;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  {
    Error_Handler();
  }
  /** Initializes the CPU, AHB and APB buses clocks
  */
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
                              |RCC_CLOCKTYPE_PCLK1;
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;

  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
  {
    Error_Handler();
  }
  /** Initializes the peripherals clocks
  */
  PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_RTC|RCC_PERIPHCLK_USART1
                              |RCC_PERIPHCLK_ADC;
  PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK1;
  PeriphClkInit.AdcClockSelection = RCC_ADCCLKSOURCE_SYSCLK;
  PeriphClkInit.RTCClockSelection = RCC_RTCCLKSOURCE_LSI;

  if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
  {
    Error_Handler();
  }
}

/* USER CODE BEGIN 4 */

/* USER CODE END 4 */

/**
  * @brief  This function is executed in case of error occurrence.
  * @retval None
  */
void Error_Handler(void)
{
  /* USER CODE BEGIN Error_Handler_Debug */
  /* User can add his own implementation to report the HAL error return state */
  __disable_irq();
  while (1)
  {
  }
  /* USER CODE END Error_Handler_Debug */
}

#ifdef  USE_FULL_ASSERT
/**
  * @brief  Reports the name of the source file and the source line number
  *         where the assert_param error has occurred.
  * @param  file: pointer to the source file name
  * @param  line: assert_param error line source number
  * @retval None
  */
void assert_failed(uint8_t *file, uint32_t line)
{
  /* USER CODE BEGIN 6 */
  /* User can add his own implementation to report the file name and line number,
     ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  /* USER CODE END 6 */
}
#endif /* USE_FULL_ASSERT */

/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

调用的其他函数,温度传感器的

#include "stdint.h"
#include "main.h"
#include "stdio.h"
#include "lcd.h"

void delay_us(uint8_t time) //unsigned char
{
    TIM14-> CNT = 0 ;
   while (TIM14-> CNT < time ) ;
}
uint8_t fan1[][32]={

{0x00,0x00,0xFE,0x01,0x02,0x01,0x42,0x01,0x46,0x01,0x2A,0x01,0x12,0x01,0x12,0x01,0x2A,0x05,0x46,0x05,0x02,0x06,0x01,0x04},/*"风",0*/
{0x40,0x00,0xFE,0x07,0x02,0x04,0xFE,0x07,0x02,0x00,0xBE,0x07,0x22,0x04,0x2A,0x05,0x32,0x06,0x2A,0x05,0xA6,0x04,0x31,0x06},/*"扇",1*/
{0x00,0x00,0xFE,0x03,0x00,0x02,0x00,0x02,0x02,0x02,0x02,0x02,0xFE,0x03,0x02,0x00,0x02,0x00,0x02,0x04,0x02,0x04,0xFC,0x07},/*"已",2*/
{0x04,0x00,0xE4,0x07,0x04,0x01,0x1F,0x01,0x04,0x01,0x04,0x01,0x1C,0x01,0x07,0x01,0x04,0x01,0x04,0x01,0x04,0x01,0xC6,0x01},/*"打",3*/
{0x00,0x00,0xFE,0x03,0x88,0x00,0x88,0x00,0x88,0x00,0x88,0x00,0xFF,0x07,0x88,0x00,0x88,0x00,0x84,0x00,0x84,0x00,0x82,0x00}/*"开",4*/
};
uint8_t gas3[][32]={


{0x08,0x02,0x08,0x02,0x08,0x05,0x08,0x05,0xBF,0x08,0x48,0x10,0xAC,0x6F,0x1C,0x00,0x2A,0x11,0x0A,0x12,0x49,0x12,0x88,0x0A,0x88,0x08,0x08,0x04,0xE8,0x7F,0x08,0x00},/*"检",0*/
{0x00,0x20,0xE4,0x23,0x28,0x22,0x28,0x2A,0xA1,0x2A,0xA2,0x2A,0xA2,0x2A,0xA8,0x2A,0xA8,0x2A,0xA4,0x2A,0xA7,0x2A,0x84,0x20,0x44,0x21,0x44,0x22,0x24,0x28,0x10,0x10},/*"测",1*/
{0x00,0x00,0xFE,0x7F,0x00,0x08,0x00,0x08,0xF8,0x08,0x88,0x08,0x88,0x08,0x88,0x08,0x88,0x08,0x88,0x08,0xF8,0x08,0x88,0x08,0x00,0x08,0x00,0x08,0x00,0x0A,0x00,0x04},/*"可",2*/
{0x88,0x08,0x88,0x28,0x88,0x4B,0x68,0x0A,0x5A,0x7E,0xAA,0x0A,0x0A,0x09,0x49,0x15,0x88,0x14,0x88,0x22,0x48,0x22,0x34,0x41,0x24,0x10,0x42,0x25,0x42,0x4A,0x21,0x4A},/*"燃",3*/
{0x08,0x00,0x08,0x00,0xFC,0x3F,0x04,0x00,0xF2,0x0F,0x01,0x00,0xFC,0x0F,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x50,0x00,0x50,0x00,0x60,0x00,0x40}/*"气",4*/
};
uint8_t fan2[][32]={


{0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x01,0xE0,0xFF,0x01,0xE0,0xFF,0x01,0xE0,0xFF,0x01,0xE0,0xFF,0x01,0xE0,0xFF,0x01,0xE0,0xFF,0x01,0xE0,0xFF,0x01,0xE0,0xFF},
{0x01,0xE0,0xFF,0x01,0xE0,0xFF,0x01,0xE0,0xFF,0x01,0xE0,0xFF,0x01,0xE0,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"■",0*/
{0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F},
{0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"■",1*/
{0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F},
{0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"■",2*/
{0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F},
{0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"■",3*/
 {0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F},
{0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"■",3*/
{0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F},
{0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}/*"■",4*/
};
  uint8_t data[5] = {0};
//uint8_t wait_level(GPIO_PinState level, uint16_t timeout);

uint8_t wait_level(GPIO_PinState level, uint16_t timeout)
{
uint8_t wait = 0 ;

while( level ==HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_8 ))
{//若是想统计的电平状态,则统计该电平持续时间
    delay_us(1);
    wait++;
    if (wait>timeout)
    {
    printf("timeout\n");
    break;
    }
}

return wait;
}
///3---读取温湿度
void dht_read()
{
//总线空闲状态为高电平,主机把总线拉低必须大于18毫秒,保证DHT1X能检测到起始信号GPIO_InitTypeDef GPIOIn i t s t r u c t = \{ 0 \} ;
  GPIO_InitTypeDef GPIO_InitStruct={0};
  GPIO_InitStruct.Pin = GPIO_PIN_8 ;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;//输出模式
  GPIO_InitStruct.Pull = GPIO_NOPULL ;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init (GPIOB, &GPIO_InitStruct);
  HAL_Delay(20);
 
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  HAL_GPIO_Init(GPIOB,&GPIO_InitStruct);
    
  delay_us(40);
  //zong xian wei di dian ping
  if(GPIO_PIN_SET ==HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_8))
    {
  printf("sensor no response\n");
  return;
  }
    wait_level(GPIO_PIN_RESET,90);
    wait_level(GPIO_PIN_SET,90);
   
for (int a = 0 ; a < 5 ; a++ )
{
for (int b = 0 ; b < 8 ; b++ )
{
    uint8_t low_level = wait_level ( GPIO_PIN_RESET,60);
    uint8_t high_level = wait_level ( GPIO_PIN_SET,80);
//如果高电平持续时间小于低电平的50us,则收到了bit0
    if(high_level< low_level )
    {
     data[a] &= ~(0x80>>b) ;
    }
    else if( high_level>low_level)
    {data[a] |= 0x80>>b ;
        }
    }
}
//一
////当最后一bit数据传送完毕后,DHT1 X拉低总线50us,
wait_level(GPIO_PIN_RESET,60);
////数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi
////温度整数数据+8bit温度小数数据"所得结果的末8位。
//uint8_t checkSum = data[0] + data[1] + data[2] + data[3];
////温度整数数据+8bit温度小数数据"所得结果的末8位。

uint8_t checkSum = data[0]+ data [1] + data [2] + data[3] ;
    if(checkSum != data [4])
    {
    //校验错误 终止读取
    printf("chek error\n" );
    return;
    }
printf("hum:%d.%d\n",data[0],data[1]);
printf("tem:%d.%d\n",data[2],data[3]);
   //return data[5];
    int a1=data[0]/10;
    int b1=data[0]%10;
    int a2=data[2]/10;
    int b2=data[2]%10;
   
lcd_drawnum(50,50,0x019F,0xFFDF,a1);
lcd_drawnum(70,50,0x019F,0xFFDF,b1);
lcd_drawnum(90,50,0x019F,0xFFDF,data[1]);

    if(data[2]>29){
    lcd_drawnum(50,80,0xE000,0xFFDF,a2);
    lcd_drawnum(70,80,0xE000,0xFFDF,b2);
    lcd_drawnum(90,80,0xE000,0xFFDF,data[3]);
        for(int i=0,x=10;i<5;i++)
    {
            lcd_drawtext16x16 (x,30,0xD8A7,0xFFDF,fan1[i]);
            x+=15;
    }
    }
    else if(data[2]==0)
    {
    for(int i=0,x=10;i<5;i++)
    {
            lcd_drawnum(50,80,0x019F,0xFFDF,a2);
            lcd_drawnum(70,80,0x019F,0xFFDF,b2);
            lcd_drawnum(90,80,0x019F,0xFFDF,data[3]);
            lcd_drawtext16x16 (x,30,0xD8A7,0xFFDF,gas3[i]);
            x+=15;
    }
    
    }else{
    lcd_drawnum(50,80,0x019F,0xFFDF,a2);
    lcd_drawnum(70,80,0x019F,0xFFDF,b2);
    lcd_drawnum(90,80,0x019F,0xFFDF,data[3]);
    for(int i=0,x=10;i<6;i++)
    {
            lcd_drawtext16x16 (x,30,0xFFDF,0xFFDF,fan2[i]);
            x+=15;
    }
    }
    }


led的

#include "spi.h"
#include "gpio.h"
#include "lcd.h"

#include "string.h"

//发送命令到ST7735S显示控制芯片
void lcd_sendcmd(uint8_t cmd)
{
  //拉低RS引脚,发送的字节作为命令执行
  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, GPIO_PIN_RESET);
  //发送一个字节的命令码
  HAL_SPI_Transmit(&hspi1, &cmd, 1, HAL_MAX_DELAY);
}

//发送数据到ST7735S显示控制芯片
void lcd_senddata(uint8_t data)
{
  //拉高RS引脚,发送的字节作为数据
  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4,GPIO_PIN_SET);
  //发送一个字节的数据
  HAL_SPI_Transmit(&hspi1, &data, 1, HAL_MAX_DELAY);
}

//LCD初始化
void lcd_init(void)
{
  //发送复位命令
  lcd_sendcmd(0x01);
  //等待复位完成120ms
  HAL_Delay(120);
  //关闭睡眠模式
  lcd_sendcmd(0x11);
  //等待自检完成
  HAL_Delay(120);
  //配置显存访问方式
  lcd_sendcmd(0x36);
  //Row Address Order:1
  //Column Address Order:1
  //Row/Column Exchange:0
  //Vertical Refresh Order: Top to Bottom(0)
  //RGB-BGR ORDER: BGR(1)
  //Horizontal Refresh Order:Left to right(0)
  lcd_senddata(0xc8);
  //设置像素颜色格式
  lcd_sendcmd(0x3a);
  //使用16bit颜色
  lcd_senddata(0x05);
  //显示显存中的内容
  lcd_sendcmd(0x29);
}

//设置显示区域
void lcd_region(uint8_t xbegin, uint8_t xend, uint8_t ybegin, uint8_t yend)
{
  //设置起始列和结束列
  lcd_sendcmd(0x2a);
  //起始列高字节
  lcd_senddata(0);
  //起始列低字节
  lcd_senddata(xbegin + 2);
  //结束列高字节
  lcd_senddata(0);
  //结束列低字节
  lcd_senddata(xend + 2);
  
  //设置起始行和结束行
  lcd_sendcmd(0x2b);
  //起始行高字节
  lcd_senddata(0);
  //起始行低字节
  lcd_senddata(ybegin + 3);
  //结束行高字节
  lcd_senddata(0);
  //结束行低字节
  lcd_senddata(yend + 3);
  
  //写显存
  lcd_sendcmd(0x2c);
}

//发送一个像素的颜色
void lcd_sendpixel(uint16_t color)
{
  //高字节先发送
  lcd_senddata(color >> 8);
  lcd_senddata(color & 0xff);
}

//将RGB888转为RGB565
uint16_t lcd_color(uint8_t red, uint8_t green, uint8_t blue)
{
  return ((red & 0xf8) << 11)|((green & 0xfc) << 5)|((blue & 0xf8) >> 3);
}

//清屏函数
void lcd_clear(uint16_t color)
{
  int i;
  //定位显存写入位置
  lcd_region(0, 127, 0, 127);
  for (i = 0; i < 128 * 128; i++)
  {
    lcd_sendpixel(color);
  }
}



//显示图片
//x: 起始列
//y: 起始行
//w: 图像宽度(像素)
//h: 图像高度(像素)
//image: 保存图像数据的数组
void lcd_drawimage(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint16_t* image)
{
  int i;
  //定位显存写入位置
  lcd_region(x, x + w - 1, y, y + h - 1);
  for (i = 0; i < w * h; i++)
  {
    lcd_sendpixel(image[i]);
  }
}


//取模配置:
//1. 前景色用bit1表示,背景色用bit0表示(阴码)
//2. 低位在前
//显示字符
//x: 起始列
//y: 起始行
//fc: 前景色
//bc: 背景色
//font: 字模数组
void lcd_drawtext8x16(uint8_t x, uint8_t y, uint16_t fc, uint16_t bc, uint8_t* font)
{
  lcd_region(x, x + 8 - 1, y, y + 16 -1);
  
  //填充16行
  uint8_t j;
  for (j = 0; j < 16; j++)
  {
    //填充一行
    uint8_t i;
    for (i = 0; i < 8; i++)
    {
      if ((font[j] & (1 << i)) != 0)
      {
        //填充前景色
        lcd_sendpixel(fc);
      }
      else
      {
        //填充背景色
        lcd_sendpixel(bc);
      }
    }
  }
}

uint8_t lower[][16] = {
  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x22,0x30,0x2C,0x22,0x32,0x6C,0x00,0x00},/*"a",0*/
  {0x00,0x00,0x00,0x00,0x03,0x02,0x02,0x1A,0x26,0x42,0x42,0x42,0x26,0x1A,0x00,0x00},/*"b",1*/
  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x44,0x02,0x02,0x02,0x44,0x38,0x00,0x00},/*"c",2*/
  {0x00,0x00,0x00,0x00,0x60,0x40,0x40,0x7C,0x42,0x42,0x42,0x42,0x62,0xDC,0x00,0x00},/*"d",3*/
  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x42,0x42,0x7E,0x02,0x42,0x3C,0x00,0x00},/*"e",4*/
  {0x00,0x00,0x00,0x00,0x30,0x48,0x08,0x3E,0x08,0x08,0x08,0x08,0x08,0x3E,0x00,0x00},/*"f",5*/
  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x22,0x22,0x1C,0x02,0x3C,0x42,0x42,0x3C},/*"g",6*/
  {0x00,0x00,0x00,0x00,0x03,0x02,0x02,0x3A,0x46,0x42,0x42,0x42,0x42,0xE7,0x00,0x00},/*"h",7*/
  {0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x0E,0x08,0x08,0x08,0x08,0x08,0x3E,0x00,0x00},/*"i",8*/
  {0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x38,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x1E},/*"j",9*/
  {0x00,0x00,0x00,0x00,0x03,0x02,0x02,0x72,0x12,0x0A,0x0E,0x12,0x22,0x77,0x00,0x00},/*"k",10*/
  {0x00,0x00,0x00,0x08,0x0E,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x3E,0x00,0x00},/*"l",11*/
  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x92,0x92,0x92,0x92,0x92,0xB7,0x00,0x00},/*"m",12*/
  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3B,0x46,0x42,0x42,0x42,0x42,0xE7,0x00,0x00},/*"n",13*/
  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x42,0x42,0x3C,0x00,0x00},/*"o",14*/
  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1B,0x26,0x42,0x42,0x42,0x26,0x1A,0x02,0x07},/*"p",15*/
  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x64,0x42,0x42,0x42,0x64,0x58,0x40,0xE0},/*"q",16*/
  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x77,0x4C,0x04,0x04,0x04,0x04,0x1F,0x00,0x00},/*"r",17*/
  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x42,0x02,0x3C,0x40,0x42,0x3E,0x00,0x00},/*"s",18*/
  {0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x3E,0x08,0x08,0x08,0x08,0x48,0x30,0x00,0x00},/*"t",19*/
  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x42,0x42,0x42,0x42,0x62,0xDC,0x00,0x00},/*"u",20*/
  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x77,0x22,0x22,0x14,0x14,0x08,0x08,0x00,0x00},/*"v",21*/
  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xDB,0x91,0x52,0x5A,0x2A,0x24,0x24,0x00,0x00},/*"w",22*/
  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6E,0x24,0x18,0x18,0x18,0x24,0x76,0x00,0x00},/*"x",23*/
  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE7,0x42,0x24,0x24,0x18,0x18,0x08,0x08,0x06},/*"y",24*/
  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x22,0x10,0x08,0x08,0x44,0x7E,0x00,0x00},/*"z",25*/
};


void lcd_drawtextlower(uint8_t x, uint8_t y, uint16_t fc, uint16_t bc, char ch)
{
  if (ch < 'a' || ch > 'z')
  {
    return;
  }
  
  lcd_drawtext8x16(x, y, fc, bc, lower[ch - 'a']);
}

void lcd_drawstringlower(uint8_t x, uint8_t y, uint16_t fc, uint16_t bc, char* s)
{
  //判断字符串是否结束
  while(*s != 0)
  {
    lcd_drawtext8x16(x, y, fc, bc, lower[*s - 'a']);
    s++;    //字符指针加1
    x += 8; //横坐标右移8个像素
  }
}

uint8_t name[][32] = {
  {0x00,0x00,0xFE,0x3F,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xFC,0x1F,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xFF,0x7F,0x00,0x00},/*"王",0*/
  {0x08,0x00,0x88,0x1F,0x08,0x08,0x08,0x04,0x3F,0x02,0x08,0x01,0x8C,0x7F,0x1C,0x49,0x2A,0x49,0x2A,0x49,0x89,0x48,0x88,0x44,0x48,0x44,0x28,0x42,0x08,0x29,0x88,0x10}};/*"杨",1*/


//显示中文字符
//x: 起始列
//y: 起始行
//fc: 前景色
//bc: 背景色
//font: 字模数组
void lcd_drawtext16x16(uint8_t x, uint8_t y, uint16_t fc, uint16_t bc, uint8_t* font)
{
  lcd_region(x, x + 16 - 1, y, y + 16 -1);

  uint8_t j;
  for (j = 0; j < 16*2; j++)
  {
    uint8_t i;
    for (i = 0; i < 8; i++)
    {
      if ((font[j] & (1 << i)) != 0)
      {
        //填充前景色
        lcd_sendpixel(fc);
      }
      else
      {
        //填充背景色
        lcd_sendpixel(bc);
      }
    }
  }
}

void lcd_drawname(uint8_t x, uint8_t y, uint16_t fc, uint16_t bc)
{
  lcd_drawtext16x16(x, y, fc, bc, name[0]);
  lcd_drawtext16x16(x + 16, y, fc, bc, name[1]);
}

uint8_t ni[] = {0x10,0x01,0x10,0x01,0x10,0x01,0x88,0x7F,0x88,0x40,0x4C,0x20,0x2C,0x04,0x0A,0x04,0x89,0x14,0x88,0x24,0x48,0x24,0x48,0x44,0x28,0x44,0x08,0x04,0x08,0x05,0x08,0x02};/*"你",0*/


uint8_t fu[][32] = {
  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00},
  {0x00,0xF0,0x07,0x80,0xFF,0xFF,0x1F,0x00,0x00,0xF8,0x7F,0xC0,0xFF,0xFF,0xFF,0x07,0x00,0xF8,0xFF,0xE3,0xFF,0xFF,0xFF,0x07,0x00,0xF8,0xFF,0xF3,0xFF,0xFF,0xFF,0x07},
  {0x00,0x00,0xFC,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x10,0x0C,0x00,0x00,0x00,0x80,0x00,0xFF,0xFF,0x1F,0x00},
  {0x00,0x38,0xE0,0x03,0xFF,0xFF,0x3F,0x00,0x00,0xFC,0xFF,0x07,0x7F,0x80,0x3F,0x00,0x00,0xFE,0xFF,0x07,0x1F,0x00,0x1F,0x00,0x00,0xFF,0xFF,0x07,0x1E,0x00,0x1E,0x00},
  {0x00,0x0F,0xE0,0x03,0x1E,0x00,0x1F,0x00,0x00,0x00,0xF0,0x03,0xBE,0xFF,0x1F,0x00,0x00,0x00,0xF8,0x01,0xFE,0xFF,0x1F,0x00,0x00,0x00,0xFC,0x01,0xFE,0xFF,0x1F,0x00},
  {0x00,0x00,0xFE,0x01,0x3C,0x80,0x0F,0x00,0x00,0x00,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xC7,0xE1,0x07,0xC0,0x00,0x00,0xE0,0xFF,0xCF,0xFF,0xFF,0xFF,0x01},
  {0x00,0xF8,0xFF,0xDF,0xFF,0xFF,0xFF,0x07,0x00,0xFC,0x7F,0xFE,0x07,0xFF,0xFF,0x07,0x80,0xFF,0x7D,0xC0,0x03,0x3E,0xF0,0x07,0xF0,0xFF,0x7C,0xC0,0x03,0x1E,0xE0,0x07},
  {0xFE,0x3F,0x7C,0xC0,0x03,0x1E,0xE0,0x03,0xFC,0x1F,0x7C,0xC0,0x87,0x3F,0xF0,0x03,0xF8,0x0F,0x7C,0xC0,0xFF,0xFF,0xFF,0x03,0xF0,0x03,0x7C,0xC0,0xFF,0xFF,0xFF,0x03},
  {0x00,0x00,0x7C,0xC0,0x0F,0x3F,0xE0,0x03,0x00,0x00,0x7C,0xC0,0x07,0x1E,0xE0,0x01,0x00,0x00,0xFC,0xC0,0x07,0x1E,0xE0,0x01,0x00,0x00,0xFC,0xC0,0x07,0x1E,0xE0,0x01},
  {0x00,0x00,0xFC,0xC0,0xC7,0xFF,0xFF,0x01,0x00,0x00,0xFC,0xC0,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFC,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFC,0xC0,0xFF,0xFF,0xFF,0x01},
  {0x00,0x00,0x78,0x80,0x07,0x00,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"福",0*/
};

void lcd_draw64x64(uint8_t x, uint8_t y, uint16_t fc, uint16_t bc, uint8_t* font)
{
  lcd_region(x, x + 64 - 1, y, y + 64 -1);

  //注意循环变量取值范围
  uint16_t j;
  for (j = 0; j < 64*8; j++)
  {
    uint8_t i;
    for (i = 0; i < 8; i++)
    {
      if ((font[j] & (1 << i)) != 0)
      {
        //填充前景色
        lcd_sendpixel(fc);
      }
      else
      {
        //填充背景色
        lcd_sendpixel(bc);
      }
    }
  }
}

void lcd_drawfu(uint8_t x, uint8_t y, uint16_t fc, uint16_t bc)
{
  lcd_draw64x64(x, y, fc, bc, (uint8_t*)fu);
}

uint8_t wen[][32] = {
  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x10,0x00,0x01,0x60,0xF0,0xFF,0x03,0xC0,0x30,0x00,0x01,0xC0,0x30,0x00,0x01,0x00,0x34,0x00,0x01},
  {0x00,0x32,0x00,0x01,0x00,0xF2,0xFF,0x01,0x00,0x32,0x00,0x01,0x0C,0x32,0x00,0x01,0x18,0x31,0x00,0x01,0x30,0x31,0x00,0x01,0x10,0xF1,0xFF,0x01,0x80,0x30,0x00,0x01},
  {0x80,0x10,0x00,0x00,0x80,0x00,0x00,0x00,0xC0,0x04,0x00,0x04,0x40,0xFC,0xFF,0x0F,0x40,0x8C,0x31,0x06,0x60,0x8C,0x31,0x06,0x7C,0x8C,0x31,0x06,0x70,0x8C,0x31,0x06},
  {0x30,0x8C,0x31,0x06,0x30,0x8C,0x31,0x06,0x30,0x8C,0x31,0x06,0x30,0x8C,0x31,0x06,0x30,0x8C,0x31,0x36,0xB0,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"温",0*/
};

uint8_t shi[][32] = {
  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x60,0xF0,0xFF,0x07,0xE0,0x30,0x00,0x06,0xC0,0x30,0x00,0x06,0xC0,0x30,0x00,0x06},
  {0x00,0x34,0x00,0x06,0x00,0xF2,0xFF,0x07,0x06,0x32,0x00,0x06,0x0C,0x32,0x00,0x06,0x38,0x31,0x00,0x06,0x30,0x31,0x00,0x06,0x30,0xF1,0xFF,0x07,0x80,0x30,0x21,0x06},
  {0x80,0x10,0x63,0x00,0xC0,0x00,0x63,0x00,0x40,0x00,0x63,0x18,0x60,0x04,0x63,0x38,0x60,0x08,0x63,0x0C,0x3E,0x18,0x63,0x06,0x30,0x30,0x63,0x02,0x30,0x30,0x63,0x01},
  {0x30,0x30,0xE3,0x00,0x30,0x20,0x63,0x00,0x38,0x00,0x63,0x00,0x38,0x00,0x63,0x00,0x38,0x00,0x63,0x10,0x30,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"湿",1*/
};

uint8_t du[][32] = {
  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x07,0x08,0x20,0x00,0x02,0x1C,0xE0,0xFF,0xFF,0x3F,0x60,0x20,0x20,0x00},
  {0x60,0xE0,0xE0,0x00,0x60,0x60,0x60,0x00,0x60,0x60,0x60,0x0C,0xE0,0xFF,0xFF,0x1F,0x60,0x60,0x60,0x00,0x60,0x60,0x60,0x00,0x60,0x60,0x60,0x00,0x60,0x60,0x60,0x00},
  {0x60,0xE0,0x7F,0x00,0x60,0x60,0x60,0x00,0x20,0x00,0x80,0x00,0x20,0xFC,0xFF,0x01,0x30,0x20,0xC0,0x01,0x30,0x40,0xE0,0x00,0x30,0xC0,0x60,0x00,0x10,0x80,0x30,0x00},
  {0x10,0x00,0x1B,0x00,0x18,0x00,0x0E,0x00,0x08,0x00,0x1F,0x00,0x08,0xC0,0x79,0x00,0x04,0x70,0xE0,0x1F,0x04,0x0E,0x00,0x1F,0xE2,0x01,0x00,0x08,0x00,0x00,0x00,0x00},/*"度",2*/
};

void lcd_drawni(uint8_t x, uint8_t y, uint16_t fc, uint16_t bc)
{
  lcd_drawtext16x16(x, y, fc, bc, wen[0]);
}


//显示字符
//x: 起始列
//y: 起始行
//w: 字符宽度
//h: 字符高度
//fc: 前景色
//bc: 背景色
//font: 字模数组
void lcd_drawtext(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint16_t fc, uint16_t bc, uint8_t* font)
{
  lcd_region(x, x + w - 1, y, y + h -1);

  //注意循环变量取值范围
  uint16_t j;
  for (j = 0; j < w*h/8; j++)
  {
    uint8_t i;
    for (i = 0; i < 8; i++)
    {
      if ((font[j] & (1 << i)) != 0)
      {
        //填充前景色
        lcd_sendpixel(fc);
      }
      else
      {
        //填充背景色
        lcd_sendpixel(bc);
      }
    }
  }
}


uint8_t mid[] = {0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x10,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00};/*"中",0*/


/*"温",0*/

void lcd_drawmid(uint8_t x, uint8_t y, uint16_t fc, uint16_t bc)
{
	lcd_drawtext(50, 50, 32, 32,fc, bc, mid);
}

void lcd_drawup(uint8_t x, uint8_t y, uint16_t fc, uint16_t bc)
{
}


void lcd_drawdown(uint8_t x, uint8_t y, uint16_t fc, uint16_t bc)
{
}

void lcd_drawleft(uint8_t x, uint8_t y, uint16_t fc, uint16_t bc)
{
}


void lcd_drawright(uint8_t x, uint8_t y, uint16_t fc, uint16_t bc)
{
}


uint8_t wen1[][32] = {
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0E,0x06,0x00,0x00,0x06,0x07,0x00,0x00,0x07,0x03,0x00,0x00,0x03,0x03,0x00,0x00,0x83,0x01,0x00},
{0x80,0x81,0x01,0x18,0x80,0xC0,0xFF,0x3F,0xC0,0xC0,0x00,0x18,0xC0,0x61,0x08,0x0C,0xE0,0x21,0x30,0x04,0xB0,0x31,0x10,0x02,0x90,0x11,0x10,0x00,0x88,0x09,0x10,0x00},
{0x88,0x81,0x11,0x00,0x84,0xC1,0x11,0x01,0x80,0xC1,0x10,0x02,0x80,0xC1,0x10,0x04,0x80,0x61,0x10,0x0C,0x80,0x61,0x10,0x18,0x80,0x31,0x10,0x38,0x80,0x11,0x10,0x30},
{0x80,0x09,0x10,0x30,0x80,0x09,0x10,0x30,0x80,0x05,0x10,0x00,0x80,0x01,0x10,0x00,0x80,0x01,0x1F,0x00,0x80,0x01,0x1C,0x00,0x80,0x00,0x08,0x00,0x00,0x00,0x00,0x00}};/*"你",0*/

	
	

void lcd_drawwendu(uint8_t x, uint8_t y, uint16_t fc, uint16_t bc)
{
  lcd_drawtext(x, y, 32, 32, fc, bc, (uint8_t*)wen1);
  //lcd_drawtext(x + 32, y, 32, 32, fc, bc, (uint8_t*)du);
}

uint8_t num16x32[][64] = {
  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x03,0x60,0x04,0x30,0x0C,0x18,0x18,0x18,0x18,0x18,0x10,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x18,0x10,0x18,0x18,0x18,0x18,0x30,0x0C,0x60,0x04,0xC0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"0",0*/
  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x01,0xF8,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xC0,0x03,0xF8,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"1",1*/
  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x10,0x1C,0x08,0x18,0x04,0x30,0x04,0x30,0x0C,0x30,0x0C,0x30,0x00,0x30,0x00,0x18,0x00,0x18,0x00,0x0C,0x00,0x06,0x00,0x03,0x80,0x01,0xC0,0x00,0x40,0x00,0x20,0x20,0x10,0x20,0x08,0x20,0x04,0x30,0xFC,0x1F,0xFC,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"2",2*/
  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x03,0x18,0x06,0x0C,0x0C,0x0C,0x18,0x0C,0x18,0x0C,0x18,0x00,0x18,0x00,0x18,0x00,0x0C,0x00,0x06,0xC0,0x03,0x00,0x0E,0x00,0x18,0x00,0x10,0x00,0x30,0x00,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x10,0x0C,0x18,0x18,0x0C,0xE0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"3",3*/
  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x07,0x00,0x07,0x80,0x06,0x80,0x06,0x40,0x06,0x20,0x06,0x20,0x06,0x10,0x06,0x10,0x06,0x08,0x06,0x0C,0x06,0x04,0x06,0x02,0x06,0xFE,0x3F,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0xC0,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"4",4*/
  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x3F,0xF0,0x3F,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0xC8,0x07,0x28,0x0C,0x18,0x18,0x08,0x10,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x0C,0x30,0x0C,0x30,0x04,0x18,0x04,0x18,0x18,0x0C,0xE0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"5",5*/
  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x60,0x18,0x30,0x18,0x10,0x18,0x18,0x00,0x08,0x00,0x08,0x00,0x0C,0x00,0xCC,0x07,0x6C,0x0C,0x1C,0x18,0x1C,0x10,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x18,0x30,0x18,0x10,0x30,0x18,0x70,0x0C,0xC0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"6",6*/
  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x3F,0xF8,0x3F,0x08,0x10,0x0C,0x08,0x04,0x08,0x04,0x04,0x00,0x04,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x01,0x00,0x01,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"7",7*/
  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x30,0x0C,0x18,0x18,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x1C,0x30,0x1C,0x10,0x78,0x18,0xF0,0x04,0xE0,0x03,0x18,0x0F,0x0C,0x1E,0x0C,0x1C,0x06,0x38,0x06,0x30,0x06,0x30,0x06,0x30,0x06,0x30,0x0C,0x18,0x18,0x0C,0xE0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"8",8*/
  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x03,0x18,0x04,0x0C,0x08,0x0C,0x18,0x06,0x10,0x06,0x30,0x06,0x30,0x06,0x30,0x06,0x30,0x06,0x30,0x0E,0x38,0x0C,0x34,0x18,0x36,0xF0,0x31,0x00,0x30,0x00,0x18,0x00,0x18,0x00,0x08,0x0C,0x0C,0x0C,0x06,0x0C,0x03,0xF0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"9",9*/
};

void lcd_drawnum(uint8_t x, uint8_t y, uint16_t fc, uint16_t bc, uint8_t num)
{
  if (num > 9)
  {
    return;
  }
  
  lcd_drawtext(x, y, 16, 32, fc, bc, num16x32[num]);
}

//画点
void lcd_drawpoint(uint8_t x, uint8_t y, uint16_t color)
{
  lcd_region(x, x + 1, y, y + 1);
  lcd_sendpixel(color);
}


五、结果展示

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鱼ル

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值